From a23c566377665f058115de3996c2f50a75af1b5d Mon Sep 17 00:00:00 2001 From: Eugen Betke Date: Tue, 2 Aug 2022 18:52:04 +0000 Subject: [PATCH 001/378] ECC-1433: Reset decimal_scale_factor --- src/grib_accessor_class_data_ccsds_packing.c | 1 + tests/CMakeLists.txt | 2 + tests/grib_ecc-1433.cpp | 62 ++++++++++++++++++++ tests/grib_ecc-1433.sh | 18 ++++++ 4 files changed, 83 insertions(+) create mode 100644 tests/grib_ecc-1433.cpp create mode 100755 tests/grib_ecc-1433.sh diff --git a/src/grib_accessor_class_data_ccsds_packing.c b/src/grib_accessor_class_data_ccsds_packing.c index 7bdad0c52..77d765263 100644 --- a/src/grib_accessor_class_data_ccsds_packing.c +++ b/src/grib_accessor_class_data_ccsds_packing.c @@ -460,6 +460,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) f = (grib_power(bits_per_value, 2) - 1); minrange = grib_power(-last, 2) * f; maxrange = grib_power(last, 2) * f; + decimal_scale_factor = 0; while (range < minrange) { decimal_scale_factor += 1; diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 2d1fce5dc..ed9abae5f 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -60,6 +60,7 @@ endforeach() if( HAVE_EXPERIMENTAL_BUILD_WITH_CXX ) if( HAVE_AEC AND ENABLE_EXTRA_TESTS ) list(APPEND test_cpp_bins grib_ecc-1431) + list(APPEND test_cpp_bins grib_ecc-1433) endif() foreach( tool ${test_cpp_bins} ) @@ -283,6 +284,7 @@ if( HAVE_BUILD_TOOLS ) if( HAVE_AEC AND ENABLE_EXTRA_TESTS AND HAVE_EXPERIMENTAL_BUILD_WITH_CXX ) list(APPEND tests_extra grib_ecc-1431) + list(APPEND tests_extra grib_ecc-1433) endif() if( HAVE_FORTRAN AND ENABLE_EXTRA_TESTS ) list(APPEND tests_extra bufr_dump_encode_fortran) diff --git a/tests/grib_ecc-1433.cpp b/tests/grib_ecc-1433.cpp new file mode 100644 index 000000000..ed2ac04aa --- /dev/null +++ b/tests/grib_ecc-1433.cpp @@ -0,0 +1,62 @@ +/* + * (C) Copyright 2005- ECMWF. + * + * This software is licensed under the terms of the Apache Licence Version 2.0 + * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. + * + * In applying this licence, ECMWF does not waive the privileges and immunities granted to it by + * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. + */ + +#include "grib_api_internal.h" +#include +#include +#include +#include +#include +#include +#include +#include + +typedef std::numeric_limits dbl; +typedef std::numeric_limits flt; + +int main(int argc, char** argv) +{ + size_t values_len = 10; + std::default_random_engine re; + std::uniform_real_distribution unif(flt::min(), flt::min() * 10); + + codes_handle* handle = codes_grib_handle_new_from_samples(0, "reduced_gg_pl_128_grib2"); + double* values = new double[values_len]; + double* grid_ccsds_values = new double[values_len]; + + // Initialize with small random values + for (size_t i = 0; i < values_len; ++i) { + values[i] = unif(re); + } + + // Test grid_ccsds + std::string packing_type = "grid_ccsds"; + size_t size = packing_type.size(); + CODES_CHECK(codes_set_double_array(handle, "values", values, values_len), 0); + CODES_CHECK(codes_set_string(handle, "packingType", packing_type.c_str(), &size), 0); + CODES_CHECK(codes_get_double_array(handle, "values", grid_ccsds_values, &values_len), 0); + + // Test buffers + double tolerance = 0.000001; + for (size_t i = 0; i < values_len; ++i) { + if (!((grid_ccsds_values[i] < (values[i] * (1 + tolerance))) && + grid_ccsds_values[i] > (values[i] / (1 + tolerance)))) { + std::cout.precision(dbl::max_digits10); + std::cout << "Test failed: " << grid_ccsds_values[i] << " != " << values[i] << std::endl; + Assert(0); + } + } + + codes_handle_delete(handle); + + delete[] values; + delete[] grid_ccsds_values; + return 0; +} diff --git a/tests/grib_ecc-1433.sh b/tests/grib_ecc-1433.sh new file mode 100755 index 000000000..a7a282169 --- /dev/null +++ b/tests/grib_ecc-1433.sh @@ -0,0 +1,18 @@ +#!/bin/sh +# (C) Copyright 2005- ECMWF. +# +# This software is licensed under the terms of the Apache Licence Version 2.0 +# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. +# +# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by +# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. +# + +. ./include.ctest.sh + +label="grib_ecc-1431_test" +temp=temp.$label + +$EXEC $test_dir/grib_ecc-1431 + +rm -f $temp From c74f3049d2cfb228bfdc02990fdaec2e5fb87c64 Mon Sep 17 00:00:00 2001 From: Eugen Betke Date: Wed, 3 Aug 2022 07:49:12 +0000 Subject: [PATCH 002/378] ECC-1433: Small number test in ECC-1431 enabled --- tests/grib_ecc-1431.cpp | 31 ++++++++++++++++++------------- 1 file changed, 18 insertions(+), 13 deletions(-) diff --git a/tests/grib_ecc-1431.cpp b/tests/grib_ecc-1431.cpp index ea799f2a3..04cf4392f 100644 --- a/tests/grib_ecc-1431.cpp +++ b/tests/grib_ecc-1431.cpp @@ -12,6 +12,7 @@ #include #include #include +#include #include #include #include @@ -44,16 +45,16 @@ void test_full() // TODO // The test fails for the following ranges // These tests can be performed when the problem is solved with small values. - // ranges.push_back({flt::min()*10 , flt::min()*100 } ); - // ranges.push_back({flt::min() , flt::min()*10 } ); - // ranges.push_back({flt::min() , flt::max() } ); + ranges.push_back({ flt::min() * 10, flt::min() * 100 }); + ranges.push_back({ flt::min(), flt::min() * 10 }); + ranges.push_back({ flt::min(), flt::max() }); std::vector values_lens = { 1, 10, 100, 100000, - 10000000, + //10000000, }; int err; @@ -67,8 +68,12 @@ void test_full() for (const size_t in_values_len : values_lens) { for (const Range range : ranges) { Assert(range.min < range.max); - std::cout << "Testing: " << in_values_len << " " << range.min << " " << range.max << std::endl; - std::uniform_real_distribution unif(range.min, range.max); + std::cout << "Testing: " + << "n_vals : " << std::setw(7) << in_values_len + << " range(" << std::scientific << std::setw(12) << range.min << ", " << std::setw(12) << range.max << ") " + << std::endl; + std::uniform_real_distribution + unif(range.min, range.max); codes_handle* handle = codes_grib_handle_new_from_samples(0, "reduced_gg_pl_128_grib2"); double* in_values = new double[in_values_len]; @@ -135,9 +140,9 @@ void test_simplified() // TODO // The test fails for the following ranges // These tests can be performed when the problem is solved with small values. - // ranges.push_back({flt::min()*10 , flt::min()*100 } ); - // ranges.push_back({flt::min() , flt::min()*10 } ); - // ranges.push_back({flt::min() , flt::max() } ); + ranges.push_back({ flt::min() * 10, flt::min() * 100 }); + ranges.push_back({ flt::min(), flt::min() * 10 }); + ranges.push_back({ flt::min(), flt::max() }); std::vector values_lens = { 1, @@ -172,12 +177,12 @@ void test_simplified() } // Test grid_ccsds - packing_type = "grid_ccsds"; + packing_type = "grid_simple"; size = packing_type.size(); - CODES_CHECK(codes_set_string(handle, "packingType", packing_type.c_str(), &size), 0); if ((err = codes_set_double_array(handle, "values", in_values, in_values_len)) != 0) { Assert(!"CCSDS encoding failed"); } + CODES_CHECK(codes_set_string(handle, "packingType", packing_type.c_str(), &size), 0); if ((err = codes_get_double_array(handle, "values", grid_ccsds_values, &grid_ccsds_values_len)) != 0) { Assert(!"CCSDS decoding failed"); } @@ -205,7 +210,7 @@ void test_simplified() int main(int argc, char** argv) { - test_simplified(); - //test_full(); + //test_simplified(); + test_full(); return 0; } From 7e74575665a01e2a82fe6e8acef7db0ed4791e8d Mon Sep 17 00:00:00 2001 From: Eugen Betke Date: Wed, 3 Aug 2022 07:54:38 +0000 Subject: [PATCH 003/378] ECC-1433: Minor changes in ECC-1431 --- tests/grib_ecc-1431.cpp | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/tests/grib_ecc-1431.cpp b/tests/grib_ecc-1431.cpp index 04cf4392f..b74d7d79e 100644 --- a/tests/grib_ecc-1431.cpp +++ b/tests/grib_ecc-1431.cpp @@ -42,9 +42,6 @@ void test_full() ranges.push_back({ 1e-1, 1e-0 }); ranges.push_back({ 1e-2, 1e-1 }); ranges.push_back({ 1e-11, 1e-10 }); - // TODO - // The test fails for the following ranges - // These tests can be performed when the problem is solved with small values. ranges.push_back({ flt::min() * 10, flt::min() * 100 }); ranges.push_back({ flt::min(), flt::min() * 10 }); ranges.push_back({ flt::min(), flt::max() }); @@ -54,7 +51,6 @@ void test_full() 10, 100, 100000, - //10000000, }; int err; @@ -137,9 +133,6 @@ void test_simplified() ranges.push_back({ 1e-1, 1e-0 }); ranges.push_back({ 1e-2, 1e-1 }); ranges.push_back({ 1e-11, 1e-10 }); - // TODO - // The test fails for the following ranges - // These tests can be performed when the problem is solved with small values. ranges.push_back({ flt::min() * 10, flt::min() * 100 }); ranges.push_back({ flt::min(), flt::min() * 10 }); ranges.push_back({ flt::min(), flt::max() }); @@ -177,7 +170,7 @@ void test_simplified() } // Test grid_ccsds - packing_type = "grid_simple"; + packing_type = "grid_ccsds"; size = packing_type.size(); if ((err = codes_set_double_array(handle, "values", in_values, in_values_len)) != 0) { Assert(!"CCSDS encoding failed"); From c89e55ae3f6edb67fc8b44fad433f66ceca827ef Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 3 Aug 2022 09:52:15 +0100 Subject: [PATCH 004/378] ECC-1433: Test --- tests/grib_ecc-1433.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/grib_ecc-1433.sh b/tests/grib_ecc-1433.sh index a7a282169..9fd834346 100755 --- a/tests/grib_ecc-1433.sh +++ b/tests/grib_ecc-1433.sh @@ -10,9 +10,9 @@ . ./include.ctest.sh -label="grib_ecc-1431_test" +label="grib_ecc-1433_test" temp=temp.$label -$EXEC $test_dir/grib_ecc-1431 +$EXEC $test_dir/grib_ecc-1433 rm -f $temp From ce58cd7396938474f0be0c80751ea9420fce4d83 Mon Sep 17 00:00:00 2001 From: Eugen Betke Date: Wed, 3 Aug 2022 10:12:12 +0000 Subject: [PATCH 005/378] ECC-1433: Remove simplified test from ECC-1431 --- tests/grib_ecc-1431.cpp | 98 +++-------------------------------------- 1 file changed, 5 insertions(+), 93 deletions(-) diff --git a/tests/grib_ecc-1431.cpp b/tests/grib_ecc-1431.cpp index b74d7d79e..2adb39fc5 100644 --- a/tests/grib_ecc-1431.cpp +++ b/tests/grib_ecc-1431.cpp @@ -32,7 +32,7 @@ struct Range // // Test: This test doesn't accept errors after decompression. // -void test_full() +int main(int argc, char** argv) { std::vector ranges; ranges.push_back({ flt::max() / 10, flt::max() }); @@ -65,11 +65,11 @@ void test_full() for (const Range range : ranges) { Assert(range.min < range.max); std::cout << "Testing: " - << "n_vals : " << std::setw(7) << in_values_len - << " range(" << std::scientific << std::setw(12) << range.min << ", " << std::setw(12) << range.max << ") " - << std::endl; + << "n_vals : " << std::setw(7) << in_values_len + << " range(" << std::scientific << std::setw(12) << range.min << ", " << std::setw(12) << range.max << ") " + << std::endl; std::uniform_real_distribution - unif(range.min, range.max); + unif(range.min, range.max); codes_handle* handle = codes_grib_handle_new_from_samples(0, "reduced_gg_pl_128_grib2"); double* in_values = new double[in_values_len]; @@ -117,93 +117,5 @@ void test_full() delete[] grid_ccsds_values; } } -} - - -// -// Test: This test accepts tolerates errors. Values after decompression must be within a certain user defined range. -// -void test_simplified() -{ - std::vector ranges; - ranges.push_back({ flt::max() / 10, flt::max() }); - ranges.push_back({ flt::max() / 100, flt::max() / 10 }); - ranges.push_back({ 1e+9, 1e+10 }); - ranges.push_back({ 1e+0, 1e+1 }); - ranges.push_back({ 1e-1, 1e-0 }); - ranges.push_back({ 1e-2, 1e-1 }); - ranges.push_back({ 1e-11, 1e-10 }); - ranges.push_back({ flt::min() * 10, flt::min() * 100 }); - ranges.push_back({ flt::min(), flt::min() * 10 }); - ranges.push_back({ flt::min(), flt::max() }); - - std::vector values_lens = { - 1, - 10, - 100, - 100000, - 10000000, - }; - - int err; - - std::default_random_engine re; - size_t grid_ccsds_values_len = 0; - std::string packing_type = ""; - size_t size = 0; - - for (const size_t in_values_len : values_lens) { - for (const Range range : ranges) { - Assert(range.min < range.max); - std::cout << "Testing: " << in_values_len << " " << range.min << " " << range.max << std::endl; - std::uniform_real_distribution unif(range.min, range.max); - - codes_handle* handle = codes_grib_handle_new_from_samples(0, "reduced_gg_pl_128_grib2"); - double* in_values = new double[in_values_len]; - double* grid_ccsds_values = new double[in_values_len]; - - grid_ccsds_values_len = in_values_len; - - // Initialize with random values - for (size_t i = 0; i < in_values_len; ++i) { - in_values[i] = unif(re); - } - - // Test grid_ccsds - packing_type = "grid_ccsds"; - size = packing_type.size(); - if ((err = codes_set_double_array(handle, "values", in_values, in_values_len)) != 0) { - Assert(!"CCSDS encoding failed"); - } - CODES_CHECK(codes_set_string(handle, "packingType", packing_type.c_str(), &size), 0); - if ((err = codes_get_double_array(handle, "values", grid_ccsds_values, &grid_ccsds_values_len)) != 0) { - Assert(!"CCSDS decoding failed"); - } - Assert(grid_ccsds_values_len == in_values_len); - - // Test buffers - double tolerance = 0.000001; - for (size_t i = 0; i < grid_ccsds_values_len; ++i) { - if (!((grid_ccsds_values[i] < (in_values[i] * (1 + tolerance))) && - grid_ccsds_values[i] > (in_values[i] / (1 + tolerance)))) { - std::cout.precision(dbl::max_digits10); - std::cout << "Test failed: " << grid_ccsds_values[i] << " != " << in_values[i] << std::endl; - Assert(0); - } - } - - codes_handle_delete(handle); - - delete[] in_values; - delete[] grid_ccsds_values; - } - } -} - - -int main(int argc, char** argv) -{ - //test_simplified(); - test_full(); return 0; } From 6b79a1e27b156d2aef4eb8b35103decf103e3519 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 7 Nov 2022 12:28:54 +0000 Subject: [PATCH 006/378] ECC-1455: Temporarily added so IFS tests can pass --- definitions/grib2/template.4.horizontal.def | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/definitions/grib2/template.4.horizontal.def b/definitions/grib2/template.4.horizontal.def index 3749b84b4..280d24f50 100755 --- a/definitions/grib2/template.4.horizontal.def +++ b/definitions/grib2/template.4.horizontal.def @@ -82,14 +82,21 @@ if (extraDim) { } } -# See ECC-854, ECC-1435, ECC-1451, ECC-1462 +# See ECC-854, ECC-1435, ECC-1451 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; - alias vertical.level = bottomLevel; + # + # Temporary hack to deal with wrongly encoded data. + # If scaleFactorOfSecondFixedSurface != 0 (wrong), then leave the aliases + # to point to topLevel + # + if (scaleFactorOfSecondFixedSurface == 0) { + # Correctly encoded data + alias mars.levelist = bottomLevel; + alias ls.level = bottomLevel; + alias vertical.level = bottomLevel; + } } alias ls.typeOfLevel=typeOfLevel; From 0b2cbfc04380f426eafdd1802fc70c2c00d37b3d Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 7 Nov 2022 12:34:05 +0000 Subject: [PATCH 007/378] ECC-1455: Reminder to undo the change --- tests/grib_ecc-1433.sh | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/tests/grib_ecc-1433.sh b/tests/grib_ecc-1433.sh index 9fd834346..a95db0e10 100755 --- a/tests/grib_ecc-1433.sh +++ b/tests/grib_ecc-1433.sh @@ -13,6 +13,13 @@ label="grib_ecc-1433_test" temp=temp.$label +# Reminder to remove the temporary hack for https://jira.ecmwf.int/browse/ECC-1455 +# See file +# definitions/grib2/template.4.horizontal.def +# +echo "Undo the change for ECC-1455!!!!" +exit 1 + $EXEC $test_dir/grib_ecc-1433 rm -f $temp From 5a047a82a42a0803970d17fcf3e248c8575b5085 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 7 Nov 2022 15:45:32 +0000 Subject: [PATCH 008/378] Revert ECC-1455 changes --- definitions/grib2/template.4.horizontal.def | 17 +++++------------ tests/grib_ecc-1433.sh | 7 ------- 2 files changed, 5 insertions(+), 19 deletions(-) diff --git a/definitions/grib2/template.4.horizontal.def b/definitions/grib2/template.4.horizontal.def index 280d24f50..3749b84b4 100755 --- a/definitions/grib2/template.4.horizontal.def +++ b/definitions/grib2/template.4.horizontal.def @@ -82,21 +82,14 @@ 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) ) { - # - # Temporary hack to deal with wrongly encoded data. - # If scaleFactorOfSecondFixedSurface != 0 (wrong), then leave the aliases - # to point to topLevel - # - if (scaleFactorOfSecondFixedSurface == 0) { - # Correctly encoded data - alias mars.levelist = bottomLevel; - alias ls.level = bottomLevel; - alias vertical.level = bottomLevel; - } + alias mars.levelist = bottomLevel; + alias ls.level = bottomLevel; + alias vertical.level = bottomLevel; } alias ls.typeOfLevel=typeOfLevel; diff --git a/tests/grib_ecc-1433.sh b/tests/grib_ecc-1433.sh index a95db0e10..9fd834346 100755 --- a/tests/grib_ecc-1433.sh +++ b/tests/grib_ecc-1433.sh @@ -13,13 +13,6 @@ label="grib_ecc-1433_test" temp=temp.$label -# Reminder to remove the temporary hack for https://jira.ecmwf.int/browse/ECC-1455 -# See file -# definitions/grib2/template.4.horizontal.def -# -echo "Undo the change for ECC-1455!!!!" -exit 1 - $EXEC $test_dir/grib_ecc-1433 rm -f $temp From c60c79fbcd4fb8aa078320ae152f26193e294fb3 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 28 Mar 2023 15:25:54 +0000 Subject: [PATCH 009/378] ECC-1552: Alternative implementation using WGS84 --- src/grib_accessor_class_proj_string.cc | 23 ++++++++++++----------- tests/grib_proj_string.sh | 21 +++++++++++---------- 2 files changed, 23 insertions(+), 21 deletions(-) diff --git a/src/grib_accessor_class_proj_string.cc b/src/grib_accessor_class_proj_string.cc index 92d99c2a1..bfbc3cca6 100644 --- a/src/grib_accessor_class_proj_string.cc +++ b/src/grib_accessor_class_proj_string.cc @@ -294,19 +294,20 @@ static int proj_polar_stereographic(grib_handle* h, char* result) return err; } -#if 0 + // ECC-1552: This is for regular_ll, regular_gg, reduced_ll, reduced_gg static int proj_unprojected(grib_handle* h, char* result) { int err = 0; - char shape[64] = {0,}; - if ((err = get_earth_shape(h, shape)) != GRIB_SUCCESS) - return err; - - snprintf(result, 1024, "+proj=longlat %s", shape); + //char shape[64] = {0,}; + //if ((err = get_earth_shape(h, shape)) != GRIB_SUCCESS) + // return err; + //snprintf(result, 1024, "+proj=longlat %s", shape); + snprintf(result, 1024, "+proj=longlat +datum=WGS84 +no_defs +type=crs"); + return err; } -#endif + static int proj_mercator(grib_handle* h, char* result) { @@ -325,10 +326,10 @@ static int proj_mercator(grib_handle* h, char* result) #define NUMBER(a) (sizeof(a) / sizeof(a[0])) static proj_mapping proj_mappings[] = { - // { "regular_ll", &proj_unprojected }, - // { "regular_gg", &proj_unprojected }, - // { "reduced_ll", &proj_unprojected }, - // { "reduced_gg", &proj_unprojected }, + { "regular_ll", &proj_unprojected }, + { "regular_gg", &proj_unprojected }, + { "reduced_ll", &proj_unprojected }, + { "reduced_gg", &proj_unprojected }, { "mercator", &proj_mercator }, { "lambert", &proj_lambert_conformal }, diff --git a/tests/grib_proj_string.sh b/tests/grib_proj_string.sh index 866cea794..c056554ce 100755 --- a/tests/grib_proj_string.sh +++ b/tests/grib_proj_string.sh @@ -47,24 +47,25 @@ done # Various grid types # ECC-1552: To be done later. Current behaviour is to return KeyNotFound -set +e -${tools_dir}/grib_get -p projString $grib2_sample > $tempText 2>&1 -status=$? -set -e -[ $status -ne 0 ] -grep -q "Key/value not found" $tempText +# set +e +# ${tools_dir}/grib_get -p projString $grib2_sample > $tempText 2>&1 +# status=$? +# set -e +# [ $status -ne 0 ] +# grep -q "Key/value not found" $tempText rm -f $tempText -# ${tools_dir}/grib_get -p projString $grib2_sample > $tempText -# grep -q "proj=longlat +R=6367470" $tempText +${tools_dir}/grib_get -p projString $grib2_sample > $tempText +grep -q "+proj=longlat +datum=WGS84" $tempText +${tools_dir}/grib_get -p projString $ECCODES_SAMPLES_PATH/reduced_gg_pl_32_grib2.tmpl > $tempText +grep -q "+proj=longlat +datum=WGS84" $tempText + # ${tools_dir}/grib_get -p projString $ECCODES_SAMPLES_PATH/regular_ll_pl_grib2.tmpl > $tempText # grep -q "proj=longlat +R=6371229" $tempText # ${tools_dir}/grib_get -p projString $ECCODES_SAMPLES_PATH/regular_gg_ml_grib1.tmpl > $tempText # grep -q "proj=longlat +R=6367470" $tempText # ${tools_dir}/grib_get -p projString $ECCODES_SAMPLES_PATH/reduced_ll_sfc_grib1.tmpl > $tempText # grep -q "proj=longlat +R=6367470" $tempText -# ${tools_dir}/grib_get -p projString $ECCODES_SAMPLES_PATH/reduced_gg_pl_32_grib2.tmpl > $tempText -# grep -q "proj=longlat +R=6371229" $tempText ${tools_dir}/grib_set -s gridType=lambert_azimuthal_equal_area $grib2_sample $tempGrib From 5d767639f262f3e49e9bd6bb21d88eed539c9fce Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 28 Mar 2023 18:12:54 +0100 Subject: [PATCH 010/378] ECC-1560: GRIB2: Changing from PDTN=8 to 11 changes the level from 1.5 to 2 --- src/grib_accessor_class_g2level.cc | 7 +++++++ src/grib_loader_from_handle.cc | 8 +++++++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/src/grib_accessor_class_g2level.cc b/src/grib_accessor_class_g2level.cc index 0f137ea20..9301218e7 100644 --- a/src/grib_accessor_class_g2level.cc +++ b/src/grib_accessor_class_g2level.cc @@ -258,6 +258,13 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) long type_first = 0; char pressure_units[10] = {0,}; size_t pressure_units_len = 10; + long lval = (long)value_first; + + //printf("pack_double:: received %g\n", *val); + if (value_first == lval) { + //printf(" .... use pack_long for %g\n", value_first); + return pack_long(a, &lval, len); + } if (*len != 1) return GRIB_WRONG_ARRAY_SIZE; diff --git a/src/grib_loader_from_handle.cc b/src/grib_loader_from_handle.cc index 4f481d10a..ce7e2e79d 100644 --- a/src/grib_loader_from_handle.cc +++ b/src/grib_loader_from_handle.cc @@ -162,7 +162,13 @@ int grib_init_accessor_from_handle(grib_loader* loader, grib_accessor* ga, grib_ pack_missing = 1; } - switch (grib_accessor_get_native_type(ga)) { + long ga_type = grib_accessor_get_native_type(ga); + if (STR_EQUAL(name,"level")) { + //printf("..... loader_from_file: switch type to DOUBLE\n"); + ga_type = GRIB_TYPE_DOUBLE; + } + + switch (ga_type) { case GRIB_TYPE_STRING: /*ecc__grib_get_string_length(ga,&len); See ECC-490 */ From 67be884370f6669f2189a51ec0a238aa26f1cf4e Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 29 Mar 2023 17:06:39 +0100 Subject: [PATCH 011/378] Support for grid_complex encoding --- definitions/grib2/template.7.2.def | 1 + definitions/grib2/template.7.3.def | 1 + ...ib_accessor_class_data_g22order_packing.cc | 1774 +++++++++++++---- tests/grib_bitmap.sh | 6 + 4 files changed, 1383 insertions(+), 399 deletions(-) diff --git a/definitions/grib2/template.7.2.def b/definitions/grib2/template.7.2.def index 3e8ca8f5e..bbff89acc 100644 --- a/definitions/grib2/template.7.2.def +++ b/definitions/grib2/template.7.2.def @@ -17,6 +17,7 @@ meta codedValues data_g22order_packing( referenceValue, binaryScaleFactor, decimalScaleFactor, + optimizeScaleFactor, typeOfOriginalFieldValues , groupSplittingMethodUsed, diff --git a/definitions/grib2/template.7.3.def b/definitions/grib2/template.7.3.def index 13fff2006..c2293fc8d 100644 --- a/definitions/grib2/template.7.3.def +++ b/definitions/grib2/template.7.3.def @@ -14,6 +14,7 @@ meta codedValues data_g22order_packing( referenceValue, binaryScaleFactor, decimalScaleFactor, + optimizeScaleFactor, typeOfOriginalFieldValues , groupSplittingMethodUsed, diff --git a/src/grib_accessor_class_data_g22order_packing.cc b/src/grib_accessor_class_data_g22order_packing.cc index ae3a6d9e3..275f7bc19 100644 --- a/src/grib_accessor_class_data_g22order_packing.cc +++ b/src/grib_accessor_class_data_g22order_packing.cc @@ -29,6 +29,7 @@ MEMBERS=const char* reference_value MEMBERS=const char* binary_scale_factor MEMBERS=const char* decimal_scale_factor + MEMBERS=const char* optimize_scale_factor MEMBERS=const char* typeOfOriginalFieldValues MEMBERS=const char* groupSplittingMethodUsed MEMBERS=const char* missingValueManagementUsed @@ -83,6 +84,7 @@ typedef struct grib_accessor_data_g22order_packing const char* reference_value; const char* binary_scale_factor; const char* decimal_scale_factor; + const char* optimize_scale_factor; const char* typeOfOriginalFieldValues; const char* groupSplittingMethodUsed; const char* missingValueManagementUsed; @@ -200,6 +202,7 @@ static void init(grib_accessor* a, const long v, grib_arguments* args) self->reference_value = grib_arguments_get_name(gh, args, self->carg++); self->binary_scale_factor = grib_arguments_get_name(gh, args, self->carg++); self->decimal_scale_factor = grib_arguments_get_name(gh, args, self->carg++); + self->optimize_scale_factor = grib_arguments_get_name(gh, args, self->carg++); self->typeOfOriginalFieldValues = grib_arguments_get_name(gh, args, self->carg++); self->groupSplittingMethodUsed = grib_arguments_get_name(gh, args, self->carg++); @@ -219,144 +222,274 @@ static void init(grib_accessor* a, const long v, grib_arguments* args) a->flags |= GRIB_ACCESSOR_FLAG_DATA; } -#if 0 -static int reverse_rows (unsigned long* data, long len, long number_along_parallel){ - long count = 0; - long i = 0; - long left = 0; - long right = number_along_parallel-1; - long tmp = 0; - - data += number_along_parallel; - count = number_along_parallel; - - while(count < len){ - left = 0; - right = number_along_parallel-1; - - for (i = 0;i= UNDEFINED_LOW && (x) <= UNDEFINED_HIGH) +#define DEFINED_VAL(x) ((x) < UNDEFINED_LOW || (x) > UNDEFINED_HIGH) +#define UNDEFINED_ANGLE 999.0 + +static unsigned char* bitstream; +static int rbits, reg, n_bitstream; + + +static void init_bitstream(unsigned char* new_bitstream) +{ + bitstream = new_bitstream; + n_bitstream = reg = rbits = 0; + return; } - data += number_along_parallel*2; - count += number_along_parallel*2; + +static void finish_bitstream(void) +{ + if (rbits) { + n_bitstream++; + *bitstream++ = (reg << (8 - rbits)) & 255; + rbits = 0; + } + return; } - return 0; + +static void add_many_bitstream(grib_accessor* a, int* t, int n, int n_bits) +{ + unsigned int jmask, tt; + int i; + + if (n_bits > 25) + grib_context_log(a->context, GRIB_LOG_ERROR, "add_many_bitstream: n_bits = (%d)", n_bits); + jmask = (1 << n_bits) - 1; + + for (i = 0; i < n; i++) { + tt = (unsigned int)*t++; + rbits += n_bits; + reg = (reg << n_bits) | (tt & jmask); + + while (rbits >= 8) { + rbits -= 8; + *bitstream++ = (reg >> rbits) & 255; + n_bitstream++; +} + } + return; } -#endif -static unsigned long calc_pow_2(unsigned long op) + +static void add_bitstream(grib_accessor* a, int t, int n_bits) { - unsigned long a = 1; - while (op--) - a *= 2; - return a; + unsigned int jmask; + + if (n_bits > 16) { + add_bitstream(a, t >> 16, n_bits - 16); + n_bits = 16; + } + if (n_bits > 25) + grib_context_log(a->context, GRIB_LOG_ERROR, "add_bitstream: n_bits = (%d)", n_bits); + jmask = (1 << n_bits) - 1; + rbits += n_bits; + reg = (reg << n_bits) | (t & jmask); + while (rbits >= 8) { + *bitstream++ = (reg >> (rbits = rbits - 8)) & 255; + n_bitstream++; + } + return; } -static int calc_bits_needed(unsigned long spread) + +/* + * find min/max of an integer array + * return 0: if min max found + * return 1: if min max not found, min = max = 0 + */ +static int int_min_max_array(int* data, unsigned int n, int* min, int* max) { - int nbit = 0; - if (spread == 0) - return nbit; - while (spread > 0) { - spread /= 2; - nbit++; - } - return nbit; + unsigned int first, i; + int mn, mx, min_val, max_val; + + if (n == 0) { + return 1; + } + + for (first = 0; first < n; first++) { + if (data[first] != INT_MAX) { + mx = mn = data[first]; + break; } + } + if (first >= n) return 1; + + mn = mx = data[first]; -static int find_next_group(const unsigned long* vals, size_t len, unsigned long w, unsigned long l, long* nbits, long* groupsize, long* r_val) +#pragma omp parallel private(min_val, max_val) { - unsigned long lmin = 0; - unsigned long lmax = 0; + min_val = max_val = data[first]; - size_t i = 0; +#pragma omp for private(i) schedule(static) nowait + for (i = first + 1; i < n; i++) { + if (data[i] != INT_MAX) { + min_val = (min_val > data[i]) ? data[i] : min_val; + max_val = (max_val < data[i]) ? data[i] : max_val; + } + } - if (len == 0) - return GRIB_ARRAY_TOO_SMALL; - lmin = vals[0]; - lmax = lmin; - - while (i < len) { - if (vals[i] > lmax) - lmax = vals[i]; - else if (vals[i] < lmin) - lmin = vals[i]; - /*Assert((lmax-lmin) >= 0);*/ - *nbits = calc_bits_needed(lmax - lmin); - *r_val = lmin; - i++; - *groupsize = i; - - if (*groupsize > l - 2) - return GRIB_SUCCESS; - if (*nbits > w - 2) - return GRIB_SUCCESS; +#pragma omp critical + { + if (min_val < mn) mn = min_val; + if (max_val > mx) mx = max_val; + } } - return GRIB_SUCCESS; + *min = mn; + *max = mx; + return 0; +} + + +static double Int_Power(double x, int y) +{ + double value; + + if (y < 0) { + y = -y; + x = 1.0 / x; + } + value = 1.0; + + while (y) { + if (y & 1) { + value *= x; + } + x = x * x; + y >>= 1; + } + return value; } -#if 0 -static int spatial_difference (grib_context *c, unsigned long* vals, long len, long order, long* bias){ - long j = 3; +static int min_max_array(double* data, unsigned int n, double* min, double* max) +{ + unsigned int first, i; + double mn, mx, min_val, max_val; + + if (n == 0) { + *min = *max = 0.0; + return 1; + } + for (first = 0; first < n; first++) { + if (DEFINED_VAL(data[first])) break; + } + if (first >= n) { + *min = *max = 0.0; + return 1; + } - long *v = grib_context_malloc(c,(len)*sizeof(long)); + mn = mx = data[first]; - for(j = 0; j< len;j++) - v[j] = vals[j]; +#pragma omp parallel private(min_val, max_val) + { + min_val = max_val = data[first]; - if (order == 1){ - grib_context_free(c,v); - return GRIB_NOT_IMPLEMENTED; - *bias=v[order]; - for(j = order; j< len;j++){ - v[j] -= vals [j-1]; - if(*bias>v[j]) - *bias = v[j]; +#pragma omp for private(i) schedule(static) nowait + for (i = first + 1; i < n; i++) { + if (DEFINED_VAL(data[i])) { + min_val = (min_val > data[i]) ? data[i] : min_val; + max_val = (max_val < data[i]) ? data[i] : max_val; } } - if (order == 2){ - *bias=v[order]; - for(j = order; j< len;j++){ - v[j] -= vals [j-1]; - v[j] -= vals [j-1] - vals[j-2]; - if(*bias>v[j]) - *bias = v[j]; +#pragma omp critical + { + if (min_val < mn) mn = min_val; + if (max_val > mx) mx = max_val; } } - if (order == 3){ - grib_context_free(c,v); - return GRIB_NOT_IMPLEMENTED; - *bias=v[order]; - for(j = order; j< len;j++){ - v[j] -= vals[j-1]; - v[j] -= vals[j-1] - vals[j-2]; - v[j] -= vals[j-2] - vals[j-3]; - if(*bias>v[j]) - *bias = v[j]; + + *min = mn; + *max = mx; + return 0; } + +#if 0 +static void uint_char(unsigned int i, unsigned char* p) +{ + p[0] = (i >> 24) & 255; + p[1] = (i >> 16) & 255; + p[2] = (i >> 8) & 255; + p[3] = (i)&255; + } + +static unsigned char* mk_bms(grib_accessor* a, double* data, unsigned int* ndata) +{ + int bms_size; + unsigned char *bms, *cbits; + unsigned int nn, i, start, c, imask, i0; + + nn = *ndata; + + /* find first grid point with undefined data */ + for (i = 0; i < nn; i++) { + if (UNDEFINED_VAL(data[i])) break; } - for(j = order; j< len;j++){ - Assert(v[j]-*bias >=0); - vals[j] = v[j]-*bias; + + if (i == nn) { /* all defined values, no need for bms */ + bms = (unsigned char*)malloc(6); + if (bms == NULL) + grib_context_log(a->context, GRIB_LOG_ERROR, "mk_bms: memory allocation problem", ""); + uint_char(6, bms); // length of section 6 + bms[4] = 6; // section 6 + bms[5] = 255; // no bitmap + return bms; } - grib_context_free(c,v); - return 0; + bms_size = 6 + (nn + 7) / 8; + bms = (unsigned char*)malloc(bms_size); + if (bms == NULL) + grib_context_log(a->context, GRIB_LOG_ERROR, "mk_bms: memory allocation problem", ""); + + uint_char(bms_size, bms); // length of section 6 + bms[4] = 6; // section 6 + bms[5] = 0; // has bitmap + + /* bitmap is accessed by bytes, make i0=i/8 bytes of bitmap */ + cbits = bms + 6; + i0 = i >> 3; // Number of bytes, required to store the bitmap + for (i = 0; i < i0; i++) { + // Set all bits in the bitmap to 1 + *cbits++ = 255; + } + + /* start processing data, skip i0*8 */ + + c = 0; // counter: c += imask + imask = 128; // 100.0000 + i0 = i0 << 3; // Number of bits in the bitmap + start = i0; + for (i = i0; i < nn; i++) { + if (DEFINED_VAL(data[i])) { + c += imask; + data[start++] = data[i]; + } + if ((imask >>= 1) == 0) { + *cbits++ = c; + c = 0; + imask = 128; + } + } + if (imask != 128) *cbits = c; + *ndata = start; + return bms; } #endif -int post_process(grib_context* c, long* vals, long len, long order, long bias, const unsigned long extras[2]) +static int post_process(grib_context* c, long* vals, long len, long order, long bias, const unsigned long extras[2]) { unsigned long last, penultimate, j = 0; Assert(order > 0); @@ -413,301 +546,6 @@ int post_process(grib_context* c, long* vals, long len, long order, long bias, c return GRIB_SUCCESS; } -#if 0 -static int de_spatial_difference (grib_context *c, unsigned long* vals, long len, long order, long bias) -{ - long j = 0; - - long i_origin = 0; - long i_first_diff = 0; - long i_second_diff = 0; - - Assert(order > 0); - Assert(order <= 3); - - i_origin=vals[order-1]; - - if (order == 1) { - for(j = 1; j< len;j++){ - i_origin=i_origin+(vals[j]+bias); - vals[j]=i_origin; - } - } - - if (order == 2){ - i_first_diff=vals[1]-vals[0]; - for(j = 2; j< len;j++){ - i_first_diff=i_first_diff+(vals[j]+bias); - i_origin=i_origin+i_first_diff; - vals[j]=i_origin; - } - } - - if (order == 3){ - i_first_diff=vals[2]-vals[1]; - i_second_diff=i_first_diff-(vals[1]-vals[0]); - for(j = 3; j< len;j++){ - i_second_diff=i_second_diff+(vals[j]+bias); - i_first_diff=i_first_diff+i_second_diff; - i_origin=i_origin+i_first_diff; - vals[j]=i_origin; - } - } - return 0; -} -#endif - - -static int pack_double(grib_accessor* a, const double* val, size_t* len) -{ - grib_accessor_data_g22order_packing* self = (grib_accessor_data_g22order_packing*)a; - grib_handle* gh = grib_handle_of_accessor(a); - - size_t i = 0; - size_t j = 0; - size_t n_vals = *len; - - int err = 0; - - unsigned char* buf = NULL; - unsigned char* buf_ref = NULL; - unsigned char* buf_width = NULL; - unsigned char* buf_length = NULL; - unsigned char* buf_vals = NULL; - - double d = 0; - double divisor = 0; - - unsigned long* sec_val = NULL; - unsigned long* group_val = NULL; - - double max; - double min; - - long length_p = 0; - long ref_p = 0; - long width_p = 0; - long vals_p = 0; - - size_t nv = 0; - size_t buf_size = 0; - - long bits_per_value = 0; - - double reference_value = 0; - - long nvals_per_group = 0; - long nbits_per_group_val = 0; - long group_ref_val = 0; - - long binary_scale_factor; - long decimal_scale_factor; - long typeOfOriginalFieldValues; - long groupSplittingMethodUsed; - long missingValueManagementUsed; - long primaryMissingValueSubstitute; - long secondaryMissingValueSubstitute; - long numberOfGroupsOfDataValues; - long referenceForGroupWidths; - long numberOfBitsUsedForTheGroupWidths; - long referenceForGroupLengths; - long lengthIncrementForTheGroupLengths; - long trueLengthOfLastGroup; - long numberOfBitsUsedForTheScaledGroupLengths; - long orderOfSpatialDifferencing; - long numberOfOctetsExtraDescriptors; - - long maxgrw; - long maxgrl; - char packingType[254] = {0,}; - size_t slen = 254; - - if (*len == 0) - return GRIB_NO_VALUES; - - if ((err = grib_get_long_internal(gh, self->bits_per_value, &bits_per_value)) != GRIB_SUCCESS) - return err; - if ((err = grib_get_long_internal(gh, self->decimal_scale_factor, &decimal_scale_factor)) != GRIB_SUCCESS) - return err; - if ((err = grib_get_long_internal(gh, self->typeOfOriginalFieldValues, &typeOfOriginalFieldValues)) != GRIB_SUCCESS) - return err; - - //if((err = grib_get_long_internal(gh,self->groupSplittingMethodUsed,&groupSplittingMethodUsed )) != GRIB_SUCCESS) return err; - //Key groupSplittingMethodUsed uses Code table 5.4 which has two entries: - // * 0 Row by row splitting - // * 1 General group splitting - // * We only support General group splitting - groupSplittingMethodUsed = 1; - - if ((err = grib_get_long_internal(gh, self->missingValueManagementUsed, &missingValueManagementUsed)) != GRIB_SUCCESS) - return err; - if ((err = grib_get_long_internal(gh, self->primaryMissingValueSubstitute, &primaryMissingValueSubstitute)) != GRIB_SUCCESS) - return err; - if ((err = grib_get_long_internal(gh, self->secondaryMissingValueSubstitute, &secondaryMissingValueSubstitute)) != GRIB_SUCCESS) - return err; - if ((err = grib_get_long_internal(gh, self->numberOfBitsUsedForTheGroupWidths, &numberOfBitsUsedForTheGroupWidths)) != GRIB_SUCCESS) - return err; - if ((err = grib_get_long_internal(gh, self->numberOfBitsUsedForTheScaledGroupLengths, &numberOfBitsUsedForTheScaledGroupLengths)) != GRIB_SUCCESS) - return err; - if ((err = grib_get_long_internal(gh, self->orderOfSpatialDifferencing, &orderOfSpatialDifferencing)) != GRIB_SUCCESS) - return err; - if ((err = grib_get_long_internal(gh, self->numberOfOctetsExtraDescriptors, &numberOfOctetsExtraDescriptors)) != GRIB_SUCCESS) - return err; - - self->dirty = 1; - - referenceForGroupWidths = 0; - referenceForGroupLengths = 0; - lengthIncrementForTheGroupLengths = 1; - numberOfBitsUsedForTheGroupWidths = 4; - numberOfBitsUsedForTheScaledGroupLengths = 10; - - /* calculation of integer array */ - sec_val = (unsigned long*)grib_context_malloc(a->context, (n_vals) * sizeof(long)); - if (!sec_val) - return GRIB_OUT_OF_MEMORY; - - d = grib_power(decimal_scale_factor, 10); - - max = val[0]; - min = max; - for (i = 0; i < n_vals; i++) { - if (val[i] > max) - max = val[i]; - else if (val[i] < min) - min = val[i]; - } - min *= d; - max *= d; - - if (grib_get_nearest_smaller_value(gh, self->reference_value, min, &reference_value) != GRIB_SUCCESS) { - grib_context_log(a->context, GRIB_LOG_ERROR, - "unable to find nearest_smaller_value of %g for %s", min, self->reference_value); - return GRIB_INTERNAL_ERROR; - } - - binary_scale_factor = grib_get_binary_scale_fact(max, reference_value, bits_per_value, &err); - if (err != GRIB_SUCCESS) - return err; - divisor = grib_power(-binary_scale_factor, 2); - - for (i = 0; i < n_vals; i++) - sec_val[i] = (unsigned long)((((val[i] * d) - reference_value) * divisor) + 0.5); - - group_val = sec_val; - - maxgrw = calc_pow_2(numberOfBitsUsedForTheGroupWidths); - maxgrl = calc_pow_2(numberOfBitsUsedForTheScaledGroupLengths); - - numberOfGroupsOfDataValues = 0; - nv = n_vals; - vals_p = 0; - - while (find_next_group(group_val, nv, maxgrw, maxgrl, &nbits_per_group_val, &nvals_per_group, &group_ref_val) == GRIB_SUCCESS) { - numberOfGroupsOfDataValues++; - nv -= nvals_per_group; - group_val += nvals_per_group; - vals_p += nbits_per_group_val * nvals_per_group; - } - - trueLengthOfLastGroup = nvals_per_group; - - buf_size = (7 + (numberOfGroupsOfDataValues * bits_per_value)) / 8; - buf_size += (7 + (numberOfGroupsOfDataValues * numberOfBitsUsedForTheGroupWidths)) / 8; - buf_size += (7 + (numberOfGroupsOfDataValues * numberOfBitsUsedForTheScaledGroupLengths)) / 8; - - buf_size += (vals_p / 8) + ((vals_p % 8) ? 1 : 0); - - buf = (unsigned char*)grib_context_malloc_clear(a->context, buf_size); - - buf_ref = buf; - buf_width = buf_ref + (7 + (numberOfGroupsOfDataValues * bits_per_value)) / 8; - buf_length = buf_width + (7 + (numberOfGroupsOfDataValues * numberOfBitsUsedForTheGroupWidths)) / 8; - buf_vals = buf_length + (7 + (numberOfGroupsOfDataValues * numberOfBitsUsedForTheScaledGroupLengths)) / 8; - - nv = n_vals; - group_val = sec_val; - vals_p = 0; - ref_p = 0; - width_p = 0; - length_p = 0; - i = 0; - - while (find_next_group(group_val, nv, maxgrw, maxgrl, &nbits_per_group_val, &nvals_per_group, &group_ref_val) == GRIB_SUCCESS) { - grib_encode_unsigned_longb(buf_ref, group_ref_val, &ref_p, bits_per_value); - grib_encode_unsigned_longb(buf_width, nbits_per_group_val, &width_p, numberOfBitsUsedForTheGroupWidths); - grib_encode_unsigned_longb(buf_length, nvals_per_group, &length_p, numberOfBitsUsedForTheScaledGroupLengths); - - if (nbits_per_group_val) - for (j = 0; j < nvals_per_group; j++) { - grib_encode_unsigned_longb(buf_vals, sec_val[i + j] - group_ref_val, &vals_p, nbits_per_group_val); - } - i += nvals_per_group; - group_val += nvals_per_group; - nv -= nvals_per_group; - } - - /*fprintf(stdout,"spatial pack_double:: %ld bytes %lu marked\n", (ref_p+7)/8 + (width_p+7)/8 + (length_p+7)/8 + (vals_p+7)/8, buf_size);*/ - - grib_buffer_replace(a, buf, buf_size, 1, 1); - grib_context_free(a->context, buf); - grib_context_free(a->context, sec_val); - - if ((err = grib_set_long_internal(gh, self->bits_per_value, bits_per_value)) != GRIB_SUCCESS) - return err; - if ((err = grib_set_double_internal(gh, self->reference_value, reference_value)) != GRIB_SUCCESS) - return err; - { - /* Make sure we can decode it again */ - double ref = 1e-100; - grib_get_double_internal(gh, self->reference_value, &ref); - Assert(ref == reference_value); - } - if ((err = grib_set_long_internal(gh, self->binary_scale_factor, binary_scale_factor)) != GRIB_SUCCESS) - return err; - if ((err = grib_set_long_internal(gh, self->decimal_scale_factor, decimal_scale_factor)) != GRIB_SUCCESS) - return err; - if ((err = grib_set_long_internal(gh, self->typeOfOriginalFieldValues, typeOfOriginalFieldValues)) != GRIB_SUCCESS) - return err; - if ((err = grib_set_long_internal(gh, self->groupSplittingMethodUsed, groupSplittingMethodUsed)) != GRIB_SUCCESS) - return err; - if ((err = grib_set_long_internal(gh, self->missingValueManagementUsed, missingValueManagementUsed)) != GRIB_SUCCESS) - return err; - if ((err = grib_set_long_internal(gh, self->primaryMissingValueSubstitute, primaryMissingValueSubstitute)) != GRIB_SUCCESS) - return err; - if ((err = grib_set_long_internal(gh, self->secondaryMissingValueSubstitute, secondaryMissingValueSubstitute)) != GRIB_SUCCESS) - return err; - if ((err = grib_set_long_internal(gh, self->numberOfGroupsOfDataValues, numberOfGroupsOfDataValues)) != GRIB_SUCCESS) - return err; - if ((err = grib_set_long_internal(gh, self->referenceForGroupWidths, referenceForGroupWidths)) != GRIB_SUCCESS) - return err; - if ((err = grib_set_long_internal(gh, self->numberOfBitsUsedForTheGroupWidths, numberOfBitsUsedForTheGroupWidths)) != GRIB_SUCCESS) - return err; - if ((err = grib_set_long_internal(gh, self->referenceForGroupLengths, referenceForGroupLengths)) != GRIB_SUCCESS) - return err; - if ((err = grib_set_long_internal(gh, self->lengthIncrementForTheGroupLengths, lengthIncrementForTheGroupLengths)) != GRIB_SUCCESS) - return err; - if ((err = grib_set_long_internal(gh, self->trueLengthOfLastGroup, trueLengthOfLastGroup)) != GRIB_SUCCESS) - return err; - if ((err = grib_set_long_internal(gh, self->numberOfBitsUsedForTheScaledGroupLengths, numberOfBitsUsedForTheScaledGroupLengths)) != GRIB_SUCCESS) - return err; - - err = grib_get_string(gh, "packingType", packingType, &slen); - if (!err && strcmp(packingType, "grid_complex_spatial_differencing") == 0) { - if ((err = grib_set_long_internal(gh, self->orderOfSpatialDifferencing, 0)) != GRIB_SUCCESS) - return err; - if ((err = grib_set_long_internal(gh, self->numberOfOctetsExtraDescriptors, 0)) != GRIB_SUCCESS) - return err; - } - - /* ECC-259: Set correct number of values */ - if ((err = grib_set_long_internal(gh, self->numberOfValues, *len)) != GRIB_SUCCESS) - return err; - - return GRIB_SUCCESS; -} - - template static int unpack(grib_accessor* a, T* val, size_t* len) { @@ -757,8 +595,8 @@ static int unpack(grib_accessor* a, T* val, size_t* len) long lengthIncrementForTheGroupLengths; long trueLengthOfLastGroup; long numberOfBitsUsedForTheScaledGroupLengths; - long orderOfSpatialDifferencing; - long numberOfOctetsExtraDescriptors; + long orderOfSpatialDifferencing = 0; + long numberOfOctetsExtraDescriptors = 0; double missingValue = 0; err = grib_value_count(a, &n_vals); @@ -958,6 +796,1144 @@ static int unpack(grib_accessor* a, T* val, size_t* len) return err; } + +static int find_nbits(unsigned int i) +{ +#if !defined __GNUC__ || __GNUC__ < 4 + int j; + j = 0; + + while (i > 65535) { + i = i >> 16; + j += 16; + } + // i = 16 bits + if (i > 255) { + i = i >> 8; + j += 8; + } + // i = 8 bits + if (i > 15) { + i = i >> 4; + j += 4; + } + // i = 4 bits + if (i > 3) { + i = i >> 2; + j += 2; + } + // i = 2 bits + return (i >= 2) ? j + 2 : j + i; +#else + return (i == 0) ? 0 : 8 * sizeof(unsigned int) - __builtin_clz(i); +#endif +} + + +struct section +{ + int mn, mx, missing; // stats + int i0, i1; // pointers to data[] + struct section *head, *tail; +}; + + +static int sizeofsection(struct section* s, int ref_bits, int width_bits, int has_undef) +{ + if (s->mn == INT_MAX) { // all undef + return ref_bits + width_bits; + } + + if (s->mn == s->mx) { + if (s->missing == 0) { // constant and no missings + return ref_bits + width_bits; + } + else { // constant and missing + return (s->i1 - s->i0 + 1) * has_undef + ref_bits + width_bits; + } + } + + return find_nbits(s->mx - s->mn + has_undef) * (s->i1 - s->i0 + 1) + ref_bits + width_bits; +} + + +static int sizeofsection2(int mn, int mx, int n, int ref_bits, int width_bits, + int has_undef_sec, int has_undef) +{ + if (mn == INT_MAX) return ref_bits + width_bits; + if (mn == mx) { + if (has_undef_sec == 0) return ref_bits + width_bits; + return n * has_undef + ref_bits + width_bits; + } + return find_nbits(mx - mn + has_undef) * n + ref_bits + width_bits; +} + + +static int size_all(struct section* s, int ref_bits, int width_bits, + int has_undef) +{ + int bits; + + bits = 0; + while (s) { + bits += sizeofsection(s, ref_bits, width_bits, has_undef); + s = s->tail; + } + return (bits + 7) / 8; +} + + +static void move_one_left(struct section* s, int* v) +{ + struct section* t; + int val, i, j, k; + + t = s->tail; + s->i1 += 1; + t->i0 += 1; + val = v[s->i1]; + + // update s statistics + + if (val == INT_MAX) + s->missing = 1; + else { + s->mx = s->mx > val ? s->mx : val; + s->mn = s->mn < val ? s->mn : val; + } + + // remove t? + + if (t->i0 > t->i1) { + s->tail = t->tail; + t = s->tail; + if (t) t->head = s; + return; + } + + // update s statistics + + if (val == INT_MAX) { + for (i = t->i0; i <= t->i1; i++) { + if (v[i] == INT_MAX) return; + } + t->missing = 0; + return; + } + if (val == t->mx) { + k = INT_MAX; + for (j = 0, i = t->i0; i <= t->i1; i++) { + if (v[i] != INT_MAX) { + if (j == 0) { + k = v[i]; + j++; + } + else + k = k < v[i] ? v[i] : k; + } + } + t->mx = k; + return; + } + if (val == t->mn) { + k = INT_MAX; + for (j = 0, i = t->i0; i <= t->i1; i++) { + if (v[i] != INT_MAX) { + if (j == 0) { + k = v[i]; + j++; + } + else + k = k > v[i] ? v[i] : k; + } + } + t->mn = k; + return; + } + return; +} + + +static void move_one_right(struct section* s, int* v) +{ + struct section* t; + int val, i, j, k; + + t = s->tail; + s->i1 -= 1; + t->i0 -= 1; + val = v[t->i0]; + + // update t statistics + + if (val == INT_MAX) + t->missing = 1; + else { + t->mx = t->mx > val ? t->mx : val; + t->mn = t->mn < val ? t->mn : val; + } + + // if s is empty, copy t to s and recalculate + + if (s->i0 > s->i1) { + s->i0 = t->i0; + s->i1 = t->i1; + s->tail = t->tail; + + s->mx = s->mn = INT_MAX; + j = s->missing = 0; + for (i = s->i0; i <= s->i1; i++) { + if (v[i] == INT_MAX) + s->missing = 1; + else if (j == 0) { + s->mx = s->mn = v[i]; + j++; + } + else { + s->mx = s->mx > v[i] ? s->mx : v[i]; + s->mn = s->mn < v[i] ? s->mx : v[i]; + } + } + return; + } + + // update s statistics + + if (val == INT_MAX) { + for (i = s->i0; i <= s->i1; i++) { + if (v[i] == INT_MAX) return; + } + s->missing = 0; + return; + } + if (val == s->mx) { + k = INT_MAX; + for (j = 0, i = s->i0; i <= s->i1; i++) { + if (v[i] != INT_MAX) { + if (j == 0) { + k = v[i]; + j++; + } + else + k = k < v[i] ? v[i] : k; + } + } + s->mx = k; + return; + } + if (val == s->mn) { + k = INT_MAX; + for (j = 0, i = s->i0; i <= s->i1; i++) { + if (v[i] != INT_MAX) { + if (j == 0) { + k = v[i]; + j++; + } + else + k = k > v[i] ? v[i] : k; + } + } + s->mn = k; + return; + } + return; +} + + +static void exchange(struct section* s, int* v, int has_undef, int LEN_SEC_MAX) +{ + struct section* t; + int val0, val1, nbit_s, nbit_t; + + if (s == NULL) return; + while ((t = s->tail) != NULL) { + // nbit_s = find_nbits(s->mx - s->mn + has_undef); + // nbit_t = find_nbits(t->mx - t->mn + has_undef); + + if (s->mn == INT_MAX) + nbit_s = 0; + else if (s->mn == s->mx) + nbit_s = s->missing; + else + nbit_s = find_nbits(s->mx - s->mn + has_undef); + + if (t->mn == INT_MAX) + nbit_t = 0; + else if (t->mn == t->mx) + nbit_t = t->missing; + else + nbit_t = find_nbits(t->mx - t->mn + has_undef); + + if (nbit_s == nbit_t) { + s = t; + continue; + } + + val0 = v[s->i1]; + val1 = v[t->i0]; + + if (s->missing == 1 || t->missing == 1) { + s = t; + continue; + } + // if (val0 == INT_MAX || val1 == INT_MAX) { s=t; continue; } + + if (nbit_s < nbit_t && val1 == INT_MAX) { + if ((s->i1 - s->i0) < LEN_SEC_MAX && s->mx != s->mn) + move_one_left(s, v); + else + s = t; + continue; + } + + if (nbit_s > nbit_t && val0 == INT_MAX) { + if ((t->i1 - t->i0) < LEN_SEC_MAX && t->mn != t->mx) { + move_one_right(s, v); + } + else + s = t; + continue; + } + + // if (s->missing == 1 || t->missing == 1) { s=t; continue; } + + // 3/2014 val0 = v[s->i1]; + // 3/2014 val1 = v[t->i0]; + + if (nbit_s < nbit_t && (s->i1 - s->i0) < LEN_SEC_MAX && val1 >= s->mn && + val1 <= s->mx) { + move_one_left(s, v); + } + else if (nbit_s > nbit_t && (t->i1 - t->i0) < LEN_SEC_MAX && + val0 >= t->mn && val0 <= t->mx) { + move_one_right(s, v); + } + else + s = s->tail; + } +} + + +static void merge_j(struct section* h, int ref_bits, int width_bits, int has_undef, int param, int LEN_SEC_MAX) +{ + struct section *t, *m; + int size_head, size_mid, size_tail, saving_mt, saving_hm; + int min0, max0, min1, max1; + + size_head = size_mid = size_tail = 0; + + while (h && (m = h->tail)) { + t = m->tail; + + // h -> m -> t + + // find savings of merged h - m + saving_hm = -1; + min0 = max0 = min1 = max1 = 0; // turn off error warnings + if (m->i1 - h->i0 < LEN_SEC_MAX) { + if (m->mn == INT_MAX) { + max0 = h->mx; + min0 = h->mn; + } + else if (h->mn == INT_MAX) { + max0 = m->mx; + min0 = m->mn; + } + else { + min0 = h->mn < m->mn ? h->mn : m->mn; + max0 = h->mx > m->mx ? h->mx : m->mx; + } + if (max0 - min0 <= param) { + if (size_head == 0) + size_head = + sizeofsection(h, ref_bits, width_bits, has_undef); + if (size_mid == 0) + size_mid = + sizeofsection(m, ref_bits, width_bits, has_undef); + saving_hm = size_head + size_mid - + sizeofsection2(min0, max0, m->i1 - h->i0 + 1, + ref_bits, width_bits, + h->missing || m->missing, has_undef); + } + } + + // find savings of merged m-t + saving_mt = -1; + if (t && t->i1 - m->i0 < LEN_SEC_MAX) { + if (m->mn == INT_MAX) { + max1 = t->mx; + min1 = t->mn; + } + else if (t->mn == INT_MAX) { + max1 = m->mx; + min1 = m->mn; + } + else { + min1 = m->mn < t->mn ? m->mn : t->mn; + max1 = m->mx > t->mx ? m->mx : t->mx; + } + if (max1 - min1 <= param) { + if (size_mid == 0) + size_mid = + sizeofsection(m, ref_bits, width_bits, has_undef); + if (size_tail == 0) + size_tail = + sizeofsection(t, ref_bits, width_bits, has_undef); + saving_mt = size_mid + size_tail - + sizeofsection2(min1, max1, t->i1 - m->i0 + 1, + ref_bits, width_bits, + m->missing || t->missing, has_undef); + } + } + + if (saving_hm >= saving_mt && saving_hm >= 0) { + // merge h and m + h->i1 = m->i1; + h->tail = m->tail; + h->mn = min0; + h->mx = max0; + h->missing = h->missing || m->missing; + m = h->tail; + if (m) m->head = h; + if (h->head) h = h->head; + size_head = size_mid = size_tail = 0; + } + else if (saving_mt >= saving_hm && saving_mt >= 0) { + // merge m and t + m->i1 = t->i1; + m->tail = t->tail; + m->mn = min1; + m->mx = max1; + m->missing = m->missing || t->missing; + t = m->tail; + if (t) t->head = m; + size_head = size_mid = size_tail = 0; + } + else { + // no merging + h = h->tail; + size_head = size_mid; + size_mid = size_tail; + size_tail = 0; + } + } +} + + +static int pack_double(grib_accessor* a, const double* val, size_t* len) +{ + /*long size_sec7_header;*/ + unsigned char* sec7; + long sec5_19, sec5_36, sec5_46, sec5_48; + grib_accessor_data_g22order_packing* self = (grib_accessor_data_g22order_packing*)a; + grib_handle* gh = grib_handle_of_accessor(a); + + /*size_t i = 0;*/ + /*size_t j = 0;*/ + // size_t n_vals = *len; + + int err = 0; + + // unsigned char* buf = NULL; + // unsigned char* buf_ref = NULL; + //unsigned char* buf_length = NULL; + + // double d = 0; + //double divisor = 0; + + long bits_per_value = 0; + + //double reference_value = 0; + + //long nvals_per_group = 0; + //long nbits_per_group_val = 0; + + long binary_scale_factor; + long decimal_scale_factor; + long optimize_scale_factor; + long typeOfOriginalFieldValues; + //long groupSplittingMethodUsed; + long missingValueManagementUsed; + long primaryMissingValueSubstitute; + long secondaryMissingValueSubstitute; + //long numberOfGroupsOfDataValues; + // long referenceForGroupWidths; + long numberOfBitsUsedForTheGroupWidths; + //long trueLengthOfLastGroup; + long numberOfBitsUsedForTheScaledGroupLengths; + long orderOfSpatialDifferencing; + long numberOfOctetsExtraDescriptors; + + double* data; + size_t ndata = *len; + int dec_scale; + int bin_scale; + int wanted_bits; + int max_bits; + int packing_mode; + int use_bitmap; + + int j, j0, k, *v, binary_scale, nbits, has_undef, extra_0, extra_1; + unsigned int i, ii; + int vmn, vmx, vbits; + /*Sections*/ + double max_val, min_val, ref, frange, dec_factor, scale; + double mn, mx; + struct section start, *list, *list_backup, *s; + /*Grouip*/ + int ngroups, grefmx, glenmn, glenmx, gwidmn, gwidmx, len_last; + int size_sec7; + int *refs, *lens, *widths, *itmp, *itmp2; + // int est_group_width = 12; + int est_group_width = 6; + + size_t ndef = 0; + size_t nndata = *len; // done + size_t nstruct; + + long bitmap_present = 0; + + int LEN_SEC_MAX = 127; + int LEN_BITS = 7; + + if (*len == 0) + return GRIB_NO_VALUES; + + if ((err = grib_get_long_internal(gh, self->bits_per_value, &bits_per_value)) != GRIB_SUCCESS) + return err; + if ((err = grib_get_long_internal(gh, self->decimal_scale_factor, &decimal_scale_factor)) != GRIB_SUCCESS) + return err; + if ((err = grib_get_long_internal(gh, self->optimize_scale_factor, &optimize_scale_factor)) != GRIB_SUCCESS) + return err; + optimize_scale_factor = 1; /* TODO: To be reviewed */ + + if ((err = grib_get_long_internal(gh, self->binary_scale_factor, &binary_scale_factor)) != GRIB_SUCCESS) + return err; + if ((err = grib_get_long_internal(gh, self->typeOfOriginalFieldValues, &typeOfOriginalFieldValues)) != GRIB_SUCCESS) + return err; + if ((err = grib_get_long_internal(gh, self->missingValueManagementUsed, &missingValueManagementUsed)) != GRIB_SUCCESS) + return err; + if ((err = grib_get_long_internal(gh, self->primaryMissingValueSubstitute, &primaryMissingValueSubstitute)) != GRIB_SUCCESS) + return err; + if ((err = grib_get_long_internal(gh, self->secondaryMissingValueSubstitute, &secondaryMissingValueSubstitute)) != GRIB_SUCCESS) + return err; + if ((err = grib_get_long_internal(gh, self->numberOfBitsUsedForTheGroupWidths, &numberOfBitsUsedForTheGroupWidths)) != GRIB_SUCCESS) + return err; + if ((err = grib_get_long_internal(gh, self->numberOfBitsUsedForTheScaledGroupLengths, &numberOfBitsUsedForTheScaledGroupLengths)) != GRIB_SUCCESS) + return err; + if ((err = grib_get_long_internal(gh, self->orderOfSpatialDifferencing, &orderOfSpatialDifferencing)) != GRIB_SUCCESS) + return err; + if ((err = grib_get_long_internal(gh, self->numberOfOctetsExtraDescriptors, &numberOfOctetsExtraDescriptors)) != GRIB_SUCCESS) + return err; + if ((err = grib_get_long_internal(gh, "bitmapPresent", &bitmap_present)) != GRIB_SUCCESS) + return err; + + max_bits = bits_per_value; // TODO(masn) + + packing_mode = orderOfSpatialDifferencing; + use_bitmap = bitmap_present; + wanted_bits = bits_per_value; + data = (double*) val; + ndata = *len; + dec_scale = -decimal_scale_factor; + bin_scale = binary_scale_factor; + ndef = 0; + + for (i = 0; i < ndata; i++) { + if (DEFINED_VAL(data[i])) { + ndef = ndef + 1; + } + } + + if (ndef == 0) { // all undefined values + if ((err = grib_set_double_internal(gh, self->reference_value, grib_ieee_to_long(0.0))) != GRIB_SUCCESS) + return err; + if ((err = grib_set_long_internal(gh, self->binary_scale_factor, 0)) != GRIB_SUCCESS) + return err; + if ((err = grib_set_long_internal(gh, self->decimal_scale_factor, 0)) != GRIB_SUCCESS) + return err; + if ((err = grib_set_long_internal(gh, self->bits_per_value, 8)) != GRIB_SUCCESS) + return err; + if ((err = grib_set_long_internal(gh, self->typeOfOriginalFieldValues, 0)) != GRIB_SUCCESS) + return err; + if ((err = grib_set_long_internal(gh, self->groupSplittingMethodUsed, 1)) != GRIB_SUCCESS) + return err; + if ((err = grib_set_long_internal(gh, self->missingValueManagementUsed, 1)) != GRIB_SUCCESS) + return err; + if ((err = grib_set_long_internal(gh, self->primaryMissingValueSubstitute, grib_ieee_to_long((float)9.999e20))) != GRIB_SUCCESS) + return err; + if ((err = grib_set_long_internal(gh, self->secondaryMissingValueSubstitute, 0xFFFFFFFF)) != GRIB_SUCCESS) + return err; + if ((err = grib_set_long_internal(gh, self->numberOfGroupsOfDataValues, 1)) != GRIB_SUCCESS) + return err; + if ((err = grib_set_long_internal(gh, self->referenceForGroupWidths, 0)) != GRIB_SUCCESS) + return err; + if ((err = grib_set_long_internal(gh, self->numberOfBitsUsedForTheGroupWidths, 8)) != GRIB_SUCCESS) + return err; + if ((err = grib_set_long_internal(gh, self->referenceForGroupLengths, *len)) != GRIB_SUCCESS) + return err; + if ((err = grib_set_long_internal(gh, self->lengthIncrementForTheGroupLengths, 1)) != GRIB_SUCCESS) + return err; + if ((err = grib_set_long_internal(gh, self->trueLengthOfLastGroup, *len)) != GRIB_SUCCESS) + return err; + if ((err = grib_set_long_internal(gh, self->numberOfBitsUsedForTheScaledGroupLengths, 8)) != GRIB_SUCCESS) + return err; + } + + /* compute bitmap section */ + /*if (use_bitmap == 0 || ndef == ndata) {*/ + /* if ((err = grib_set_long_internal(gh, "bitmapPresent", 0)) != GRIB_SUCCESS)*/ + /* return err;*/ + /*}*/ + /*else {*/ + /* if ((err = grib_set_long_internal(gh, "bitmapPresent", 1)) != GRIB_SUCCESS)*/ + /* return err;*/ + /*}*/ + + nndata = use_bitmap ? ndef : ndata; + has_undef = use_bitmap ? 0 : ndata != ndef; + + v = (int*)malloc(((size_t)nndata) * sizeof(int)); + if (min_max_array(data, ndata, &mn, &mx) != 0) + grib_context_log(a->context, GRIB_LOG_ERROR, "complex_pk: min max error", ""); + min_val = (double)mn; + max_val = (double)mx; + + binary_scale = bin_scale; + + if (optimize_scale_factor == 0) { // ECMWF style + ref = min_val; + frange = max_val - ref; + dec_scale = 0; + if (frange != 0.0) { + frexp(frange, &j); // Required bits + binary_scale = j - wanted_bits; // Scale factor + nbits = wanted_bits; + scale = ldexp(1.0, -binary_scale); + frange = floor((max_val - ref) * scale + 0.5); + frexp(frange, &j); + if (j != nbits) binary_scale++; + } + else { + binary_scale = nbits = 0; + scale = 1; + } + } + else { + if (dec_scale) { + dec_factor = Int_Power(10.0, -dec_scale); + min_val *= dec_factor; + max_val *= dec_factor; + if (has_undef) { +#pragma omp parallel for private(i) + for (i = 0; i < nndata; i++) { + if (DEFINED_VAL(data[i])) data[i] *= dec_factor; + } + } + else { +#pragma omp parallel for private(i) + for (i = 0; i < nndata; i++) { + data[i] *= dec_factor; + } + } + } + scale = ldexp(1.0, -binary_scale); + // ref = floor(min_val*scale)/scale; + ref = min_val; + frange = floor((max_val - ref) * scale + 0.5); + frexp(frange, &nbits); + if (nbits > max_bits) { + binary_scale += (nbits - max_bits); + nbits = max_bits; + } + } + + if (binary_scale) { + scale = ldexp(1.0, -binary_scale); + if (has_undef) { +#pragma omp parallel for private(i) + for (i = 0; i < nndata; i++) { + if (DEFINED_VAL(data[i])) { + v[i] = floor((data[i] - ref) * scale + 0.5); + v[i] = v[i] >= 0 ? v[i] : 0; + } + else + v[i] = INT_MAX; + } + } + else { +#pragma omp parallel for private(i) + for (i = 0; i < nndata; i++) { + v[i] = floor((data[i] - ref) * scale + 0.5); + v[i] = v[i] >= 0 ? v[i] : 0; + } + } + } + else { + scale = 1.0; + if (has_undef) { +#pragma omp parallel for private(i) + for (i = 0; i < nndata; i++) { + if (DEFINED_VAL(data[i])) { + v[i] = floor(data[i] - ref + 0.5); + v[i] = v[i] >= 0 ? v[i] : 0; + } + else + v[i] = INT_MAX; + } + } + else { +#pragma omp parallel for private(i) + for (i = 0; i < nndata; i++) { + v[i] = floor(data[i] - ref + 0.5); + v[i] = v[i] >= 0 ? v[i] : 0; + } + } + } + + vmx = vmn = 0; + extra_0 = extra_1 = 0; // turn off warnings + + if (packing_mode == 3) { + // delta_delta(v, nndata, &vmn, &vmx, &extra_0, &extra_1); + + // single core version + + { + int last, last0, penultimate; + for (i = 0; i < nndata; i++) { + if (v[i] != INT_MAX) { + extra_0 = penultimate = v[i]; + v[i++] = 0; + break; + } + } + for (; i < nndata; i++) { + if (v[i] != INT_MAX) { + extra_1 = last = v[i]; + v[i++] = 0; + break; + } + } + + for (; i < nndata; i++) { + if (v[i] != INT_MAX) { + last0 = v[i]; + v[i] = v[i] - 2 * last + penultimate; + penultimate = last; + last = last0; + vmn = vmn > v[i] ? v[i] : vmn; + vmx = vmx < v[i] ? v[i] : vmx; + } + } + } + } + else if (packing_mode == 2) { + // delta(v, nndata, &vmn, &vmx, &extra_0); + + // single core version + { + int last, last0; + + for (i = 0; i < nndata; i++) { + if (v[i] != INT_MAX) { + extra_0 = last = v[i]; + v[i++] = 0; + break; + } + } + for (; i < nndata; i++) { + if (v[i] != INT_MAX) { + last0 = v[i]; + v[i] = v[i] - last; + last = last0; + vmn = vmn > v[i] ? v[i] : vmn; + vmx = vmx < v[i] ? v[i] : vmx; + } + } + } + } + else if (packing_mode == 1) { + // find min/max + int_min_max_array(v, nndata, &vmn, &vmx); + } + + +#ifdef DEBUG + grib_context_log(a->context, GRIB_LOG_DEBUG, "COMPLEX: 2: vmx %d vmn %d nbits %d", vmx, vmn, + find_nbits(vmx - vmn + has_undef)); +#endif + +#pragma omp parallel for private(i) + for (i = 0; i < nndata; i++) { + v[i] = (v[i] != INT_MAX) ? v[i] - vmn : INT_MAX; + } + vmx = vmx - vmn; + vbits = find_nbits(vmx + has_undef); + + /* size of merged struct */ + + ii = 0; + nstruct = 1; + for (i = 1; i < nndata; i++) { + if (((i - ii + 1) > LEN_SEC_MAX) || (v[i] != v[ii])) { + nstruct++; + ii = i; + } + } + + list = (struct section*)malloc((size_t)nstruct * sizeof(struct section)); + if (list == NULL) + grib_context_log(a->context, GRIB_LOG_ERROR, "complex_grib_out: memory allocation of list failed", ""); + + // initialize linked list + + // The first element in the list is initialized with the first element from v + ii = 0; // section counter + list[0].mn = list[0].mx = v[0]; + list[0].missing = (v[0] == INT_MAX); + list[0].i0 = list[0].i1 = 0; + for (i = 1; i < nndata; i++) { + // join last section + // where all values in the section are the same + if ((i - list[ii].i0 < LEN_SEC_MAX) && (v[i] == list[ii].mn)) { + list[ii].i1 = i; + } + // make new section + else { + ii++; + list[ii].mn = list[ii].mx = v[i]; + list[ii].missing = (v[i] == INT_MAX); + list[ii].i0 = list[ii].i1 = i; + } + } + list[0].head = NULL; + list[ii].tail = NULL; + start.tail = &list[0]; + + if (nstruct != ii + 1) + grib_context_log(a->context, GRIB_LOG_ERROR, "complex_pk, nstruct=%d wanted %d", nstruct, ii + 1); + +#pragma omp parallel for private(k) + for (i = 1; i < nstruct; i++) { + list[i].head = &list[i - 1]; + list[i - 1].tail = &list[i]; + } + + // sequence : has_undef == 0 : 2**n - 1 1, 3, 7, .. + // sequence : has_undef == 1 : 2**n - 2 0, 2, 6 + + k = has_undef ? 2 : 1; + + while (k < vmx / 2) { + merge_j(start.tail, vbits, LEN_BITS + est_group_width, has_undef, k, + LEN_SEC_MAX); +#ifdef DEBUG + j = size_all(start.tail, vbits, LEN_BITS + est_group_width, has_undef); + grib_context_log(a->context, GRIB_LOG_DEBUG, "COMPLEX: complex start %d %d bytes", k, j); +#endif + k = 2 * k + 1 + has_undef; + } + + // try making segment sizes larger + // 12/2015 need to segment size less 25 bits, bitstream software limitation + + list_backup = + (struct section*)malloc(((size_t)nstruct) * sizeof(struct section)); + if (list_backup == NULL) + grib_context_log(a->context, GRIB_LOG_ERROR, "complex_grib_out: memory allocation of list_backup failed"); + + j = size_all(start.tail, vbits, LEN_BITS + est_group_width, has_undef); + j0 = j + 1; +#ifdef DEBUG + grib_context_log(a->context, GRIB_LOG_DEBUG, "COMPLEX: complex start inc segments size0 %d segsize %d", j, LEN_SEC_MAX); +#endif + while (j < j0 && LEN_BITS < 25) { + j0 = j; + LEN_BITS++; + LEN_SEC_MAX = LEN_SEC_MAX + LEN_SEC_MAX + 1; + memcpy(list_backup, list, nstruct * sizeof(struct section)); + merge_j(start.tail, vbits, LEN_BITS + est_group_width, has_undef, k, + LEN_SEC_MAX); + j = size_all(start.tail, vbits, LEN_BITS + est_group_width, has_undef); +#ifdef DEBUG + grib_context_log(a->context, GRIB_LOG_DEBUG, + "COMPLEX: complex inc segments size size0 %d size1 %d segsize %d " + "LEN_BITS=%d", + j0, j, LEN_SEC_MAX, LEN_BITS); +#endif + if (j > j0) { + memcpy(list, list_backup, nstruct * sizeof(struct section)); + LEN_BITS--; + LEN_SEC_MAX = (LEN_SEC_MAX - 1) / 2; + } + } + free(list_backup); + + exchange(start.tail, v, has_undef, LEN_SEC_MAX); +#ifdef DEBUG + j = size_all(start.tail, vbits, LEN_BITS + est_group_width, has_undef); + grib_context_log(a->context, GRIB_LOG_DEBUG, "COMPLEX: exchange %d bytes", j); +#endif + + merge_j(start.tail, vbits, LEN_BITS + est_group_width, has_undef, vmx, + LEN_SEC_MAX); +#ifdef DEBUG + j = size_all(start.tail, vbits, LEN_BITS + est_group_width, has_undef); + grib_context_log(a->context, GRIB_LOG_DEBUG, "COMPLEX: complex start %d %d bytes", vmx, j); +#endif + + // finished making segments + // findout number of bytes for extra info (packing_mode 2/3) + + if (packing_mode != 1) { // packing modes 2/3 + k = vmn >= 0 ? find_nbits(vmn) + 1 : find_nbits(-vmn) + 1; + // + 1 work around for NCEP bug + j = find_nbits(extra_0) + 1; + if (j > k) k = j; + + if (packing_mode == 3) { + // + 1 work around for NCEP bug + j = find_nbits(extra_1) + 1; + if (j > k) k = j; + } + sec5_48 = (k + 7) / 8; // number of bytes for extra and vmn + } + + // scale the linked list + s = start.tail; + if (s == NULL) + grib_context_log(a->context, GRIB_LOG_ERROR, "complex grib_out: program error 1"); + ngroups = 0; // number of groups + + while (s) { + ngroups++; + s = s->tail; + } + + lens = (int*)malloc(((size_t)ngroups) * sizeof(int)); + widths = (int*)malloc(((size_t)ngroups) * sizeof(int)); + refs = (int*)malloc(((size_t)ngroups) * sizeof(int)); + itmp = (int*)malloc(((size_t)ngroups) * sizeof(int)); + itmp2 = (int*)malloc(((size_t)ngroups) * sizeof(int)); + + if (lens == NULL || widths == NULL || refs == NULL || itmp == NULL || + itmp2 == NULL) + grib_context_log(a->context, GRIB_LOG_ERROR, "complex grib_out: memory allocation"); + + /* make vectors so we can OpenMP the loop */ + for (i = ii = 0, s = start.tail; ii < ngroups; ii++, s = s->tail) { + lens[ii] = s->i1 - s->i0 + 1; + i += lens[ii]; + refs[ii] = s->mn; + itmp[ii] = s->mx; + itmp2[ii] = s->missing; + } + if (i != nndata) + grib_context_log(a->context, GRIB_LOG_ERROR, "complex grib_out: program error 2"); + +#pragma omp parallel for private(i) + for (i = 0; i < ngroups; i++) { + if (refs[i] == INT_MAX) + widths[i] = 0; + else if (refs[i] == itmp[i]) + widths[i] = itmp2[i]; + else + widths[i] = find_nbits(itmp[i] - refs[i] + has_undef); + } + + // group lengths + len_last = lens[ngroups - 1]; // length of last segment + + glenmn = glenmx = lens[0]; + gwidmx = gwidmn = widths[0]; + grefmx = refs[0] != INT_MAX ? refs[0] : 0; + +#pragma omp parallel private(i) + { + int glenmn_thread, glenmx_thread, gwidmx_thread, gwidmn_thread, + grefmx_thread; + glenmn_thread = glenmx_thread = lens[0]; + gwidmn_thread = gwidmx_thread = widths[0]; + grefmx_thread = refs[0] != INT_MAX ? refs[0] : 0; + +#pragma omp for nowait + for (i = 1; i < ngroups; i++) { + glenmx_thread = glenmx_thread >= lens[i] ? glenmx_thread : lens[i]; + glenmn_thread = glenmn_thread <= lens[i] ? glenmn_thread : lens[i]; + gwidmx_thread = + gwidmx_thread >= widths[i] ? gwidmx_thread : widths[i]; + gwidmn_thread = + gwidmn_thread <= widths[i] ? gwidmn_thread : widths[i]; + if (refs[i] != INT_MAX && refs[i] > grefmx_thread) + grefmx_thread = refs[i]; + } +#pragma omp critical + { + glenmx = glenmx >= glenmx_thread ? glenmx : glenmx_thread; + glenmn = glenmn <= glenmn_thread ? glenmn : glenmn_thread; + gwidmx = gwidmx >= gwidmx_thread ? gwidmx : gwidmx_thread; + gwidmn = gwidmn <= gwidmn_thread ? gwidmn : gwidmn_thread; + grefmx = grefmx >= grefmx_thread ? grefmx : grefmx_thread; + } + } + + sec5_19 = find_nbits(grefmx + has_undef); + if ((err = grib_set_long_internal(gh, self->bits_per_value, sec5_19)) != GRIB_SUCCESS) + return err; + if ((err = grib_set_double_internal(gh, self->reference_value, (double)ref)) != GRIB_SUCCESS) + return err; + if ((err = grib_set_long_internal(gh, self->binary_scale_factor, binary_scale)) != GRIB_SUCCESS) + return err; + if ((err = grib_set_long_internal(gh, self->decimal_scale_factor, -dec_scale)) != GRIB_SUCCESS) + return err; + if ((err = grib_set_long_internal(gh, self->typeOfOriginalFieldValues, 0)) != GRIB_SUCCESS) + return err; + if ((err = grib_set_long_internal(gh, self->groupSplittingMethodUsed, 1)) != GRIB_SUCCESS) + return err; + if ((err = grib_set_long_internal(gh, self->missingValueManagementUsed, has_undef)) != GRIB_SUCCESS) + return err; + if ((err = grib_set_long_internal(gh, self->primaryMissingValueSubstitute, grib_ieee_to_long((float)9.999e20))) != GRIB_SUCCESS) + return err; + if ((err = grib_set_long_internal(gh, self->secondaryMissingValueSubstitute, 0xFFFFFFFF)) != GRIB_SUCCESS) + return err; + if ((err = grib_set_long_internal(gh, self->numberOfGroupsOfDataValues, ngroups)) != GRIB_SUCCESS) + return err; + if ((err = grib_set_long_internal(gh, self->referenceForGroupWidths, gwidmn)) != GRIB_SUCCESS) + return err; + sec5_36 = find_nbits(gwidmx - gwidmn + has_undef); + if ((err = grib_set_long_internal(gh, self->numberOfBitsUsedForTheGroupWidths, find_nbits(gwidmx - gwidmn + has_undef))) != GRIB_SUCCESS) + return err; + if ((err = grib_set_long_internal(gh, self->referenceForGroupLengths, glenmn)) != GRIB_SUCCESS) + return err; + if ((err = grib_set_long_internal(gh, self->lengthIncrementForTheGroupLengths, 1)) != GRIB_SUCCESS) + return err; + if ((err = grib_set_long_internal(gh, self->trueLengthOfLastGroup, len_last)) != GRIB_SUCCESS) + return err; + sec5_46 = find_nbits(glenmx - glenmn); + if ((err = grib_set_long_internal(gh, self->numberOfBitsUsedForTheScaledGroupLengths, sec5_46)) != GRIB_SUCCESS) + return err; + + size_sec7 = 5; + + if (packing_mode == 2) { + size_sec7 += 2 * sec5_48; + if ((err = grib_set_long_internal(gh, self->orderOfSpatialDifferencing, 1)) != GRIB_SUCCESS) + return err; + if ((err = grib_set_long_internal(gh, self->numberOfOctetsExtraDescriptors, 2)) != GRIB_SUCCESS) + return err; + } + else if (packing_mode == 3) { + size_sec7 += 3 * sec5_48; + if ((err = grib_set_long_internal(gh, self->orderOfSpatialDifferencing, 2)) != GRIB_SUCCESS) + return err; + if ((err = grib_set_long_internal(gh, self->numberOfOctetsExtraDescriptors, 3)) != GRIB_SUCCESS) + return err; + } + + // group reference value + size_sec7 += (ngroups * sec5_19 + 7) / 8; + + // group widths + size_sec7 += (ngroups * sec5_36 + 7) / 8; + + // group lengths + size_sec7 += (ngroups * sec5_46 + 7) / 8; + + k = 0; +#pragma omp parallel private(i, j) + { + j = 0; +#pragma omp for reduction(+ \ + : size_sec7) + for (i = 0; i < ngroups; i++) { + j += lens[i] * widths[i]; + size_sec7 += (j >> 3); + j = (j & 7); + refs[i] = (refs[i] != INT_MAX) ? refs[i] : ONES; + itmp[i] = widths[i] - gwidmn; + itmp2[i] = lens[i] - glenmn; + } +#pragma omp atomic + k += j; + } + size_sec7 += (k >> 3) + ((k & 7) ? 1 : 0); + + sec7 = (unsigned char*)malloc(size_sec7); + if (sec7 == NULL) + grib_context_log(a->context, GRIB_LOG_ERROR, "complex_grib_out memory allocation sec7"); + + // pack the values into a bitstream + + init_bitstream(sec7); + add_bitstream(a, size_sec7 >> 16, 16); + add_bitstream(a, size_sec7, 16); + add_bitstream(a, 7, 8); + + // write extra octets + if (packing_mode == 2 || packing_mode == 3) { + add_bitstream(a, extra_0, 8 * sec5_48); + if (packing_mode == 3) add_bitstream(a, extra_1, 8 * sec5_48); + k = vmn; + if (k < 0) { + k = -vmn | (1 << (8 * sec5_48 - 1)); + } + add_bitstream(a, k, 8 * sec5_48); + finish_bitstream(); + } + + // write the group reference values + add_many_bitstream(a, refs, ngroups, sec5_19); + finish_bitstream(); + + // write the group widths + add_many_bitstream(a, itmp, ngroups, sec5_36); + finish_bitstream(); + + // write the group lengths + add_many_bitstream(a, itmp2, ngroups, sec5_46); + finish_bitstream(); + + s = start.tail; + for (i = 0; i < ngroups; i++, s = s->tail) { + itmp[i] = s->i0; + refs[i] = s->mn; + } +#pragma omp parallel for private(i, j) + for (i = 0; i < ngroups; i++) { + if (widths[i]) { + for (j = 0; j < lens[i]; j++) { + v[j + itmp[i]] = (v[j + itmp[i]] == INT_MAX) + ? ONES + : v[j + itmp[i]] - refs[i]; + } + } + } + for (i = 0; i < ngroups; i++) { + if (widths[i]) { + add_many_bitstream(a, v + itmp[i], lens[i], widths[i]); + } + } + + finish_bitstream(); + + grib_buffer_replace(a, sec7 + 5, size_sec7 - 5, 1, 1); + + free(sec7); + free(list); + free(v); + free(lens); + free(widths); + free(refs); + free(itmp); + + /* ECC-259: Set correct number of values */ + if ((err = grib_set_long_internal(gh, self->numberOfValues, *len)) != GRIB_SUCCESS) + return err; + + return GRIB_SUCCESS; +} + static int unpack_double(grib_accessor* a, double* val, size_t* len) { return unpack(a, val, len); diff --git a/tests/grib_bitmap.sh b/tests/grib_bitmap.sh index e2a237531..b80f83da5 100755 --- a/tests/grib_bitmap.sh +++ b/tests/grib_bitmap.sh @@ -118,6 +118,12 @@ grib_check_key_equals $tempSimple bitmapPresent,numberOfMissing,numberOfValues,n stats=`${tools_dir}/grib_get -F%.2f -p max,min,avg $tempSimple` [ "$stats" = "2.81 0.00 0.30" ] +# Repack +${tools_dir}/grib_copy -r $infile $temp2 +${tools_dir}/grib_compare -c data:n $infile $temp2 +grib_check_key_equals $temp2 bitsPerValue 8 # Note: The input file has bpv=9 + + # Simple to grid_complex tempComplex=temp.grib_bitmap.complex.grib ${tools_dir}/grib_set -r -s packingType=grid_complex $tempSimple $tempComplex From 1586be150cb25dd2eb5a4033adcbd2819e4f8adc Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 29 Mar 2023 16:27:12 +0000 Subject: [PATCH 012/378] grid_complex encoding: Fix compiler warnings and memory leaks --- ...ib_accessor_class_data_g22order_packing.cc | 33 ++++--------------- 1 file changed, 6 insertions(+), 27 deletions(-) diff --git a/src/grib_accessor_class_data_g22order_packing.cc b/src/grib_accessor_class_data_g22order_packing.cc index 275f7bc19..f261fe623 100644 --- a/src/grib_accessor_class_data_g22order_packing.cc +++ b/src/grib_accessor_class_data_g22order_packing.cc @@ -327,11 +327,9 @@ static int int_min_max_array(int* data, unsigned int n, int* min, int* max) mn = mx = data[first]; -#pragma omp parallel private(min_val, max_val) -{ + { min_val = max_val = data[first]; -#pragma omp for private(i) schedule(static) nowait for (i = first + 1; i < n; i++) { if (data[i] != INT_MAX) { min_val = (min_val > data[i]) ? data[i] : min_val; @@ -339,7 +337,6 @@ static int int_min_max_array(int* data, unsigned int n, int* min, int* max) } } -#pragma omp critical { if (min_val < mn) mn = min_val; if (max_val > mx) mx = max_val; @@ -393,19 +390,16 @@ static int min_max_array(double* data, unsigned int n, double* min, double* max) mn = mx = data[first]; -#pragma omp parallel private(min_val, max_val) { min_val = max_val = data[first]; -#pragma omp for private(i) schedule(static) nowait for (i = first + 1; i < n; i++) { if (DEFINED_VAL(data[i])) { min_val = (min_val > data[i]) ? data[i] : min_val; max_val = (max_val < data[i]) ? data[i] : max_val; + } } - } -#pragma omp critical { if (min_val < mn) mn = min_val; if (max_val > mx) mx = max_val; @@ -1076,7 +1070,7 @@ static void exchange(struct section* s, int* v, int has_undef, int LEN_SEC_MAX) s = t; continue; } - // if (val0 == INT_MAX || val1 == INT_MAX) { s=t; continue; } + //if (val0 == INT_MAX || val1 == INT_MAX) { s=t; continue; } if (nbit_s < nbit_t && val1 == INT_MAX) { if ((s->i1 - s->i0) < LEN_SEC_MAX && s->mx != s->mn) @@ -1095,7 +1089,7 @@ static void exchange(struct section* s, int* v, int has_undef, int LEN_SEC_MAX) continue; } - // if (s->missing == 1 || t->missing == 1) { s=t; continue; } + //if (s->missing == 1 || t->missing == 1) { s=t; continue; } // 3/2014 val0 = v[s->i1]; // 3/2014 val1 = v[t->i0]; @@ -1425,13 +1419,11 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) min_val *= dec_factor; max_val *= dec_factor; if (has_undef) { -#pragma omp parallel for private(i) for (i = 0; i < nndata; i++) { if (DEFINED_VAL(data[i])) data[i] *= dec_factor; } } else { -#pragma omp parallel for private(i) for (i = 0; i < nndata; i++) { data[i] *= dec_factor; } @@ -1451,7 +1443,6 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) if (binary_scale) { scale = ldexp(1.0, -binary_scale); if (has_undef) { -#pragma omp parallel for private(i) for (i = 0; i < nndata; i++) { if (DEFINED_VAL(data[i])) { v[i] = floor((data[i] - ref) * scale + 0.5); @@ -1462,7 +1453,6 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) } } else { -#pragma omp parallel for private(i) for (i = 0; i < nndata; i++) { v[i] = floor((data[i] - ref) * scale + 0.5); v[i] = v[i] >= 0 ? v[i] : 0; @@ -1472,7 +1462,6 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) else { scale = 1.0; if (has_undef) { -#pragma omp parallel for private(i) for (i = 0; i < nndata; i++) { if (DEFINED_VAL(data[i])) { v[i] = floor(data[i] - ref + 0.5); @@ -1483,7 +1472,6 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) } } else { -#pragma omp parallel for private(i) for (i = 0; i < nndata; i++) { v[i] = floor(data[i] - ref + 0.5); v[i] = v[i] >= 0 ? v[i] : 0; @@ -1564,7 +1552,6 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) find_nbits(vmx - vmn + has_undef)); #endif -#pragma omp parallel for private(i) for (i = 0; i < nndata; i++) { v[i] = (v[i] != INT_MAX) ? v[i] - vmn : INT_MAX; } @@ -1614,7 +1601,6 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) if (nstruct != ii + 1) grib_context_log(a->context, GRIB_LOG_ERROR, "complex_pk, nstruct=%d wanted %d", nstruct, ii + 1); -#pragma omp parallel for private(k) for (i = 1; i < nstruct; i++) { list[i].head = &list[i - 1]; list[i - 1].tail = &list[i]; @@ -1732,7 +1718,6 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) if (i != nndata) grib_context_log(a->context, GRIB_LOG_ERROR, "complex grib_out: program error 2"); -#pragma omp parallel for private(i) for (i = 0; i < ngroups; i++) { if (refs[i] == INT_MAX) widths[i] = 0; @@ -1749,7 +1734,6 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) gwidmx = gwidmn = widths[0]; grefmx = refs[0] != INT_MAX ? refs[0] : 0; -#pragma omp parallel private(i) { int glenmn_thread, glenmx_thread, gwidmx_thread, gwidmn_thread, grefmx_thread; @@ -1757,7 +1741,6 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) gwidmn_thread = gwidmx_thread = widths[0]; grefmx_thread = refs[0] != INT_MAX ? refs[0] : 0; -#pragma omp for nowait for (i = 1; i < ngroups; i++) { glenmx_thread = glenmx_thread >= lens[i] ? glenmx_thread : lens[i]; glenmn_thread = glenmn_thread <= lens[i] ? glenmn_thread : lens[i]; @@ -1768,7 +1751,6 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) if (refs[i] != INT_MAX && refs[i] > grefmx_thread) grefmx_thread = refs[i]; } -#pragma omp critical { glenmx = glenmx >= glenmx_thread ? glenmx : glenmx_thread; glenmn = glenmn <= glenmn_thread ? glenmn : glenmn_thread; @@ -1841,11 +1823,8 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) size_sec7 += (ngroups * sec5_46 + 7) / 8; k = 0; -#pragma omp parallel private(i, j) { j = 0; -#pragma omp for reduction(+ \ - : size_sec7) for (i = 0; i < ngroups; i++) { j += lens[i] * widths[i]; size_sec7 += (j >> 3); @@ -1854,7 +1833,6 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) itmp[i] = widths[i] - gwidmn; itmp2[i] = lens[i] - glenmn; } -#pragma omp atomic k += j; } size_sec7 += (k >> 3) + ((k & 7) ? 1 : 0); @@ -1899,7 +1877,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) itmp[i] = s->i0; refs[i] = s->mn; } -#pragma omp parallel for private(i, j) + for (i = 0; i < ngroups; i++) { if (widths[i]) { for (j = 0; j < lens[i]; j++) { @@ -1926,6 +1904,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) free(widths); free(refs); free(itmp); + free(itmp2); /* ECC-259: Set correct number of values */ if ((err = grib_set_long_internal(gh, self->numberOfValues, *len)) != GRIB_SUCCESS) From f17c10c3ead0dc61dc79d98dbbb85f8d2b93e6fe Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 29 Mar 2023 21:00:59 +0100 Subject: [PATCH 013/378] grid_complex encoding: Use type T rather than double --- src/grib_accessor_class_data_g22order_packing.cc | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/src/grib_accessor_class_data_g22order_packing.cc b/src/grib_accessor_class_data_g22order_packing.cc index f261fe623..c2574906f 100644 --- a/src/grib_accessor_class_data_g22order_packing.cc +++ b/src/grib_accessor_class_data_g22order_packing.cc @@ -682,7 +682,9 @@ static int unpack(grib_accessor* a, T* val, size_t* len) if (i == numberOfGroupsOfDataValues - 1) nvals_per_group = trueLengthOfLastGroup; - Assert(n_vals >= vcount + nvals_per_group); + if (n_vals < vcount + nvals_per_group) { + return GRIB_DECODING_ERROR; + } /*grib_decode_long_array(buf_vals, &vals_p, nbits_per_group_val, nvals_per_group, &sec_val[vcount]); */ @@ -782,7 +784,7 @@ static int unpack(grib_accessor* a, T* val, size_t* len) val[i] = missingValue; } else { - val[i] = (double)((((double)sec_val[i]) * binary_s) + reference_value) * decimal_s; + val[i] = (T)((((T)sec_val[i]) * binary_s) + reference_value) * decimal_s; } } @@ -1213,10 +1215,8 @@ static void merge_j(struct section* h, int ref_bits, int width_bits, int has_und } } - static int pack_double(grib_accessor* a, const double* val, size_t* len) { - /*long size_sec7_header;*/ unsigned char* sec7; long sec5_19, sec5_36, sec5_46, sec5_48; grib_accessor_data_g22order_packing* self = (grib_accessor_data_g22order_packing*)a; @@ -1231,14 +1231,12 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) // unsigned char* buf = NULL; // unsigned char* buf_ref = NULL; //unsigned char* buf_length = NULL; - // double d = 0; //double divisor = 0; long bits_per_value = 0; //double reference_value = 0; - //long nvals_per_group = 0; //long nbits_per_group_val = 0; @@ -1274,7 +1272,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) double max_val, min_val, ref, frange, dec_factor, scale; double mn, mx; struct section start, *list, *list_backup, *s; - /*Grouip*/ + /*Group*/ int ngroups, grefmx, glenmn, glenmx, gwidmn, gwidmx, len_last; int size_sec7; int *refs, *lens, *widths, *itmp, *itmp2; From dc46b5f4b3ed772aed7f2692a9a5990655ebf595 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 30 Mar 2023 14:44:54 +0100 Subject: [PATCH 014/378] grid_complex encoding: Error checking --- ...ib_accessor_class_data_g22order_packing.cc | 96 +++++++++---------- 1 file changed, 44 insertions(+), 52 deletions(-) diff --git a/src/grib_accessor_class_data_g22order_packing.cc b/src/grib_accessor_class_data_g22order_packing.cc index c2574906f..75cd32f55 100644 --- a/src/grib_accessor_class_data_g22order_packing.cc +++ b/src/grib_accessor_class_data_g22order_packing.cc @@ -238,14 +238,11 @@ static void init(grib_accessor* a, const long v, grib_arguments* args) static unsigned char* bitstream; static int rbits, reg, n_bitstream; - static void init_bitstream(unsigned char* new_bitstream) { bitstream = new_bitstream; n_bitstream = reg = rbits = 0; - return; - } - +} static void finish_bitstream(void) { @@ -254,17 +251,17 @@ static void finish_bitstream(void) *bitstream++ = (reg << (8 - rbits)) & 255; rbits = 0; } - return; - } - +} static void add_many_bitstream(grib_accessor* a, int* t, int n, int n_bits) { unsigned int jmask, tt; int i; + const int max_numbits = 25; - if (n_bits > 25) - grib_context_log(a->context, GRIB_LOG_ERROR, "add_many_bitstream: n_bits = (%d)", n_bits); + if (n_bits > max_numbits) { + grib_context_log(a->context, GRIB_LOG_FATAL, "grid_complex packing: n_bits=%d exceeds the maximum=%d", n_bits, max_numbits); + } jmask = (1 << n_bits) - 1; for (i = 0; i < n; i++) { @@ -276,22 +273,22 @@ static void add_many_bitstream(grib_accessor* a, int* t, int n, int n_bits) rbits -= 8; *bitstream++ = (reg >> rbits) & 255; n_bitstream++; -} + } } - return; } - static void add_bitstream(grib_accessor* a, int t, int n_bits) { unsigned int jmask; + const int max_numbits = 25; if (n_bits > 16) { add_bitstream(a, t >> 16, n_bits - 16); n_bits = 16; } - if (n_bits > 25) - grib_context_log(a->context, GRIB_LOG_ERROR, "add_bitstream: n_bits = (%d)", n_bits); + if (n_bits > max_numbits) { + grib_context_log(a->context, GRIB_LOG_FATAL, "grid_complex packing: n_bits=%d exceeds the maximum=%d", n_bits, max_numbits); + } jmask = (1 << n_bits) - 1; rbits += n_bits; reg = (reg << n_bits) | (t & jmask); @@ -302,7 +299,6 @@ static void add_bitstream(grib_accessor* a, int t, int n_bits) return; } - /* * find min/max of an integer array * return 0: if min max found @@ -348,7 +344,6 @@ static int int_min_max_array(int* data, unsigned int n, int* min, int* max) return 0; } - static double Int_Power(double x, int y) { double value; @@ -369,7 +364,6 @@ static double Int_Power(double x, int y) return value; } - static int min_max_array(double* data, unsigned int n, double* min, double* max) { unsigned int first, i; @@ -409,7 +403,7 @@ static int min_max_array(double* data, unsigned int n, double* min, double* max) *min = mn; *max = mx; return 0; - } +} #if 0 static void uint_char(unsigned int i, unsigned char* p) @@ -541,7 +535,7 @@ static int post_process(grib_context* c, long* vals, long len, long order, long } template -static int unpack(grib_accessor* a, T* val, size_t* len) +static int unpack(grib_accessor* a, T* val, const size_t* len) { static_assert(std::is_floating_point::value, "Requires floating points numbers"); grib_accessor_data_g22order_packing* self = (grib_accessor_data_g22order_packing*)a; @@ -825,7 +819,6 @@ static int find_nbits(unsigned int i) #endif } - struct section { int mn, mx, missing; // stats @@ -833,7 +826,6 @@ struct section struct section *head, *tail; }; - static int sizeofsection(struct section* s, int ref_bits, int width_bits, int has_undef) { if (s->mn == INT_MAX) { // all undef @@ -852,7 +844,6 @@ static int sizeofsection(struct section* s, int ref_bits, int width_bits, int ha return find_nbits(s->mx - s->mn + has_undef) * (s->i1 - s->i0 + 1) + ref_bits + width_bits; } - static int sizeofsection2(int mn, int mx, int n, int ref_bits, int width_bits, int has_undef_sec, int has_undef) { @@ -864,7 +855,6 @@ static int sizeofsection2(int mn, int mx, int n, int ref_bits, int width_bits, return find_nbits(mx - mn + has_undef) * n + ref_bits + width_bits; } - static int size_all(struct section* s, int ref_bits, int width_bits, int has_undef) { @@ -878,7 +868,6 @@ static int size_all(struct section* s, int ref_bits, int width_bits, return (bits + 7) / 8; } - static void move_one_left(struct section* s, int* v) { struct section* t; @@ -890,7 +879,6 @@ static void move_one_left(struct section* s, int* v) val = v[s->i1]; // update s statistics - if (val == INT_MAX) s->missing = 1; else { @@ -899,7 +887,6 @@ static void move_one_left(struct section* s, int* v) } // remove t? - if (t->i0 > t->i1) { s->tail = t->tail; t = s->tail; @@ -908,7 +895,6 @@ static void move_one_left(struct section* s, int* v) } // update s statistics - if (val == INT_MAX) { for (i = t->i0; i <= t->i1; i++) { if (v[i] == INT_MAX) return; @@ -949,7 +935,6 @@ static void move_one_left(struct section* s, int* v) return; } - static void move_one_right(struct section* s, int* v) { struct section* t; @@ -961,7 +946,6 @@ static void move_one_right(struct section* s, int* v) val = v[t->i0]; // update t statistics - if (val == INT_MAX) t->missing = 1; else { @@ -970,7 +954,6 @@ static void move_one_right(struct section* s, int* v) } // if s is empty, copy t to s and recalculate - if (s->i0 > s->i1) { s->i0 = t->i0; s->i1 = t->i1; @@ -994,7 +977,6 @@ static void move_one_right(struct section* s, int* v) } // update s statistics - if (val == INT_MAX) { for (i = s->i0; i <= s->i1; i++) { if (v[i] == INT_MAX) return; @@ -1035,7 +1017,6 @@ static void move_one_right(struct section* s, int* v) return; } - static void exchange(struct section* s, int* v, int has_undef, int LEN_SEC_MAX) { struct section* t; @@ -1109,7 +1090,6 @@ static void exchange(struct section* s, int* v, int has_undef, int LEN_SEC_MAX) } } - static void merge_j(struct section* h, int ref_bits, int width_bits, int has_undef, int param, int LEN_SEC_MAX) { struct section *t, *m; @@ -1323,6 +1303,10 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) max_bits = bits_per_value; // TODO(masn) packing_mode = orderOfSpatialDifferencing; + //if (orderOfSpatialDifferencing == 0) packing_mode = 1; //grid_complex + //if (orderOfSpatialDifferencing == 1) packing_mode = 2; //grid_complex_spatial_differencing with orderOfSpatialDifferencing=1 + //if (orderOfSpatialDifferencing == 2) packing_mode = 3; //grid_complex_spatial_differencing with orderOfSpatialDifferencing=2 + use_bitmap = bitmap_present; wanted_bits = bits_per_value; data = (double*) val; @@ -1386,8 +1370,10 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) has_undef = use_bitmap ? 0 : ndata != ndef; v = (int*)malloc(((size_t)nndata) * sizeof(int)); - if (min_max_array(data, ndata, &mn, &mx) != 0) - grib_context_log(a->context, GRIB_LOG_ERROR, "complex_pk: min max error", ""); + if (min_max_array(data, ndata, &mn, &mx) != 0) { + grib_context_log(a->context, GRIB_LOG_ERROR, "grid_complex packing: Failed to get min max of data"); + return GRIB_ENCODING_ERROR; + } min_val = (double)mn; max_val = (double)mx; @@ -1568,8 +1554,10 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) } list = (struct section*)malloc((size_t)nstruct * sizeof(struct section)); - if (list == NULL) - grib_context_log(a->context, GRIB_LOG_ERROR, "complex_grib_out: memory allocation of list failed", ""); + if (list == NULL) { + grib_context_log(a->context, GRIB_LOG_ERROR, "grid_complex packing: memory allocation of list failed"); + return GRIB_OUT_OF_MEMORY; + } // initialize linked list @@ -1596,9 +1584,10 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) list[ii].tail = NULL; start.tail = &list[0]; - if (nstruct != ii + 1) - grib_context_log(a->context, GRIB_LOG_ERROR, "complex_pk, nstruct=%d wanted %d", nstruct, ii + 1); - + if (nstruct != ii + 1) { + grib_context_log(a->context, GRIB_LOG_ERROR, "grid_complex packing: nstruct=%zu wanted %lu", nstruct, ii + 1); + return GRIB_ENCODING_ERROR; + } for (i = 1; i < nstruct; i++) { list[i].head = &list[i - 1]; list[i - 1].tail = &list[i]; @@ -1622,10 +1611,11 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) // try making segment sizes larger // 12/2015 need to segment size less 25 bits, bitstream software limitation - list_backup = - (struct section*)malloc(((size_t)nstruct) * sizeof(struct section)); - if (list_backup == NULL) - grib_context_log(a->context, GRIB_LOG_ERROR, "complex_grib_out: memory allocation of list_backup failed"); + list_backup = (struct section*)malloc(((size_t)nstruct) * sizeof(struct section)); + if (list_backup == NULL) { + grib_context_log(a->context, GRIB_LOG_ERROR, "grid_complex packing: memory allocation of list_backup failed"); + return GRIB_OUT_OF_MEMORY; + } j = size_all(start.tail, vbits, LEN_BITS + est_group_width, has_undef); j0 = j + 1; @@ -1686,8 +1676,9 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) // scale the linked list s = start.tail; - if (s == NULL) - grib_context_log(a->context, GRIB_LOG_ERROR, "complex grib_out: program error 1"); + if (s == NULL) { + return GRIB_INTERNAL_ERROR; + } ngroups = 0; // number of groups while (s) { @@ -1701,9 +1692,9 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) itmp = (int*)malloc(((size_t)ngroups) * sizeof(int)); itmp2 = (int*)malloc(((size_t)ngroups) * sizeof(int)); - if (lens == NULL || widths == NULL || refs == NULL || itmp == NULL || - itmp2 == NULL) - grib_context_log(a->context, GRIB_LOG_ERROR, "complex grib_out: memory allocation"); + if (lens == NULL || widths == NULL || refs == NULL || itmp == NULL || itmp2 == NULL) { + return GRIB_OUT_OF_MEMORY; + } /* make vectors so we can OpenMP the loop */ for (i = ii = 0, s = start.tail; ii < ngroups; ii++, s = s->tail) { @@ -1714,7 +1705,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) itmp2[ii] = s->missing; } if (i != nndata) - grib_context_log(a->context, GRIB_LOG_ERROR, "complex grib_out: program error 2"); + return GRIB_INTERNAL_ERROR; for (i = 0; i < ngroups; i++) { if (refs[i] == INT_MAX) @@ -1836,8 +1827,9 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) size_sec7 += (k >> 3) + ((k & 7) ? 1 : 0); sec7 = (unsigned char*)malloc(size_sec7); - if (sec7 == NULL) - grib_context_log(a->context, GRIB_LOG_ERROR, "complex_grib_out memory allocation sec7"); + if (sec7 == NULL) { + return GRIB_OUT_OF_MEMORY; + } // pack the values into a bitstream From 0670905387b803a3ace76918a472f71bb37a6ecb Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 30 Mar 2023 20:18:57 +0100 Subject: [PATCH 015/378] grid_complex encoding: Compiler warnings --- src/grib_accessor_class_data_g22order_packing.cc | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/src/grib_accessor_class_data_g22order_packing.cc b/src/grib_accessor_class_data_g22order_packing.cc index 75cd32f55..d4b6e9c01 100644 --- a/src/grib_accessor_class_data_g22order_packing.cc +++ b/src/grib_accessor_class_data_g22order_packing.cc @@ -770,12 +770,12 @@ static int unpack(grib_accessor* a, T* val, const size_t* len) /*de_spatial_difference (a->context, sec_val, n_vals, orderOfSpatialDifferencing, bias);*/ } - binary_s = grib_power(binary_scale_factor, 2); - decimal_s = grib_power(-decimal_scale_factor, 10); + binary_s = (T)grib_power(binary_scale_factor, 2); + decimal_s = (T)grib_power(-decimal_scale_factor, 10); for (i = 0; i < n_vals; i++) { if (sec_val[i] == LONG_MAX) { - val[i] = missingValue; + val[i] = (T)missingValue; } else { val[i] = (T)((((T)sec_val[i]) * binary_s) + reference_value) * decimal_s; @@ -786,7 +786,6 @@ static int unpack(grib_accessor* a, T* val, const size_t* len) return err; } - static int find_nbits(unsigned int i) { #if !defined __GNUC__ || __GNUC__ < 4 @@ -932,7 +931,6 @@ static void move_one_left(struct section* s, int* v) t->mn = k; return; } - return; } static void move_one_right(struct section* s, int* v) @@ -1200,7 +1198,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) unsigned char* sec7; long sec5_19, sec5_36, sec5_46, sec5_48; grib_accessor_data_g22order_packing* self = (grib_accessor_data_g22order_packing*)a; - grib_handle* gh = grib_handle_of_accessor(a); + grib_handle* gh = grib_handle_of_accessor(a); /*size_t i = 0;*/ /*size_t j = 0;*/ From d7bfdf11aeb357e363d71eea2bdc3a26b9028b4b Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 30 Mar 2023 20:31:54 +0100 Subject: [PATCH 016/378] grid_complex encoding: Fix broken tests on Windows --- src/grib_accessor_class_data_g22order_packing.cc | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/grib_accessor_class_data_g22order_packing.cc b/src/grib_accessor_class_data_g22order_packing.cc index d4b6e9c01..04c6cbbeb 100644 --- a/src/grib_accessor_class_data_g22order_packing.cc +++ b/src/grib_accessor_class_data_g22order_packing.cc @@ -1336,8 +1336,9 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) return err; if ((err = grib_set_long_internal(gh, self->primaryMissingValueSubstitute, grib_ieee_to_long((float)9.999e20))) != GRIB_SUCCESS) return err; - if ((err = grib_set_long_internal(gh, self->secondaryMissingValueSubstitute, 0xFFFFFFFF)) != GRIB_SUCCESS) - return err; + //if ((err = grib_set_long_internal(gh, self->secondaryMissingValueSubstitute, 0xFFFFFFFF)) != GRIB_SUCCESS) + // return err; + if ((err = grib_set_long_internal(gh, self->numberOfGroupsOfDataValues, 1)) != GRIB_SUCCESS) return err; if ((err = grib_set_long_internal(gh, self->referenceForGroupWidths, 0)) != GRIB_SUCCESS) @@ -1764,8 +1765,8 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) return err; if ((err = grib_set_long_internal(gh, self->primaryMissingValueSubstitute, grib_ieee_to_long((float)9.999e20))) != GRIB_SUCCESS) return err; - if ((err = grib_set_long_internal(gh, self->secondaryMissingValueSubstitute, 0xFFFFFFFF)) != GRIB_SUCCESS) - return err; + // if ((err = grib_set_long_internal(gh, self->secondaryMissingValueSubstitute, 0xFFFFFFFF)) != GRIB_SUCCESS) return err; + if ((err = grib_set_long_internal(gh, self->numberOfGroupsOfDataValues, ngroups)) != GRIB_SUCCESS) return err; if ((err = grib_set_long_internal(gh, self->referenceForGroupWidths, gwidmn)) != GRIB_SUCCESS) From 4d5c4f30c506cb151a6a889f396fbb5703c52823 Mon Sep 17 00:00:00 2001 From: Eugen Betke Date: Thu, 30 Mar 2023 19:53:12 +0000 Subject: [PATCH 017/378] ECC-803: Fix number of octets --- src/grib_accessor_class_data_g22order_packing.cc | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/grib_accessor_class_data_g22order_packing.cc b/src/grib_accessor_class_data_g22order_packing.cc index 75cd32f55..164ae8b10 100644 --- a/src/grib_accessor_class_data_g22order_packing.cc +++ b/src/grib_accessor_class_data_g22order_packing.cc @@ -1791,14 +1791,14 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) size_sec7 += 2 * sec5_48; if ((err = grib_set_long_internal(gh, self->orderOfSpatialDifferencing, 1)) != GRIB_SUCCESS) return err; - if ((err = grib_set_long_internal(gh, self->numberOfOctetsExtraDescriptors, 2)) != GRIB_SUCCESS) - return err; } else if (packing_mode == 3) { size_sec7 += 3 * sec5_48; if ((err = grib_set_long_internal(gh, self->orderOfSpatialDifferencing, 2)) != GRIB_SUCCESS) return err; - if ((err = grib_set_long_internal(gh, self->numberOfOctetsExtraDescriptors, 3)) != GRIB_SUCCESS) + } + if (packing_mode != 1) { + if ((err = grib_set_long_internal(gh, self->numberOfOctetsExtraDescriptors, sec5_48)) != GRIB_SUCCESS) return err; } From f4ded028af8fe6627441eba754cd8a3a87cba215 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 31 Mar 2023 09:40:44 +0000 Subject: [PATCH 018/378] grid_complex encoding: Fix broken tests --- src/grib_accessor_class_data_g22order_packing.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/grib_accessor_class_data_g22order_packing.cc b/src/grib_accessor_class_data_g22order_packing.cc index 9b637e756..10cce1451 100644 --- a/src/grib_accessor_class_data_g22order_packing.cc +++ b/src/grib_accessor_class_data_g22order_packing.cc @@ -1796,7 +1796,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) if ((err = grib_set_long_internal(gh, self->orderOfSpatialDifferencing, 2)) != GRIB_SUCCESS) return err; } - if (packing_mode != 1) { + if (packing_mode > 1) { if ((err = grib_set_long_internal(gh, self->numberOfOctetsExtraDescriptors, sec5_48)) != GRIB_SUCCESS) return err; } From 8d7a7e9b19fb477e960d8d668492cb751f8c836e Mon Sep 17 00:00:00 2001 From: Sebastien Villaume Date: Fri, 31 Mar 2023 10:51:08 +0100 Subject: [PATCH 019/378] adding 2 new local templates for large ensemble --- definitions/grib2/tables/local/ecmf/1/4.0.table | 3 +++ definitions/grib2/template.4.65533.def | 10 ++++++++++ definitions/grib2/template.4.65534.def | 10 ++++++++++ definitions/grib2/template.4.leps.def | 13 +++++++++++++ 4 files changed, 36 insertions(+) create mode 100644 definitions/grib2/tables/local/ecmf/1/4.0.table create mode 100644 definitions/grib2/template.4.65533.def create mode 100644 definitions/grib2/template.4.65534.def create mode 100644 definitions/grib2/template.4.leps.def diff --git a/definitions/grib2/tables/local/ecmf/1/4.0.table b/definitions/grib2/tables/local/ecmf/1/4.0.table new file mode 100644 index 000000000..191faf786 --- /dev/null +++ b/definitions/grib2/tables/local/ecmf/1/4.0.table @@ -0,0 +1,3 @@ +# Code table 4.0 - Product definition template number +65533 65533 individual member for large ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time +65534 65534 Individual member for large ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer, in a continuous or non-continuous interval diff --git a/definitions/grib2/template.4.65533.def b/definitions/grib2/template.4.65533.def new file mode 100644 index 000000000..9ebacb060 --- /dev/null +++ b/definitions/grib2/template.4.65533.def @@ -0,0 +1,10 @@ +# (C) Copyright 2005- ECMWF. + +# TEMPLATE 4.65533, Individual member for large ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time + +include "grib2/template.4.parameter.def" +include "grib2/template.4.generating_process.def" +include "grib2/template.4.forecast_time.def" +include "grib2/template.4.point_in_time.def" +include "grib2/template.4.horizontal.def" +include "grib2/template.4.leps.def" diff --git a/definitions/grib2/template.4.65534.def b/definitions/grib2/template.4.65534.def new file mode 100644 index 000000000..208b0d185 --- /dev/null +++ b/definitions/grib2/template.4.65534.def @@ -0,0 +1,10 @@ +# (C) Copyright 2005- ECMWF. + +# TEMPLATE 4.65534, Individual member for large ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval + +include "grib2/template.4.parameter.def" +include "grib2/template.4.generating_process.def" +include "grib2/template.4.forecast_time.def" +include "grib2/template.4.horizontal.def" +include "grib2/template.4.leps.def" +include "grib2/template.4.statistical.def" diff --git a/definitions/grib2/template.4.leps.def b/definitions/grib2/template.4.leps.def new file mode 100644 index 000000000..47ae8be43 --- /dev/null +++ b/definitions/grib2/template.4.leps.def @@ -0,0 +1,13 @@ +# (C) Copyright 2005- ECMWF. + +# Type of ensemble forecast +codetable[1] typeOfEnsembleForecast ('4.6.table',masterDir,localDir) = 255 : dump; + +# Perturbation number +unsigned[2] perturbationNumber : dump; +alias number=perturbationNumber; + +# Number of forecasts in ensemble +unsigned[2] numberOfForecastsInEnsemble : dump; +alias totalNumber=numberOfForecastsInEnsemble; + From 56dc6f3536f47e9ba2de44ae06ccaee4b8822e2f Mon Sep 17 00:00:00 2001 From: Eugen Betke Date: Fri, 31 Mar 2023 09:53:38 +0000 Subject: [PATCH 020/378] ECC-1472: cpplint and cppcheck --- ...ib_accessor_class_data_g22order_packing.cc | 177 ++++++++++-------- 1 file changed, 100 insertions(+), 77 deletions(-) diff --git a/src/grib_accessor_class_data_g22order_packing.cc b/src/grib_accessor_class_data_g22order_packing.cc index 164ae8b10..5c14144c5 100644 --- a/src/grib_accessor_class_data_g22order_packing.cc +++ b/src/grib_accessor_class_data_g22order_packing.cc @@ -9,8 +9,9 @@ */ -#include "grib_api_internal.h" +#include "./grib_api_internal.h" #include +#include /* This is used by make_class.pl @@ -194,7 +195,7 @@ static void init_class(grib_accessor_class* c) static void init(grib_accessor* a, const long v, grib_arguments* args) { - grib_accessor_data_g22order_packing* self = (grib_accessor_data_g22order_packing*)a; + grib_accessor_data_g22order_packing* self = reinterpret_cast(a); grib_handle* gh = grib_handle_of_accessor(a); self->numberOfValues = grib_arguments_get_name(gh, args, self->carg++); @@ -255,7 +256,7 @@ static void finish_bitstream(void) static void add_many_bitstream(grib_accessor* a, int* t, int n, int n_bits) { - unsigned int jmask, tt; + unsigned int jmask; int i; const int max_numbits = 25; @@ -265,7 +266,7 @@ static void add_many_bitstream(grib_accessor* a, int* t, int n, int n_bits) jmask = (1 << n_bits) - 1; for (i = 0; i < n; i++) { - tt = (unsigned int)*t++; + unsigned int tt = (unsigned int)*t++; rbits += n_bits; reg = (reg << n_bits) | (tt & jmask); @@ -306,8 +307,8 @@ static void add_bitstream(grib_accessor* a, int t, int n_bits) */ static int int_min_max_array(int* data, unsigned int n, int* min, int* max) { - unsigned int first, i; - int mn, mx, min_val, max_val; + unsigned int first; + int mn, mx; if (n == 0) { return 1; @@ -317,16 +318,18 @@ static int int_min_max_array(int* data, unsigned int n, int* min, int* max) if (data[first] != INT_MAX) { mx = mn = data[first]; break; -} + } } if (first >= n) return 1; mn = mx = data[first]; { + int max_val; + int min_val; min_val = max_val = data[first]; - for (i = first + 1; i < n; i++) { + for (unsigned int i = first + 1; i < n; i++) { if (data[i] != INT_MAX) { min_val = (min_val > data[i]) ? data[i] : min_val; max_val = (max_val < data[i]) ? data[i] : max_val; @@ -366,8 +369,8 @@ static double Int_Power(double x, int y) static int min_max_array(double* data, unsigned int n, double* min, double* max) { - unsigned int first, i; - double mn, mx, min_val, max_val; + unsigned int first; + double mn, mx; if (n == 0) { *min = *max = 0.0; @@ -385,9 +388,11 @@ static int min_max_array(double* data, unsigned int n, double* min, double* max) mn = mx = data[first]; { + double min_val; + double max_val; min_val = max_val = data[first]; - for (i = first + 1; i < n; i++) { + for (unsigned int i = first + 1; i < n; i++) { if (DEFINED_VAL(data[i])) { min_val = (min_val > data[i]) ? data[i] : min_val; max_val = (max_val < data[i]) ? data[i] : max_val; @@ -429,7 +434,7 @@ static unsigned char* mk_bms(grib_accessor* a, double* data, unsigned int* ndata if (i == nn) { /* all defined values, no need for bms */ bms = (unsigned char*)malloc(6); - if (bms == NULL) + if (bms == NULL) grib_context_log(a->context, GRIB_LOG_ERROR, "mk_bms: memory allocation problem", ""); uint_char(6, bms); // length of section 6 bms[4] = 6; // section 6 @@ -439,7 +444,7 @@ static unsigned char* mk_bms(grib_accessor* a, double* data, unsigned int* ndata bms_size = 6 + (nn + 7) / 8; bms = (unsigned char*)malloc(bms_size); - if (bms == NULL) + if (bms == NULL) grib_context_log(a->context, GRIB_LOG_ERROR, "mk_bms: memory allocation problem", ""); uint_char(bms_size, bms); // length of section 6 @@ -488,16 +493,18 @@ static int post_process(grib_context* c, long* vals, long len, long order, long if (order == 1) { last = extras[0]; while (j < len) { - if (vals[j] == LONG_MAX) + if (vals[j] == LONG_MAX) { j++; + } else { vals[j++] = extras[0]; break; } } while (j < len) { - if (vals[j] == LONG_MAX) + if (vals[j] == LONG_MAX) { j++; + } else { vals[j] += last + bias; last = vals[j++]; @@ -508,16 +515,18 @@ static int post_process(grib_context* c, long* vals, long len, long order, long penultimate = extras[0]; last = extras[1]; while (j < len) { - if (vals[j] == LONG_MAX) + if (vals[j] == LONG_MAX) { j++; + } else { vals[j++] = extras[0]; break; } } while (j < len) { - if (vals[j] == LONG_MAX) + if (vals[j] == LONG_MAX) { j++; + } else { vals[j++] = extras[1]; break; @@ -538,7 +547,7 @@ template static int unpack(grib_accessor* a, T* val, const size_t* len) { static_assert(std::is_floating_point::value, "Requires floating points numbers"); - grib_accessor_data_g22order_packing* self = (grib_accessor_data_g22order_packing*)a; + grib_accessor_data_g22order_packing* self = reinterpret_cast(a); size_t i = 0; size_t j = 0; @@ -549,7 +558,7 @@ static int unpack(grib_accessor* a, T* val, const size_t* len) long* sec_val = NULL; grib_handle* gh = grib_handle_of_accessor(a); - unsigned char* buf = (unsigned char*)gh->buffer->data; + unsigned char* buf = reinterpret_cast(gh->buffer->data); unsigned char* buf_ref = NULL; unsigned char* buf_width = NULL; unsigned char* buf_length = NULL; @@ -591,7 +600,7 @@ static int unpack(grib_accessor* a, T* val, const size_t* len) if (err) return err; - if (*len < (size_t)n_vals) + if (*len < static_cast(n_vals)) return GRIB_ARRAY_TOO_SMALL; if ((err = grib_get_long_internal(gh, self->bits_per_value, &bits_per_value)) != GRIB_SUCCESS) @@ -639,7 +648,8 @@ static int unpack(grib_accessor* a, T* val, const size_t* len) self->dirty = 0; - sec_val = (long*)grib_context_malloc(a->context, (n_vals) * sizeof(long)); + // sec_val = (long*)grib_context_malloc(a->context, (n_vals) * sizeof(long)); + sec_val = new long[n_vals]; if (!sec_val) return GRIB_OUT_OF_MEMORY; memset(sec_val, 0, (n_vals) * sizeof(long)); /* See SUP-718 */ @@ -750,7 +760,7 @@ static int unpack(grib_accessor* a, T* val, const size_t* len) if (orderOfSpatialDifferencing) { long bias = 0; - unsigned long extras[2] = {0,}; + unsigned long extras[2] = {0, }; ref_p = 0; /* For Complex packing, order == 0 */ @@ -782,7 +792,7 @@ static int unpack(grib_accessor* a, T* val, const size_t* len) } } - grib_context_free(a->context, sec_val); + delete [] sec_val; return err; } @@ -1053,13 +1063,15 @@ static void exchange(struct section* s, int* v, int has_undef, int LEN_SEC_MAX) s = t; continue; } - //if (val0 == INT_MAX || val1 == INT_MAX) { s=t; continue; } + // if (val0 == INT_MAX || val1 == INT_MAX) { s=t; continue; } if (nbit_s < nbit_t && val1 == INT_MAX) { - if ((s->i1 - s->i0) < LEN_SEC_MAX && s->mx != s->mn) + if ((s->i1 - s->i0) < LEN_SEC_MAX && s->mx != s->mn) { move_one_left(s, v); - else + } + else { s = t; + } continue; } @@ -1067,12 +1079,13 @@ static void exchange(struct section* s, int* v, int has_undef, int LEN_SEC_MAX) if ((t->i1 - t->i0) < LEN_SEC_MAX && t->mn != t->mx) { move_one_right(s, v); } - else + else { s = t; + } continue; } - //if (s->missing == 1 || t->missing == 1) { s=t; continue; } + // if (s->missing == 1 || t->missing == 1) { s=t; continue; } // 3/2014 val0 = v[s->i1]; // 3/2014 val1 = v[t->i0]; @@ -1085,8 +1098,9 @@ static void exchange(struct section* s, int* v, int has_undef, int LEN_SEC_MAX) val0 >= t->mn && val0 <= t->mx) { move_one_right(s, v); } - else + else { s = s->tail; + } } } @@ -1199,7 +1213,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) { unsigned char* sec7; long sec5_19, sec5_36, sec5_46, sec5_48; - grib_accessor_data_g22order_packing* self = (grib_accessor_data_g22order_packing*)a; + grib_accessor_data_g22order_packing* self = reinterpret_cast(a); grib_handle* gh = grib_handle_of_accessor(a); /*size_t i = 0;*/ @@ -1210,34 +1224,34 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) // unsigned char* buf = NULL; // unsigned char* buf_ref = NULL; - //unsigned char* buf_length = NULL; + // unsigned char* buf_length = NULL; // double d = 0; - //double divisor = 0; + // double divisor = 0; long bits_per_value = 0; - //double reference_value = 0; - //long nvals_per_group = 0; - //long nbits_per_group_val = 0; + // double reference_value = 0; + // long nvals_per_group = 0; + // long nbits_per_group_val = 0; long binary_scale_factor; long decimal_scale_factor; long optimize_scale_factor; long typeOfOriginalFieldValues; - //long groupSplittingMethodUsed; + // long groupSplittingMethodUsed; long missingValueManagementUsed; long primaryMissingValueSubstitute; long secondaryMissingValueSubstitute; - //long numberOfGroupsOfDataValues; + // long numberOfGroupsOfDataValues; // long referenceForGroupWidths; long numberOfBitsUsedForTheGroupWidths; - //long trueLengthOfLastGroup; + // long trueLengthOfLastGroup; long numberOfBitsUsedForTheScaledGroupLengths; long orderOfSpatialDifferencing; long numberOfOctetsExtraDescriptors; - double* data; - size_t ndata = *len; + // double* data; + // size_t ndata = *len; int dec_scale; int bin_scale; int wanted_bits; @@ -1260,7 +1274,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) int est_group_width = 6; size_t ndef = 0; - size_t nndata = *len; // done + size_t nndata = 0; size_t nstruct; long bitmap_present = 0; @@ -1300,17 +1314,21 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) if ((err = grib_get_long_internal(gh, "bitmapPresent", &bitmap_present)) != GRIB_SUCCESS) return err; - max_bits = bits_per_value; // TODO(masn) + max_bits = bits_per_value; // TODO(masn) packing_mode = orderOfSpatialDifferencing; - //if (orderOfSpatialDifferencing == 0) packing_mode = 1; //grid_complex - //if (orderOfSpatialDifferencing == 1) packing_mode = 2; //grid_complex_spatial_differencing with orderOfSpatialDifferencing=1 - //if (orderOfSpatialDifferencing == 2) packing_mode = 3; //grid_complex_spatial_differencing with orderOfSpatialDifferencing=2 + // if (orderOfSpatialDifferencing == 0) packing_mode = 1; //grid_complex + // if (orderOfSpatialDifferencing == 1) packing_mode = 2; //grid_complex_spatial_differencing with orderOfSpatialDifferencing=1 + // if (orderOfSpatialDifferencing == 2) packing_mode = 3; //grid_complex_spatial_differencing with orderOfSpatialDifferencing=2 use_bitmap = bitmap_present; wanted_bits = bits_per_value; - data = (double*) val; - ndata = *len; + // data = (double*) val; + + size_t ndata = *len; + double* data = new double[ndata]; + std::memcpy(data, val, sizeof(*data) * ndata); + dec_scale = -decimal_scale_factor; bin_scale = binary_scale_factor; ndef = 0; @@ -1336,7 +1354,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) return err; if ((err = grib_set_long_internal(gh, self->missingValueManagementUsed, 1)) != GRIB_SUCCESS) return err; - if ((err = grib_set_long_internal(gh, self->primaryMissingValueSubstitute, grib_ieee_to_long((float)9.999e20))) != GRIB_SUCCESS) + if ((err = grib_set_long_internal(gh, self->primaryMissingValueSubstitute, grib_ieee_to_long(static_cast(9.999e20)))) != GRIB_SUCCESS) return err; if ((err = grib_set_long_internal(gh, self->secondaryMissingValueSubstitute, 0xFFFFFFFF)) != GRIB_SUCCESS) return err; @@ -1369,13 +1387,13 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) nndata = use_bitmap ? ndef : ndata; has_undef = use_bitmap ? 0 : ndata != ndef; - v = (int*)malloc(((size_t)nndata) * sizeof(int)); + v = new int[nndata]; if (min_max_array(data, ndata, &mn, &mx) != 0) { grib_context_log(a->context, GRIB_LOG_ERROR, "grid_complex packing: Failed to get min max of data"); return GRIB_ENCODING_ERROR; } - min_val = (double)mn; - max_val = (double)mx; + min_val = static_cast(mn); + max_val = static_cast(mx); binary_scale = bin_scale; @@ -1444,7 +1462,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) } } else { - scale = 1.0; + // scale = 1.0; if (has_undef) { for (i = 0; i < nndata; i++) { if (DEFINED_VAL(data[i])) { @@ -1553,7 +1571,8 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) } } - list = (struct section*)malloc((size_t)nstruct * sizeof(struct section)); + list = new section[nstruct]; + if (list == NULL) { grib_context_log(a->context, GRIB_LOG_ERROR, "grid_complex packing: memory allocation of list failed"); return GRIB_OUT_OF_MEMORY; @@ -1611,7 +1630,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) // try making segment sizes larger // 12/2015 need to segment size less 25 bits, bitstream software limitation - list_backup = (struct section*)malloc(((size_t)nstruct) * sizeof(struct section)); + list_backup = new struct section[nstruct]; if (list_backup == NULL) { grib_context_log(a->context, GRIB_LOG_ERROR, "grid_complex packing: memory allocation of list_backup failed"); return GRIB_OUT_OF_MEMORY; @@ -1642,7 +1661,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) LEN_SEC_MAX = (LEN_SEC_MAX - 1) / 2; } } - free(list_backup); + delete[] list_backup; exchange(start.tail, v, has_undef, LEN_SEC_MAX); #ifdef DEBUG @@ -1686,11 +1705,11 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) s = s->tail; } - lens = (int*)malloc(((size_t)ngroups) * sizeof(int)); - widths = (int*)malloc(((size_t)ngroups) * sizeof(int)); - refs = (int*)malloc(((size_t)ngroups) * sizeof(int)); - itmp = (int*)malloc(((size_t)ngroups) * sizeof(int)); - itmp2 = (int*)malloc(((size_t)ngroups) * sizeof(int)); + lens = new int[ngroups]; + widths = new int[ngroups]; + refs = new int[ngroups]; + itmp = new int[ngroups]; + itmp2 = new int[ngroups]; if (lens == NULL || widths == NULL || refs == NULL || itmp == NULL || itmp2 == NULL) { return GRIB_OUT_OF_MEMORY; @@ -1704,7 +1723,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) itmp[ii] = s->mx; itmp2[ii] = s->missing; } - if (i != nndata) + if (i != nndata) return GRIB_INTERNAL_ERROR; for (i = 0; i < ngroups; i++) { @@ -1752,7 +1771,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) sec5_19 = find_nbits(grefmx + has_undef); if ((err = grib_set_long_internal(gh, self->bits_per_value, sec5_19)) != GRIB_SUCCESS) return err; - if ((err = grib_set_double_internal(gh, self->reference_value, (double)ref)) != GRIB_SUCCESS) + if ((err = grib_set_double_internal(gh, self->reference_value, static_cast(ref))) != GRIB_SUCCESS) return err; if ((err = grib_set_long_internal(gh, self->binary_scale_factor, binary_scale)) != GRIB_SUCCESS) return err; @@ -1764,7 +1783,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) return err; if ((err = grib_set_long_internal(gh, self->missingValueManagementUsed, has_undef)) != GRIB_SUCCESS) return err; - if ((err = grib_set_long_internal(gh, self->primaryMissingValueSubstitute, grib_ieee_to_long((float)9.999e20))) != GRIB_SUCCESS) + if ((err = grib_set_long_internal(gh, self->primaryMissingValueSubstitute, grib_ieee_to_long(static_cast(9.999e20)))) != GRIB_SUCCESS) return err; if ((err = grib_set_long_internal(gh, self->secondaryMissingValueSubstitute, 0xFFFFFFFF)) != GRIB_SUCCESS) return err; @@ -1784,13 +1803,16 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) sec5_46 = find_nbits(glenmx - glenmn); if ((err = grib_set_long_internal(gh, self->numberOfBitsUsedForTheScaledGroupLengths, sec5_46)) != GRIB_SUCCESS) return err; - + size_sec7 = 5; if (packing_mode == 2) { size_sec7 += 2 * sec5_48; if ((err = grib_set_long_internal(gh, self->orderOfSpatialDifferencing, 1)) != GRIB_SUCCESS) return err; + // if ((err = grib_set_long_internal(gh, self->numberOfOctetsExtraDescriptors, 2)) != GRIB_SUCCESS) + if ((err = grib_set_long_internal(gh, self->numberOfOctetsExtraDescriptors, sec5_48)) != GRIB_SUCCESS) + return err; } else if (packing_mode == 3) { size_sec7 += 3 * sec5_48; @@ -1826,7 +1848,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) } size_sec7 += (k >> 3) + ((k & 7) ? 1 : 0); - sec7 = (unsigned char*)malloc(size_sec7); + sec7 = new unsigned char[size_sec7]; if (sec7 == NULL) { return GRIB_OUT_OF_MEMORY; } @@ -1884,17 +1906,18 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) } finish_bitstream(); - + grib_buffer_replace(a, sec7 + 5, size_sec7 - 5, 1, 1); - free(sec7); - free(list); - free(v); - free(lens); - free(widths); - free(refs); - free(itmp); - free(itmp2); + delete[] sec7; + delete[] list; + delete[] v; + delete[] lens; + delete[] widths; + delete[] refs; + delete[] itmp; + delete[] itmp2; + delete[] data; /* ECC-259: Set correct number of values */ if ((err = grib_set_long_internal(gh, self->numberOfValues, *len)) != GRIB_SUCCESS) @@ -1923,7 +1946,7 @@ static int unpack_double_element(grib_accessor* a, size_t idx, double* val) if (idx > size) return GRIB_INVALID_ARGUMENT; - values = (double*)grib_context_malloc_clear(a->context, size * sizeof(double)); + values = reinterpret_cast(grib_context_malloc_clear(a->context, size * sizeof(double))); err = grib_get_double_array(grib_handle_of_accessor(a), "codedValues", values, &size); if (err) { grib_context_free(a->context, values); @@ -1949,7 +1972,7 @@ static int unpack_double_element_set(grib_accessor* a, const size_t* index_array if (index_array[i] > size) return GRIB_INVALID_ARGUMENT; } - values = (double*)grib_context_malloc_clear(a->context, size * sizeof(double)); + values = reinterpret_cast(grib_context_malloc_clear(a->context, size * sizeof(double))); err = grib_get_double_array(grib_handle_of_accessor(a), "codedValues", values, &size); if (err) { grib_context_free(a->context, values); @@ -1964,7 +1987,7 @@ static int unpack_double_element_set(grib_accessor* a, const size_t* index_array static int value_count(grib_accessor* a, long* count) { - grib_accessor_data_g22order_packing* self = (grib_accessor_data_g22order_packing*)a; + grib_accessor_data_g22order_packing* self = reinterpret_cast(a); *count = 0; return grib_get_long_internal(grib_handle_of_accessor(a), self->numberOfValues, count); } From fa26ab1077632720920f138933e2906843339df4 Mon Sep 17 00:00:00 2001 From: Dusan Figala Date: Fri, 31 Mar 2023 13:50:07 +0200 Subject: [PATCH 021/378] Add code coverage CI job --- .github/workflows/ci.yml | 9 +++++++++ .github/workflows/reusable-ci.yml | 5 +++++ 2 files changed, 14 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 99f2ffff4..7b347d5b6 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -73,3 +73,12 @@ jobs: repository: private-downstream-ci event_type: downstream-ci-hpc payload: '{"eccodes": "ecmwf/eccodes@${{ github.event.pull_request.head.sha || github.sha }}"}' + + codecov: + name: code-coverage + if: ${{ !github.event.pull_request.head.repo.fork && github.event.action != 'labeled' || github.event.label.name == 'approved-for-ci' }} + uses: ./.github/workflows/reusable-ci.yml + with: + eccodes: ecmwf/eccodes@${{ github.event.pull_request.head.sha || github.sha }} + codecov: true + secrets: inherit diff --git a/.github/workflows/reusable-ci.yml b/.github/workflows/reusable-ci.yml index 79f4cf53b..25cc1765e 100644 --- a/.github/workflows/reusable-ci.yml +++ b/.github/workflows/reusable-ci.yml @@ -6,6 +6,10 @@ on: eccodes: required: false type: string + codecov: + required: false + type: boolean + default: false jobs: ci: @@ -14,6 +18,7 @@ jobs: with: repository: ${{ inputs.eccodes || 'ecmwf/eccodes@develop' }} name_prefix: eccodes- + codecov_upload: ${{ inputs.codecov }} build_package_inputs: | repository: ${{ inputs.eccodes || 'ecmwf/eccodes@develop' }} self_coverage: true From f973359c63e469b97db5e89004113960b42f0a3a Mon Sep 17 00:00:00 2001 From: Eugen Betke Date: Fri, 31 Mar 2023 11:56:35 +0000 Subject: [PATCH 022/378] ECC-1472: Refactoring sec_* variables --- ...ib_accessor_class_data_g22order_packing.cc | 102 +++++++++--------- 1 file changed, 50 insertions(+), 52 deletions(-) diff --git a/src/grib_accessor_class_data_g22order_packing.cc b/src/grib_accessor_class_data_g22order_packing.cc index a4499a013..e87c18592 100644 --- a/src/grib_accessor_class_data_g22order_packing.cc +++ b/src/grib_accessor_class_data_g22order_packing.cc @@ -1210,7 +1210,6 @@ static void merge_j(struct section* h, int ref_bits, int width_bits, int has_und static int pack_double(grib_accessor* a, const double* val, size_t* len) { unsigned char* sec7; - long sec5_19, sec5_36, sec5_46, sec5_48; grib_accessor_data_g22order_packing* self = reinterpret_cast(a); grib_handle* gh = grib_handle_of_accessor(a); @@ -1254,7 +1253,6 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) int bin_scale; int wanted_bits; int max_bits; - int packing_mode; int use_bitmap; int j, j0, k, *v, binary_scale, nbits, has_undef, extra_0, extra_1; @@ -1314,30 +1312,21 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) max_bits = bits_per_value; // TODO(masn) - packing_mode = orderOfSpatialDifferencing; - // if (orderOfSpatialDifferencing == 0) packing_mode = 1; //grid_complex - // if (orderOfSpatialDifferencing == 1) packing_mode = 2; //grid_complex_spatial_differencing with orderOfSpatialDifferencing=1 - // if (orderOfSpatialDifferencing == 2) packing_mode = 3; //grid_complex_spatial_differencing with orderOfSpatialDifferencing=2 + // Mapping: eccodes : wgrib2 + // orderOfSpatialDifferencing = 0 : packing_mode = 1 : grid_complex + // orderOfSpatialDifferencing = 1 : packing_mode = 2 : grid_complex_spatial_differencing with orderOfSpatialDifferencing=1 + // orderOfSpatialDifferencing = 2 : packing_mode = 3 : grid_complex_spatial_differencing with orderOfSpatialDifferencing=2 use_bitmap = bitmap_present; wanted_bits = bits_per_value; - // data = (double*) val; - size_t ndata = *len; - double* data = new double[ndata]; - std::memcpy(data, val, sizeof(*data) * ndata); - - dec_scale = -decimal_scale_factor; - bin_scale = binary_scale_factor; - ndef = 0; - - for (i = 0; i < ndata; i++) { - if (DEFINED_VAL(data[i])) { + for (i = 0; i < *len; i++) { + if (DEFINED_VAL(val[i])) { ndef = ndef + 1; } } - if (ndef == 0) { // all undefined values + if (ndef == 0) { // Special case: All undefined values if ((err = grib_set_double_internal(gh, self->reference_value, grib_ieee_to_long(0.0))) != GRIB_SUCCESS) return err; if ((err = grib_set_long_internal(gh, self->binary_scale_factor, 0)) != GRIB_SUCCESS) @@ -1354,9 +1343,8 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) return err; if ((err = grib_set_long_internal(gh, self->primaryMissingValueSubstitute, grib_ieee_to_long(static_cast(9.999e20)))) != GRIB_SUCCESS) return err; - //if ((err = grib_set_long_internal(gh, self->secondaryMissingValueSubstitute, 0xFFFFFFFF)) != GRIB_SUCCESS) + // if ((err = grib_set_long_internal(gh, self->secondaryMissingValueSubstitute, 0xFFFFFFFF)) != GRIB_SUCCESS) // return err; - if ((err = grib_set_long_internal(gh, self->numberOfGroupsOfDataValues, 1)) != GRIB_SUCCESS) return err; if ((err = grib_set_long_internal(gh, self->referenceForGroupWidths, 0)) != GRIB_SUCCESS) @@ -1371,8 +1359,17 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) return err; if ((err = grib_set_long_internal(gh, self->numberOfBitsUsedForTheScaledGroupLengths, 8)) != GRIB_SUCCESS) return err; + return GRIB_SUCCESS; } + size_t ndata = *len; + double* data = new double[ndata]; + std::memcpy(data, val, sizeof(*data) * ndata); + + dec_scale = -decimal_scale_factor; + bin_scale = binary_scale_factor; + ndef = 0; + /* compute bitmap section */ /*if (use_bitmap == 0 || ndef == ndata) {*/ /* if ((err = grib_set_long_internal(gh, "bitmapPresent", 0)) != GRIB_SUCCESS)*/ @@ -1483,7 +1480,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) vmx = vmn = 0; extra_0 = extra_1 = 0; // turn off warnings - if (packing_mode == 3) { + if (orderOfSpatialDifferencing == 3) { // delta_delta(v, nndata, &vmn, &vmx, &extra_0, &extra_1); // single core version @@ -1517,7 +1514,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) } } } - else if (packing_mode == 2) { + else if (orderOfSpatialDifferencing == 2) { // delta(v, nndata, &vmn, &vmx, &extra_0); // single core version @@ -1542,7 +1539,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) } } } - else if (packing_mode == 1) { + else if (orderOfSpatialDifferencing == 1) { // find min/max int_min_max_array(v, nndata, &vmn, &vmx); } @@ -1676,20 +1673,20 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) #endif // finished making segments - // findout number of bytes for extra info (packing_mode 2/3) + // findout number of bytes for extra info (orderOfSpatialDifferencing 2/3) - if (packing_mode != 1) { // packing modes 2/3 + if (orderOfSpatialDifferencing != 1) { // packing modes 2/3 k = vmn >= 0 ? find_nbits(vmn) + 1 : find_nbits(-vmn) + 1; // + 1 work around for NCEP bug j = find_nbits(extra_0) + 1; if (j > k) k = j; - if (packing_mode == 3) { + if (orderOfSpatialDifferencing == 3) { // + 1 work around for NCEP bug j = find_nbits(extra_1) + 1; if (j > k) k = j; } - sec5_48 = (k + 7) / 8; // number of bytes for extra and vmn + numberOfOctetsExtraDescriptors = (k + 7) / 8; // number of bytes for extra and vmn } // scale the linked list @@ -1767,8 +1764,13 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) } } - sec5_19 = find_nbits(grefmx + has_undef); - if ((err = grib_set_long_internal(gh, self->bits_per_value, sec5_19)) != GRIB_SUCCESS) + //bits_per_value = find_nbits(grefmx + has_undef); + //numberOfBitsUsedForTheGroupWidths = find_nbits(gwidmx - gwidmn + has_undef); + + bits_per_value = find_nbits(grefmx + has_undef); + numberOfBitsUsedForTheGroupWidths = find_nbits(gwidmx - gwidmn + has_undef); + + if ((err = grib_set_long_internal(gh, self->bits_per_value, bits_per_value)) != GRIB_SUCCESS) return err; if ((err = grib_set_double_internal(gh, self->reference_value, static_cast(ref))) != GRIB_SUCCESS) return err; @@ -1790,7 +1792,6 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) return err; if ((err = grib_set_long_internal(gh, self->referenceForGroupWidths, gwidmn)) != GRIB_SUCCESS) return err; - sec5_36 = find_nbits(gwidmx - gwidmn + has_undef); if ((err = grib_set_long_internal(gh, self->numberOfBitsUsedForTheGroupWidths, find_nbits(gwidmx - gwidmn + has_undef))) != GRIB_SUCCESS) return err; if ((err = grib_set_long_internal(gh, self->referenceForGroupLengths, glenmn)) != GRIB_SUCCESS) @@ -1799,38 +1800,35 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) return err; if ((err = grib_set_long_internal(gh, self->trueLengthOfLastGroup, len_last)) != GRIB_SUCCESS) return err; - sec5_46 = find_nbits(glenmx - glenmn); - if ((err = grib_set_long_internal(gh, self->numberOfBitsUsedForTheScaledGroupLengths, sec5_46)) != GRIB_SUCCESS) + numberOfBitsUsedForTheScaledGroupLengths = find_nbits(glenmx - glenmn); + if ((err = grib_set_long_internal(gh, self->numberOfBitsUsedForTheScaledGroupLengths, numberOfBitsUsedForTheScaledGroupLengths)) != GRIB_SUCCESS) return err; size_sec7 = 5; - if (packing_mode == 2) { - size_sec7 += 2 * sec5_48; + if (orderOfSpatialDifferencing == 2) { + size_sec7 += 2 * numberOfOctetsExtraDescriptors; if ((err = grib_set_long_internal(gh, self->orderOfSpatialDifferencing, 1)) != GRIB_SUCCESS) return err; - // if ((err = grib_set_long_internal(gh, self->numberOfOctetsExtraDescriptors, 2)) != GRIB_SUCCESS) - if ((err = grib_set_long_internal(gh, self->numberOfOctetsExtraDescriptors, sec5_48)) != GRIB_SUCCESS) - return err; } - else if (packing_mode == 3) { - size_sec7 += 3 * sec5_48; + else if (orderOfSpatialDifferencing == 3) { + size_sec7 += 3 * numberOfOctetsExtraDescriptors; if ((err = grib_set_long_internal(gh, self->orderOfSpatialDifferencing, 2)) != GRIB_SUCCESS) return err; } - if (packing_mode > 1) { - if ((err = grib_set_long_internal(gh, self->numberOfOctetsExtraDescriptors, sec5_48)) != GRIB_SUCCESS) + if (orderOfSpatialDifferencing > 1) { + if ((err = grib_set_long_internal(gh, self->numberOfOctetsExtraDescriptors, numberOfOctetsExtraDescriptors)) != GRIB_SUCCESS) return err; } // group reference value - size_sec7 += (ngroups * sec5_19 + 7) / 8; + size_sec7 += (ngroups * bits_per_value + 7) / 8; // group widths - size_sec7 += (ngroups * sec5_36 + 7) / 8; + size_sec7 += (ngroups * numberOfBitsUsedForTheGroupWidths + 7) / 8; // group lengths - size_sec7 += (ngroups * sec5_46 + 7) / 8; + size_sec7 += (ngroups * numberOfBitsUsedForTheScaledGroupLengths + 7) / 8; k = 0; { @@ -1860,27 +1858,27 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) add_bitstream(a, 7, 8); // write extra octets - if (packing_mode == 2 || packing_mode == 3) { - add_bitstream(a, extra_0, 8 * sec5_48); - if (packing_mode == 3) add_bitstream(a, extra_1, 8 * sec5_48); + if (orderOfSpatialDifferencing == 2 || orderOfSpatialDifferencing == 3) { + add_bitstream(a, extra_0, 8 * numberOfOctetsExtraDescriptors); + if (orderOfSpatialDifferencing == 3) add_bitstream(a, extra_1, 8 * numberOfOctetsExtraDescriptors); k = vmn; if (k < 0) { - k = -vmn | (1 << (8 * sec5_48 - 1)); + k = -vmn | (1 << (8 * numberOfOctetsExtraDescriptors - 1)); } - add_bitstream(a, k, 8 * sec5_48); + add_bitstream(a, k, 8 * numberOfOctetsExtraDescriptors); finish_bitstream(); } // write the group reference values - add_many_bitstream(a, refs, ngroups, sec5_19); + add_many_bitstream(a, refs, ngroups, bits_per_value); finish_bitstream(); // write the group widths - add_many_bitstream(a, itmp, ngroups, sec5_36); + add_many_bitstream(a, itmp, ngroups, numberOfBitsUsedForTheGroupWidths); finish_bitstream(); // write the group lengths - add_many_bitstream(a, itmp2, ngroups, sec5_46); + add_many_bitstream(a, itmp2, ngroups, numberOfBitsUsedForTheScaledGroupLengths); finish_bitstream(); s = start.tail; From d5e9d2fdaf3deedec02ec337792c70f0d6cb9a0d Mon Sep 17 00:00:00 2001 From: Sebastien Villaume Date: Fri, 31 Mar 2023 13:14:57 +0100 Subject: [PATCH 023/378] making the ensemble number to 4 octets --- definitions/grib2/template.4.leps.def | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/definitions/grib2/template.4.leps.def b/definitions/grib2/template.4.leps.def index 47ae8be43..f4a8d4ff3 100644 --- a/definitions/grib2/template.4.leps.def +++ b/definitions/grib2/template.4.leps.def @@ -4,10 +4,10 @@ codetable[1] typeOfEnsembleForecast ('4.6.table',masterDir,localDir) = 255 : dump; # Perturbation number -unsigned[2] perturbationNumber : dump; +unsigned[4] perturbationNumber : dump; alias number=perturbationNumber; # Number of forecasts in ensemble -unsigned[2] numberOfForecastsInEnsemble : dump; +unsigned[4] numberOfForecastsInEnsemble : dump; alias totalNumber=numberOfForecastsInEnsemble; From 9da715aa56c9cc12f04af34a8d70569df9ef2711 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 31 Mar 2023 12:18:34 +0000 Subject: [PATCH 024/378] grid_complex encoding: Comments on the use of packing_mode variable --- src/grib_accessor_class_data_g22order_packing.cc | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/grib_accessor_class_data_g22order_packing.cc b/src/grib_accessor_class_data_g22order_packing.cc index 10cce1451..5c7383f5e 100644 --- a/src/grib_accessor_class_data_g22order_packing.cc +++ b/src/grib_accessor_class_data_g22order_packing.cc @@ -1300,10 +1300,18 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) max_bits = bits_per_value; // TODO(masn) + // Note: + // orderOfSpatialDifferencing = 0 means "grid_complex" + // orderOfSpatialDifferencing = 1 means "grid_complex_spatial_differencing" with orderOfSpatialDifferencing=1 + // orderOfSpatialDifferencing = 2 means "grid_complex_spatial_differencing" with orderOfSpatialDifferencing=2 + // The variable "packing_mode" in wgrib2 (file complex_pk.c) has 3 possible values: + // packing_mode = 1 grid_complex + // packing_mode = 2 grid_complex_spatial_differencing with orderOfSpatialDifferencing=1 + // packing_mode = 3 grid_complex_spatial_differencing with orderOfSpatialDifferencing=2 + // + // TODO(masn): This needs to be reviewed! + // packing_mode = orderOfSpatialDifferencing; - //if (orderOfSpatialDifferencing == 0) packing_mode = 1; //grid_complex - //if (orderOfSpatialDifferencing == 1) packing_mode = 2; //grid_complex_spatial_differencing with orderOfSpatialDifferencing=1 - //if (orderOfSpatialDifferencing == 2) packing_mode = 3; //grid_complex_spatial_differencing with orderOfSpatialDifferencing=2 use_bitmap = bitmap_present; wanted_bits = bits_per_value; From 4c5a4a984681ec7ccda61a559dde7111174fbd6b Mon Sep 17 00:00:00 2001 From: Eugen Betke Date: Fri, 31 Mar 2023 14:16:31 +0000 Subject: [PATCH 025/378] ECC-1472: Fix orderOfSpatialDifferencing values --- ...ib_accessor_class_data_g22order_packing.cc | 33 +++++++++---------- 1 file changed, 15 insertions(+), 18 deletions(-) diff --git a/src/grib_accessor_class_data_g22order_packing.cc b/src/grib_accessor_class_data_g22order_packing.cc index 3324d25cf..9bf39ae3d 100644 --- a/src/grib_accessor_class_data_g22order_packing.cc +++ b/src/grib_accessor_class_data_g22order_packing.cc @@ -11,7 +11,6 @@ #include "./grib_api_internal.h" #include -#include /* This is used by make_class.pl @@ -433,7 +432,7 @@ static unsigned char* mk_bms(grib_accessor* a, double* data, unsigned int* ndata } if (i == nn) { /* all defined values, no need for bms */ - bms = (unsigned char*)malloc(6); + bms = reinterpret_cast(grib_context_malloc(a->context, 6)); if (bms == NULL) grib_context_log(a->context, GRIB_LOG_ERROR, "mk_bms: memory allocation problem", ""); uint_char(6, bms); // length of section 6 @@ -443,7 +442,7 @@ static unsigned char* mk_bms(grib_accessor* a, double* data, unsigned int* ndata } bms_size = 6 + (nn + 7) / 8; - bms = (unsigned char*)malloc(bms_size); + bms = reinterpret_cast(grib_context_malloc(a->context, bms_size)); if (bms == NULL) grib_context_log(a->context, GRIB_LOG_ERROR, "mk_bms: memory allocation problem", ""); @@ -1371,7 +1370,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) size_t ndata = *len; double* data = new double[ndata]; - std::memcpy(data, val, sizeof(*data) * ndata); + memcpy(data, val, sizeof(*data) * ndata); dec_scale = -decimal_scale_factor; bin_scale = binary_scale_factor; @@ -1487,7 +1486,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) vmx = vmn = 0; extra_0 = extra_1 = 0; // turn off warnings - if (orderOfSpatialDifferencing == 3) { + if (orderOfSpatialDifferencing == 2) { // delta_delta(v, nndata, &vmn, &vmx, &extra_0, &extra_1); // single core version @@ -1521,7 +1520,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) } } } - else if (orderOfSpatialDifferencing == 2) { + else if (orderOfSpatialDifferencing == 1) { // delta(v, nndata, &vmn, &vmx, &extra_0); // single core version @@ -1546,7 +1545,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) } } } - else if (orderOfSpatialDifferencing == 1) { + else if (orderOfSpatialDifferencing == 0) { // find min/max int_min_max_array(v, nndata, &vmn, &vmx); } @@ -1682,13 +1681,13 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) // finished making segments // findout number of bytes for extra info (orderOfSpatialDifferencing 2/3) - if (orderOfSpatialDifferencing != 1) { // packing modes 2/3 + if (orderOfSpatialDifferencing != 0) { // packing modes 2/3 k = vmn >= 0 ? find_nbits(vmn) + 1 : find_nbits(-vmn) + 1; // + 1 work around for NCEP bug j = find_nbits(extra_0) + 1; if (j > k) k = j; - if (orderOfSpatialDifferencing == 3) { + if (orderOfSpatialDifferencing == 2) { // + 1 work around for NCEP bug j = find_nbits(extra_1) + 1; if (j > k) k = j; @@ -1813,17 +1812,15 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) size_sec7 = 5; - if (orderOfSpatialDifferencing == 2) { + if (orderOfSpatialDifferencing == 1) { size_sec7 += 2 * numberOfOctetsExtraDescriptors; - if ((err = grib_set_long_internal(gh, self->orderOfSpatialDifferencing, 1)) != GRIB_SUCCESS) - return err; } - else if (orderOfSpatialDifferencing == 3) { + else if (orderOfSpatialDifferencing == 2) { size_sec7 += 3 * numberOfOctetsExtraDescriptors; - if ((err = grib_set_long_internal(gh, self->orderOfSpatialDifferencing, 2)) != GRIB_SUCCESS) - return err; } - if (orderOfSpatialDifferencing > 1) { + if (orderOfSpatialDifferencing > 0) { + if ((err = grib_set_long_internal(gh, self->orderOfSpatialDifferencing, orderOfSpatialDifferencing)) != GRIB_SUCCESS) + return err; if ((err = grib_set_long_internal(gh, self->numberOfOctetsExtraDescriptors, numberOfOctetsExtraDescriptors)) != GRIB_SUCCESS) return err; } @@ -1865,9 +1862,9 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) add_bitstream(a, 7, 8); // write extra octets - if (orderOfSpatialDifferencing == 2 || orderOfSpatialDifferencing == 3) { + if (orderOfSpatialDifferencing == 1 || orderOfSpatialDifferencing == 2) { add_bitstream(a, extra_0, 8 * numberOfOctetsExtraDescriptors); - if (orderOfSpatialDifferencing == 3) add_bitstream(a, extra_1, 8 * numberOfOctetsExtraDescriptors); + if (orderOfSpatialDifferencing == 2) add_bitstream(a, extra_1, 8 * numberOfOctetsExtraDescriptors); k = vmn; if (k < 0) { k = -vmn | (1 << (8 * numberOfOctetsExtraDescriptors - 1)); From 0d9089dbb9a5d4169b62cf85d53feba3c3a34dc4 Mon Sep 17 00:00:00 2001 From: Eugen Betke Date: Fri, 31 Mar 2023 15:52:34 +0000 Subject: [PATCH 026/378] ECC-1472: Change new/delete to ecCodes's memory management --- ...ib_accessor_class_data_g22order_packing.cc | 69 +++++++++---------- 1 file changed, 33 insertions(+), 36 deletions(-) diff --git a/src/grib_accessor_class_data_g22order_packing.cc b/src/grib_accessor_class_data_g22order_packing.cc index 9bf39ae3d..acde28a91 100644 --- a/src/grib_accessor_class_data_g22order_packing.cc +++ b/src/grib_accessor_class_data_g22order_packing.cc @@ -647,8 +647,7 @@ static int unpack(grib_accessor* a, T* val, const size_t* len) self->dirty = 0; - // sec_val = (long*)grib_context_malloc(a->context, (n_vals) * sizeof(long)); - sec_val = new long[n_vals]; + sec_val = (long*)grib_context_malloc(a->context, (n_vals) * sizeof(long)); if (!sec_val) return GRIB_OUT_OF_MEMORY; memset(sec_val, 0, (n_vals) * sizeof(long)); /* See SUP-718 */ @@ -791,7 +790,7 @@ static int unpack(grib_accessor* a, T* val, const size_t* len) } } - delete [] sec_val; + grib_context_free(a->context, sec_val); return err; } @@ -1212,18 +1211,8 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) grib_accessor_data_g22order_packing* self = reinterpret_cast(a); grib_handle* gh = grib_handle_of_accessor(a); - /*size_t i = 0;*/ - /*size_t j = 0;*/ - // size_t n_vals = *len; - int err = 0; - // unsigned char* buf = NULL; - // unsigned char* buf_ref = NULL; - // unsigned char* buf_length = NULL; - // double d = 0; - // double divisor = 0; - long bits_per_value = 0; // double reference_value = 0; @@ -1246,8 +1235,6 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) long orderOfSpatialDifferencing; long numberOfOctetsExtraDescriptors; - // double* data; - // size_t ndata = *len; int dec_scale; int bin_scale; int wanted_bits; @@ -1369,7 +1356,11 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) } size_t ndata = *len; - double* data = new double[ndata]; + double* data = reinterpret_cast(grib_context_malloc_clear(a->context, ndata * sizeof(double))); + if (data == NULL) { + grib_context_log(a->context, GRIB_LOG_ERROR, "grib_accessor_data_g2complex_packing::pack_double unable to allocate %d bytes", ndata * sizeof(double)); + return GRIB_OUT_OF_MEMORY; + } memcpy(data, val, sizeof(*data) * ndata); dec_scale = -decimal_scale_factor; @@ -1389,7 +1380,11 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) nndata = use_bitmap ? ndef : ndata; has_undef = use_bitmap ? 0 : ndata != ndef; - v = new int[nndata]; + v = reinterpret_cast(grib_context_malloc(a->context, nndata * sizeof(int))); + if (v == NULL) { + grib_context_log(a->context, GRIB_LOG_ERROR, "grib_accessor_data_g2complex_packing::pack_double unable to allocate %d bytes", nndata * sizeof(int)); + return GRIB_OUT_OF_MEMORY; + } if (min_max_array(data, ndata, &mn, &mx) != 0) { grib_context_log(a->context, GRIB_LOG_ERROR, "grid_complex packing: Failed to get min max of data"); return GRIB_ENCODING_ERROR; @@ -1573,8 +1568,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) } } - list = new section[nstruct]; - + list = reinterpret_cast(grib_context_malloc_clear(a->context, nstruct * sizeof(section))); if (list == NULL) { grib_context_log(a->context, GRIB_LOG_ERROR, "grid_complex packing: memory allocation of list failed"); return GRIB_OUT_OF_MEMORY; @@ -1632,7 +1626,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) // try making segment sizes larger // 12/2015 need to segment size less 25 bits, bitstream software limitation - list_backup = new struct section[nstruct]; + list_backup = reinterpret_cast(grib_context_malloc(a->context, nstruct * sizeof(section))); if (list_backup == NULL) { grib_context_log(a->context, GRIB_LOG_ERROR, "grid_complex packing: memory allocation of list_backup failed"); return GRIB_OUT_OF_MEMORY; @@ -1663,7 +1657,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) LEN_SEC_MAX = (LEN_SEC_MAX - 1) / 2; } } - delete[] list_backup; + grib_context_free(a->context,list_backup); exchange(start.tail, v, has_undef, LEN_SEC_MAX); #ifdef DEBUG @@ -1707,13 +1701,14 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) s = s->tail; } - lens = new int[ngroups]; - widths = new int[ngroups]; - refs = new int[ngroups]; - itmp = new int[ngroups]; - itmp2 = new int[ngroups]; + lens = reinterpret_cast(grib_context_malloc(a->context, ngroups * sizeof(int))); + widths = reinterpret_cast(grib_context_malloc(a->context, ngroups * sizeof(int))); + refs = reinterpret_cast(grib_context_malloc(a->context, ngroups * sizeof(int))); + itmp = reinterpret_cast(grib_context_malloc(a->context, ngroups * sizeof(int))); + itmp2 = reinterpret_cast(grib_context_malloc(a->context, ngroups * sizeof(int))); if (lens == NULL || widths == NULL || refs == NULL || itmp == NULL || itmp2 == NULL) { + grib_context_log(a->context, GRIB_LOG_ERROR, "grid_complex packing: memory allocation of lens/widths/refs/itmp/itmp2 failed"); return GRIB_OUT_OF_MEMORY; } @@ -1849,8 +1844,10 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) } size_sec7 += (k >> 3) + ((k & 7) ? 1 : 0); - sec7 = new unsigned char[size_sec7]; + + sec7 = reinterpret_cast(grib_context_malloc(a->context, size_sec7)); if (sec7 == NULL) { + grib_context_log(a->context, GRIB_LOG_ERROR, "grib_accessor_data_g2simple_packing::pack_double unable to allocate %d bytes", size_sec7); return GRIB_OUT_OF_MEMORY; } @@ -1910,15 +1907,15 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) grib_buffer_replace(a, sec7 + 5, size_sec7 - 5, 1, 1); - delete[] sec7; - delete[] list; - delete[] v; - delete[] lens; - delete[] widths; - delete[] refs; - delete[] itmp; - delete[] itmp2; - delete[] data; + grib_context_free(a->context, sec7); + grib_context_free(a->context, list); + grib_context_free(a->context, v); + grib_context_free(a->context, lens); + grib_context_free(a->context, widths); + grib_context_free(a->context, refs); + grib_context_free(a->context, itmp); + grib_context_free(a->context, itmp2); + grib_context_free(a->context, data); /* ECC-259: Set correct number of values */ if ((err = grib_set_long_internal(gh, self->numberOfValues, *len)) != GRIB_SUCCESS) From 9fb2140ccbaa54b9545bb202925e7513a7023eda Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 31 Mar 2023 17:22:39 +0100 Subject: [PATCH 027/378] ECC-1564: GRIB2: Support local product definition templates for different centres --- definitions/grib2/{ => local/ecmf}/template.4.40033.def | 0 definitions/grib2/{ => local/ecmf}/template.4.40034.def | 0 definitions/grib2/section.4.def | 7 ++++++- tests/grib2_templates.sh | 5 +++++ 4 files changed, 11 insertions(+), 1 deletion(-) rename definitions/grib2/{ => local/ecmf}/template.4.40033.def (100%) rename definitions/grib2/{ => local/ecmf}/template.4.40034.def (100%) diff --git a/definitions/grib2/template.4.40033.def b/definitions/grib2/local/ecmf/template.4.40033.def similarity index 100% rename from definitions/grib2/template.4.40033.def rename to definitions/grib2/local/ecmf/template.4.40033.def diff --git a/definitions/grib2/template.4.40034.def b/definitions/grib2/local/ecmf/template.4.40034.def similarity index 100% rename from definitions/grib2/template.4.40034.def rename to definitions/grib2/local/ecmf/template.4.40034.def diff --git a/definitions/grib2/section.4.def b/definitions/grib2/section.4.def index fe480b847..7eab7cd26 100644 --- a/definitions/grib2/section.4.def +++ b/definitions/grib2/section.4.def @@ -51,7 +51,12 @@ if (section2Used == 1) { } } transient genVertHeightCoords = 0; -template productDefinition "grib2/template.4.[productDefinitionTemplateNumber:l].def" ; + +if (productDefinitionTemplateNumber >= 32768) { + template productDefinition "grib2/local/[centreForLocal]/template.4.[productDefinitionTemplateNumber:l].def"; +} else { + template productDefinition "grib2/template.4.[productDefinitionTemplateNumber:l].def"; +} if (defined(marsStream) && defined(marsType)) { template_nofail marsKeywords1 "mars/grib.[marsStream:s].[marsType:s].def"; diff --git a/tests/grib2_templates.sh b/tests/grib2_templates.sh index c1e062b20..0e709621c 100755 --- a/tests/grib2_templates.sh +++ b/tests/grib2_templates.sh @@ -119,4 +119,9 @@ $tools_dir/grib_set -s tablesVersion=26,productDefinitionTemplateNumber=85 $samp $tools_dir/grib_compare -b productDefinitionTemplateNumber $temp1 $temp2 +# ECC-1564: Support local product definition templates for different centres +$tools_dir/grib_set -s productDefinitionTemplateNumber=40033 $sample2 $temp +$tools_dir/grib_set -s productDefinitionTemplateNumber=40034 $sample2 $temp + + rm -f $temp $temp1 $temp2 $tempFilt From a0f8af1ae64a89a02b837d2b75413d08afc9b5df Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sat, 1 Apr 2023 18:43:29 +0100 Subject: [PATCH 028/378] ECC-1563: GRIB2: Introduce new local section 4 templates for extra large ensembles --- .../grib2/{ => local/ecmf}/template.4.65533.def | 0 .../grib2/{ => local/ecmf}/template.4.65534.def | 0 definitions/grib2/tables/local/ecmf/1/4.0.table | 4 ++-- tests/grib2_templates.sh | 15 ++++++++++++++- 4 files changed, 16 insertions(+), 3 deletions(-) rename definitions/grib2/{ => local/ecmf}/template.4.65533.def (100%) rename definitions/grib2/{ => local/ecmf}/template.4.65534.def (100%) diff --git a/definitions/grib2/template.4.65533.def b/definitions/grib2/local/ecmf/template.4.65533.def similarity index 100% rename from definitions/grib2/template.4.65533.def rename to definitions/grib2/local/ecmf/template.4.65533.def diff --git a/definitions/grib2/template.4.65534.def b/definitions/grib2/local/ecmf/template.4.65534.def similarity index 100% rename from definitions/grib2/template.4.65534.def rename to definitions/grib2/local/ecmf/template.4.65534.def diff --git a/definitions/grib2/tables/local/ecmf/1/4.0.table b/definitions/grib2/tables/local/ecmf/1/4.0.table index 191faf786..f929a952b 100644 --- a/definitions/grib2/tables/local/ecmf/1/4.0.table +++ b/definitions/grib2/tables/local/ecmf/1/4.0.table @@ -1,3 +1,3 @@ # Code table 4.0 - Product definition template number -65533 65533 individual member for large ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time -65534 65534 Individual member for large ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer, in a continuous or non-continuous interval +65533 65533 Individual member for large ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time +65534 65534 Individual member for large ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer, in a continuous or non-continuous interval diff --git a/tests/grib2_templates.sh b/tests/grib2_templates.sh index 0e709621c..403010e2a 100755 --- a/tests/grib2_templates.sh +++ b/tests/grib2_templates.sh @@ -16,6 +16,7 @@ temp1=temp1.$label.grib2 temp2=temp2.$label.grib2 temp=temp.$label.grib2 tempFilt=temp.$label.filt +tempText=temp.$label.txt sample2=$ECCODES_SAMPLES_PATH/GRIB2.tmpl @@ -123,5 +124,17 @@ $tools_dir/grib_compare -b productDefinitionTemplateNumber $temp1 $temp2 $tools_dir/grib_set -s productDefinitionTemplateNumber=40033 $sample2 $temp $tools_dir/grib_set -s productDefinitionTemplateNumber=40034 $sample2 $temp +# ECC-1563: new local section 4 templates for extra large ensembles +$tools_dir/grib_set -s localTablesVersion=1,productDefinitionTemplateNumber=65533,perturbationNumber=2e8 $sample2 $temp +grib_check_key_equals $temp perturbationNumber '200000000' +$tools_dir/grib_dump -O -p section_4 $temp > $tempText +grep -q "Individual member for large ensemble forecast.*point in time" $tempText -rm -f $temp $temp1 $temp2 $tempFilt +$tools_dir/grib_set -s localTablesVersion=1,productDefinitionTemplateNumber=65534,perturbationNumber=2e8 $sample2 $temp +grib_check_key_equals $temp perturbationNumber,typeOfStatisticalProcessing '200000000 255' +$tools_dir/grib_dump -O -p section_4 $temp > $tempText +grep -q "Individual member for large ensemble forecast.*continuous or non-continuous interval" $tempText + + +# Clean up +rm -f $temp $temp1 $temp2 $tempFilt $tempText From 8e7adfb35769b47f270ed5088bcb2b950b21de3c Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sun, 2 Apr 2023 14:53:33 +0100 Subject: [PATCH 029/378] ECC-1560: Add test --- tests/CMakeLists.txt | 1 + tests/grib_ecc-1560.sh | 33 +++++++++++++++++++++++++++++++++ 2 files changed, 34 insertions(+) create mode 100755 tests/grib_ecc-1560.sh diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index cc7a94f9b..66210fd50 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -108,6 +108,7 @@ if( HAVE_BUILD_TOOLS ) grib_ecc-1322 grib_ecc-1319 grib_ecc-1406 + grib_ecc-1560 bufr_ecc-1028 bufr_ecc-1195 bufr_ecc-1259 diff --git a/tests/grib_ecc-1560.sh b/tests/grib_ecc-1560.sh new file mode 100755 index 000000000..6ed5ebea9 --- /dev/null +++ b/tests/grib_ecc-1560.sh @@ -0,0 +1,33 @@ +#!/bin/sh +# (C) Copyright 2005- ECMWF. +# +# This software is licensed under the terms of the Apache Licence Version 2.0 +# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. +# +# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by +# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. +# + +. ./include.ctest.sh + +REDIRECT=/dev/null + +label="grib_ecc-1560_test" +temp_PDTN08_Grib=temp.$label.PDTN08.grib +temp_PDTN11_Grib=temp.$label.PDTN11.grib + +sample_grib2=$ECCODES_SAMPLES_PATH/GRIB2.tmpl + +# We set PDTN=8 and level to 1.5 metres above ground +${tools_dir}/grib_set -s \ + productDefinitionTemplateNumber=8,typeOfFirstFixedSurface=103,scaledValueOfFirstFixedSurface=15,scaleFactorOfFirstFixedSurface=1 \ + $sample_grib2 $temp_PDTN08_Grib +grib_check_key_equals $temp_PDTN08_Grib level:d 1.5 + +# Now we change to PDTN 11 +${tools_dir}/grib_set -s productDefinitionTemplateNumber=11 $temp_PDTN08_Grib $temp_PDTN11_Grib +grib_check_key_equals $temp_PDTN11_Grib level:d 1.5 + +${tools_dir}/grib_compare $temp_PDTN08_Grib $temp_PDTN11_Grib +# Clean up +rm -f $temp_PDTN08_Grib $temp_PDTN11_Grib From 94c12b30ccb6ccb04031a64cfa881827813d0a46 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sun, 2 Apr 2023 15:31:27 +0100 Subject: [PATCH 030/378] ECC-1560: Add test --- tests/grib_ecc-1560.sh | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/tests/grib_ecc-1560.sh b/tests/grib_ecc-1560.sh index 6ed5ebea9..2f955f4b7 100755 --- a/tests/grib_ecc-1560.sh +++ b/tests/grib_ecc-1560.sh @@ -15,7 +15,7 @@ REDIRECT=/dev/null label="grib_ecc-1560_test" temp_PDTN08_Grib=temp.$label.PDTN08.grib temp_PDTN11_Grib=temp.$label.PDTN11.grib - +tempGrib=temp.$label.grib sample_grib2=$ECCODES_SAMPLES_PATH/GRIB2.tmpl # We set PDTN=8 and level to 1.5 metres above ground @@ -28,6 +28,17 @@ grib_check_key_equals $temp_PDTN08_Grib level:d 1.5 ${tools_dir}/grib_set -s productDefinitionTemplateNumber=11 $temp_PDTN08_Grib $temp_PDTN11_Grib grib_check_key_equals $temp_PDTN11_Grib level:d 1.5 -${tools_dir}/grib_compare $temp_PDTN08_Grib $temp_PDTN11_Grib + +# Set integer value using the int/double encoding +# ----------------------------------------------- +${tools_dir}/grib_set -s typeOfFirstFixedSurface=105,level:i=34 $sample_grib2 $tempGrib +grib_check_key_equals $tempGrib scaleFactorOfFirstFixedSurface 0 +grib_check_key_equals $tempGrib scaledValueOfFirstFixedSurface 34 + +${tools_dir}/grib_set -s typeOfFirstFixedSurface=105,level:d=34 $sample_grib2 $tempGrib +grib_check_key_equals $tempGrib scaleFactorOfFirstFixedSurface 0 +grib_check_key_equals $tempGrib scaledValueOfFirstFixedSurface 34 + + # Clean up -rm -f $temp_PDTN08_Grib $temp_PDTN11_Grib +rm -f $temp_PDTN08_Grib $temp_PDTN11_Grib $tempGrib From 3d3f27acb0d1c2a1a9fcada49b1cccde77baaa73 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 3 Apr 2023 17:11:14 +0100 Subject: [PATCH 031/378] Remove unused header file --- src/grib_accessor_class_gen.cc | 3 ++ src/grib_accessor_class_gen.h | 53 ---------------------------------- 2 files changed, 3 insertions(+), 53 deletions(-) delete mode 100644 src/grib_accessor_class_gen.h diff --git a/src/grib_accessor_class_gen.cc b/src/grib_accessor_class_gen.cc index 8b112c6a8..4d2ea6011 100644 --- a/src/grib_accessor_class_gen.cc +++ b/src/grib_accessor_class_gen.cc @@ -17,6 +17,8 @@ #include #include #include +#include + /* This is used by make_class.pl @@ -317,6 +319,7 @@ static int unpack_long(grib_accessor* a, long* v, size_t* len) template static int unpack(grib_accessor* a, T* v, size_t* len) { + static_assert(std::is_floating_point::value, "Requires floating point numbers"); int type = GRIB_TYPE_UNDEFINED; if (a->cclass->unpack_long && a->cclass->unpack_long != &unpack_long) { long val = 0; diff --git a/src/grib_accessor_class_gen.h b/src/grib_accessor_class_gen.h deleted file mode 100644 index 5e8355c1f..000000000 --- a/src/grib_accessor_class_gen.h +++ /dev/null @@ -1,53 +0,0 @@ -// ECC-1467 - -#pragma once - -#include "grib_api_internal_cpp.h" -#include -#include - -template -class GribAccessorClassGen { -public: - static int unpack(grib_accessor* a, T* v, size_t* len); -}; - -template <> int GribAccessorClassGen::unpack(grib_accessor* a, long* v, size_t* len); -template <> int GribAccessorClassGen::unpack(grib_accessor* a, char* v, size_t* len); -template <> int GribAccessorClassGen::unpack(grib_accessor* a, float* v, size_t* len); - - -template -int GribAccessorClassGen::unpack(grib_accessor* a, T* v, size_t* len) -{ - static_assert(std::is_floating_point::value, "Requires floating point numbers"); - int type = GRIB_TYPE_UNDEFINED; - if (a->cclass->unpack_long && a->cclass->unpack_long != &GribAccessorClassGen::unpack) { - long val = 0; - size_t l = 1; - grib_unpack_long(a, &val, &l); - *v = val; - grib_context_log(a->context, GRIB_LOG_DEBUG, "Casting long %s to %s", a->name, typeid(T).name()); - return GRIB_SUCCESS; - } - - if (a->cclass->unpack_string && a->cclass->unpack_string != &GribAccessorClassGen::unpack) { - char val[1024]; - size_t l = sizeof(val); - char* last = NULL; - grib_unpack_string(a, val, &l); - - *v = strtod(val, &last); - if (*last == 0) { /* conversion of string to double worked */ - grib_context_log(a->context, GRIB_LOG_DEBUG, "Casting string %s to long", a->name); - return GRIB_SUCCESS; - } - } - - grib_context_log(a->context, GRIB_LOG_ERROR, "Cannot unpack %s as %s", a->name, typeid(T).name()); - if (grib_get_native_type(grib_handle_of_accessor(a), a->name, &type) == GRIB_SUCCESS) { - grib_context_log(a->context, GRIB_LOG_ERROR, "Hint: Try unpacking as %s", grib_get_type_name(type)); - } - - return GRIB_NOT_IMPLEMENTED; -} From 65c0f91e6e757939087b1a8953a19fd54368eede Mon Sep 17 00:00:00 2001 From: Eugen Betke Date: Tue, 4 Apr 2023 10:07:15 +0000 Subject: [PATCH 032/378] ECC-1472: Fix special case, where all values are missing --- src/grib_accessor_class_data_g22order_packing.cc | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/grib_accessor_class_data_g22order_packing.cc b/src/grib_accessor_class_data_g22order_packing.cc index acde28a91..986578193 100644 --- a/src/grib_accessor_class_data_g22order_packing.cc +++ b/src/grib_accessor_class_data_g22order_packing.cc @@ -1352,6 +1352,10 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) return err; if ((err = grib_set_long_internal(gh, self->numberOfBitsUsedForTheScaledGroupLengths, 8)) != GRIB_SUCCESS) return err; + + constexpr size_t sec7_size = 3; + unsigned char empty_sec7[sec7_size] = {255, 0, 0}; // group reference, group width, group length + grib_buffer_replace(a, empty_sec7, sec7_size, 1, 1); return GRIB_SUCCESS; } From e760d4375255a505d56b8af78cab2add9ffbb9ef Mon Sep 17 00:00:00 2001 From: Dusan Figala Date: Fri, 31 Mar 2023 15:22:43 +0200 Subject: [PATCH 033/378] Trigger nightly tests on HPC --- .github/ci-nightly-test.sh | 13 +++++++++++++ .github/workflows/nightly.yml | 16 ++++++++++++++++ .github/workflows/reusable-ci-hpc.yml | 5 +++++ 3 files changed, 34 insertions(+) create mode 100644 .github/ci-nightly-test.sh create mode 100644 .github/workflows/nightly.yml diff --git a/.github/ci-nightly-test.sh b/.github/ci-nightly-test.sh new file mode 100644 index 000000000..7ceee4214 --- /dev/null +++ b/.github/ci-nightly-test.sh @@ -0,0 +1,13 @@ +#!/bin/bash + +set -e + +module unload ecmwf-toolbox # Very important if you are testing your own build/install +module load cdo/new +module load numdiff +module load nccmp netcdf4/new +module load gnuparallel/new +module load python3 + +cd ~masn/REGRESSION_TESTING/ecCodes +./par-suite.sh -w $TMPDIR/install/eccodes \ No newline at end of file diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml new file mode 100644 index 000000000..a40ef52ee --- /dev/null +++ b/.github/workflows/nightly.yml @@ -0,0 +1,16 @@ +name: nightly + +on: + workflow_dispatch: ~ + + # Run at 20:00 UTC every day (on default branch) + schedule: + - cron: '0 20 * * *' + +jobs: + test: + uses: ./.github/workflows/reusable-ci-hpc.yml + with: + eccodes: ecmwf/eccodes@${{ github.event.pull_request.head.sha || github.sha }} + nightly_test: true + secrets: inherit diff --git a/.github/workflows/reusable-ci-hpc.yml b/.github/workflows/reusable-ci-hpc.yml index 3db33f2d2..9401a5869 100644 --- a/.github/workflows/reusable-ci-hpc.yml +++ b/.github/workflows/reusable-ci-hpc.yml @@ -6,6 +6,10 @@ on: eccodes: required: false type: string + nightly_test: + required: false + type: boolean + default: false jobs: ci-hpc: @@ -20,4 +24,5 @@ jobs: ninja aec --parallel: 64 + ${{ inputs.nightly_test && '--post-script: .github/ci-nightly-test.sh' }} secrets: inherit From 1303c09ed9cd08c20719606df61a54f2c8f216f6 Mon Sep 17 00:00:00 2001 From: Dusan Figala Date: Tue, 4 Apr 2023 13:38:25 +0200 Subject: [PATCH 034/378] Force build for nightly test --- .github/workflows/reusable-ci-hpc.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/reusable-ci-hpc.yml b/.github/workflows/reusable-ci-hpc.yml index 9401a5869..804a97c11 100644 --- a/.github/workflows/reusable-ci-hpc.yml +++ b/.github/workflows/reusable-ci-hpc.yml @@ -25,4 +25,5 @@ jobs: aec --parallel: 64 ${{ inputs.nightly_test && '--post-script: .github/ci-nightly-test.sh' }} + ${{ inputs.nightly_test && '--force-build: true' }} secrets: inherit From ee44965bd42b3b3c5f962ee878c6ab2bca54309b Mon Sep 17 00:00:00 2001 From: Dusan Figala Date: Wed, 5 Apr 2023 11:00:03 +0200 Subject: [PATCH 035/378] Run single failing test --- .github/ci-nightly-test.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/ci-nightly-test.sh b/.github/ci-nightly-test.sh index 7ceee4214..eb0419c60 100644 --- a/.github/ci-nightly-test.sh +++ b/.github/ci-nightly-test.sh @@ -10,4 +10,5 @@ module load gnuparallel/new module load python3 cd ~masn/REGRESSION_TESTING/ecCodes -./par-suite.sh -w $TMPDIR/install/eccodes \ No newline at end of file +# ./par-suite.sh -w $TMPDIR/install/eccodes +./seq-suite.sh -w $TMPDIR/install/eccodes -d -t ecc-1314-grib.sh \ No newline at end of file From e2074f5e6a629b3ebd4d09da329b40cd94b132e3 Mon Sep 17 00:00:00 2001 From: shahramn Date: Wed, 5 Apr 2023 10:25:57 +0100 Subject: [PATCH 036/378] Update ci-nightly-test.sh --- .github/ci-nightly-test.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/ci-nightly-test.sh b/.github/ci-nightly-test.sh index eb0419c60..85e1d5de0 100644 --- a/.github/ci-nightly-test.sh +++ b/.github/ci-nightly-test.sh @@ -11,4 +11,4 @@ module load python3 cd ~masn/REGRESSION_TESTING/ecCodes # ./par-suite.sh -w $TMPDIR/install/eccodes -./seq-suite.sh -w $TMPDIR/install/eccodes -d -t ecc-1314-grib.sh \ No newline at end of file +./seq-suite.sh -w $TMPDIR/install/eccodes -d -t grib_png From 7154cb5ad9bd371226931e1c62fcc648dca34591 Mon Sep 17 00:00:00 2001 From: Dusan Figala Date: Wed, 5 Apr 2023 12:02:59 +0200 Subject: [PATCH 037/378] Enable all features for nightly test --- .github/workflows/reusable-ci-hpc.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/reusable-ci-hpc.yml b/.github/workflows/reusable-ci-hpc.yml index 804a97c11..05df85a98 100644 --- a/.github/workflows/reusable-ci-hpc.yml +++ b/.github/workflows/reusable-ci-hpc.yml @@ -26,4 +26,5 @@ jobs: --parallel: 64 ${{ inputs.nightly_test && '--post-script: .github/ci-nightly-test.sh' }} ${{ inputs.nightly_test && '--force-build: true' }} + ${{ inputs.nightly_test && '--cmake-options: -DENABLE_PNG=1,-DENABLE_NETCDF=1' }} secrets: inherit From 31a321be50edc698118b9ee85a7566ae58d4865d Mon Sep 17 00:00:00 2001 From: Dusan Figala Date: Wed, 5 Apr 2023 12:12:03 +0200 Subject: [PATCH 038/378] Load NetCDF module --- .github/workflows/reusable-ci-hpc.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/reusable-ci-hpc.yml b/.github/workflows/reusable-ci-hpc.yml index 05df85a98..6ae5701a8 100644 --- a/.github/workflows/reusable-ci-hpc.yml +++ b/.github/workflows/reusable-ci-hpc.yml @@ -23,6 +23,7 @@ jobs: ecbuild ninja aec + netcdf4/new --parallel: 64 ${{ inputs.nightly_test && '--post-script: .github/ci-nightly-test.sh' }} ${{ inputs.nightly_test && '--force-build: true' }} From 0ab9568ffec18949d7db5533997813f0555a8f31 Mon Sep 17 00:00:00 2001 From: shahramn Date: Wed, 5 Apr 2023 11:18:10 +0100 Subject: [PATCH 039/378] Update ci-nightly-test.sh --- .github/ci-nightly-test.sh | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/.github/ci-nightly-test.sh b/.github/ci-nightly-test.sh index 85e1d5de0..2d414df01 100644 --- a/.github/ci-nightly-test.sh +++ b/.github/ci-nightly-test.sh @@ -2,13 +2,16 @@ set -e -module unload ecmwf-toolbox # Very important if you are testing your own build/install -module load cdo/new -module load numdiff -module load nccmp netcdf4/new -module load gnuparallel/new -module load python3 +# We do not want to come across the ecCodes tools in the toolbox +module unload ecmwf-toolbox + +module load cdo/new +module load numdiff +module load nccmp +module load netcdf4/new +module load gnuparallel/new +module load python3 cd ~masn/REGRESSION_TESTING/ecCodes # ./par-suite.sh -w $TMPDIR/install/eccodes -./seq-suite.sh -w $TMPDIR/install/eccodes -d -t grib_png +./seq-suite.sh -w $TMPDIR/install/eccodes -d -t py_binary_message From 8dccf3b08649c8476c1aefa93aa4590eb34707f7 Mon Sep 17 00:00:00 2001 From: shahramn Date: Wed, 5 Apr 2023 11:23:36 +0100 Subject: [PATCH 040/378] Update ci-nightly-test.sh --- .github/ci-nightly-test.sh | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/ci-nightly-test.sh b/.github/ci-nightly-test.sh index 2d414df01..52896f3b9 100644 --- a/.github/ci-nightly-test.sh +++ b/.github/ci-nightly-test.sh @@ -13,5 +13,6 @@ module load gnuparallel/new module load python3 cd ~masn/REGRESSION_TESTING/ecCodes -# ./par-suite.sh -w $TMPDIR/install/eccodes -./seq-suite.sh -w $TMPDIR/install/eccodes -d -t py_binary_message +./par-suite.sh -w $TMPDIR/install/eccodes -t py_ + +# ./seq-suite.sh -w $TMPDIR/install/eccodes -d -t py_ From a9a08b5751cff59b1854dda60a4acf09b326881e Mon Sep 17 00:00:00 2001 From: shahramn Date: Wed, 5 Apr 2023 11:28:46 +0100 Subject: [PATCH 041/378] Run full suite in parallel --- .github/ci-nightly-test.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/ci-nightly-test.sh b/.github/ci-nightly-test.sh index 52896f3b9..3ee9b739f 100644 --- a/.github/ci-nightly-test.sh +++ b/.github/ci-nightly-test.sh @@ -13,6 +13,7 @@ module load gnuparallel/new module load python3 cd ~masn/REGRESSION_TESTING/ecCodes -./par-suite.sh -w $TMPDIR/install/eccodes -t py_ +./par-suite.sh -w $TMPDIR/install/eccodes +# For debugging specific test(s) # ./seq-suite.sh -w $TMPDIR/install/eccodes -d -t py_ From 37ca053b3fc73b7f068174c5d93f187884e490e7 Mon Sep 17 00:00:00 2001 From: Bolli Palmason Date: Wed, 5 Apr 2023 15:20:47 +0000 Subject: [PATCH 042/378] Add abbreviation birk for Reykjavik --- definitions/common/c-1.table | 2 +- definitions/common/c-11.table | 2 +- definitions/grib2/local/2.0.table | 2 +- definitions/grib3/centre.table | 2 +- definitions/grib3/local/2.0.table | 2 +- src/bufr_util.cc | 2 ++ 6 files changed, 7 insertions(+), 5 deletions(-) diff --git a/definitions/common/c-1.table b/definitions/common/c-1.table index 5abb3f8ef..c50d48251 100644 --- a/definitions/common/c-1.table +++ b/definitions/common/c-1.table @@ -74,7 +74,7 @@ 210 210 Frascati (ESA/ESRIN) 211 211 Lannion 212 212 Lisboa -213 213 Reykjavik +213 birk Reykjavik 214 lemm INM Madrid 215 lssw Zurich 216 216 Service ARGOS Toulouse diff --git a/definitions/common/c-11.table b/definitions/common/c-11.table index 9451b1d6c..9374ffdad 100644 --- a/definitions/common/c-11.table +++ b/definitions/common/c-11.table @@ -73,7 +73,7 @@ 210 210 Frascati (ESA/ESRIN) 211 211 Lannion 212 212 Lisboa -213 213 Reykjavik +213 birk Reykjavik 214 lemm INM Madrid 215 lssw Zurich 216 216 Service ARGOS Toulouse diff --git a/definitions/grib2/local/2.0.table b/definitions/grib2/local/2.0.table index 471911b5b..6bc907413 100644 --- a/definitions/grib2/local/2.0.table +++ b/definitions/grib2/local/2.0.table @@ -78,7 +78,7 @@ 210 210 Frascati (ESA/ESRIN) 211 211 Lannion 212 212 Lisboa -213 213 Reykjavik +213 birk Reykjavik 214 lemm INM 215 lssw Zurich 216 216 Service ARGOS Toulouse diff --git a/definitions/grib3/centre.table b/definitions/grib3/centre.table index 85cde3fcf..206305d7b 100644 --- a/definitions/grib3/centre.table +++ b/definitions/grib3/centre.table @@ -78,7 +78,7 @@ 210 210 Frascati (ESA/ESRIN) 211 211 Lannion 212 212 Lisboa -213 213 Reykjavik +213 birk Reykjavik 214 lemm INM 215 lssw Zurich 216 216 Service ARGOS Toulouse diff --git a/definitions/grib3/local/2.0.table b/definitions/grib3/local/2.0.table index 91bdf6d35..c7045705c 100644 --- a/definitions/grib3/local/2.0.table +++ b/definitions/grib3/local/2.0.table @@ -78,7 +78,7 @@ 210 210 Frascati (ESA/ESRIN) 211 211 Lannion 212 212 Lisboa -213 213 Reykjavik +213 birk Reykjavik 214 lemm INM 215 lssw Zurich 216 216 Service ARGOS Toulouse diff --git a/src/bufr_util.cc b/src/bufr_util.cc index fb7cea585..b19df6fd4 100644 --- a/src/bufr_util.cc +++ b/src/bufr_util.cc @@ -742,6 +742,8 @@ static const char* codes_bufr_header_get_centre_name(long edition, long centre_c return "wiix"; case 204: return "niwa"; + case 213: + return "birk"; case 214: return "lemm"; case 215: From f3e77da2e0a77e96fabd9c8ab3aa6c000ee77209 Mon Sep 17 00:00:00 2001 From: Dusan Figala Date: Thu, 6 Apr 2023 13:18:52 +0200 Subject: [PATCH 043/378] Fix build inputs if not nightly test --- .github/workflows/reusable-ci-hpc.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/reusable-ci-hpc.yml b/.github/workflows/reusable-ci-hpc.yml index 6ae5701a8..ed970a9bf 100644 --- a/.github/workflows/reusable-ci-hpc.yml +++ b/.github/workflows/reusable-ci-hpc.yml @@ -25,7 +25,7 @@ jobs: aec netcdf4/new --parallel: 64 - ${{ inputs.nightly_test && '--post-script: .github/ci-nightly-test.sh' }} - ${{ inputs.nightly_test && '--force-build: true' }} - ${{ inputs.nightly_test && '--cmake-options: -DENABLE_PNG=1,-DENABLE_NETCDF=1' }} + ${{ inputs.nightly_test && '--post-script: .github/ci-nightly-test.sh' || '' }} + ${{ inputs.nightly_test && '--force-build: true' || '' }} + ${{ inputs.nightly_test && '--cmake-options: -DENABLE_PNG=1,-DENABLE_NETCDF=1' || '' }} secrets: inherit From 11299814f084b568b1e8296b0fc5c97d2ced5f6f Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sat, 8 Apr 2023 12:40:30 +0100 Subject: [PATCH 044/378] Computation of scaled value and scale factor --- src/codes_util.cc | 132 ++++++++++++++++-- src/eccodes_prototypes.h | 1 + ...or_class_from_scale_factor_scaled_value.cc | 130 +++-------------- tests/unit_tests.cc | 44 ++++++ 4 files changed, 180 insertions(+), 127 deletions(-) diff --git a/src/codes_util.cc b/src/codes_util.cc index b5c5ddd57..b7ef41ae1 100644 --- a/src/codes_util.cc +++ b/src/codes_util.cc @@ -10,8 +10,8 @@ #include "grib_api_internal.h" -/* Input lon must be in degrees not radians */ -/* Not to be used for latitudes as they can be -ve */ +// Input lon must be in degrees not radians +// Not to be used for latitudes as they can be -ve double normalise_longitude_in_degrees(double lon) { while (lon < 0) @@ -23,7 +23,7 @@ double normalise_longitude_in_degrees(double lon) #ifdef ECCODES_ON_WINDOWS -/* Replace C99/Unix rint() for Windows Visual C++ (only before VC++ 2013 versions) */ +// Replace C99/Unix rint() for Windows Visual C++ (only before VC++ 2013 versions) #if defined _MSC_VER && _MSC_VER < 1800 double rint(double x) { @@ -54,17 +54,17 @@ char get_dir_separator_char(void) return DIR_SEPARATOR_CHAR; } -/* Return 1 if the filepath is a regular file, 0 otherwise */ +// Return 1 if the filepath is a regular file, 0 otherwise int path_is_regular_file(const char* path) { struct stat s; int stat_val = stat(path, &s); if (stat_val != 0) - return 0; /*error doing stat*/ - return S_ISREG(s.st_mode); /* 1 if it's a regular file */ + return 0; // error doing stat + return S_ISREG(s.st_mode); // 1 if it's a regular file } -/* Return 1 if the filepath is a directory, 0 otherwise */ +// Return 1 if the filepath is a directory, 0 otherwise int path_is_directory(const char* path) { struct stat s; @@ -79,13 +79,13 @@ int path_is_directory(const char* path) char* codes_getenv(const char* name) { - /* Look for the new ecCodes environment variable names */ - /* if not found, then look for old grib_api ones for backward compatibility */ + // Look for the new ecCodes environment variable names + // if not found, then look for old grib_api ones for backward compatibility char* result = getenv(name); if (result == NULL) { const char* old_name = name; - /* Test the most commonly used variables first */ + // Test the most commonly used variables first if (STR_EQUAL(name, "ECCODES_SAMPLES_PATH")) old_name = "GRIB_SAMPLES_PATH"; else if (STR_EQUAL(name, "ECCODES_DEFINITION_PATH")) @@ -141,7 +141,7 @@ int codes_check_grib_ieee_packing_value(int value) return GRIB_SUCCESS; } -/* Note: To be called in cases where we are WRITING a file (Do not call when reading) */ +// Note: To be called in cases where we are WRITING a file (Do not call when reading) int codes_flush_sync_close_file(FILE* f) { int err = 0; @@ -157,14 +157,14 @@ int codes_flush_sync_close_file(FILE* f) #if 0 #ifdef HAVE_FCNTL_H - /* Heavy handed way of getting the file access mode: only proceed if writing */ + // Heavy handed way of getting the file access mode: only proceed if writing val = fcntl(fd, F_GETFL, 0); if (val < 0) { grib_context_log(c, GRIB_LOG_PERROR, "Call to fcntl failed"); return err; } if ((val & O_ACCMODE) != O_WRONLY) { - /* File is not being written */ + // File is not being written return GRIB_SUCCESS; } #endif @@ -214,3 +214,109 @@ int is_date_valid(long year, long month, long day, long hour, long minute, doubl return 1; } + +static float float_epsilon(void) +{ + float floatEps = 1.0; + while (1 + floatEps / 2 != 1) + floatEps /= 2; + return floatEps; +} + +static int is_approximately_equal(double a, double b, double epsilon) +{ + if (a == b) + return 1; + if (fabs(a - b) <= epsilon) + return 1; + return 0; +} + +static double eval_value_factor(int64_t value, int64_t factor) +{ + return (double)value * pow(10.0, -factor); +} + +static int compute_scaled_value_and_scale_factor_algorithm1( + double input, int64_t maximum_value, int64_t maximum_factor, + int64_t* ret_value, int64_t* ret_factor) +{ + int64_t factor = 0; + int64_t value = 0; + + if (input == 0) { + *ret_factor = *ret_value = 0; + return GRIB_SUCCESS; + } + + factor = floor(log10(maximum_value)) - floor(log10(input < 0 ? -input : input)); + value = (int64_t)round(input * pow(10, factor)); + while ((value % 10 == 0) && (factor > 0)) { + value /= 10; + factor--; + } + if (value >= maximum_value) + return GRIB_INTERNAL_ERROR; + if (factor > maximum_factor) + return GRIB_INTERNAL_ERROR; + + *ret_factor = factor; + *ret_value = value; + return GRIB_SUCCESS; +} + +static int compute_scaled_value_and_scale_factor_algorithm2( + double input, int64_t maximum_value, int64_t maximum_factor, + int64_t* ret_value, int64_t* ret_factor) +{ + int64_t factor = 0, prev_factor = 0; + int64_t value = 0, prev_value = 0; + double exact = input; + const float epsilon = float_epsilon(); + int is_negative = 0; + // Loop until we find a close enough approximation. Keep the last good values + if (exact < 0) { + is_negative = 1; + exact *= -1; + } + factor = prev_factor = 0; + value = prev_value = round(exact); + while (!is_approximately_equal(exact, eval_value_factor(value, factor), epsilon) && + value < maximum_value && + factor < maximum_factor) { + value = round(exact * pow(10., ++factor)); + if (value > maximum_value || factor > maximum_factor) { + // One or more maxima exceeded. So stop and use the previous values + value = prev_value; + factor = prev_factor; + break; + } + prev_factor = factor; + prev_value = value; + } + + if (is_negative) { + value *= -1; + } + + if (value == 0) + return GRIB_INTERNAL_ERROR; + + *ret_factor = factor; + *ret_value = value; + + return GRIB_SUCCESS; +} + +// Return GRIB_SUCCESS if no error and set the two outputs 'ret_value' and 'ret_factor'. +// ret_value cannot exceed scaled_value_max and ret_factor cannot exceed scale_factor_max +int compute_scaled_value_and_scale_factor( + double input, int64_t scaled_value_max, int64_t scale_factor_max, + int64_t* ret_value, int64_t* ret_factor) +{ + int err = compute_scaled_value_and_scale_factor_algorithm1(input, scaled_value_max, scale_factor_max, ret_value, ret_factor); + if (err) { + err = compute_scaled_value_and_scale_factor_algorithm2(input, scaled_value_max, scale_factor_max, ret_value, ret_factor); + } + return err; +} diff --git a/src/eccodes_prototypes.h b/src/eccodes_prototypes.h index 4aced8486..5d27ec67f 100644 --- a/src/eccodes_prototypes.h +++ b/src/eccodes_prototypes.h @@ -1450,6 +1450,7 @@ char* codes_getenv(const char* name); int codes_check_grib_ieee_packing_value(int value); int codes_flush_sync_close_file(FILE* f); int is_date_valid(long year, long month, long day, long hour, long minute, double second); +int compute_scaled_value_and_scale_factor(double input, int64_t scaled_value_max, int64_t scale_factor_max, int64_t* ret_value, int64_t* ret_factor); /* grib_util.cc*/ grib_handle* grib_util_sections_copy(grib_handle* hfrom, grib_handle* hto, int what, int* err); diff --git a/src/grib_accessor_class_from_scale_factor_scaled_value.cc b/src/grib_accessor_class_from_scale_factor_scaled_value.cc index ef4b30cf2..4fccbfbd1 100644 --- a/src/grib_accessor_class_from_scale_factor_scaled_value.cc +++ b/src/grib_accessor_class_from_scale_factor_scaled_value.cc @@ -156,118 +156,23 @@ static void init(grib_accessor* a, const long l, grib_arguments* c) grib_handle* hand = grib_handle_of_accessor(a); self->scaleFactor = grib_arguments_get_name(hand, c, n++); - self->scaledValue = grib_arguments_get_name(hand, c, n++); /* Can be scalar or array */ + self->scaledValue = grib_arguments_get_name(hand, c, n++); // Can be scalar or array - /* ECC-979: Allow user to encode */ - /* a->flags |= GRIB_ACCESSOR_FLAG_READ_ONLY; */ -} - -static float float_epsilon(void) -{ - float floatEps = 1.0; - while (1 + floatEps / 2 != 1) - floatEps /= 2; - return floatEps; -} - -static int is_approximately_equal(double a, double b, double epsilon) -{ - if (a == b) - return 1; - if (fabs(a - b) <= epsilon) - return 1; - return 0; -} - -static double eval_value_factor(int64_t value, int64_t factor) -{ - return (double)value * pow(10.0, -factor); -} - -/* Return 0 if no error and set the two outputs 'value' and 'factor' - * value cannot exceed maximum_value and factor cannot exceed maximum_factor - */ -static int get_scaled_value_and_scale_factor_algorithm1( - double input, int64_t maximum_value, int64_t maximum_factor, - int64_t* ret_value, int64_t* ret_factor) -{ - int64_t factor = 0; - int64_t value = 0; - - factor = floor(log10(maximum_value)) - floor(log10(input < 0 ? -input : input)); - value = (int64_t)round(input * pow(10, factor)); - while ((value % 10 == 0) && (factor > 0)) { - value /= 10; - factor--; - } - if (value >= maximum_value) - return GRIB_INTERNAL_ERROR; - if (factor > maximum_factor) - return GRIB_INTERNAL_ERROR; - - *ret_factor = factor; - *ret_value = value; - return GRIB_SUCCESS; -} - -/* Return 0 if no error and set the two outputs 'value' and 'factor' - * value cannot exceed maximum_value and factor cannot exceed maximum_factor - */ -static int get_scaled_value_and_scale_factor_algorithm2( - double input, int64_t maximum_value, int64_t maximum_factor, - int64_t* ret_value, int64_t* ret_factor) -{ - int64_t factor = 0, prev_factor = 0; - int64_t value = 0, prev_value = 0; - double exact = input; - const float epsilon = float_epsilon(); - int is_negative = 0; - - /* Loop until we find a close enough approximation. Keep the last good values */ - if (exact < 0) { - is_negative = 1; - exact *= -1; - } - factor = prev_factor = 0; - value = prev_value = round(exact); - while (!is_approximately_equal(exact, eval_value_factor(value, factor), epsilon) && - value < maximum_value && - factor < maximum_factor) { - value = round(exact * pow(10., ++factor)); - if (value > maximum_value || factor > maximum_factor) { - /* One or more maxima exceeded. So stop and use the previous values */ - value = prev_value; - factor = prev_factor; - break; - } - prev_factor = factor; - prev_value = value; - } - - if (is_negative) { - value *= -1; - } - - if (value == 0) - return GRIB_INTERNAL_ERROR; - - *ret_factor = factor; - *ret_value = value; - - return GRIB_SUCCESS; + // ECC-979: Allow user to encode + // a->flags |= GRIB_ACCESSOR_FLAG_READ_ONLY; } static int pack_double(grib_accessor* a, const double* val, size_t* len) { - /* See ECC-979 and ECC-1416 */ - /* Evaluate self->scaleFactor and self->scaledValue from input double '*val' */ + // See ECC-979 and ECC-1416 + // Evaluate self->scaleFactor and self->scaledValue from input double '*val' grib_accessor_from_scale_factor_scaled_value* self = (grib_accessor_from_scale_factor_scaled_value*)a; grib_handle* hand = grib_handle_of_accessor(a); int err = 0; int64_t factor = 0; int64_t value = 0; - double exact = *val; /*the input*/ - int64_t maxval_value, maxval_factor; /*maximum allowable values*/ + double exact = *val; // the input + int64_t maxval_value, maxval_factor; // maximum allowable values int value_accessor_num_bits = 0, factor_accessor_num_bits = 0; grib_accessor *factor_accessor, *value_accessor; @@ -295,19 +200,16 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) } value_accessor_num_bits = value_accessor->length * 8; factor_accessor_num_bits = factor_accessor->length * 8; - maxval_value = (1UL << value_accessor_num_bits) - 2; /* exclude missing */ - maxval_factor = (1UL << factor_accessor_num_bits) - 2; /* exclude missing */ + maxval_value = (1UL << value_accessor_num_bits) - 2; // exclude missing + maxval_factor = (1UL << factor_accessor_num_bits) - 2; // exclude missing if (strcmp(factor_accessor->cclass->name,"signed")==0) { maxval_factor = (1UL << (factor_accessor_num_bits - 1)) - 1; } - err = get_scaled_value_and_scale_factor_algorithm1(exact, maxval_value, maxval_factor, &value, &factor); + err = compute_scaled_value_and_scale_factor(exact, maxval_value, maxval_factor, &value, &factor); if (err) { - err = get_scaled_value_and_scale_factor_algorithm2(exact, maxval_value, maxval_factor, &value, &factor); - if (err) { - grib_context_log(a->context, GRIB_LOG_ERROR, "Failed to compute %s and %s from %g", self->scaleFactor, self->scaledValue, exact); - return err; - } + grib_context_log(a->context, GRIB_LOG_ERROR, "Failed to compute %s and %s from %g", self->scaleFactor, self->scaledValue, exact); + return err; } if ((err = grib_set_long_internal(hand, self->scaleFactor, factor)) != GRIB_SUCCESS) @@ -342,7 +244,7 @@ static int unpack_double(grib_accessor* a, double* val, size_t* len) *len = 1; return GRIB_SUCCESS; } else { - /* ECC-966: If scale factor is missing, print error and treat it as zero (as a fallback) */ + // ECC-966: If scale factor is missing, print error and treat it as zero (as a fallback) if (grib_is_missing(hand, self->scaleFactor, &err) && err == GRIB_SUCCESS) { grib_context_log(a->context, GRIB_LOG_ERROR, "unpack_double for %s: %s is missing! Using zero instead", a->name, self->scaleFactor); @@ -352,9 +254,9 @@ static int unpack_double(grib_accessor* a, double* val, size_t* len) *val = scaledValue; - /* The formula is: - * real_value = scaled_value / pow(10, scale_factor) - */ + // The formula is: + // real_value = scaled_value / pow(10, scale_factor) + // while (scaleFactor < 0) { *val *= 10; scaleFactor++; diff --git a/tests/unit_tests.cc b/tests/unit_tests.cc index 25ab24e88..6ea0b2d15 100644 --- a/tests/unit_tests.cc +++ b/tests/unit_tests.cc @@ -439,13 +439,57 @@ static void test_dates() Assert( !is_date_valid(2000, 5, 9, 0, 1, 60) ); Assert( !is_date_valid(2023, 2, 29, 0,0,0) );//Feb +} + +void test_scale_factor_scaled_values() +{ + int err =0; + int64_t value, factor; + const int64_t scaled_value_max = 4294967295; // usually 4 octets + const int64_t scale_factor_max = 255; // usually 1 octet + printf("Testing: scaled values and scale factors...\n"); + + err = compute_scaled_value_and_scale_factor(0, scaled_value_max, scale_factor_max, &value, &factor); + Assert(!err); + Assert(value == 0); + Assert(factor == 0); + + err = compute_scaled_value_and_scale_factor(1, scaled_value_max, scale_factor_max, &value, &factor); + Assert(!err); + Assert(value == 1); + Assert(factor == 0); + + err = compute_scaled_value_and_scale_factor(1.5, scaled_value_max, scale_factor_max, &value, &factor); + Assert(!err); + Assert(value == 15); + Assert(factor == 1); + + err = compute_scaled_value_and_scale_factor(4.56, scaled_value_max, scale_factor_max, &value, &factor); + Assert(!err); + Assert(value == 456); + Assert(factor == 2); + + err = compute_scaled_value_and_scale_factor(-0.003, scaled_value_max, scale_factor_max, &value, &factor); + Assert(!err); + Assert(value == -3); + Assert(factor == 3); + + err = compute_scaled_value_and_scale_factor(145.889, scaled_value_max, scale_factor_max, &value, &factor); + Assert(!err); + Assert(value == 145889); + Assert(factor == 3); + err = compute_scaled_value_and_scale_factor(1111.00009, scaled_value_max, scale_factor_max, &value, &factor); + Assert(!err); + Assert(value == 111100009); + Assert(factor == 5); } int main(int argc, char** argv) { printf("Doing unit tests. ecCodes version = %ld\n", grib_get_api_version()); + test_scale_factor_scaled_values(); test_dates(); test_logging_proc(); test_grib_binary_search(); From 87327b6bfbe7054d6904b5bef4c254da7946ba01 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sat, 8 Apr 2023 15:55:28 +0100 Subject: [PATCH 045/378] ECC-1560: Cleanup and add further tests --- src/grib_accessor_class_g2level.cc | 51 +++++++++++++++++------------- src/grib_loader_from_handle.cc | 4 +-- tests/grib_ecc-1560.sh | 8 ++++- tests/grib_level.sh | 6 ++-- 4 files changed, 40 insertions(+), 29 deletions(-) diff --git a/src/grib_accessor_class_g2level.cc b/src/grib_accessor_class_g2level.cc index 9301218e7..0831bb9e2 100644 --- a/src/grib_accessor_class_g2level.cc +++ b/src/grib_accessor_class_g2level.cc @@ -251,18 +251,16 @@ static int unpack_long(grib_accessor* a, long* val, size_t* len) static int pack_double(grib_accessor* a, const double* val, size_t* len) { grib_accessor_g2level* self = (grib_accessor_g2level*)a; - grib_handle* hand = grib_handle_of_accessor(a); - int ret = 0; - double value_first = *val; - long scale_first = 0; - long type_first = 0; - char pressure_units[10] = {0,}; - size_t pressure_units_len = 10; - long lval = (long)value_first; - - //printf("pack_double:: received %g\n", *val); - if (value_first == lval) { - //printf(" .... use pack_long for %g\n", value_first); + grib_handle* hand = grib_handle_of_accessor(a); + int ret = 0; + double value_first = *val; + //long scale_first = 0; + long type_first = 0; + char pressure_units[10] = {0,}; + size_t pressure_units_len = 10; + const long lval = (long)value_first; + + if (value_first == lval) { // input is a whole number; process it as an integer return pack_long(a, &lval, len); } @@ -284,20 +282,29 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) default: break; } - // + // final = scaled_value * 10 ^ -scale_factor - // = scaled_value / (10^scale_factor) - // - // Choose 2 decimal places - // - scale_first = 2; - value_first *= 100; - value_first = value_first + 0.5; /* round up */ + + //scale_first = 2; + //value_first *= 100; + //value_first = value_first + 0.5; //round up + + // TODO(masn): These maxima should come from the respective accessors + const int64_t scaled_value_max = (1UL << 32) - 1; // scaledValueOf*FixedSurface is 4 octets + const int64_t scale_factor_max = (1UL << 8) - 1; // scaleFactorOf*FixedSurface is 1 octet + int64_t lscaled_value=0, lscale_factor=0; + + ret = compute_scaled_value_and_scale_factor(value_first, scaled_value_max, scale_factor_max, &lscaled_value, &lscale_factor); + if (ret) { + grib_context_log(a->context, GRIB_LOG_ERROR, "Accessor %s: Failed to compute %s and %s from %g", + a->name, self->scale_first, self->value_first, value_first); + return ret; + } if (type_first > 9) { - if ((ret = grib_set_long_internal(hand, self->scale_first, scale_first)) != GRIB_SUCCESS) + if ((ret = grib_set_long_internal(hand, self->scale_first, (long)lscale_factor)) != GRIB_SUCCESS) return ret; - if ((ret = grib_set_long_internal(hand, self->value_first, (long)value_first)) != GRIB_SUCCESS) + if ((ret = grib_set_long_internal(hand, self->value_first, (long)lscaled_value)) != GRIB_SUCCESS) return ret; } diff --git a/src/grib_loader_from_handle.cc b/src/grib_loader_from_handle.cc index ce7e2e79d..c3510c1c4 100644 --- a/src/grib_loader_from_handle.cc +++ b/src/grib_loader_from_handle.cc @@ -163,14 +163,12 @@ int grib_init_accessor_from_handle(grib_loader* loader, grib_accessor* ga, grib_ } long ga_type = grib_accessor_get_native_type(ga); - if (STR_EQUAL(name,"level")) { - //printf("..... loader_from_file: switch type to DOUBLE\n"); + if (STR_EQUAL(name,"level")) { // See ECC-1560 ga_type = GRIB_TYPE_DOUBLE; } switch (ga_type) { case GRIB_TYPE_STRING: - /*ecc__grib_get_string_length(ga,&len); See ECC-490 */ grib_get_string_length(h, name, &len); sval = (char*)grib_context_malloc(h->context, len); diff --git a/tests/grib_ecc-1560.sh b/tests/grib_ecc-1560.sh index 2f955f4b7..1af0a98e8 100755 --- a/tests/grib_ecc-1560.sh +++ b/tests/grib_ecc-1560.sh @@ -27,9 +27,11 @@ grib_check_key_equals $temp_PDTN08_Grib level:d 1.5 # Now we change to PDTN 11 ${tools_dir}/grib_set -s productDefinitionTemplateNumber=11 $temp_PDTN08_Grib $temp_PDTN11_Grib grib_check_key_equals $temp_PDTN11_Grib level:d 1.5 +grib_check_key_equals $temp_PDTN11_Grib scaledValueOfFirstFixedSurface 15 +grib_check_key_equals $temp_PDTN11_Grib scaleFactorOfFirstFixedSurface 1 -# Set integer value using the int/double encoding +# Set whole value using the int/double encoding # ----------------------------------------------- ${tools_dir}/grib_set -s typeOfFirstFixedSurface=105,level:i=34 $sample_grib2 $tempGrib grib_check_key_equals $tempGrib scaleFactorOfFirstFixedSurface 0 @@ -39,6 +41,10 @@ ${tools_dir}/grib_set -s typeOfFirstFixedSurface=105,level:d=34 $sample_grib2 $t grib_check_key_equals $tempGrib scaleFactorOfFirstFixedSurface 0 grib_check_key_equals $tempGrib scaledValueOfFirstFixedSurface 34 +${tools_dir}/grib_set -s typeOfFirstFixedSurface=105,level:d=3.456 $sample_grib2 $tempGrib +grib_check_key_equals $tempGrib scaleFactorOfFirstFixedSurface 3 +grib_check_key_equals $tempGrib scaledValueOfFirstFixedSurface 3456 + # Clean up rm -f $temp_PDTN08_Grib $temp_PDTN11_Grib $tempGrib diff --git a/tests/grib_level.sh b/tests/grib_level.sh index 2847c64fd..eaca6099a 100755 --- a/tests/grib_level.sh +++ b/tests/grib_level.sh @@ -64,13 +64,13 @@ diff temp.level.good test.dump ${tools_dir}/grib_set -s typeOfFirstFixedSurface=103,level=24 $sample_g2 $temp grib_check_key_equals $temp level,scaledValueOfFirstFixedSurface,scaleFactorOfFirstFixedSurface '24 24 0' ${tools_dir}/grib_set -s typeOfFirstFixedSurface=103,level=2.4 $sample_g2 $temp -grib_check_key_equals $temp level:d,scaledValueOfFirstFixedSurface,scaleFactorOfFirstFixedSurface '2.4 240 2' +grib_check_key_equals $temp level:d,scaledValueOfFirstFixedSurface,scaleFactorOfFirstFixedSurface '2.4 24 1' # Use a parameter which has two levels ${tools_dir}/grib_set -s paramId=228086,topLevel=1.3,bottomLevel=5.4 $sample_g2 $temp grib_check_key_equals $temp 'topLevel:d,bottomLevel:d' '1.3 5.4' -grib_check_key_equals $temp scaleFactorOfFirstFixedSurface,scaledValueOfFirstFixedSurface '2 130' -grib_check_key_equals $temp scaleFactorOfSecondFixedSurface,scaledValueOfSecondFixedSurface '2 540' +grib_check_key_equals $temp scaleFactorOfFirstFixedSurface,scaledValueOfFirstFixedSurface '1 13' +grib_check_key_equals $temp scaleFactorOfSecondFixedSurface,scaledValueOfSecondFixedSurface '1 54' # GRIB-492 ${tools_dir}/grib_set -s indicatorOfTypeOfLevel=110 $sample_g1 $temp From a4d0f05a43237dce7fa71389e46eac27943f7754 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sun, 9 Apr 2023 12:45:01 +0100 Subject: [PATCH 046/378] Better error messages --- src/grib_accessor_class_bitmap.cc | 9 +++------ src/grib_accessor_class_g2level.cc | 2 +- src/grib_accessor_class_global_gaussian.cc | 6 +++--- src/grib_accessor_class_time.cc | 4 ++-- tools/CMakeLists.txt | 4 +++- 5 files changed, 12 insertions(+), 13 deletions(-) diff --git a/src/grib_accessor_class_bitmap.cc b/src/grib_accessor_class_bitmap.cc index 5a16b0ef1..31c5997d6 100644 --- a/src/grib_accessor_class_bitmap.cc +++ b/src/grib_accessor_class_bitmap.cc @@ -178,10 +178,7 @@ static void compute_size(grib_accessor* a) } } -#if 0 - printf("compute_size off=%ld slen=%ld a->offset=%ld\n", - (long)off,(long)slen,(long)a->offset); -#endif + // printf("compute_size off=%ld slen=%ld a->offset=%ld\n", (long)off,(long)slen,(long)a->offset); a->length = off + (slen - a->offset); @@ -237,7 +234,7 @@ static int unpack_long(grib_accessor* a, long* val, size_t* len) return err; if (*len < tlen) { - grib_context_log(a->context, GRIB_LOG_ERROR, "Wrong size for %s it contains %ld values", a->name, tlen); + grib_context_log(a->context, GRIB_LOG_ERROR, "Wrong size for %s, it contains %ld values", a->name, tlen); *len = 0; return GRIB_ARRAY_TOO_SMALL; } @@ -315,7 +312,7 @@ static int unpack_string(grib_accessor* a, char* val, size_t* len) grib_handle* hand = grib_handle_of_accessor(a); if (len[0] < (a->length)) { - grib_context_log(a->context, GRIB_LOG_ERROR, "unpack_string: Wrong size (%lu) for %s it contains %ld values", + grib_context_log(a->context, GRIB_LOG_ERROR, "unpack_string: Wrong size (%lu) for %s, it contains %ld values", len[0], a->name, a->length); len[0] = 0; return GRIB_ARRAY_TOO_SMALL; diff --git a/src/grib_accessor_class_g2level.cc b/src/grib_accessor_class_g2level.cc index 0831bb9e2..d0ae0571c 100644 --- a/src/grib_accessor_class_g2level.cc +++ b/src/grib_accessor_class_g2level.cc @@ -296,7 +296,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) ret = compute_scaled_value_and_scale_factor(value_first, scaled_value_max, scale_factor_max, &lscaled_value, &lscale_factor); if (ret) { - grib_context_log(a->context, GRIB_LOG_ERROR, "Accessor %s: Failed to compute %s and %s from %g", + grib_context_log(a->context, GRIB_LOG_ERROR, "Key %s (unpack_double): Failed to compute %s and %s from %g", a->name, self->scale_first, self->value_first, value_first); return ret; } diff --git a/src/grib_accessor_class_global_gaussian.cc b/src/grib_accessor_class_global_gaussian.cc index d36c2a59b..90d69655b 100644 --- a/src/grib_accessor_class_global_gaussian.cc +++ b/src/grib_accessor_class_global_gaussian.cc @@ -240,14 +240,14 @@ static int unpack_long(grib_accessor* a, long* val, size_t* len) dlonlast = ((double)lonlast) / factor; if (N == 0) { - grib_context_log(c, GRIB_LOG_ERROR, "global_gaussian unpack_long: N cannot be 0!"); + grib_context_log(c, GRIB_LOG_ERROR, "Key %s (unpack_long): N cannot be 0!", a->name); return GRIB_WRONG_GRID; } lats = (double*)grib_context_malloc(c, sizeof(double) * N * 2); if (!lats) { grib_context_log(c, GRIB_LOG_ERROR, - "global_gaussian unpack_long: Memory allocation error: %ld bytes", sizeof(double) * N * 2); + "Key %s (unpack_long): Memory allocation error: %zu bytes", a->name, sizeof(double) * N * 2); return GRIB_OUT_OF_MEMORY; } if ((ret = grib_get_gaussian_latitudes(N, lats)) != GRIB_SUCCESS) @@ -333,7 +333,7 @@ static int pack_long(grib_accessor* a, const long* val, size_t* len) lats = (double*)grib_context_malloc(c, sizeof(double) * N * 2); if (!lats) { grib_context_log(c, GRIB_LOG_ERROR, - "global_gaussian pack_long: Memory allocation error: %zu bytes", sizeof(double) * N * 2); + "Key %s (pack_long): Memory allocation error: %zu bytes", a->name, sizeof(double) * N * 2); return GRIB_OUT_OF_MEMORY; } if ((ret = grib_get_gaussian_latitudes(N, lats)) != GRIB_SUCCESS) diff --git a/src/grib_accessor_class_time.cc b/src/grib_accessor_class_time.cc index 1bdfdec7b..e163ff66f 100644 --- a/src/grib_accessor_class_time.cc +++ b/src/grib_accessor_class_time.cc @@ -182,7 +182,7 @@ static int unpack_long(grib_accessor* a, long* val, size_t* len) /* We ignore the 'seconds' in our time calculation! */ if (second != 0) { grib_context_log(a->context, GRIB_LOG_ERROR, - "Truncating time: non-zero seconds(%ld) ignored", second); + "Key %s (unpack_long): Truncating time: non-zero seconds(%ld) ignored", a->name, second); } if (*len < 1) @@ -236,7 +236,7 @@ static int unpack_string(grib_accessor* a, char* val, size_t* len) unpack_long(a, &v, &lsize); if (*len < 5) { - grib_context_log(a->context, GRIB_LOG_ERROR, "grib_accessor_time : unpack_string : Buffer too small for %s", a->name); + grib_context_log(a->context, GRIB_LOG_ERROR, "Key %s (unpack_string): Buffer too small", a->name); *len = 5; return GRIB_BUFFER_TOO_SMALL; diff --git a/tools/CMakeLists.txt b/tools/CMakeLists.txt index 45818a0e8..e9b3d4af9 100644 --- a/tools/CMakeLists.txt +++ b/tools/CMakeLists.txt @@ -91,15 +91,17 @@ ecbuild_add_executable( TARGET codes_bufr_filter LIBS ecc_tools ) -# grib1to2 script needs to be generated before installation if( ECCODES_INSTALL_EXTRA_TOOLS ) ecbuild_info("ECCODES_INSTALL_EXTRA_TOOLS enabled") + # grib1to2 script needs to be generated before installation configure_file( grib1to2.in grib1to2 ) install( FILES ${CMAKE_CURRENT_BINARY_DIR}/grib1to2 DESTINATION ${INSTALL_BIN_DIR} PERMISSIONS OWNER_EXECUTE OWNER_WRITE OWNER_READ GROUP_EXECUTE GROUP_READ WORLD_EXECUTE WORLD_READ ) +else() + ecbuild_info("ECCODES_INSTALL_EXTRA_TOOLS disabled") endif() ######################################## From abf730e52737c5aceb7cf595606bebdc153c6a27 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 11 Apr 2023 12:22:37 +0100 Subject: [PATCH 047/378] GRIB multi-field: Set error code --- src/grib_handle.cc | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/grib_handle.cc b/src/grib_handle.cc index 931bdd6ea..0178dc868 100644 --- a/src/grib_handle.cc +++ b/src/grib_handle.cc @@ -660,6 +660,8 @@ static grib_handle* grib_handle_new_from_file_multi(grib_context* c, FILE* f, in char *gts_header = 0, *save_gts_header = 0; int gtslen = 0; + *error = GRIB_SUCCESS; + if (c == NULL) c = grib_context_get_default(); From 0a244972ce5985a28ff661ccb585c93d2bfa185c Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 11 Apr 2023 13:50:36 +0000 Subject: [PATCH 048/378] Definitions: Remove unused tables --- definitions/grib2/local/2.0.table | 96 ------------------------------- definitions/grib3/local/2.0.table | 96 ------------------------------- 2 files changed, 192 deletions(-) delete mode 100644 definitions/grib2/local/2.0.table delete mode 100644 definitions/grib3/local/2.0.table diff --git a/definitions/grib2/local/2.0.table b/definitions/grib2/local/2.0.table deleted file mode 100644 index 6bc907413..000000000 --- a/definitions/grib2/local/2.0.table +++ /dev/null @@ -1,96 +0,0 @@ -# Code table 2.0: Identification of centres for local section 2 -0 0 Absent -1 ammc Melbourne (WMC) -2 2 Melbourne (WMC) -4 rums Moscow (WMC) -5 5 Moscow (WMC) -7 kwbc US National Weather Service - NCEP (WMC) -8 8 US National Weather Service - NWSTG (WMC) -9 9 US National Weather Service - Other (WMC) -10 10 Cairo (RSMC/RAFC) -12 12 Dakar (RSMC/RAFC) -14 14 Nairobi (RSMC/RAFC) -16 16 Atananarivo (RSMC) -18 18 Tunis-Casablanca (RSMC) -20 20 Las Palmas (RAFC) -21 21 Algiers (RSMC) -22 22 Lagos (RSMC) -24 fapr Pretoria (RSMC) -26 26 Khabarovsk (RSMC) -28 28 New Delhi (RSMC/RAFC) -30 30 Novosibirsk (RSMC) -32 32 Tashkent (RSMC) -33 33 Jeddah (RSMC) -34 rjtd Japanese Meteorological Agency - Tokyo (RSMC) -36 36 Bankok -37 37 Ulan Bator -38 babj Beijing (RSMC) -40 rksl Seoul -41 sabm Buenos Aires (RSMC/RAFC) -43 43 Brasilia (RSMC/RAFC) -45 45 Santiago -46 sbsj Brasilian Space Agency - INPE -51 51 Miami (RSMC/RAFC) -52 52 National Hurricane Center, Miami -53 53 Canadian Meteorological Service - Montreal (RSMC) -54 cwao Canadian Meteorological Service - Montreal (RSMC) -55 55 San Francisco -57 57 U.S. Air Force - Global Weather Center -58 fnmo US Navy - Fleet Numerical Oceanography Center -59 59 NOAA Forecast Systems Lab, Boulder CO -60 60 National Center for Atmospheric Research (NCAR), Boulder, CO -64 64 Honolulu -65 65 Darwin (RSMC) -67 67 Melbourne (RSMC) -69 nzkl Wellington (RSMC/RAFC) -74 egrr U.K. Met Office - Exeter -76 76 Moscow (RSMC/RAFC) -78 edzw Offenbach (RSMC) -80 cnmc Rome (RSMC) -82 eswi Norrkoping -84 lfpw French Weather Service - Toulouse -85 lfpw French Weather Service - Toulouse -86 86 Helsinki -87 87 Belgrade -88 enmi Oslo -89 89 Prague -90 90 Episkopi -91 91 Ankara -92 92 Frankfurt/Main (RAFC) -93 93 London (WAFC) -94 ekmi Copenhagen -95 95 Rota -96 96 Athens -97 97 European Space Agency (ESA) -98 ecmf European Centre for Medium-Range Weather Forecasts -99 99 DeBilt, Netherlands -#100 to 109 Reserved for centres in Region I which are not in the list above -110 110 Hong-Kong -#111 to 133 Reserved for centres in Region II which are not in the list above -#134 to 153 Reserved for centres in Region I which are not listed above -#154 to 159 Reserved for centres in Region III which are not in the list above -160 160 US NOAA/NESDIS -# 161 to 185 Reserved for centres in Region IV which are not in the list above -# 186 to 198 Reserved for centres in Region I which are not listed above -# 199 to 209 Reserved for centres in Region V which are not in the list above -195 wiix Indonesia (NMC) -204 204 National Institute of Water and Atmospheric Research (NIWA - New Zealand) -210 210 Frascati (ESA/ESRIN) -211 211 Lannion -212 212 Lisboa -213 birk Reykjavik -214 lemm INM -215 lssw Zurich -216 216 Service ARGOS Toulouse -218 habp Budapest -224 lowm Austria -227 ebum Belgium (NMC) -233 eidb Dublin -235 ingv INGV -239 crfc CERFAX -246 ifmk IfM-Kiel -247 hadc Hadley Centre -250 cosmo COnsortium for Small scale MOdelling (COSMO) -251 251 Meteorological Cooperation on Operational NWP (MetCoOp) -254 eums EUMETSAT Operation Centre -1098 tigge TIGGE CENTRES diff --git a/definitions/grib3/local/2.0.table b/definitions/grib3/local/2.0.table deleted file mode 100644 index c7045705c..000000000 --- a/definitions/grib3/local/2.0.table +++ /dev/null @@ -1,96 +0,0 @@ -# Code table 2.0: Identification of centres for local section 2 -0 0 Absent -1 ammc Melbourne (WMC) -2 2 Melbourne (WMC) -4 rums Moscow (WMC) -5 5 Moscow (WMC) -7 kwbc US National Weather Service - NCEP (WMC) -8 8 US National Weather Service - NWSTG (WMC) -9 9 US National Weather Service - Other (WMC) -10 10 Cairo (RSMC/RAFC) -12 12 Dakar (RSMC/RAFC) -14 14 Nairobi (RSMC/RAFC) -16 16 Atananarivo (RSMC) -18 18 Tunis-Casablanca (RSMC) -20 20 Las Palmas (RAFC) -21 21 Algiers (RSMC) -22 22 Lagos (RSMC) -24 fapr Pretoria (RSMC) -26 26 Khabarovsk (RSMC) -28 28 New Delhi (RSMC/RAFC) -30 30 Novosibirsk (RSMC) -32 32 Tashkent (RSMC) -33 33 Jeddah (RSMC) -34 rjtd Japanese Meteorological Agency - Tokyo (RSMC) -36 36 Bankok -37 37 Ulan Bator -38 babj Beijing (RSMC) -40 rksl Seoul -41 sabm Buenos Aires (RSMC/RAFC) -43 43 Brasilia (RSMC/RAFC) -45 45 Santiago -46 sbsj Brasilian Space Agency - INPE -51 51 Miami (RSMC/RAFC) -52 52 National Hurricane Center, Miami -53 53 Canadian Meteorological Service - Montreal (RSMC) -54 cwao Canadian Meteorological Service - Montreal (RSMC) -55 55 San Francisco -57 57 U.S. Air Force - Global Weather Center -58 fnmo US Navy - Fleet Numerical Oceanography Center -59 59 NOAA Forecast Systems Lab, Boulder CO -60 60 National Center for Atmospheric Research (NCAR), Boulder, CO -64 64 Honolulu -65 65 Darwin (RSMC) -67 67 Melbourne (RSMC) -69 nzkl Wellington (RSMC/RAFC) -74 egrr U.K. Met Office - Exeter -76 76 Moscow (RSMC/RAFC) -78 edzw Offenbach (RSMC) -80 cnmc Rome (RSMC) -82 eswi Norrkoping -84 lfpw French Weather Service - Toulouse -85 lfpw French Weather Service - Toulouse -86 86 Helsinki -87 87 Belgrade -88 enmi Oslo -89 89 Prague -90 90 Episkopi -91 91 Ankara -92 92 Frankfurt/Main (RAFC) -93 93 London (WAFC) -94 ekmi Copenhagen -95 95 Rota -96 96 Athens -97 97 European Space Agency (ESA) -98 ecmf European Centre for Medium-Range Weather Forecasts -99 99 DeBilt, Netherlands -#100 to 109 Reserved for centres in Region I which are not in the list above -110 110 Hong-Kong -#111 to 133 Reserved for centres in Region II which are not in the list above -#134 to 153 Reserved for centres in Region I which are not listed above -#154 to 159 Reserved for centres in Region III which are not in the list above -160 160 US NOAA/NESDIS -# 161 to 185 Reserved for centres in Region IV which are not in the list above -# 186 to 198 Reserved for centres in Region I which are not listed above -# 199 to 209 Reserved for centres in Region V which are not in the list above -195 wiix Indonesia (NMC) -204 204 National Institute of Water and Atmospheric Research (NIWA - New Zealand) -210 210 Frascati (ESA/ESRIN) -211 211 Lannion -212 212 Lisboa -213 birk Reykjavik -214 lemm INM -215 lssw Zurich -216 216 Service ARGOS Toulouse -218 habp Budapest -224 lowm Austria -227 ebum Belgium (NMC) -233 eidb Dublin -235 ingv INGV -239 crfc CERFAX -246 ifmk IfM-Kiel -247 hadc Hadley Centre -250 cosmo COnsortium for Small scale MOdelling (COSMO) -251 251 Meteorological Cooperation on Operational NWP (MetCoOp) -254 eums EUMETSAT Operation Centre -1098 tigge TIGGE CENTRES From f9994ecb70981bab588f26754ccce458e0e49988 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 11 Apr 2023 15:52:30 +0100 Subject: [PATCH 049/378] ECC-793: Provide mechanism to reject EXPERIMENTAL parameters --- src/grib_util.cc | 22 +++++++++++++++++----- tests/grib_data_quality_checks.sh | 17 +++++++++++++++-- 2 files changed, 32 insertions(+), 7 deletions(-) diff --git a/src/grib_util.cc b/src/grib_util.cc index dc3bc8cb7..ec14ba8d6 100644 --- a/src/grib_util.cc +++ b/src/grib_util.cc @@ -2142,8 +2142,11 @@ int grib_util_grib_data_quality_check(grib_handle* h, double min_val, double max bool is_error = true; char description[1024] = {0,}; char step[32] = "unknown"; - char shortName[32] = {0,}; - size_t len = 32; + char shortName[64] = {0,}; + char name[526] = {0,}; + size_t len = 0; + const char* invalid_shortName = "unknown"; + const char* invalid_name = "Experimental product"; // If grib_data_quality_checks == 1, limits failure results in an error // If grib_data_quality_checks == 2, limits failure results in a warning @@ -2151,10 +2154,19 @@ int grib_util_grib_data_quality_check(grib_handle* h, double min_val, double max Assert(ctx->grib_data_quality_checks == 1 || ctx->grib_data_quality_checks == 2); is_error = (ctx->grib_data_quality_checks == 1); + len = sizeof(shortName); err = grib_get_string(h, "shortName", shortName, &len); - if (err || STR_EQUAL(shortName, "unknown")) { - fprintf(stderr, "ECCODES %s : Invalid metadata: shortName=unknown\n", - (is_error ? "ERROR" : "WARNING")); + if (err || STR_EQUAL(shortName, invalid_shortName)) { + fprintf(stderr, "ECCODES %s : Invalid metadata: shortName='%s'\n", + (is_error ? "ERROR" : "WARNING"), invalid_shortName); + if (is_error) return GRIB_INVALID_MESSAGE; + } + + len = sizeof(name); + err = grib_get_string(h, "name", name, &len); + if (err || STR_EQUAL(name, invalid_name)) { + fprintf(stderr, "ECCODES %s : Invalid metadata: name='%s'\n", + (is_error ? "ERROR" : "WARNING"), invalid_name); if (is_error) return GRIB_INVALID_MESSAGE; } diff --git a/tests/grib_data_quality_checks.sh b/tests/grib_data_quality_checks.sh index 4123a2785..81657d24b 100755 --- a/tests/grib_data_quality_checks.sh +++ b/tests/grib_data_quality_checks.sh @@ -209,7 +209,8 @@ if [ $HAVE_AEC -eq 1 ]; then [ $status -ne 0 ] fi -# Invalid shortName +# Invalid shortName/name +# ------------------------- export ECCODES_GRIB_DATA_QUALITY_CHECKS=1 input2=${data_dir}/reduced_gaussian_surface.grib2 ${tools_dir}/grib_set -s discipline=254 $input2 $tempOut @@ -219,7 +220,19 @@ ${tools_dir}/grib_set -s scaleValuesBy=2 $tempOut $tempGrib2 2>$tempErr status=$? set -e [ $status -ne 0 ] -grep -q "Invalid metadata: shortName=unknown" $tempErr +grep -q "Invalid metadata: shortName='unknown'" $tempErr + +# Invalid name (ECC-793) +${tools_dir}/grib_set -s paramId=129080 $input2 $tempOut 2>$tempErr +grib_check_key_equals $tempOut 'name' 'Experimental product' +# Repacking causes the values to be set +set +e +${tools_dir}/grib_set -r -s paramId=129080 $input2 $tempOut 2>$tempErr +status=$? +set -e +[ $status -ne 0 ] +grep -q "Invalid metadata: name='Experimental product'" $tempErr + # Clean up rm -rf $tempDir From 16ea23dcff38e2da198e4d28e6904330afb2b40f Mon Sep 17 00:00:00 2001 From: Dusan Figala Date: Wed, 12 Apr 2023 09:20:09 +0200 Subject: [PATCH 050/378] Enable extended tests in HPC CI --- .github/workflows/reusable-ci-hpc.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/reusable-ci-hpc.yml b/.github/workflows/reusable-ci-hpc.yml index ed970a9bf..9c60568b9 100644 --- a/.github/workflows/reusable-ci-hpc.yml +++ b/.github/workflows/reusable-ci-hpc.yml @@ -25,6 +25,7 @@ jobs: aec netcdf4/new --parallel: 64 + --cmake-options: -DENABLE_EXTRA_TESTS=1 ${{ inputs.nightly_test && '--post-script: .github/ci-nightly-test.sh' || '' }} ${{ inputs.nightly_test && '--force-build: true' || '' }} ${{ inputs.nightly_test && '--cmake-options: -DENABLE_PNG=1,-DENABLE_NETCDF=1' || '' }} From de2c69fb02b4704b93ae3c29aa17372f3504ebe7 Mon Sep 17 00:00:00 2001 From: Dusan Figala Date: Wed, 12 Apr 2023 09:45:39 +0200 Subject: [PATCH 051/378] Remove duplicate cmake options yaml keys --- .github/workflows/reusable-ci-hpc.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/reusable-ci-hpc.yml b/.github/workflows/reusable-ci-hpc.yml index 9c60568b9..793f26ebe 100644 --- a/.github/workflows/reusable-ci-hpc.yml +++ b/.github/workflows/reusable-ci-hpc.yml @@ -25,8 +25,9 @@ jobs: aec netcdf4/new --parallel: 64 - --cmake-options: -DENABLE_EXTRA_TESTS=1 + --cmake-options: | + -DENABLE_EXTRA_TESTS=1 + ${{ inputs.nightly_test && '-DENABLE_PNG=1,-DENABLE_NETCDF=1' || '' }} ${{ inputs.nightly_test && '--post-script: .github/ci-nightly-test.sh' || '' }} ${{ inputs.nightly_test && '--force-build: true' || '' }} - ${{ inputs.nightly_test && '--cmake-options: -DENABLE_PNG=1,-DENABLE_NETCDF=1' || '' }} secrets: inherit From 1b16b39c5bbb8b66508206ed475fef4040b2a740 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 12 Apr 2023 15:35:36 +0000 Subject: [PATCH 052/378] Update list of keys and hash --- src/grib_hash_keys.cc | 9708 ++++++++++++++++++++++------------------- tests/keys | 4870 ++++++++++----------- 2 files changed, 7586 insertions(+), 6992 deletions(-) diff --git a/src/grib_hash_keys.cc b/src/grib_hash_keys.cc index a8ab85ef1..a68403d91 100644 --- a/src/grib_hash_keys.cc +++ b/src/grib_hash_keys.cc @@ -34,12 +34,12 @@ struct grib_keys_hash { char* name; int id;}; #include -#define TOTAL_KEYWORDS 2432 +#define TOTAL_KEYWORDS 2438 #define MIN_WORD_LENGTH 1 #define MAX_WORD_LENGTH 74 #define MIN_HASH_VALUE 3 -#define MAX_HASH_VALUE 32422 -/* maximum key range = 32420, duplicates = 0 */ +#define MAX_HASH_VALUE 35609 +/* maximum key range = 35607, duplicates = 0 */ #ifdef __GNUC__ __inline @@ -53,32 +53,32 @@ hash_keys (const char *str, size_t len) { static const unsigned short asso_values[] = { - 32423, 32423, 32423, 32423, 32423, 32423, 32423, 32423, 32423, 32423, - 32423, 32423, 32423, 32423, 32423, 32423, 32423, 32423, 32423, 32423, - 32423, 32423, 32423, 32423, 32423, 32423, 32423, 32423, 32423, 32423, - 32423, 32423, 32423, 32423, 32423, 32423, 32423, 32423, 32423, 32423, - 32423, 32423, 1, 32423, 32423, 1, 32423, 32423, 100, 2542, - 2012, 2507, 1904, 3737, 1317, 921, 233, 6, 5, 1, - 1, 32423, 32423, 32423, 32423, 2617, 4123, 2527, 159, 1640, - 52, 5304, 2521, 684, 43, 193, 551, 292, 1641, 211, - 1969, 64, 1061, 161, 85, 4435, 2022, 3043, 60, 4866, - 6, 1, 1, 32423, 32423, 1548, 32423, 5, 552, 54, - 1, 2, 196, 180, 109, 10, 2716, 4017, 71, 7, - 1, 20, 29, 1211, 1, 8, 4, 65, 258, 230, - 764, 7, 784, 55, 1795, 2, 32423, 32423, 32423, 32423, - 32423, 32423, 32423, 32423, 32423, 32423, 32423, 32423, 32423, 32423, - 32423, 32423, 32423, 32423, 32423, 32423, 32423, 32423, 32423, 32423, - 32423, 32423, 32423, 32423, 32423, 32423, 32423, 32423, 32423, 32423, - 32423, 32423, 32423, 32423, 32423, 32423, 32423, 32423, 32423, 32423, - 32423, 32423, 32423, 32423, 32423, 32423, 32423, 32423, 32423, 32423, - 32423, 32423, 32423, 32423, 32423, 32423, 32423, 32423, 32423, 32423, - 32423, 32423, 32423, 32423, 32423, 32423, 32423, 32423, 32423, 32423, - 32423, 32423, 32423, 32423, 32423, 32423, 32423, 32423, 32423, 32423, - 32423, 32423, 32423, 32423, 32423, 32423, 32423, 32423, 32423, 32423, - 32423, 32423, 32423, 32423, 32423, 32423, 32423, 32423, 32423, 32423, - 32423, 32423, 32423, 32423, 32423, 32423, 32423, 32423, 32423, 32423, - 32423, 32423, 32423, 32423, 32423, 32423, 32423, 32423, 32423, 32423, - 32423, 32423, 32423, 32423, 32423, 32423, 32423, 32423, 32423 + 35610, 35610, 35610, 35610, 35610, 35610, 35610, 35610, 35610, 35610, + 35610, 35610, 35610, 35610, 35610, 35610, 35610, 35610, 35610, 35610, + 35610, 35610, 35610, 35610, 35610, 35610, 35610, 35610, 35610, 35610, + 35610, 35610, 35610, 35610, 35610, 35610, 35610, 35610, 35610, 35610, + 35610, 35610, 1, 35610, 35610, 3, 35610, 35610, 115, 2082, + 1930, 1927, 2336, 3516, 1906, 2332, 105, 7, 2, 1, + 1, 35610, 35610, 35610, 35610, 1791, 3458, 2500, 159, 891, + 165, 5126, 3429, 712, 815, 250, 308, 383, 1779, 361, + 2501, 34, 1525, 161, 85, 4380, 1483, 2778, 397, 4364, + 9, 1, 1, 35610, 35610, 2659, 35610, 5, 441, 54, + 1, 2, 196, 180, 109, 10, 2759, 3740, 71, 7, + 1, 20, 29, 1331, 1, 8, 4, 65, 258, 92, + 802, 7, 1197, 108, 801, 1, 35610, 35610, 35610, 35610, + 35610, 35610, 35610, 35610, 35610, 35610, 35610, 35610, 35610, 35610, + 35610, 35610, 35610, 35610, 35610, 35610, 35610, 35610, 35610, 35610, + 35610, 35610, 35610, 35610, 35610, 35610, 35610, 35610, 35610, 35610, + 35610, 35610, 35610, 35610, 35610, 35610, 35610, 35610, 35610, 35610, + 35610, 35610, 35610, 35610, 35610, 35610, 35610, 35610, 35610, 35610, + 35610, 35610, 35610, 35610, 35610, 35610, 35610, 35610, 35610, 35610, + 35610, 35610, 35610, 35610, 35610, 35610, 35610, 35610, 35610, 35610, + 35610, 35610, 35610, 35610, 35610, 35610, 35610, 35610, 35610, 35610, + 35610, 35610, 35610, 35610, 35610, 35610, 35610, 35610, 35610, 35610, + 35610, 35610, 35610, 35610, 35610, 35610, 35610, 35610, 35610, 35610, + 35610, 35610, 35610, 35610, 35610, 35610, 35610, 35610, 35610, 35610, + 35610, 35610, 35610, 35610, 35610, 35610, 35610, 35610, 35610, 35610, + 35610, 35610, 35610, 35610, 35610, 35610, 35610, 35610, 35610 }; unsigned int hval = len; @@ -170,1116 +170,1078 @@ static const unsigned char lengthtable[] = 0, 5, 0, 0, 8, 0, 4, 6, 3, 6, 5, 0, 0, 0, 7, 4, 7, 5, 0, 0, 0, 0, 0, 0, 9, 9, 0, 9, 9, 0, 6, 0, 0, 0, 4, 0, 4, 0, 0, 0, 10, 4, - 10, 7, 6, 1, 0, 7, 0, 0, 6, 6, 0, 0, 5, 6, - 10, 5, 8, 5, 2, 0, 6, 0, 0, 7, 6, 0, 10, 0, - 8, 9, 0, 0, 7, 10, 0, 0, 2, 7, 0, 0, 0, 5, - 8, 0, 5, 8, 8, 0, 0, 10, 0, 0, 0, 7, 3, 0, + 10, 7, 6, 0, 0, 7, 0, 0, 0, 6, 0, 0, 5, 6, + 10, 5, 0, 5, 0, 8, 6, 0, 0, 7, 6, 0, 10, 0, + 8, 9, 0, 0, 7, 10, 0, 0, 0, 7, 0, 0, 0, 5, + 8, 0, 5, 8, 8, 0, 0, 10, 0, 0, 0, 7, 3, 3, 0, 0, 0, 0, 0, 9, 0, 0, 8, 0, 6, 0, 0, 5, 8, 0, 0, 0, 0, 5, 5, 0, 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 8, 2, 4, 2, 8, 5, 10, 0, 5, 2, - 6, 0, 9, 7, 0, 9, 7, 0, 0, 6, 10, 0, 10, 8, - 5, 4, 7, 7, 4, 6, 0, 0, 6, 0, 0, 9, 10, 0, + 6, 0, 9, 7, 0, 9, 7, 0, 0, 6, 10, 0, 0, 8, + 5, 4, 7, 7, 4, 6, 0, 0, 6, 6, 0, 9, 10, 0, 8, 0, 10, 0, 0, 0, 0, 0, 10, 0, 7, 0, 8, 0, 0, 0, 13, 0, 0, 6, 0, 0, 0, 0, 10, 0, 7, 0, - 0, 0, 0, 8, 11, 0, 0, 0, 0, 0, 10, 10, 0, 0, + 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 10, 10, 0, 0, 0, 0, 8, 5, 9, 2, 0, 0, 8, 14, 0, 0, 0, 0, - 0, 0, 10, 0, 0, 0, 9, 0, 0, 10, 0, 3, 0, 0, - 0, 0, 0, 0, 8, 4, 0, 9, 0, 5, 0, 0, 0, 0, - 0, 0, 0, 5, 0, 0, 11, 0, 11, 17, 10, 0, 0, 0, - 7, 0, 5, 0, 0, 12, 5, 0, 0, 0, 0, 0, 0, 7, - 8, 11, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, - 9, 0, 0, 0, 0, 0, 0, 6, 0, 10, 0, 0, 8, 0, - 8, 0, 0, 8, 0, 0, 0, 10, 0, 0, 0, 1, 0, 0, - 0, 9, 0, 2, 10, 10, 11, 0, 0, 0, 0, 0, 0, 0, - 9, 0, 10, 0, 7, 9, 0, 0, 0, 1, 0, 0, 0, 0, - 0, 0, 0, 0, 13, 12, 0, 10, 8, 0, 9, 0, 11, 0, - 0, 8, 0, 2, 10, 0, 0, 0, 7, 0, 0, 11, 0, 0, - 0, 0, 0, 6, 0, 0, 6, 0, 0, 0, 0, 0, 13, 8, - 9, 0, 6, 0, 8, 10, 0, 0, 0, 0, 8, 0, 0, 9, - 0, 0, 10, 11, 15, 0, 0, 0, 0, 0, 0, 10, 0, 10, - 7, 0, 0, 0, 0, 0, 11, 0, 11, 0, 0, 5, 0, 0, - 0, 0, 0, 0, 5, 0, 0, 0, 0, 17, 0, 9, 6, 0, - 6, 0, 0, 14, 0, 0, 12, 0, 13, 0, 0, 0, 0, 18, - 0, 0, 0, 7, 11, 12, 0, 8, 0, 0, 15, 0, 0, 2, - 0, 0, 0, 14, 0, 0, 0, 0, 0, 24, 0, 14, 15, 0, - 0, 0, 0, 0, 0, 12, 9, 0, 0, 0, 2, 0, 0, 0, - 0, 2, 0, 0, 0, 0, 20, 0, 6, 15, 0, 0, 0, 13, - 0, 0, 0, 0, 4, 0, 0, 2, 0, 0, 0, 0, 12, 8, - 0, 0, 0, 5, 0, 6, 0, 0, 0, 0, 5, 1, 7, 18, - 0, 0, 0, 0, 3, 13, 4, 0, 0, 0, 0, 0, 0, 13, - 6, 10, 0, 11, 0, 0, 17, 0, 0, 0, 0, 12, 0, 0, - 2, 3, 0, 0, 0, 0, 3, 0, 10, 0, 3, 0, 0, 0, - 0, 7, 3, 3, 0, 6, 4, 0, 0, 0, 0, 0, 6, 0, - 14, 0, 0, 0, 0, 0, 0, 11, 0, 22, 0, 0, 0, 0, - 0, 0, 12, 6, 14, 0, 0, 23, 0, 0, 13, 0, 0, 0, - 0, 0, 14, 0, 0, 0, 0, 18, 19, 0, 0, 0, 0, 0, - 7, 0, 0, 15, 18, 0, 0, 12, 0, 0, 0, 13, 0, 14, - 12, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 0, 0, 0, - 0, 11, 6, 12, 9, 0, 0, 14, 10, 0, 14, 0, 9, 0, - 0, 0, 0, 0, 14, 0, 0, 17, 0, 0, 0, 0, 7, 0, - 13, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 22, - 0, 0, 15, 0, 0, 12, 0, 14, 0, 10, 10, 13, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 12, - 0, 22, 0, 0, 0, 12, 0, 0, 0, 0, 0, 21, 0, 0, - 23, 0, 0, 11, 0, 19, 0, 21, 0, 0, 17, 14, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, - 0, 15, 5, 13, 0, 4, 13, 0, 0, 0, 10, 0, 13, 0, - 0, 0, 0, 10, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 11, - 0, 17, 0, 0, 0, 0, 0, 12, 16, 3, 0, 7, 0, 21, - 0, 12, 0, 7, 17, 0, 0, 0, 0, 0, 0, 19, 0, 17, - 0, 0, 0, 27, 13, 0, 0, 15, 14, 0, 0, 14, 0, 18, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 10, 0, 0, 0, - 10, 0, 0, 0, 17, 0, 0, 0, 12, 0, 14, 0, 20, 15, - 0, 0, 13, 12, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, - 0, 18, 9, 0, 0, 10, 0, 0, 0, 0, 15, 12, 0, 0, - 12, 8, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, - 0, 10, 8, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 25, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 39, 40, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, - 0, 0, 0, 0, 0, 20, 0, 13, 0, 0, 14, 0, 0, 0, - 9, 0, 16, 0, 0, 10, 16, 0, 0, 16, 0, 0, 18, 6, - 0, 10, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 14, 44, 0, 0, 15, 0, 0, 0, - 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 19, 0, 18, 0, - 0, 0, 0, 21, 0, 0, 0, 14, 0, 0, 14, 0, 0, 0, - 0, 0, 0, 0, 19, 17, 0, 20, 0, 21, 0, 0, 0, 0, - 0, 0, 15, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 10, 0, 0, 10, 0, 0, 0, 7, 0, 9, 14, 0, - 48, 0, 0, 0, 14, 27, 19, 0, 0, 0, 14, 0, 15, 0, - 17, 0, 0, 0, 17, 0, 0, 23, 0, 0, 21, 0, 12, 0, - 16, 0, 13, 0, 8, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0, 23, 9, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, - 14, 0, 0, 0, 0, 0, 0, 16, 0, 0, 12, 0, 0, 0, - 0, 37, 0, 0, 0, 0, 13, 0, 0, 0, 0, 30, 0, 23, - 0, 0, 27, 0, 15, 0, 0, 9, 11, 0, 0, 10, 0, 0, - 0, 20, 0, 20, 0, 0, 15, 0, 0, 0, 0, 0, 22, 0, - 0, 9, 16, 0, 0, 0, 0, 0, 0, 15, 17, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 5, 15, 0, + 0, 0, 10, 0, 0, 0, 9, 0, 0, 10, 0, 0, 0, 0, + 0, 0, 0, 12, 8, 4, 0, 9, 0, 5, 0, 0, 0, 0, + 0, 0, 0, 5, 8, 0, 0, 0, 11, 17, 10, 0, 0, 10, + 7, 9, 5, 0, 0, 0, 5, 0, 0, 8, 0, 0, 0, 7, + 8, 11, 2, 8, 0, 0, 0, 0, 0, 0, 0, 0, 5, 9, + 9, 0, 0, 0, 0, 5, 0, 6, 0, 10, 0, 0, 8, 0, + 8, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 1, 0, 0, + 0, 9, 0, 0, 10, 0, 11, 0, 0, 0, 3, 0, 0, 0, + 9, 3, 10, 0, 7, 9, 0, 0, 0, 0, 0, 3, 3, 14, + 0, 0, 0, 0, 13, 12, 0, 0, 8, 0, 9, 0, 11, 0, + 0, 8, 0, 2, 10, 0, 0, 11, 7, 0, 0, 11, 6, 0, + 0, 13, 15, 6, 0, 0, 6, 0, 0, 0, 0, 0, 13, 0, + 12, 0, 6, 0, 8, 2, 0, 0, 0, 0, 8, 0, 0, 0, + 0, 0, 10, 11, 0, 4, 0, 0, 0, 2, 0, 0, 0, 10, + 7, 0, 0, 0, 8, 11, 11, 0, 11, 0, 0, 5, 0, 7, + 0, 0, 0, 10, 5, 0, 10, 0, 0, 17, 0, 0, 6, 0, + 6, 0, 0, 14, 0, 0, 12, 0, 13, 0, 0, 1, 0, 18, + 0, 0, 0, 7, 11, 0, 0, 0, 10, 0, 15, 0, 0, 0, + 0, 0, 7, 14, 0, 0, 6, 9, 0, 24, 0, 0, 13, 6, + 0, 0, 0, 0, 0, 12, 9, 10, 0, 0, 2, 0, 0, 0, + 0, 2, 0, 0, 0, 0, 0, 0, 6, 15, 0, 0, 0, 13, + 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 10, 0, 10, 0, + 2, 7, 0, 0, 9, 6, 0, 0, 0, 8, 0, 0, 0, 0, + 0, 10, 0, 0, 3, 13, 4, 0, 0, 0, 0, 0, 0, 13, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 12, 8, 0, 3, 0, 0, 13, + 0, 0, 0, 0, 3, 0, 4, 0, 0, 0, 0, 0, 0, 18, + 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 10, 0, 0, 0, + 0, 12, 0, 0, 14, 0, 0, 23, 0, 0, 12, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 18, 19, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 11, 0, 0, 20, 13, 0, 0, 13, 0, 0, + 12, 0, 20, 0, 0, 0, 0, 2, 0, 0, 11, 0, 0, 0, + 0, 10, 0, 0, 0, 0, 12, 0, 0, 12, 0, 10, 0, 0, + 0, 11, 0, 0, 0, 0, 0, 17, 0, 14, 10, 0, 0, 0, + 9, 0, 6, 12, 0, 0, 14, 0, 0, 12, 0, 10, 9, 0, + 11, 17, 17, 0, 0, 0, 0, 14, 0, 0, 0, 1, 7, 14, + 0, 0, 17, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, + 0, 0, 0, 0, 0, 0, 0, 18, 0, 15, 0, 0, 0, 0, + 23, 15, 0, 0, 15, 0, 0, 0, 11, 0, 10, 0, 0, 0, + 0, 10, 0, 0, 10, 0, 0, 18, 0, 15, 0, 0, 14, 0, + 0, 0, 13, 12, 0, 9, 0, 13, 18, 0, 0, 11, 0, 0, + 0, 0, 0, 14, 0, 0, 10, 0, 0, 15, 0, 12, 0, 0, + 0, 0, 19, 10, 0, 0, 0, 0, 0, 0, 0, 6, 0, 12, + 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 12, 0, + 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, + 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 13, 0, 16, 0, 14, 7, 21, 22, 0, 0, 0, 0, + 0, 0, 0, 0, 17, 0, 0, 15, 0, 14, 10, 22, 0, 0, + 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 13, + 0, 0, 0, 0, 0, 12, 0, 5, 0, 17, 0, 0, 14, 0, + 12, 0, 0, 0, 0, 13, 0, 14, 0, 0, 0, 15, 0, 0, + 0, 0, 0, 0, 14, 0, 0, 14, 0, 0, 0, 0, 9, 25, + 20, 14, 21, 0, 0, 17, 6, 0, 0, 0, 0, 8, 0, 12, + 0, 24, 16, 0, 27, 0, 15, 0, 0, 0, 22, 0, 0, 21, + 19, 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 14, 0, + 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 15, 0, 0, + 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 21, 0, + 0, 0, 24, 13, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, + 13, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, + 0, 0, 14, 0, 0, 12, 0, 0, 0, 18, 0, 12, 0, 0, + 13, 0, 0, 39, 40, 0, 0, 11, 0, 11, 0, 0, 0, 0, + 0, 0, 5, 0, 0, 2, 0, 0, 0, 0, 21, 18, 0, 0, + 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 17, + 0, 19, 10, 0, 0, 14, 11, 0, 0, 0, 0, 0, 0, 13, + 0, 0, 0, 0, 0, 16, 0, 0, 16, 0, 0, 0, 7, 0, + 0, 0, 15, 0, 16, 27, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 19, 15, 0, 0, 0, 0, 0, 0, + 0, 19, 0, 0, 0, 0, 0, 0, 17, 5, 0, 0, 4, 30, + 16, 0, 0, 0, 21, 0, 0, 0, 12, 0, 0, 0, 0, 0, + 0, 37, 0, 0, 11, 0, 0, 0, 0, 0, 0, 11, 9, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, + 0, 0, 0, 15, 0, 0, 18, 0, 0, 10, 0, 0, 10, 0, + 0, 0, 14, 0, 0, 0, 0, 0, 0, 14, 0, 10, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 22, 0, + 11, 0, 0, 0, 0, 0, 24, 0, 0, 0, 48, 0, 13, 0, + 20, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 14, 0, 0, 11, 0, 0, 0, 0, 13, + 12, 0, 15, 0, 0, 0, 0, 0, 0, 8, 20, 23, 0, 0, + 0, 0, 0, 0, 0, 13, 0, 0, 19, 0, 0, 0, 17, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, + 0, 14, 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 0, + 0, 0, 13, 0, 10, 0, 0, 0, 0, 0, 0, 0, 7, 24, + 0, 13, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 10, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, + 0, 13, 0, 0, 21, 0, 9, 0, 0, 0, 0, 0, 23, 0, + 0, 8, 18, 30, 11, 0, 0, 11, 0, 17, 0, 0, 0, 0, + 18, 0, 0, 0, 0, 0, 13, 0, 0, 0, 22, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 23, + 0, 0, 0, 13, 0, 0, 13, 0, 0, 13, 0, 13, 0, 3, + 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 15, 0, 22, 0, 0, 16, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 15, 0, 0, 9, 0, 0, 25, 0, 0, 0, 2, 0, 0, + 0, 15, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, + 0, 19, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 13, 0, 0, 16, 0, 0, 0, 0, + 19, 14, 0, 11, 0, 0, 0, 17, 0, 16, 0, 0, 0, 0, + 0, 10, 16, 31, 0, 0, 31, 0, 0, 9, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, + 0, 11, 0, 0, 0, 0, 26, 0, 48, 0, 0, 23, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, + 0, 0, 0, 0, 0, 24, 34, 0, 13, 9, 0, 21, 0, 0, + 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, + 0, 2, 16, 9, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 2, 21, 0, 0, 0, 26, 26, 0, 0, + 0, 0, 0, 2, 0, 12, 0, 0, 0, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 16, + 0, 10, 0, 0, 13, 0, 20, 0, 0, 0, 0, 0, 0, 0, + 15, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, + 14, 0, 3, 10, 0, 0, 35, 0, 22, 25, 32, 0, 0, 3, + 0, 0, 0, 27, 0, 14, 0, 0, 30, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 13, 0, 0, 6, 23, 0, 0, 0, + 0, 0, 0, 9, 0, 0, 24, 0, 0, 30, 15, 0, 0, 0, + 19, 9, 31, 0, 0, 0, 0, 10, 0, 0, 2, 0, 12, 0, + 0, 0, 0, 0, 0, 0, 6, 0, 0, 13, 0, 0, 0, 0, + 23, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 9, 0, 0, 0, 15, 2, 12, 0, 0, 25, 0, 0, 0, 15, + 0, 30, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 24, + 0, 0, 17, 0, 0, 0, 3, 11, 0, 0, 0, 15, 0, 0, + 0, 0, 0, 0, 0, 24, 0, 8, 0, 0, 0, 0, 0, 0, + 0, 0, 9, 0, 21, 0, 0, 0, 18, 0, 0, 0, 0, 10, + 0, 10, 0, 0, 0, 19, 0, 19, 0, 13, 0, 13, 0, 15, + 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, + 0, 0, 23, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 13, 0, 0, 0, 0, 31, 0, 0, 0, 0, + 0, 0, 0, 0, 32, 0, 10, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, + 0, 0, 0, 0, 0, 0, 0, 20, 11, 28, 18, 26, 0, 0, + 0, 30, 0, 0, 0, 0, 23, 0, 0, 0, 2, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 18, 0, 0, 0, 0, 11, 0, 12, 0, 0, 0, 9, 0, - 0, 0, 0, 0, 0, 0, 19, 8, 0, 0, 0, 7, 0, 0, - 10, 10, 0, 0, 24, 0, 0, 34, 13, 0, 14, 31, 0, 0, - 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, - 3, 0, 0, 0, 0, 12, 0, 14, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 3, 0, 30, 0, 0, 0, 0, 0, 0, - 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 17, 0, - 0, 0, 0, 18, 11, 0, 0, 11, 0, 0, 0, 0, 0, 0, - 0, 0, 12, 0, 0, 0, 0, 0, 12, 0, 13, 15, 0, 0, - 0, 0, 19, 0, 24, 28, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 13, 0, - 0, 0, 15, 0, 0, 2, 0, 0, 0, 11, 0, 0, 16, 0, - 0, 0, 0, 3, 0, 0, 0, 0, 16, 23, 0, 0, 24, 0, - 0, 9, 0, 0, 15, 0, 0, 21, 0, 25, 0, 0, 0, 0, - 0, 0, 10, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 10, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, - 13, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, - 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, - 0, 0, 0, 0, 0, 0, 0, 2, 0, 14, 0, 0, 0, 0, - 33, 8, 0, 0, 0, 2, 0, 0, 0, 20, 22, 2, 17, 0, - 0, 16, 0, 14, 0, 15, 10, 0, 15, 0, 0, 12, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 26, 2, 0, 23, 0, 0, - 0, 0, 26, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, - 5, 0, 0, 0, 3, 0, 0, 0, 0, 10, 0, 0, 2, 26, - 0, 3, 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 14, 0, 0, 0, 0, 17, 0, 13, 0, 0, 0, 13, 23, - 0, 13, 0, 0, 13, 9, 13, 16, 0, 0, 0, 0, 0, 0, - 16, 0, 0, 9, 0, 10, 0, 0, 0, 0, 10, 0, 0, 0, - 0, 31, 15, 0, 0, 0, 0, 8, 23, 31, 15, 0, 31, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 30, 9, 0, - 0, 0, 9, 0, 0, 0, 0, 2, 0, 0, 30, 0, 0, 0, - 0, 0, 14, 0, 0, 0, 15, 0, 0, 0, 0, 0, 12, 0, - 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 9, 17, 8, 0, 0, 0, 0, - 0, 0, 0, 0, 9, 0, 0, 0, 0, 10, 0, 0, 0, 11, - 0, 0, 11, 10, 30, 0, 0, 0, 0, 0, 11, 13, 0, 0, - 0, 13, 0, 0, 0, 13, 9, 17, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 11, 0, 0, 0, 6, 0, 0, 0, 29, - 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 15, - 0, 0, 0, 10, 0, 0, 13, 15, 0, 10, 0, 18, 0, 0, - 0, 0, 0, 8, 0, 10, 0, 12, 0, 0, 0, 0, 3, 0, - 24, 0, 0, 31, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, - 0, 0, 0, 0, 0, 9, 0, 0, 14, 0, 0, 0, 13, 0, - 0, 0, 18, 0, 0, 0, 0, 0, 26, 0, 0, 11, 0, 0, - 0, 0, 0, 0, 0, 13, 0, 0, 9, 0, 0, 0, 0, 15, - 23, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, - 13, 0, 20, 0, 0, 0, 0, 30, 0, 0, 2, 8, 0, 16, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, - 0, 0, 0, 0, 0, 0, 0, 11, 32, 2, 13, 0, 0, 30, - 24, 0, 0, 0, 0, 13, 14, 25, 0, 0, 0, 42, 0, 0, - 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 11, 13, - 0, 0, 24, 0, 0, 11, 0, 11, 9, 0, 27, 0, 0, 0, - 13, 24, 0, 12, 0, 10, 0, 0, 3, 15, 0, 0, 0, 0, - 0, 0, 0, 23, 19, 3, 0, 22, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 9, 0, 0, + 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 2, 0, 0, 0, 16, 0, 17, 0, 0, 13, 0, + 0, 0, 0, 0, 0, 0, 9, 0, 29, 9, 0, 19, 0, 0, + 0, 11, 0, 13, 0, 0, 0, 0, 0, 22, 0, 3, 0, 0, + 0, 0, 0, 12, 13, 0, 0, 0, 13, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 11, 0, 0, 0, 13, 0, 15, 0, 0, 0, 0, + 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 22, 0, 0, 0, + 0, 22, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 11, 0, 0, 20, 0, 0, 0, 0, 0, 0, 11, 0, 6, + 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, + 23, 0, 0, 0, 0, 14, 0, 0, 27, 0, 0, 0, 10, 0, + 0, 0, 0, 0, 0, 0, 33, 9, 0, 13, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 11, 0, 0, + 0, 11, 0, 15, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, + 12, 0, 0, 2, 0, 0, 0, 0, 0, 14, 0, 24, 0, 0, + 47, 17, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 12, 0, + 0, 0, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 25, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, + 20, 0, 0, 16, 0, 19, 0, 0, 0, 18, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 23, 28, 0, 0, 0, 11, 0, 0, + 19, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, + 0, 19, 0, 0, 27, 0, 0, 0, 0, 0, 19, 0, 17, 15, + 31, 17, 30, 21, 0, 17, 0, 0, 0, 12, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 32, 0, 0, 6, 0, 19, 0, 35, 0, + 0, 0, 0, 11, 0, 0, 0, 0, 15, 25, 0, 15, 11, 0, + 0, 0, 0, 0, 0, 15, 0, 0, 9, 11, 9, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, + 0, 24, 27, 0, 0, 0, 0, 0, 0, 0, 12, 8, 0, 0, + 0, 11, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 8, 0, + 0, 0, 0, 0, 0, 22, 0, 22, 0, 20, 0, 0, 14, 0, + 0, 0, 0, 0, 12, 0, 0, 0, 26, 0, 21, 0, 9, 0, + 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 25, 0, 0, 0, + 0, 26, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, + 0, 0, 30, 2, 0, 20, 0, 0, 0, 11, 0, 0, 0, 22, + 42, 0, 0, 0, 0, 29, 0, 35, 0, 0, 0, 0, 17, 0, + 0, 15, 0, 0, 14, 15, 0, 0, 0, 0, 0, 13, 0, 18, + 0, 0, 16, 0, 0, 20, 12, 16, 0, 0, 0, 0, 0, 0, + 0, 11, 0, 0, 0, 0, 23, 0, 20, 15, 11, 0, 18, 0, + 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, + 0, 0, 0, 0, 8, 0, 17, 0, 0, 36, 13, 11, 0, 0, + 0, 21, 0, 39, 0, 0, 8, 13, 16, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 24, 23, 16, 0, 0, 0, 0, 31, 0, + 0, 0, 0, 0, 0, 0, 25, 0, 13, 0, 0, 0, 0, 0, + 0, 0, 0, 13, 0, 23, 0, 0, 0, 19, 0, 18, 0, 0, + 0, 0, 0, 0, 10, 16, 0, 0, 0, 15, 0, 0, 0, 0, + 10, 0, 0, 2, 0, 0, 0, 0, 0, 17, 15, 0, 0, 0, + 0, 0, 6, 18, 22, 0, 0, 16, 0, 0, 0, 0, 30, 0, + 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 21, 0, 19, 16, 25, 0, 0, 32, + 0, 10, 0, 29, 0, 0, 0, 0, 0, 0, 11, 0, 8, 10, + 0, 22, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 9, 0, 0, 28, 0, 0, 18, 0, 18, 0, 0, + 0, 0, 0, 0, 23, 0, 31, 0, 0, 0, 48, 0, 0, 12, + 17, 28, 13, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 14, 9, 0, + 25, 24, 0, 16, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, + 10, 3, 38, 0, 0, 13, 0, 0, 0, 0, 3, 0, 0, 0, + 19, 0, 20, 19, 0, 20, 0, 0, 22, 24, 11, 9, 0, 0, + 0, 3, 0, 0, 0, 0, 0, 30, 0, 0, 11, 24, 26, 14, + 18, 0, 12, 23, 0, 12, 23, 0, 0, 0, 27, 9, 15, 0, + 0, 0, 9, 0, 0, 16, 0, 27, 0, 15, 0, 0, 0, 0, + 10, 10, 0, 0, 0, 9, 0, 0, 0, 21, 10, 0, 12, 0, + 29, 33, 10, 3, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 20, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 10, + 15, 0, 0, 0, 9, 0, 0, 0, 0, 0, 9, 0, 0, 27, + 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 0, 22, 38, 0, + 25, 0, 18, 18, 15, 15, 0, 0, 15, 0, 0, 0, 19, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 20, 0, 0, 15, 0, 15, 31, 0, 0, 0, 0, 0, 0, + 0, 0, 16, 0, 0, 0, 0, 0, 0, 15, 12, 0, 0, 0, + 0, 0, 0, 12, 0, 0, 31, 0, 0, 15, 0, 0, 22, 0, + 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 28, 0, 0, + 28, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, + 29, 0, 0, 0, 0, 0, 18, 0, 0, 0, 16, 0, 29, 15, + 0, 0, 0, 0, 0, 16, 0, 12, 0, 17, 0, 0, 0, 13, + 0, 0, 0, 0, 0, 0, 0, 0, 24, 15, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 15, 0, + 0, 0, 42, 0, 0, 0, 7, 3, 0, 0, 0, 0, 0, 26, + 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 10, 0, + 0, 0, 0, 0, 0, 0, 34, 0, 0, 26, 0, 22, 0, 0, + 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 28, 0, 0, 0, 0, 14, 0, 0, 0, 0, 10, 0, 0, 0, + 0, 0, 0, 0, 15, 15, 3, 0, 0, 0, 15, 0, 19, 32, + 0, 0, 0, 20, 0, 0, 0, 3, 16, 22, 0, 2, 0, 13, + 21, 0, 0, 0, 0, 0, 17, 0, 0, 0, 30, 0, 0, 0, + 20, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, + 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, + 20, 0, 0, 0, 0, 0, 27, 0, 0, 0, 3, 0, 0, 17, + 21, 0, 0, 0, 0, 2, 0, 3, 24, 12, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 21, 20, 0, 0, 0, 0, 0, 0, 0, + 0, 15, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 17, 14, 16, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 33, 0, 18, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, + 0, 0, 0, 22, 16, 0, 0, 0, 14, 0, 0, 14, 0, 0, + 0, 9, 10, 0, 13, 14, 0, 0, 0, 23, 0, 0, 24, 0, + 0, 10, 0, 1, 0, 13, 16, 0, 0, 0, 14, 0, 0, 0, + 31, 0, 10, 23, 18, 0, 24, 0, 0, 0, 0, 24, 0, 0, + 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 26, 0, 14, 0, + 0, 0, 0, 0, 0, 15, 0, 13, 14, 0, 0, 0, 0, 12, + 0, 15, 0, 0, 0, 15, 0, 0, 34, 37, 0, 22, 15, 0, + 10, 0, 0, 0, 0, 20, 0, 13, 0, 0, 0, 10, 0, 21, + 0, 31, 0, 0, 0, 0, 0, 0, 0, 23, 0, 18, 0, 24, + 0, 0, 0, 40, 23, 0, 0, 0, 0, 24, 0, 0, 0, 0, + 0, 0, 0, 11, 0, 0, 20, 12, 0, 0, 0, 0, 0, 13, + 25, 14, 0, 0, 0, 12, 35, 15, 0, 18, 0, 0, 0, 0, + 0, 0, 13, 30, 0, 0, 12, 0, 0, 0, 0, 0, 0, 7, + 29, 18, 0, 13, 0, 0, 0, 0, 18, 14, 0, 0, 0, 0, + 0, 0, 0, 0, 14, 14, 0, 0, 0, 0, 0, 0, 0, 5, + 0, 0, 26, 0, 0, 3, 0, 0, 9, 0, 21, 0, 0, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 0, 14, 26, 10, 0, 0, + 18, 34, 0, 0, 13, 11, 34, 0, 0, 17, 0, 25, 13, 0, + 0, 0, 13, 0, 0, 15, 0, 0, 18, 0, 0, 0, 0, 0, + 0, 11, 31, 0, 0, 0, 0, 41, 0, 0, 0, 15, 0, 0, + 14, 0, 0, 0, 0, 0, 0, 0, 13, 0, 4, 0, 0, 0, + 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, + 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 16, 0, 0, 12, + 0, 0, 0, 0, 12, 0, 0, 2, 26, 13, 0, 0, 8, 2, + 0, 0, 0, 0, 0, 0, 0, 0, 8, 15, 39, 0, 0, 8, + 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 21, 0, + 0, 11, 3, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 6, + 0, 0, 0, 18, 0, 6, 0, 0, 0, 0, 0, 0, 0, 8, + 0, 0, 0, 0, 0, 0, 0, 0, 7, 6, 0, 0, 0, 0, + 7, 0, 0, 21, 4, 0, 29, 0, 0, 0, 0, 0, 0, 18, + 0, 0, 11, 0, 0, 6, 0, 12, 17, 21, 22, 0, 0, 0, + 0, 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 13, 10, 0, + 0, 0, 0, 0, 0, 14, 0, 18, 15, 0, 0, 0, 0, 0, + 0, 0, 14, 0, 0, 0, 17, 0, 0, 0, 14, 0, 0, 12, + 0, 0, 0, 0, 0, 0, 0, 11, 0, 9, 0, 0, 11, 20, + 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 22, 0, + 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, + 21, 0, 23, 10, 0, 0, 15, 0, 0, 0, 0, 11, 0, 16, + 0, 0, 10, 0, 22, 0, 12, 24, 0, 0, 0, 0, 0, 20, + 14, 28, 0, 0, 18, 0, 0, 0, 0, 30, 25, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 12, 42, 16, 0, 14, 0, 33, 33, + 0, 21, 0, 0, 22, 0, 26, 0, 21, 0, 30, 14, 0, 42, + 20, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 8, 0, 0, + 0, 0, 0, 0, 12, 26, 0, 0, 9, 18, 0, 0, 24, 23, + 9, 0, 0, 0, 0, 0, 15, 27, 20, 0, 0, 0, 0, 0, + 0, 14, 15, 0, 0, 0, 7, 0, 0, 17, 0, 0, 0, 0, + 12, 33, 27, 0, 3, 22, 4, 30, 0, 15, 25, 0, 0, 0, + 25, 0, 0, 0, 0, 3, 0, 4, 6, 0, 0, 0, 0, 0, + 0, 9, 0, 0, 3, 0, 0, 31, 0, 0, 0, 29, 0, 16, + 0, 6, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, + 0, 6, 0, 2, 0, 0, 11, 23, 0, 0, 0, 0, 0, 0, + 0, 8, 0, 0, 0, 30, 0, 0, 0, 0, 31, 23, 0, 0, + 0, 0, 15, 0, 20, 12, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 23, 0, 16, 0, 16, 0, 0, 0, 0, + 0, 0, 15, 0, 0, 9, 0, 0, 8, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, + 25, 0, 0, 12, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, + 29, 0, 0, 0, 3, 0, 37, 0, 18, 0, 0, 0, 0, 0, + 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 26, 0, 0, 22, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, + 0, 0, 22, 23, 0, 0, 0, 16, 32, 0, 0, 17, 0, 0, + 2, 0, 0, 28, 0, 15, 0, 15, 0, 0, 0, 15, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 9, 27, 0, 0, + 0, 24, 0, 15, 0, 25, 0, 11, 0, 15, 0, 9, 0, 0, + 16, 0, 0, 13, 0, 23, 0, 12, 0, 19, 0, 26, 0, 0, + 3, 19, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 3, 0, 4, 6, 0, 0, 0, 0, 0, 24, 0, 0, 0, + 0, 0, 0, 0, 34, 17, 0, 0, 12, 0, 0, 0, 31, 0, + 0, 0, 9, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, + 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 11, 0, + 16, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 2, + 0, 0, 0, 0, 0, 0, 15, 0, 0, 19, 15, 17, 0, 14, + 31, 0, 0, 0, 0, 14, 0, 0, 0, 0, 14, 12, 0, 0, + 35, 0, 14, 0, 11, 0, 0, 15, 29, 27, 0, 9, 0, 15, + 16, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 11, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 14, 0, 20, 16, 0, 0, 0, + 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, + 0, 0, 0, 18, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, + 0, 13, 0, 0, 0, 0, 15, 8, 0, 0, 0, 27, 0, 0, + 0, 0, 19, 0, 0, 14, 0, 0, 0, 42, 0, 0, 0, 24, + 0, 27, 0, 0, 0, 6, 0, 0, 0, 0, 0, 15, 34, 0, + 18, 0, 0, 0, 0, 0, 14, 15, 0, 0, 14, 0, 0, 0, + 0, 2, 32, 0, 0, 0, 0, 19, 0, 0, 17, 0, 0, 19, + 0, 0, 0, 21, 41, 0, 0, 33, 0, 0, 0, 8, 19, 0, + 32, 0, 0, 13, 23, 8, 0, 0, 0, 21, 0, 19, 0, 0, + 0, 0, 31, 0, 15, 0, 12, 18, 30, 15, 0, 0, 0, 15, + 0, 0, 0, 0, 22, 0, 12, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 26, 0, 0, 31, 0, 12, 0, 0, 0, 0, 0, 31, + 0, 2, 0, 0, 0, 0, 12, 0, 0, 15, 14, 0, 0, 0, + 0, 0, 11, 0, 0, 22, 14, 0, 15, 0, 0, 27, 0, 0, + 0, 39, 0, 0, 22, 31, 16, 24, 0, 0, 0, 0, 13, 0, + 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, + 0, 14, 0, 0, 0, 0, 14, 0, 28, 0, 0, 20, 14, 0, + 0, 0, 0, 0, 28, 0, 0, 0, 11, 15, 15, 0, 12, 0, + 11, 0, 0, 0, 0, 0, 0, 37, 0, 0, 15, 0, 0, 0, + 12, 0, 0, 0, 32, 15, 21, 0, 0, 0, 0, 22, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 23, 0, + 0, 0, 16, 0, 0, 0, 19, 0, 0, 0, 34, 0, 0, 0, + 0, 34, 0, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, + 0, 21, 0, 0, 0, 0, 25, 12, 12, 50, 16, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 13, 0, 0, 18, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 14, 0, 0, 0, 22, 19, 0, 0, 0, + 0, 0, 37, 0, 0, 13, 0, 0, 0, 0, 0, 13, 13, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 23, 19, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 10, 0, + 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 24, 17, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 0, 0, + 12, 25, 0, 0, 0, 19, 0, 0, 0, 32, 0, 0, 32, 25, + 0, 0, 0, 0, 0, 0, 28, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 2, 0, 0, 0, 0, 0, 13, 0, 21, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, - 25, 19, 0, 0, 8, 0, 0, 0, 22, 0, 0, 10, 11, 22, - 0, 0, 12, 11, 0, 11, 0, 0, 0, 0, 0, 0, 0, 15, - 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 28, 15, 0, 0, 0, 0, 0, 21, - 0, 0, 10, 16, 0, 0, 13, 9, 0, 18, 0, 0, 0, 0, - 0, 0, 0, 27, 0, 0, 33, 0, 0, 0, 0, 0, 0, 17, - 0, 39, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, - 0, 0, 9, 0, 0, 0, 0, 16, 0, 32, 25, 0, 0, 0, - 0, 0, 0, 10, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 38, 0, 0, 22, 0, 0, 0, 26, 0, 0, 0, 0, 0, - 0, 0, 13, 27, 25, 0, 0, 0, 10, 0, 11, 0, 0, 0, - 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 12, 0, 14, 0, 0, 0, 6, 0, 0, - 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 14, 0, 0, - 0, 33, 0, 0, 35, 0, 0, 0, 0, 0, 0, 34, 0, 0, - 0, 0, 0, 0, 0, 0, 19, 0, 0, 17, 0, 14, 0, 0, - 25, 0, 0, 16, 0, 0, 0, 14, 15, 0, 0, 0, 11, 18, - 22, 3, 0, 0, 0, 0, 0, 27, 0, 15, 0, 0, 0, 22, - 0, 0, 19, 31, 0, 0, 11, 0, 0, 8, 14, 0, 0, 0, - 0, 17, 18, 0, 0, 0, 0, 0, 0, 0, 12, 15, 0, 14, - 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, - 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, - 11, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 9, 0, 0, - 25, 0, 0, 0, 0, 0, 16, 18, 0, 0, 0, 0, 17, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, 18, 0, - 13, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 18, 0, - 14, 0, 0, 0, 0, 0, 0, 25, 0, 0, 32, 23, 0, 0, - 0, 0, 18, 0, 0, 12, 0, 0, 0, 0, 28, 0, 10, 0, - 0, 36, 48, 22, 0, 18, 0, 0, 0, 0, 23, 0, 0, 0, - 13, 9, 0, 0, 19, 0, 6, 0, 10, 0, 0, 20, 0, 0, - 11, 0, 0, 0, 10, 10, 22, 0, 0, 0, 13, 11, 0, 17, - 31, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, - 21, 0, 0, 0, 0, 15, 0, 0, 0, 23, 0, 0, 0, 0, - 16, 0, 17, 0, 0, 0, 0, 3, 0, 0, 0, 24, 0, 25, - 0, 15, 0, 12, 0, 0, 0, 0, 3, 0, 20, 0, 0, 0, - 29, 0, 0, 0, 0, 0, 0, 16, 0, 6, 0, 42, 0, 0, - 13, 0, 18, 26, 0, 0, 0, 0, 0, 0, 10, 0, 25, 0, - 0, 0, 0, 0, 0, 0, 0, 23, 11, 0, 0, 8, 0, 0, - 0, 2, 0, 2, 0, 0, 6, 0, 0, 0, 12, 0, 0, 0, - 6, 0, 0, 0, 13, 11, 0, 0, 0, 0, 0, 0, 9, 0, - 0, 0, 6, 30, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, - 0, 0, 24, 32, 0, 0, 0, 3, 35, 0, 0, 22, 0, 0, - 0, 0, 0, 18, 16, 9, 0, 0, 0, 3, 0, 23, 0, 0, - 0, 0, 0, 0, 0, 14, 0, 0, 0, 17, 0, 0, 0, 0, - 0, 0, 0, 0, 15, 0, 11, 0, 0, 0, 9, 0, 0, 0, - 0, 0, 0, 15, 0, 0, 0, 24, 0, 0, 0, 13, 0, 0, - 0, 0, 0, 0, 11, 20, 17, 11, 0, 0, 0, 0, 0, 21, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, - 0, 23, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 12, 0, 0, - 0, 0, 0, 0, 0, 18, 0, 21, 0, 0, 0, 0, 0, 0, - 19, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, - 0, 0, 0, 18, 0, 0, 0, 19, 0, 0, 0, 25, 0, 27, - 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 11, 0, 0, 0, - 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 18, 0, 11, 0, 0, 0, 0, 25, 20, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, - 0, 10, 0, 0, 17, 0, 0, 22, 0, 11, 0, 0, 28, 14, - 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 18, - 0, 0, 0, 9, 0, 0, 0, 20, 0, 15, 15, 0, 0, 15, - 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 21, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, - 15, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 47, 0, 0, - 0, 0, 0, 0, 0, 29, 0, 0, 0, 0, 0, 24, 0, 0, - 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 38, 15, 0, 0, 24, 0, 0, 24, - 0, 0, 0, 26, 0, 0, 0, 2, 0, 9, 0, 0, 0, 0, - 12, 0, 23, 0, 15, 0, 0, 0, 26, 0, 24, 0, 28, 0, - 0, 0, 0, 9, 0, 0, 0, 0, 13, 12, 12, 0, 0, 26, - 0, 0, 0, 12, 0, 27, 0, 16, 0, 0, 0, 0, 11, 10, - 0, 0, 12, 0, 17, 0, 3, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 3, 0, 0, 29, 0, 0, 28, 0, 0, 0, 28, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 11, 0, - 0, 0, 0, 21, 14, 0, 0, 0, 0, 18, 0, 14, 34, 0, - 0, 14, 0, 0, 0, 12, 0, 1, 0, 30, 0, 21, 14, 0, - 0, 0, 0, 14, 19, 0, 20, 21, 0, 20, 0, 26, 0, 0, - 24, 0, 0, 0, 16, 0, 0, 0, 0, 10, 12, 0, 0, 27, - 0, 0, 0, 0, 10, 13, 0, 0, 0, 0, 19, 0, 0, 0, - 0, 0, 0, 12, 17, 0, 0, 0, 22, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 21, 14, 0, 0, 0, 0, 0, - 0, 15, 16, 0, 0, 0, 16, 0, 0, 24, 0, 0, 0, 0, - 0, 0, 0, 20, 0, 0, 0, 21, 12, 0, 0, 15, 0, 35, - 0, 0, 25, 0, 0, 0, 0, 14, 10, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 14, 0, 3, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, - 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 28, - 33, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, - 0, 0, 11, 20, 0, 15, 0, 13, 0, 0, 14, 0, 22, 0, - 10, 0, 22, 0, 0, 0, 0, 15, 0, 18, 7, 15, 9, 22, - 0, 0, 0, 0, 0, 18, 0, 0, 13, 0, 0, 0, 15, 0, - 0, 0, 15, 0, 20, 0, 0, 32, 0, 0, 0, 0, 13, 12, - 0, 22, 0, 0, 0, 0, 0, 0, 15, 0, 31, 0, 0, 15, - 0, 0, 23, 0, 0, 0, 0, 33, 20, 0, 0, 15, 16, 0, - 0, 0, 15, 0, 0, 19, 0, 0, 0, 12, 0, 19, 0, 0, - 31, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 10, 26, 18, - 20, 16, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 30, 0, - 0, 10, 0, 0, 20, 23, 0, 0, 0, 31, 0, 0, 27, 0, - 11, 0, 21, 0, 39, 24, 0, 18, 0, 0, 22, 0, 0, 0, - 15, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, - 16, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, - 0, 16, 0, 0, 12, 0, 0, 20, 30, 0, 12, 18, 0, 0, - 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 16, 29, - 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, - 0, 0, 13, 24, 30, 0, 16, 12, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 15, 18, 14, 0, 0, 16, 14, - 0, 11, 0, 0, 0, 0, 0, 0, 23, 18, 16, 0, 0, 0, - 12, 0, 0, 0, 0, 14, 0, 17, 3, 0, 0, 0, 23, 2, - 13, 0, 23, 0, 0, 0, 0, 0, 23, 0, 24, 0, 0, 29, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, 37, - 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, - 0, 12, 0, 0, 13, 0, 0, 0, 16, 0, 0, 0, 0, 0, - 0, 34, 0, 0, 0, 0, 0, 0, 0, 21, 21, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 13, 6, 0, 17, 12, 0, - 23, 0, 0, 0, 0, 0, 0, 18, 21, 0, 0, 22, 0, 0, - 14, 0, 27, 0, 25, 0, 0, 0, 0, 10, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 24, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, - 0, 19, 0, 0, 0, 13, 27, 0, 13, 0, 7, 0, 0, 31, - 22, 18, 0, 0, 0, 1, 0, 0, 0, 13, 9, 0, 22, 0, - 0, 0, 0, 0, 0, 30, 5, 0, 0, 0, 0, 13, 0, 0, - 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, - 0, 0, 31, 0, 23, 16, 21, 0, 12, 0, 0, 0, 0, 0, - 0, 25, 22, 0, 0, 0, 0, 0, 0, 12, 0, 24, 11, 0, - 0, 14, 33, 0, 0, 12, 0, 15, 0, 0, 0, 11, 15, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, - 0, 0, 0, 34, 0, 0, 0, 0, 0, 14, 0, 0, 29, 0, - 0, 0, 0, 31, 0, 0, 0, 11, 3, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 3, 0, 0, 29, 0, 0, 0, 0, 0, 0, - 0, 6, 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 2, 33, - 33, 0, 0, 0, 15, 0, 15, 4, 37, 19, 0, 0, 0, 0, - 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 6, 0, 16, 0, 0, 0, 0, 30, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, - 0, 24, 0, 0, 26, 8, 0, 0, 0, 0, 20, 0, 0, 0, - 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 42, 0, - 0, 0, 0, 0, 0, 9, 0, 0, 0, 32, 0, 11, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 13, 0, 0, - 0, 0, 14, 0, 18, 0, 6, 0, 0, 0, 15, 7, 4, 0, - 0, 0, 0, 0, 23, 0, 0, 30, 0, 35, 16, 0, 0, 0, - 0, 0, 13, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, - 11, 22, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, - 21, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, - 16, 0, 0, 12, 0, 0, 9, 28, 8, 0, 0, 0, 0, 0, - 13, 0, 0, 0, 0, 0, 16, 0, 0, 0, 9, 0, 23, 0, - 0, 0, 15, 0, 0, 0, 18, 22, 0, 25, 18, 0, 0, 0, - 0, 0, 34, 0, 0, 0, 0, 0, 12, 12, 41, 15, 0, 0, - 14, 0, 0, 7, 0, 0, 21, 0, 0, 0, 7, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 29, - 0, 24, 0, 0, 0, 13, 0, 0, 0, 24, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 13, 0, 0, 10, 14, 0, 0, 0, - 0, 0, 0, 10, 14, 0, 0, 0, 0, 15, 0, 0, 0, 0, - 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 14, 0, - 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 25, 0, 0, - 14, 17, 0, 0, 0, 0, 14, 34, 15, 0, 0, 0, 0, 0, - 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 4, 0, 22, - 0, 27, 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 20, 0, 0, 17, 0, 12, 0, 0, 16, 9, 0, 9, 15, - 0, 0, 0, 0, 0, 8, 0, 12, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 11, 31, 0, 14, 23, 15, 17, 0, 0, 0, 50, - 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 14, 24, 0, 0, - 13, 32, 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 3, 0, 4, 8, 0, 0, 0, 14, 0, - 0, 0, 25, 0, 0, 0, 3, 0, 4, 6, 0, 0, 0, 0, - 0, 0, 15, 4, 0, 0, 0, 0, 0, 11, 0, 0, 3, 0, - 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 22, 12, 0, - 14, 0, 0, 0, 0, 0, 18, 0, 0, 26, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 11, 0, 9, 0, - 0, 0, 0, 0, 18, 0, 0, 0, 29, 0, 0, 0, 0, 0, - 0, 0, 15, 0, 0, 11, 13, 0, 0, 0, 0, 0, 17, 0, - 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 16, 0, 0, - 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 26, 0, 0, 9, - 0, 0, 0, 0, 0, 15, 15, 0, 0, 0, 0, 0, 0, 0, - 0, 33, 0, 16, 0, 15, 0, 0, 0, 0, 0, 0, 0, 29, - 0, 31, 18, 0, 0, 0, 0, 30, 0, 0, 0, 0, 14, 0, - 20, 22, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 22, 0, 0, 16, 0, 0, 0, 19, 0, 0, 42, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, - 0, 0, 0, 16, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 24, 0, 14, 22, 0, 0, 0, 0, 0, 0, 0, - 0, 15, 0, 0, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, - 0, 19, 16, 0, 0, 0, 19, 0, 19, 0, 0, 0, 0, 0, - 0, 31, 0, 12, 0, 0, 12, 0, 0, 0, 0, 0, 0, 16, - 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 13, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 22, 15, 0, 0, 0, 0, 0, 0, - 0, 0, 12, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 21, - 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, - 0, 0, 0, 32, 0, 30, 11, 0, 0, 12, 0, 0, 0, 0, - 0, 0, 16, 0, 0, 8, 0, 0, 0, 0, 0, 0, 28, 0, - 12, 0, 0, 0, 0, 0, 0, 0, 19, 16, 0, 0, 0, 0, - 0, 0, 0, 0, 31, 32, 20, 0, 0, 11, 0, 0, 0, 0, - 0, 0, 0, 0, 14, 0, 15, 41, 0, 0, 13, 27, 0, 32, - 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, - 0, 0, 0, 0, 0, 2, 17, 15, 0, 0, 14, 0, 0, 0, - 0, 0, 0, 15, 0, 0, 0, 0, 23, 15, 18, 0, 0, 0, - 15, 0, 25, 0, 0, 0, 15, 0, 14, 0, 0, 0, 0, 0, - 3, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 6, 0, 0, - 0, 0, 17, 0, 0, 0, 28, 0, 0, 17, 0, 25, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 32, 12, 0, 32, 0, 0, - 15, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 15, 0, 0, 16, 0, 0, 0, 0, 0, - 3, 0, 0, 15, 0, 0, 11, 16, 0, 37, 0, 6, 0, 0, - 0, 0, 0, 0, 0, 19, 18, 0, 2, 0, 0, 0, 0, 0, - 0, 35, 0, 0, 25, 19, 0, 0, 0, 0, 0, 28, 21, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, - 0, 0, 0, 34, 0, 0, 0, 0, 0, 15, 0, 8, 0, 0, - 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 25, 14, 0, - 18, 14, 0, 27, 0, 0, 0, 37, 0, 14, 29, 24, 0, 0, - 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, - 14, 9, 0, 21, 0, 0, 0, 18, 0, 0, 11, 0, 0, 20, - 0, 0, 0, 0, 0, 32, 19, 0, 12, 0, 0, 0, 0, 32, - 0, 0, 0, 0, 0, 26, 20, 0, 28, 0, 0, 0, 0, 0, - 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 35, 15, 9, 0, 0, 0, 0, 0, 0, 0, - 0, 13, 0, 0, 0, 20, 28, 0, 0, 0, 0, 22, 0, 27, - 0, 0, 0, 0, 0, 16, 15, 0, 12, 0, 0, 11, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 13, - 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, - 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 25, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, + 0, 0, 8, 0, 0, 22, 0, 0, 0, 0, 14, 14, 12, 19, + 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 16, 0, 30, 16, 0, 0, 0, 13, 35, + 0, 0, 0, 0, 15, 0, 15, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, - 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 9, 14, 0, 0, 0, 0, 0, 0, 0, 21, - 35, 13, 0, 0, 0, 0, 0, 17, 0, 0, 29, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, - 0, 0, 0, 0, 0, 25, 0, 25, 13, 25, 22, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, - 0, 12, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 24, 0, 0, 0, 0, 30, 0, 28, 0, 0, - 0, 35, 0, 0, 0, 13, 0, 10, 0, 0, 37, 0, 6, 13, - 0, 0, 0, 13, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, - 24, 0, 0, 24, 31, 0, 0, 2, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 25, - 0, 0, 23, 23, 0, 0, 0, 0, 0, 18, 22, 0, 0, 0, - 0, 0, 20, 0, 0, 11, 12, 8, 30, 0, 0, 18, 0, 0, - 0, 3, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 3, 14, 4, 6, 0, 0, 0, 0, 15, 2, 15, 0, - 19, 0, 15, 0, 18, 0, 12, 0, 0, 0, 9, 0, 0, 0, - 0, 0, 0, 2, 0, 0, 0, 0, 24, 0, 0, 0, 0, 19, - 31, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 3, 0, 14, 8, 0, 0, 0, 18, 16, 0, 18, 22, - 0, 15, 0, 0, 0, 18, 18, 0, 0, 0, 14, 0, 15, 0, - 0, 0, 28, 0, 0, 0, 32, 0, 14, 0, 0, 0, 7, 23, - 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, - 35, 0, 0, 0, 0, 19, 0, 0, 10, 0, 0, 14, 0, 10, - 0, 0, 0, 0, 0, 0, 40, 0, 16, 24, 0, 0, 0, 8, - 0, 15, 0, 25, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, - 0, 0, 0, 0, 27, 0, 24, 15, 14, 17, 0, 0, 0, 0, - 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, - 22, 0, 0, 0, 18, 19, 0, 16, 0, 0, 0, 27, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 37, 0, 0, 0, 0, 0, 18, 10, 0, 14, 0, 0, 0, 0, - 0, 0, 0, 8, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, - 0, 0, 13, 0, 0, 0, 15, 0, 0, 0, 18, 0, 0, 0, - 28, 0, 0, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, - 24, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 15, - 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 11, 0, 0, - 0, 0, 20, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, - 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 28, 0, 9, - 0, 0, 0, 2, 0, 0, 22, 0, 0, 0, 0, 0, 0, 6, - 0, 0, 38, 13, 0, 6, 32, 18, 0, 0, 0, 12, 0, 15, - 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 22, 0, 0, 0, - 0, 0, 20, 0, 0, 0, 37, 0, 23, 0, 0, 0, 0, 0, - 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 12, 16, 36, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 35, 0, 0, 0, 0, 30, 0, 0, 0, 25, - 17, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, - 0, 20, 15, 0, 34, 0, 0, 0, 0, 0, 0, 0, 28, 24, - 0, 28, 0, 19, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, - 14, 0, 0, 0, 0, 16, 0, 0, 0, 0, 7, 0, 0, 14, - 0, 15, 0, 0, 25, 0, 0, 31, 0, 0, 0, 0, 13, 0, - 26, 18, 15, 0, 0, 0, 11, 12, 0, 0, 0, 0, 0, 0, - 0, 18, 0, 31, 0, 6, 0, 0, 0, 0, 0, 0, 29, 15, - 0, 0, 0, 0, 0, 31, 0, 0, 0, 30, 0, 0, 29, 0, - 0, 0, 15, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 19, 0, 0, 0, 0, 0, 0, 20, 30, 18, 0, 31, 0, - 0, 34, 22, 0, 0, 29, 0, 0, 24, 21, 0, 0, 0, 24, - 0, 15, 0, 0, 22, 3, 0, 28, 0, 0, 32, 26, 0, 0, - 0, 12, 26, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 0, 0, - 23, 0, 0, 73, 74, 0, 0, 37, 25, 0, 0, 0, 0, 38, - 0, 0, 0, 10, 0, 0, 0, 26, 0, 0, 0, 0, 0, 12, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 28, 0, 0, 24, 29, 11, 0, 29, 0, 0, 0, 0, - 0, 0, 0, 29, 0, 21, 0, 0, 0, 15, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 14, 0, 0, 31, 0, 0, 0, 0, 25, - 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 30, 0, 0, 24, 0, 0, 14, 0, 43, 0, 0, + 0, 0, 0, 16, 20, 0, 0, 0, 0, 0, 0, 15, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, + 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, + 15, 0, 0, 15, 0, 0, 0, 0, 15, 14, 0, 0, 0, 0, + 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, + 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 8, + 0, 0, 15, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 15, 0, 0, 0, 0, 0, 9, 20, 0, 0, 17, 18, 0, + 27, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, + 0, 0, 0, 23, 25, 0, 0, 0, 16, 0, 19, 0, 0, 2, + 27, 0, 0, 0, 0, 32, 0, 16, 0, 0, 0, 14, 0, 0, + 0, 0, 6, 0, 32, 14, 24, 0, 14, 0, 0, 28, 0, 0, + 0, 0, 14, 0, 0, 15, 14, 0, 0, 0, 0, 0, 13, 15, + 0, 0, 0, 0, 11, 31, 0, 0, 31, 19, 0, 0, 0, 0, + 0, 15, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 16, 0, + 0, 0, 0, 0, 23, 12, 0, 0, 0, 11, 0, 0, 20, 0, + 18, 20, 22, 18, 0, 0, 17, 0, 0, 23, 25, 18, 0, 0, + 0, 0, 0, 24, 22, 0, 0, 0, 12, 19, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 16, 26, 0, 0, 0, 0, 0, 0, 0, + 0, 17, 0, 0, 0, 29, 0, 0, 0, 0, 15, 13, 0, 0, + 0, 0, 0, 13, 0, 0, 0, 0, 22, 0, 0, 25, 0, 20, + 29, 17, 22, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 8, + 17, 25, 0, 0, 0, 24, 6, 0, 0, 0, 0, 0, 0, 19, + 0, 31, 7, 0, 0, 0, 31, 0, 34, 0, 0, 0, 0, 0, + 0, 28, 0, 0, 25, 0, 0, 33, 0, 0, 0, 0, 0, 0, + 37, 0, 0, 0, 0, 0, 0, 11, 25, 0, 0, 0, 0, 0, + 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, + 0, 13, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 28, 2, + 0, 18, 0, 0, 0, 0, 0, 0, 0, 19, 22, 0, 0, 0, + 0, 0, 11, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 17, 0, 11, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, + 0, 0, 25, 15, 0, 0, 28, 0, 0, 0, 0, 0, 0, 28, + 0, 0, 11, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 19, + 0, 0, 14, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, - 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 19, - 21, 0, 0, 0, 0, 0, 11, 0, 28, 0, 10, 0, 0, 26, - 17, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 35, 0, 24, 0, 0, 0, 23, 0, - 0, 0, 0, 20, 0, 0, 0, 29, 23, 0, 19, 0, 0, 0, - 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 12, - 0, 0, 11, 0, 0, 0, 0, 28, 0, 0, 0, 0, 17, 0, - 22, 13, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, - 0, 0, 0, 0, 13, 0, 0, 22, 0, 0, 0, 0, 22, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 27, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 25, 0, 0, - 0, 43, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 24, 0, - 14, 13, 0, 35, 36, 0, 0, 0, 0, 0, 0, 0, 0, 23, - 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 14, - 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 16, 23, 0, 0, - 0, 19, 0, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 33, 0, - 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 29, 16, 0, 14, + 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 28, 0, 73, 74, 0, 0, 20, 0, + 18, 0, 0, 18, 0, 0, 24, 0, 0, 0, 0, 35, 0, 0, + 0, 0, 0, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, + 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 13, + 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 13, 0, 0, + 0, 0, 0, 0, 12, 0, 30, 0, 0, 0, 0, 0, 15, 0, + 0, 0, 11, 0, 15, 0, 0, 0, 8, 0, 15, 0, 12, 0, + 0, 0, 0, 13, 0, 0, 14, 0, 0, 0, 0, 0, 34, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, + 0, 0, 0, 0, 0, 0, 14, 0, 12, 14, 0, 0, 0, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 14, 0, 0, 0, 0, 26, + 14, 18, 0, 31, 18, 20, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 20, 0, 2, 25, 0, 8, 0, + 24, 15, 0, 15, 18, 0, 12, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 36, 15, 0, 0, 15, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 15, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 28, 0, + 32, 0, 0, 0, 0, 21, 30, 0, 21, 0, 0, 0, 37, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 18, 0, 0, 0, 28, 0, 0, 0, 0, 0, + 14, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 35, 0, 0, 0, 0, 15, 0, 0, 17, 0, 0, 17, 0, 0, + 0, 0, 0, 11, 0, 0, 0, 0, 0, 15, 0, 0, 29, 0, + 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 15, 26, 0, + 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 30, 10, 0, 30, + 0, 23, 27, 0, 11, 0, 0, 27, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 18, 0, 0, 21, 30, 0, 0, 10, 11, 0, 0, + 0, 0, 0, 0, 30, 0, 18, 0, 0, 18, 18, 0, 14, 18, + 0, 0, 0, 5, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 12, 16, 17, 0, 0, 12, 31, 0, 14, 0, 0, 43, + 0, 0, 0, 0, 0, 0, 24, 0, 0, 14, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, + 16, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, + 0, 32, 0, 11, 0, 0, 0, 0, 30, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 11, 0, 23, + 0, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 21, 0, 0, 13, 3, 0, 0, 16, 0, 23, 0, 24, 0, 0, + 0, 0, 0, 0, 23, 27, 0, 18, 0, 0, 0, 18, 34, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 29, 0, 0, 9, 15, 30, 23, 0, 0, 0, 0, - 0, 0, 34, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 5, - 0, 0, 0, 34, 0, 0, 0, 0, 0, 10, 0, 0, 0, 15, - 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 29, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, - 0, 11, 26, 0, 0, 0, 0, 14, 0, 10, 21, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, - 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 29, 35, 15, 0, - 0, 0, 0, 21, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 24, 0, - 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 14, 0, 0, 0, 10, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 16, 0, 32, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, - 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 30, 0, 0, 21, - 0, 0, 0, 0, 2, 0, 28, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 17, 0, 0, 0, 21, 0, 0, 0, 0, 0, 17, 0, - 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 17, 0, 0, 23, - 0, 15, 0, 27, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, - 0, 16, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 2, - 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 20, 2, 0, 0, 0, 15, 72, 0, 22, 0, - 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 19, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, - 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 28, 16, 0, - 0, 0, 0, 0, 15, 0, 26, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, - 0, 0, 13, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 10, 0, 0, 0, 44, 0, 22, 0, 0, 11, 0, 30, - 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, - 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 17, 0, 0, - 0, 0, 0, 16, 0, 0, 0, 13, 0, 0, 0, 0, 22, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, + 0, 19, 0, 0, 0, 0, 0, 15, 0, 0, 0, 15, 0, 18, + 0, 0, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 29, + 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 18, + 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 33, 0, 0, 35, + 0, 0, 15, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, + 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 16, 0, 0, 19, 0, 0, 0, 0, 0, - 14, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, - 0, 14, 0, 0, 13, 0, 0, 14, 0, 0, 0, 6, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, - 0, 9, 0, 27, 34, 0, 0, 0, 0, 0, 0, 7, 0, 0, - 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, - 0, 0, 13, 0, 29, 0, 25, 0, 0, 0, 38, 0, 0, 23, - 0, 14, 0, 0, 0, 24, 0, 0, 0, 25, 0, 0, 0, 0, - 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 24, 18, 0, 0, 0, 0, 30, - 36, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 16, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 27, - 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 12, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 23, 0, - 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, - 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 36, 0, 0, 0, - 0, 0, 0, 0, 0, 23, 0, 8, 0, 0, 0, 0, 0, 0, - 0, 19, 0, 12, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, - 0, 0, 24, 0, 0, 0, 0, 0, 0, 5, 30, 0, 0, 0, - 0, 0, 16, 0, 0, 0, 21, 0, 0, 10, 0, 27, 29, 0, - 0, 24, 0, 0, 0, 23, 26, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 14, 0, 0, 15, 0, 0, 0, 0, 0, - 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, - 17, 0, 0, 0, 24, 23, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 10, 0, 0, 15, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, - 0, 0, 0, 0, 0, 22, 0, 23, 0, 0, 0, 0, 22, 0, - 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 10, 0, 0, 0, 0, 0, 0, 0, 23, 22, 0, 27, 22, + 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 24, + 14, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 17, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 19, + 0, 0, 0, 18, 35, 24, 0, 0, 0, 0, 0, 0, 22, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 29, 0, 0, 29, 0, 0, 0, 0, 0, 9, + 0, 29, 0, 0, 0, 23, 11, 0, 22, 0, 0, 30, 0, 24, + 0, 0, 0, 0, 0, 25, 0, 0, 0, 18, 0, 0, 0, 18, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, + 0, 0, 0, 33, 0, 9, 0, 0, 0, 0, 0, 0, 21, 0, + 0, 0, 0, 0, 0, 14, 0, 10, 0, 0, 0, 22, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, + 0, 14, 0, 2, 15, 0, 0, 0, 0, 0, 15, 0, 0, 0, + 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 24, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 29, 0, + 0, 29, 0, 0, 0, 0, 0, 0, 0, 23, 38, 13, 31, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 17, 0, 43, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, - 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, - 0, 0, 0, 0, 0, 0, 17, 0, 24, 0, 0, 0, 0, 0, - 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, - 0, 0, 0, 21, 0, 0, 22, 0, 31, 0, 0, 0, 0, 0, - 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 14, 0, 0, 10, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 29, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 27, 0, 0, 6, 0, 0, 42, 0, 0, 0, - 0, 0, 0, 0, 35, 0, 0, 0, 0, 38, 30, 0, 0, 0, - 0, 28, 0, 0, 0, 0, 0, 0, 19, 8, 26, 0, 11, 0, - 0, 0, 33, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 28, 0, 0, 0, 28, 2, 28, 2, 0, 0, 0, 10, 0, 0, + 0, 0, 33, 0, 0, 0, 0, 22, 0, 0, 0, 0, 32, 0, + 38, 0, 29, 0, 22, 0, 0, 0, 0, 0, 0, 32, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 29, 0, 0, 0, 0, 0, 27, 0, 0, - 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 0, - 0, 0, 0, 0, 0, 0, 31, 0, 4, 18, 37, 0, 0, 0, - 35, 36, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, - 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 13, - 0, 0, 18, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, - 14, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 16, 29, 33, 4, 13, 0, 0, 0, 0, 0, 0, - 15, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, - 0, 0, 0, 0, 0, 0, 23, 28, 0, 0, 0, 0, 0, 0, - 19, 8, 11, 0, 6, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 19, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, - 0, 22, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, - 0, 0, 0, 22, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, 22, 0, 0, 0, - 0, 0, 22, 36, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 18, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 7, - 0, 0, 0, 0, 13, 6, 0, 0, 0, 0, 0, 22, 0, 0, - 0, 0, 25, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 29, + 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, + 0, 16, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 22, + 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 20, 16, 0, 0, 0, 0, + 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 23, 0, 20, 0, + 17, 0, 0, 0, 0, 0, 0, 29, 0, 24, 30, 0, 0, 0, + 0, 24, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, + 19, 0, 26, 0, 0, 0, 19, 0, 0, 15, 0, 0, 0, 0, + 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 23, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 30, 14, 0, 10, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 27, 0, 0, 27, + 0, 16, 0, 0, 0, 0, 0, 14, 0, 30, 0, 14, 0, 0, + 0, 14, 36, 0, 6, 0, 0, 0, 0, 0, 14, 0, 0, 0, + 0, 0, 28, 22, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, + 0, 29, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 12, 0, 0, 0, 0, 36, 0, 0, 36, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 22, 0, + 24, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, + 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 27, 0, 0, + 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, + 0, 0, 19, 0, 0, 0, 0, 0, 36, 0, 7, 0, 0, 0, + 0, 0, 0, 0, 0, 2, 23, 0, 0, 0, 0, 0, 23, 0, + 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, - 0, 35, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 25, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, - 24, 0, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 28, 8, 16, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, - 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, - 24, 0, 0, 0, 0, 35, 29, 0, 0, 0, 0, 29, 0, 0, - 0, 14, 0, 0, 0, 0, 0, 0, 11, 20, 0, 0, 0, 0, - 0, 0, 0, 9, 29, 0, 0, 27, 0, 0, 0, 0, 35, 0, - 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, - 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 15, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 23, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, - 0, 23, 27, 0, 0, 0, 23, 6, 0, 0, 30, 0, 0, 0, - 0, 14, 0, 7, 15, 14, 14, 0, 0, 0, 0, 31, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 23, 0, - 0, 0, 0, 0, 28, 0, 0, 0, 0, 16, 0, 0, 0, 0, - 0, 22, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, - 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 30, 14, 0, 0, 0, 0, 15, 0, 0, 13, 36, 0, 29, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 16, 11, 0, 0, 0, 0, 0, - 0, 0, 0, 34, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 35, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, + 18, 0, 28, 18, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 18, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, + 22, 14, 11, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, + 0, 11, 0, 13, 0, 0, 0, 0, 0, 0, 0, 9, 13, 0, + 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 24, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 22, 27, + 24, 0, 11, 0, 13, 0, 0, 0, 0, 0, 0, 0, 44, 0, + 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 34, 0, + 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, + 4, 0, 15, 0, 0, 0, 11, 26, 0, 0, 0, 6, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 17, 0, 0, 0, + 0, 18, 0, 0, 11, 0, 0, 0, 0, 0, 36, 0, 0, 0, + 0, 10, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, + 0, 15, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 4, 0, + 0, 0, 0, 0, 16, 0, 29, 7, 0, 27, 0, 0, 0, 7, + 27, 21, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 26, + 0, 0, 0, 0, 12, 0, 0, 0, 23, 0, 0, 16, 0, 0, + 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 16, 27, + 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 6, 0, 0, 0, + 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, + 19, 0, 0, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 20, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 16, 0, 0, + 0, 0, 0, 0, 0, 0, 22, 0, 0, 22, 0, 0, 0, 0, + 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 21, 0, 19, 0, 0, 0, 0, 14, + 0, 0, 18, 0, 0, 21, 35, 0, 0, 35, 14, 0, 0, 0, + 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 18, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 16, 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, - 21, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 7, 0, 0, 0, 14, 0, 0, 0, 0, - 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 15, 16, 0, 0, 0, 13, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 24, 0, 22, 0, 0, 9, 0, 7, 0, + 0, 0, 9, 0, 0, 0, 24, 0, 0, 0, 24, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, - 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 17, 17, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, - 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, + 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 20, 0, + 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 28, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 27, 0, 0, 0, 0, 27, 0, 0, 0, 0, - 16, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, - 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 18, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, + 0, 0, 0, 0, 0, 0, 24, 0, 6, 30, 0, 0, 0, 0, + 0, 0, 0, 13, 0, 0, 0, 0, 0, 36, 0, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 8, 0, 27, - 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 24, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 32, 0, - 0, 0, 0, 0, 0, 10, 0, 0, 17, 0, 24, 0, 0, 0, - 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 19, 8, 0, 0, - 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 31, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, + 0, 0, 0, 15, 0, 0, 0, 43, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 16, 0, 15, 0, 27, 0, 0, 0, 23, 0, + 0, 11, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, + 0, 0, 0, 0, 30, 0, 0, 30, 3, 0, 0, 29, 22, 0, + 0, 22, 22, 0, 0, 22, 0, 0, 0, 6, 0, 0, 0, 0, + 0, 0, 0, 0, 12, 0, 0, 0, 0, 35, 0, 0, 0, 0, + 0, 0, 0, 0, 37, 24, 0, 0, 0, 0, 0, 24, 0, 0, + 0, 38, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 16, 0, + 0, 11, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 0, + 0, 0, 0, 29, 0, 0, 0, 42, 2, 0, 0, 0, 0, 31, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 14, 0, 0, 16, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 15, 0, 0, + 0, 0, 0, 0, 0, 30, 0, 0, 16, 0, 0, 0, 0, 22, + 0, 0, 0, 22, 0, 27, 29, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 16, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, + 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, + 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 25, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 16, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, + 24, 0, 0, 0, 0, 0, 0, 0, 28, 0, 8, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, + 33, 0, 0, 0, 2, 0, 0, 0, 24, 0, 0, 0, 0, 0, + 29, 0, 0, 0, 0, 0, 16, 30, 28, 0, 0, 0, 0, 0, + 28, 22, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 22, 0, 0, 7, 0, 0, 37, 0, 0, 0, 0, + 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 15, + 0, 2, 0, 0, 0, 15, 0, 0, 6, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, + 0, 0, 23, 0, 0, 0, 0, 0, 13, 0, 0, 0, 33, 0, + 0, 0, 16, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, + 0, 0, 9, 2, 0, 0, 0, 29, 25, 0, 0, 0, 0, 0, + 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, + 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, + 0, 33, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 18, 0, 0, 0, 29, 0, 0, 28, 0, 0, 0, + 0, 0, 0, 0, 0, 3, 0, 0, 0, 23, 0, 0, 0, 0, + 0, 0, 23, 0, 0, 0, 0, 21, 24, 28, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 33, 0, 0, 0, 0, 28, 0, 0, 0, + 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, + 22, 15, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 0, + 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, + 0, 0, 0, 13, 25, 0, 0, 25, 0, 0, 25, 24, 0, 25, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, + 39, 0, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 15, 0, + 0, 0, 0, 15, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 24, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 16, 0, 0, 0, + 15, 0, 0, 0, 0, 25, 0, 11, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 14, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 15, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 20, 14, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, + 0, 0, 8, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, + 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, + 0, 0, 0, 0, 0, 0, 25, 0, 0, 25, 0, 0, 0, 0, + 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, + 16, 0, 0, 0, 0, 0, 22, 0, 0, 22, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, + 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, - 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, - 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, - 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 15, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, - 0, 0, 0, 0, 28, 26, 0, 0, 0, 0, 0, 0, 13, 0, - 0, 0, 0, 16, 0, 0, 0, 17, 0, 0, 0, 0, 7, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, - 0, 0, 0, 16, 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 7, 0, 25, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 8, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, - 0, 0, 0, 15, 0, 2, 0, 43, 0, 0, 30, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 21, 0, + 0, 23, 0, 0, 0, 15, 11, 25, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, - 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 2, 19, + 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, - 29, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 0, 0, + 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 25, 19, 0, 26, 0, 0, - 0, 14, 0, 33, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 22, - 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 25, - 22, 0, 16, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 16, 0, 0, 0, 11, 0, 0, 0, 0, - 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 20, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 24, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, - 13, 16, 0, 0, 0, 0, 0, 0, 0, 25, 22, 0, 0, 0, - 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 17, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, - 18, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, - 0, 0, 16, 0, 0, 25, 0, 37, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 26, - 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 35, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 18, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 17, 0, 0, 0, - 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 17, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, + 0, 0, 25, 0, 0, 14, 0, 17, 0, 25, 0, 0, 0, 0, + 0, 22, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 32, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, + 0, 0, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 17, 70, 0, 6, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, + 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 25, 0, 0, 25, + 28, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, + 13, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 25, 0, 0, - 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, + 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 26, 32, 0, 24, 28, 0, 26, 0, 0, 0, 0, 0, + 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 20, + 0, 0, 21, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, + 15, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 25, 0, 0, + 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, + 0, 17, 17, 0, 21, 17, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, + 0, 14, 14, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, - 0, 22, 0, 0, 16, 0, 0, 0, 31, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 40, 0, 0, - 0, 0, 0, 15, 15, 0, 0, 0, 22, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 4, 0, - 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, - 0, 19, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 26, 0, + 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 27, 0, + 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 17, + 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, - 17, 0, 0, 25, 0, 0, 0, 0, 29, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, - 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 12, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, + 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 25, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 70, 0, 15, 0, 0, + 0, 0, 0, 14, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, - 15, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 17, 0, 0, 0, 14, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, + 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 21, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 14, 14, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 25, 0, 0, 0, 0, 0, 15, 0, 0, 22, 0, 0, 0, + 0, 0, 0, 0, 17, 0, 31, 17, 0, 0, 0, 0, 0, 0, + 0, 0, 29, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 13, 14, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, - 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 13, 0, 0, 15, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, + 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 17, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 14, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 35, 0, 0, 0, + 31, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 32, 0, 0, 32, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 31, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 37, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, + 0, 0, 31, 0, 0, 0, 7, 0, 0, 0, 17, 0, 7, 17, + 17, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, + 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, + 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, + 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, + 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 17, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 20, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 17, + 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 15, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 15, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, - 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, - 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 24, 0, 0, - 16, 0, 0, 0, 14, 0, 15, 0, 0, 0, 0, 0, 0, 0, + 7, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, - 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, - 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, - 0, 2, 37, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 17, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 13, - 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 3, 0, 14, - 0, 0, 7, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, - 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, + 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 15, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, + 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, + 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 28, 0, 15, 0, 0, 0, 0, - 0, 0, 6, 0, 0, 0, 25, 0, 34, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, + 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, + 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 15, 2, 0, 0, 0, 0, 14, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, + 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 17, 0, 0, 17, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 34, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, + 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, + 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 17, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 20, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 6, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 17, 13, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 16, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 28, + 0, 0, 28, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, + 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, 28, 0, 0, + 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 28, 0, + 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 14, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 14, 0, 15, 23, 0, 0, 0, 0, + 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, - 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 6, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 0, - 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 6, 14, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 17, 0, + 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 28, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, + 0, 0, 36, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, + 30, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 34, 0, + 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 34, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 36, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, + 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 15, 0, 0, + 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, + 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, + 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 17, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 17, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, - 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, - 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, + 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 7, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, + 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 25, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, - 27, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1288,7 +1250,10 @@ static const unsigned char lengthtable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, + 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1296,65 +1261,71 @@ static const unsigned char lengthtable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, + 0, 0, 21, 0, 0, 15, 0, 27, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, + 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, + 0, 0, 0, 26, 0, 17, 0, 0, 17, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 15, 0, 0, + 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1365,22 +1336,143 @@ static const unsigned char lengthtable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1390,18 +1482,49 @@ static const unsigned char lengthtable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1410,20 +1533,50 @@ static const unsigned char lengthtable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 36, 0, 0, 36, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1437,8 +1590,8 @@ static const unsigned char lengthtable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1451,12 +1604,9 @@ static const unsigned char lengthtable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, - 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1472,7 +1622,9 @@ static const unsigned char lengthtable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1487,6 +1639,7 @@ static const unsigned char lengthtable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1503,14 +1656,11 @@ static const unsigned char lengthtable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1544,7 +1694,6 @@ static const unsigned char lengthtable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1571,20 +1720,17 @@ static const unsigned char lengthtable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1599,7 +1745,6 @@ static const unsigned char lengthtable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1613,14 +1758,13 @@ static const unsigned char lengthtable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 17, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1643,6 +1787,7 @@ static const unsigned char lengthtable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1708,7 +1853,6 @@ static const unsigned char lengthtable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1718,6 +1862,7 @@ static const unsigned char lengthtable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1732,11 +1877,11 @@ static const unsigned char lengthtable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1748,6 +1893,7 @@ static const unsigned char lengthtable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1793,12 +1939,14 @@ static const unsigned char lengthtable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1890,6 +2038,7 @@ static const unsigned char lengthtable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1936,13 +2085,13 @@ static const unsigned char lengthtable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1978,7 +2127,6 @@ static const unsigned char lengthtable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -2000,7 +2148,6 @@ static const unsigned char lengthtable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -2140,7 +2287,6 @@ static const unsigned char lengthtable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -2179,7 +2325,6 @@ static const unsigned char lengthtable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -2197,6 +2342,7 @@ static const unsigned char lengthtable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -2295,7 +2441,6 @@ static const unsigned char lengthtable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -2479,4589 +2624,5174 @@ static const unsigned char lengthtable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31 - }; - -static const struct grib_keys_hash wordlist[] = - { - {""}, {""}, {""}, - {"n",1334}, - {""}, - {"nd",1344}, - {"ed",725}, - {"nnn",1348}, - {"td",2174}, - {"t",2163}, - {""}, - {"nt",1362}, - {"sd",1946}, - {"na",1337}, - {""}, - {"m",1213}, - {""}, - {"dy",715}, - {"date",646}, - {""}, - {"year",2423}, - {"name",1338}, - {"min",1295}, - {"day",658}, - {"data",627}, - {""}, {""}, - {"ident",961}, - {"one",1535}, - {"time",2200}, - {""}, {""}, {""}, - {"mars",1216}, - {""}, {""}, - {"names",1343}, - {""}, {""}, {""}, - {"stream",2135}, - {"sort",2080}, - {""}, - {"enorm",767}, - {""}, {""}, - {"metadata",1291}, - {""}, - {"type",2246}, - {"system",2161}, - {"eps",772}, - {"domain",708}, - {"spare",2097}, - {""}, {""}, {""}, - {"edition",726}, - {"oper",1547}, - {"present",1698}, - {"param",1646}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"parameter",1652}, - {"iteration",1035}, - {""}, - {"assertion",317}, - {"dimension",691}, - {""}, - {"centre",401}, - {""}, {""}, {""}, - {"step",2124}, - {""}, - {"true",2235}, - {""}, {""}, {""}, - {"parameters",1660}, - {"core",602}, - {"timerepres",2214}, - {"opttime",1554}, - {"points",1686}, - {"J",93}, - {""}, - {"rectime",1785}, - {""}, {""}, - {"yFirst",2421}, - {"second",1947}, - {""}, {""}, - {"const",575}, - {"minute",1297}, - {"restricted",1826}, - {"dummy",710}, - {"stepZero",2134}, - {"units",2295}, - {"Xo",270}, - {""}, - {"radius",1760}, - {""}, {""}, - {"section",1971}, - {"status",2123}, - {""}, - {"partitions",1665}, - {""}, - {"leadtime",1099}, - {"direction",694}, - {""}, {""}, - {"radials",1759}, - {"instrument",992}, - {""}, {""}, - {"Xp",271}, - {"minimum",1296}, - {""}, {""}, {""}, - {"three",2187}, - {"dateTime",656}, - {""}, - {"hdate",933}, - {"dataTime",642}, - {"landtype",1056}, - {""}, {""}, - {"statistics",2122}, - {""}, {""}, {""}, - {"process",1728}, - {"ucs",2288}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"precision",1693}, - {""}, {""}, - {"dataType",643}, - {""}, - {"method",1292}, - {""}, {""}, - {"count",616}, - {"marsType",1244}, - {""}, {""}, {""}, {""}, - {"class",429}, - {"phase",1679}, - {""}, - {"uco",2287}, - {""}, {""}, {""}, - {"country",620}, - {""}, {""}, {""}, {""}, {""}, - {"latitude",1064}, - {"pl",1683}, - {"char",426}, - {"Dy",42}, - {"stepType",2130}, - {"model",1314}, - {"correction",607}, - {""}, - {"total",2216}, - {"Di",30}, - {"normal",1351}, - {""}, - {"consensus",573}, - {"product",1730}, - {""}, - {"latitudes",1095}, - {"hundred",953}, - {""}, {""}, - {"Dstart",38}, - {"reportType",1805}, - {""}, - {"ieeeFloats",966}, - {"dataDate",630}, - {"range",1765}, - {"grid",911}, - {"million",1294}, - {"marsDir",1220}, - {"hour",944}, - {"dummyc",713}, - {""}, {""}, - {"isSens",1021}, - {""}, {""}, - {"masterDir",1249}, - {"discipline",700}, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 31 + }; + +static const struct grib_keys_hash wordlist[] = + { + {""}, {""}, {""}, + {"n",1220}, {""}, - {"codeType",553}, + {"nd",1242}, + {"ed",477}, + {"nnn",1255}, + {"td",2127}, + {"t",2113}, {""}, - {"dataStream",640}, - {""}, {""}, {""}, {""}, {""}, - {"marsStream",1241}, + {"nt",1275}, + {"sd",1888}, + {"na",1226}, {""}, - {"refdate",1791}, + {"m",1082}, {""}, - {"thousand",2186}, - {""}, {""}, {""}, - {"elementsTable",731}, - {""}, {""}, - {"origin",1559}, - {""}, {""}, {""}, {""}, - {"marsDomain",1221}, + {"dy",462}, + {"date",375}, {""}, - {"endStep",759}, - {""}, {""}, {""}, {""}, - {"dataKeys",632}, - {"temperature",2176}, - {""}, {""}, {""}, {""}, {""}, - {"identifier",965}, - {"operStream",1548}, - {""}, {""}, {""}, {""}, - {"marsStep",1240}, - {"month",1321}, - {"startStep",2116}, - {"TT",237}, + {"year",2418}, + {"name",1227}, + {"min",1168}, + {"day",390}, + {"data",356}, {""}, {""}, - {"accuracy",293}, - {"partitionTable",1664}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"rectimeDay",1786}, + {"ident",751}, + {"one",1458}, + {"time",2156}, {""}, {""}, {""}, - {"reference",1792}, + {"mars",1085}, {""}, {""}, - {"notDecoded",1361}, + {"names",1232}, + {""}, {""}, {""}, + {"stream",2084}, + {"sort",2028}, {""}, - {"two",2244}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"reserved",1809}, - {"file",851}, + {"enorm",520}, + {""}, {""}, + {"metadata",1162}, {""}, - {"signature",2063}, + {"type",2215}, + {"system",2111}, + {"eps",534}, + {"domain",450}, + {"spare",2045}, + {""}, {""}, {""}, + {"edition",478}, + {"oper",1470}, + {"present",1629}, + {"param",1575}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"parameter",1576}, + {"iteration",835}, {""}, - {"false",844}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"local",1136}, - {""}, {""}, - {"unitsFactor",2301}, + {"assertion",36}, + {"dimension",430}, {""}, - {"oceanStream",1496}, - {"standardDeviation",2109}, - {"categories",384}, + {"centre",129}, {""}, {""}, {""}, - {"version",2349}, + {"step",2073}, {""}, - {"varno",2344}, + {"true",2200}, + {""}, {""}, {""}, + {"parameters",1583}, + {"core",331}, + {"timerepres",2175}, + {"opttime",1477}, + {"points",1617}, {""}, {""}, - {"marsQuantile",1237}, - {"eight",730}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"channel",424}, - {"fcperiod",848}, - {"endTimeStep",761}, + {"rectime",1722}, + {""}, {""}, {""}, + {"second",1889}, + {""}, {""}, + {"const",304}, + {"minute",1170}, + {"restricted",1764}, + {"dummy",454}, {""}, - {"gridType",920}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"threshold",2188}, - {"localTime",1164}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"eleven",733}, + {"units",2272}, {""}, - {"conceptDir",565}, + {"stepZero",2083}, + {"radius",1697}, {""}, {""}, - {"platform",1684}, + {"section",1915}, + {"status",2072}, {""}, - {"hideThis",938}, + {"partitions",1593}, + {""}, + {"leadtime",928}, + {"direction",433}, {""}, {""}, - {"isFillup",1015}, - {""}, {""}, {""}, - {"diagnostic",687}, + {"radials",1696}, + {"instrument",790}, {""}, {""}, {""}, - {"g",888}, + {"minimum",1169}, {""}, {""}, {""}, - {"longitude",1172}, + {"three",2140}, + {"dateTime",388}, {""}, - {"JS",94}, - {"typicalDay",2278}, - {"coefsFirst",557}, - {"aerosolType",299}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"matchSort",1256}, + {"hdate",722}, + {"dataTime",372}, + {"landtype",868}, + {""}, {""}, + {"statistics",2071}, + {""}, {""}, {""}, + {"process",1659}, + {"ucs",2265}, + {"two",2213}, + {""}, {""}, {""}, {""}, {""}, + {"precision",1623}, + {""}, {""}, + {"dataType",373}, {""}, - {"longitudes",1203}, + {"method",1165}, + {""}, {""}, + {"count",345}, + {"marsType",1114}, + {""}, {""}, {""}, {""}, + {"class",157}, + {"phase",1608}, {""}, - {"levtype",1120}, - {"elevation",732}, + {"uco",2264}, {""}, {""}, {""}, - {"K",95}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"dataSelection",639}, - {"spectralType",2107}, + {"country",348}, + {""}, {""}, {""}, {""}, {""}, + {"latitude",886}, + {"pl",1613}, + {"char",154}, + {"Dy",463}, + {"stepType",2079}, + {"model",1195}, + {"correction",336}, {""}, - {"codeFigure",552}, - {"localDir",1145}, + {"total",2178}, + {"Di",421}, + {"normal",1256}, {""}, - {"localDate",1137}, + {"consensus",302}, + {"product",1661}, {""}, - {"typicalTime",2283}, + {"latitudes",914}, + {"hundred",748}, {""}, {""}, - {"localDay",1139}, - {""}, - {"TS",235}, - {"countTotal",619}, - {""}, {""}, {""}, - {"padding",1575}, + {"Dstart",453}, + {"reportType",1743}, {""}, {""}, - {"productType",1735}, - {""}, {""}, {""}, {""}, {""}, - {"values",2332}, + {"dataDate",359}, + {"range",1702}, + {"grid",698}, + {"million",1167}, + {"marsDir",1089}, + {"hour",735}, + {"dummyc",457}, {""}, {""}, - {"levels",1119}, - {""}, {""}, {""}, {""}, {""}, - {"userTimeStart",2326}, - {"efiOrder",729}, - {"molarMass",1320}, + {"isSens",833}, + {"yFirst",2427}, {""}, - {"offset",1498}, + {"masterDir",1118}, + {"discipline",439}, {""}, - {"levelist",1118}, - {"dataOrigin",634}, - {""}, {""}, {""}, {""}, - {"anoffset",312}, - {""}, {""}, - {"windSpeed",2393}, - {""}, {""}, - {"offsetdate",1532}, - {"recDateTime",1782}, - {"aerosolTypeName",300}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"ccsdsFlags",390}, + {"codeType",285}, {""}, - {"offsettime",1533}, - {"average",321}, + {"dataStream",370}, {""}, {""}, {""}, {""}, {""}, - {"isSatellite",1019}, + {"marsStream",1111}, + {""}, + {"refdate",1728}, {""}, - {"typicalDate",2276}, + {"thousand",2139}, + {""}, {""}, {""}, + {"elementsTable",483}, {""}, {""}, - {"flags",868}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"level",1115}, + {"origin",1482}, {""}, {""}, {""}, {""}, - {"centreDescription",402}, + {"marsDomain",1090}, {""}, - {"marsModel",1235}, - {"fgTime",850}, - {""}, - {"TScalc",236}, + {"endStep",512}, + {""}, {""}, {""}, {""}, {""}, + {"temperature",2128}, + {""}, {""}, {""}, {""}, {""}, + {"identifier",755}, + {"operStream",1473}, + {""}, {""}, {""}, {""}, + {"marsStep",1110}, + {"month",1206}, + {"startStep",2066}, + {"TT",2210}, {""}, {""}, - {"forecastperiod",880}, + {"accuracy",4}, + {"partitionTable",1594}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"rectimeDay",1723}, + {""}, {""}, {""}, + {"reference",1729}, {""}, {""}, - {"categoryType",385}, + {"notDecoded",1268}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"marsQuantile",1107}, + {"reserved",1747}, + {"file",625}, {""}, - {"userDateStart",2322}, - {""}, {""}, {""}, {""}, - {"statisticalProcess",2120}, - {""}, {""}, {""}, - {"fcmonth",847}, - {"oneThousand",1546}, - {"isOctahedral",1017}, + {"signature",2010}, {""}, - {"dataFlag",631}, + {"false",617}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"local",976}, + {"dataKeys",361}, + {""}, {""}, {""}, + {"oceanStream",1419}, + {"standardDeviation",2058}, + {"categories",109}, {""}, {""}, - {"overlayTemplate",1569}, + {"ieeeFloats",760}, + {"version",2330}, + {"windSpeed",2374}, + {"varno",2325}, + {""}, {""}, {""}, + {"eight",482}, {""}, {""}, - {"KS",96}, + {"section8",1973}, {""}, {""}, {""}, - {"selectedSecond",2047}, - {""}, {""}, {""}, {""}, {""}, - {"statisticalProcessesList",2121}, + {"channel",152}, + {"fcperiod",622}, + {"endTimeStep",514}, + {"Ly",1080}, + {"gridType",707}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"Latin",881}, + {"threshold",2141}, + {"localTime",1017}, + {""}, {""}, {""}, {""}, + {"yLast",2428}, + {""}, + {"eleven",485}, {""}, - {"endDescriptors",738}, - {"datasetForLocal",645}, + {"conceptDir",294}, + {""}, {""}, + {"platform",1614}, + {""}, + {"hideThis",729}, {""}, {""}, {""}, {""}, {""}, {""}, - {"forecastTime",879}, - {"levelType",1117}, + {"diagnostic",423}, {""}, {""}, {""}, - {"gg",900}, - {""}, {""}, {""}, {""}, - {"pv",1744}, - {""}, {""}, {""}, {""}, - {"indicatorOfParameter",979}, - {""}, - {"fgDate",849}, - {"satelliteSeries",1890}, + {"g",665}, {""}, {""}, {""}, - {"windDirection",2382}, - {""}, {""}, {""}, {""}, - {"band",329}, + {"longitude",1024}, {""}, {""}, - {"Ly",153}, - {""}, {""}, {""}, {""}, - {"optionalData",1553}, - {"section8",2010}, + {"typicalDay",2255}, + {""}, + {"aerosolType",19}, {""}, {""}, {""}, - {"Latin",113}, + {"Lap",869}, + {""}, {""}, {""}, + {"matchSort",1125}, + {"Lcy",926}, + {"longitudes",1054}, {""}, - {"crcrlf",621}, - {""}, {""}, {""}, {""}, - {"yLast",2422}, - {"M",155}, - {"rdbtime",1771}, - {"oneMillionConstant",1537}, + {"levtype",953}, + {"elevation",484}, + {""}, {""}, {""}, {""}, {""}, + {"Lop",1058}, + {"Luy",1076}, + {"endDescriptors",490}, {""}, {""}, {""}, {""}, - {"lev",1113}, - {"localDateTime",1138}, - {"nlev",1347}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"forecastSteps",878}, - {"mybits",1333}, - {"unitOfTime",2292}, + {"dataSelection",368}, + {"spectralType",2056}, + {""}, {""}, + {"localDir",985}, + {""}, + {"localDate",977}, {""}, - {"runwayState",1885}, + {"typicalTime",2260}, {""}, {""}, - {"laplacianOperator",1057}, - {""}, {""}, {""}, {""}, - {"validityTime",2331}, + {"localDay",979}, + {""}, + {"TS",2205}, + {"countTotal",349}, {""}, {""}, - {"MS",158}, - {"Lap",108}, - {""}, {""}, {""}, {""}, - {"Lcy",120}, + {"unitsFactor",2278}, + {"padding",1504}, + {""}, {""}, + {"productType",1669}, + {"daLoop",355}, + {""}, {""}, + {"windDirection",2363}, + {"aerosolTypeName",20}, + {"values",2313}, + {""}, {""}, + {"levels",949}, + {""}, {""}, {""}, {""}, {""}, + {"userTimeStart",2307}, {""}, - {"theMessage",2181}, + {"optionalData",1476}, {""}, - {"avg",325}, - {""}, {""}, {""}, {""}, - {"obstype",1493}, - {"Lop",142}, - {"Luy",149}, + {"offset",1421}, {""}, - {"number",1363}, - {"flag",863}, + {"levelist",948}, + {"Xo",2404}, + {""}, {""}, {""}, {""}, + {"anoffset",31}, {""}, {""}, {""}, {""}, {""}, - {"bitmap",367}, + {"offsetdate",1435}, + {"recDateTime",1719}, {""}, - {"clusterMember9",544}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"localSecond",1159}, + {"band",50}, + {""}, {""}, {""}, + {"Xp",2405}, + {""}, {""}, {""}, + {"offsettime",1454}, + {"average",41}, + {""}, {""}, {""}, + {"isFillup",823}, + {"runwayState",1823}, + {"isSatellite",831}, {""}, - {"controlForecastCluster",580}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"thisMarsType",2185}, - {"daLoop",626}, - {"aerosolpacking",302}, + {"typicalDate",2253}, {""}, {""}, - {"unitsDecimalScaleFactor",2299}, - {""}, {""}, - {"referenceDate",1793}, - {""}, {""}, {""}, {""}, {""}, - {"longitudesList",1204}, - {""}, {""}, {""}, {""}, - {"coordinatesPresent",601}, - {"parameterDiscipline",1655}, - {""}, {""}, {""}, {""}, {""}, - {"rdbType",1769}, + {"flags",642}, + {""}, + {"rdbtime",1707}, + {""}, {""}, {""}, + {"upperLimit",2294}, + {"level",945}, + {""}, + {"coefsFirst",286}, {""}, {""}, - {"derivedForecast",685}, - {"representationMode",1806}, + {"centreDescription",130}, {""}, {""}, - {"freeFormData",883}, - {""}, {""}, {""}, - {"startTimeStep",2118}, + {"fgTime",624}, {""}, - {"earthMinorAxis",719}, - {"logTransform",1171}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"waveDomain",2372}, + {"TScalc",2206}, + {""}, {""}, + {"forecastperiod",651}, + {""}, {""}, + {"categoryType",110}, {""}, - {"coefsSecond",558}, - {""}, {""}, {""}, {""}, - {"localMinute",1156}, - {"siteId",2070}, - {"periodOfTime",1675}, - {"localFlag",1147}, + {"userDateStart",2303}, {""}, {""}, - {"dateOfForecast",648}, - {"upperLimit",2317}, + {"K",854}, {""}, - {"yearOfForecast",2427}, + {"statisticalProcess",2069}, + {""}, {""}, {""}, + {"fcmonth",621}, + {"oneThousand",1469}, + {""}, {""}, {""}, + {"codeFigure",284}, {""}, - {"marsIdent",1227}, + {"overlayTemplate",1495}, {""}, {""}, {""}, {""}, {""}, - {"timeOfForecast",2207}, + {"obstype",1416}, + {"selectedSecond",1989}, {""}, {""}, - {"userDateTimeStart",2324}, - {""}, {""}, {""}, {""}, - {"paramId",1647}, + {"number",1277}, + {"molarMass",1205}, {""}, - {"operatingMode",1549}, - {""}, {""}, {""}, - {"offsetSection9",1529}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"longitudeOfCentrePoint",1176}, + {"statisticalProcessesList",2070}, {""}, {""}, - {"angleMultiplier",307}, + {"referenceDate",1730}, + {"bitmap",88}, + {""}, {""}, {""}, {""}, {""}, + {"forecastTime",657}, + {"levelType",950}, + {"lowerLimit",1066}, {""}, {""}, - {"fireTemplate",853}, + {"gg",678}, + {""}, {""}, {""}, {""}, + {"pv",1680}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"fgDate",623}, + {"satelliteSeries",1832}, + {""}, {""}, {""}, + {"startTimeStep",2068}, + {""}, {""}, {""}, {""}, {""}, + {"truncateLaplacian",2203}, + {""}, {""}, {""}, {""}, + {"waveDomain",2353}, {""}, - {"firstDimension",854}, + {"ccsdsFlags",116}, {""}, - {"rdbtimeDay",1773}, - {"localMonth",1157}, - {"marsStartStep",1239}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, - {"iIncrement",958}, + {"KS",859}, + {"rdbType",1716}, {""}, {""}, - {"angleDivisor",306}, - {""}, - {"laplacianOperatorIsSet",1058}, + {"marsModel",1105}, + {"crcrlf",350}, {""}, {""}, {""}, - {"spectralMode",2106}, + {"efiOrder",481}, {""}, {""}, {""}, {""}, {""}, - {"stepTypeForConversion",2131}, + {"dataOrigin",363}, {""}, {""}, - {"localDecimalScaleFactor",1140}, + {"lev",944}, + {"localDateTime",978}, + {"nlev",1254}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"forecastSteps",656}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"rdbtimeTime",1778}, + {"validityTime",2312}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"fireTemplate",627}, + {"dataFlag",360}, {""}, - {"latitudeSexagesimal",1092}, + {"avg",45}, + {""}, {""}, + {"marsStartStep",1109}, + {""}, {""}, {""}, {""}, + {"LaD",866}, {""}, - {"localTimeForecastList",1165}, + {"flag",638}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"representationMode",1744}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"localSecond",1012}, + {""}, {""}, + {"rdbtimeDay",1709}, + {""}, {""}, {""}, {""}, + {"isOctahedral",828}, + {""}, {""}, + {"aerosolpacking",18}, {""}, {""}, - {"truncateLaplacian",2238}, - {"thisMarsStream",2184}, + {"unitsDecimalScaleFactor",2276}, + {""}, {""}, + {"freeFormData",660}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"longitudeOfGridPoints",1183}, {""}, - {"analysisOffsets",305}, - {"zeros",2432}, - {"dayOfForecast",661}, - {""}, - {"zero",2431}, - {"referenceStep",1800}, - {""}, {""}, {""}, - {"tubeDomain",2242}, + {"coordinatesPresent",330}, + {"parameterDiscipline",1579}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"rdbtimeTime",1714}, + {""}, {""}, + {"instrumentIdentifier",791}, + {"referenceStep",1737}, + {""}, {""}, + {"pressureLevel",1649}, + {""}, {""}, + {"logTransform",1023}, {""}, - {"anoffsetFirst",313}, + {"indicatorOfParameter",776}, {""}, {""}, {""}, {""}, - {"tiggeModel",2193}, - {""}, {""}, {""}, {""}, {""}, - {"xFirst",2414}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"decimalScaleFactor",667}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"rdbtimeDate",1772}, + {"MS",1218}, + {""}, {""}, + {"coefsSecond",287}, + {""}, {""}, {""}, {""}, + {"theMessage",2134}, + {""}, {""}, {""}, {""}, + {"marsLatitude",1101}, + {""}, {""}, + {"siteLatitude",2018}, {""}, - {"lengthDescriptors",1104}, + {"tubeDomain",2211}, + {""}, {""}, {""}, + {"levelFactor",946}, {""}, {""}, {""}, {""}, {""}, - {"scanningMode",1939}, - {"defaultStepUnits",675}, - {"LaD",105}, + {"userDateTimeStart",2305}, {""}, - {"maximum",1261}, - {""}, - {"latitudeOfCentrePoint",1069}, + {"clusterMember9",275}, + {"dataLength",362}, + {""}, {""}, {""}, + {"marsLevel",1102}, {""}, - {"validityDate",2330}, + {"siteId",2017}, + {"validityDate",2311}, + {""}, {""}, + {"offsetSection9",1453}, + {""}, {""}, + {"thisMarsType",2138}, {""}, - {"subSetJ",2149}, - {"anoffsetFrequency",314}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"setDecimalPrecision",2053}, + {"unitOfTime",2269}, + {"marsIdent",1096}, {""}, - {"computeStatistics",564}, + {"rdbtimeDate",1708}, + {"computeStatistics",293}, + {"laplacianOperator",870}, + {""}, {""}, {""}, {""}, + {"firstDimension",628}, {""}, {""}, {""}, - {"originalSubCentreIdentifier",1563}, - {"reservedOctet",1814}, + {"M",1083}, + {"paramId",1586}, + {"gridDefinition",700}, {""}, {""}, - {"modelIdentifier",1316}, - {"hourOfForecast",947}, - {""}, {""}, - {"gridDefinition",913}, - {""}, - {"integerScaleFactor",996}, + {"distinctLatitudes",441}, + {"topLevel",2177}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"verticalDomainTemplate",2359}, - {"lowerLimit",1206}, - {""}, {""}, {""}, - {"oldSubtype",1534}, - {""}, {""}, {""}, - {"offsetDescriptors",1512}, - {""}, {""}, {""}, - {"marsKeywords",1228}, - {""}, - {"offsetSection0",1518}, + {"angleDivisor",24}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"oneMillionConstant",1460}, {""}, - {"instrumentIdentifier",993}, - {"localDefinition",1143}, - {""}, {""}, - {"pressureLevel",1718}, - {"ensembleSize",770}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"rdbDateTime",1767}, + {"datasetForLocal",369}, {""}, {""}, {""}, {""}, - {"incrementOfLengths",970}, - {"auxiliary",320}, + {"localDecimalScaleFactor",980}, + {"localDefinition",981}, {""}, {""}, - {"visibility",2363}, + {"derivedForecast",419}, + {""}, {""}, {""}, + {"localMinute",996}, + {""}, + {"iIncrement",763}, {""}, {""}, {""}, {""}, - {"monthOfForecast",1324}, - {"marsLatitude",1231}, + {"oldSubtype",1457}, {""}, {""}, - {"siteLatitude",2071}, - {"extraDim",798}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"global",901}, - {""}, {""}, {""}, {""}, - {"dataLength",633}, - {"meanSize",1283}, + {"newSubtype",1245}, {""}, {""}, - {"marsLevel",1232}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"generatingProcessTemplate",897}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"integerScalingFactorAppliedToDirections",997}, - {"integerScalingFactorAppliedToFrequencies",998}, - {""}, {""}, {""}, {""}, - {"topLevel",2215}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"ccccIdentifiers",387}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"representativeMember",1808}, + {"setLocalDefinition",1998}, {""}, - {"expandedTypes",789}, + {"centreLongitude",135}, {""}, {""}, - {"centreForLocal",403}, + {"longitudesList",1056}, {""}, {""}, {""}, - {"datumSize",657}, + {"latitudesList",916}, + {"ensembleSize",532}, {""}, - {"scaledDirections",1914}, + {"localFlag",987}, + {""}, + {"operatingMode",1471}, + {"decimalScaleFactor",400}, {""}, {""}, - {"secondSize",1960}, - {"secondOfForecast",1954}, + {"rdbDateTime",1704}, + {""}, {""}, {""}, {""}, {""}, + {"earthMinorAxis",469}, {""}, {""}, - {"minuteOfForecast",1300}, + {"visibility",2344}, {""}, {""}, - {"setLocalDefinition",2054}, - {"expver",796}, + {"angleMultiplier",25}, {""}, - {"newSubtype",1346}, - {""}, {""}, {""}, {""}, {""}, - {"latitudesList",1096}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"marsKeywords",1097}, + {""}, {""}, {""}, {""}, + {"latitudeSexagesimal",915}, + {"localMonth",997}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"global",680}, + {""}, + {"periodOfTime",1604}, + {""}, + {"lengthDescriptors",934}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"controlForecastCluster",309}, + {"spectralMode",2055}, + {""}, {""}, {""}, + {"integerScaleFactor",794}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"clusterMember8",543}, - {"atmosphericChemicalOrPhysicalConstituentType",318}, - {""}, {""}, - {"localTimeMethod",1166}, + {"setDecimalPrecision",1997}, {""}, {""}, {""}, {""}, {""}, {""}, - {"marsLamModel",1230}, + {"thisMarsStream",2137}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"boustrophedonic",374}, - {""}, {""}, {""}, {""}, - {"roundedMarsLatitude",1830}, - {""}, - {"referenceOfLengths",1796}, - {""}, {""}, {""}, {""}, - {"overlayTemplateNumber",1570}, - {""}, {""}, {""}, - {"lcwfvSuiteName",1098}, {""}, {""}, - {"partitionItems",1662}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"preferLocalConcepts",1697}, - {"distinctLatitudes",702}, + {"reservedOctet",1752}, {""}, - {"roundedMarsLongitude",1832}, + {"scaledDirections",1833}, {""}, - {"biFourierMakeTemplate",357}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"climateDateFrom",431}, + {"centreForLocal",131}, + {"maximum",1130}, + {"localTimeForecastList",1018}, + {"verticalDomainTemplate",2340}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"offsetDescriptors",1436}, {""}, {""}, - {"roundedMarsLevelist",1831}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"modelIdentifier",1198}, {""}, - {"DyInMetres",44}, - {""}, {""}, - {"DiInMetres",33}, - {""}, {""}, {""}, - {"subSetK",2150}, + {"clusterMember8",274}, + {"tiggeModel",2149}, + {"laplacianOperatorIsSet",871}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"offsetSection8",1452}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"anoffsetFirst",32}, + {""}, {""}, {""}, {""}, {""}, + {"marsLamModel",1100}, {""}, - {"firstSize",862}, - {"startOfMessage",2114}, + {"isEps",821}, {""}, - {"typeOfStatisticalPostProcessingOfEnsembleMembers",2270}, - {""}, {""}, {""}, - {"numberOfFloats",1410}, - {"generatingProcessIdentifier",896}, - {"satelliteIdentifier",1888}, - {""}, {""}, {""}, - {"offsetSection8",1528}, + {"templatesLocalDir",2130}, + {""}, {""}, + {"offsetSection0",1442}, {""}, - {"centreLongitude",407}, + {"scanningMode",1880}, + {""}, {""}, {""}, {""}, + {"dimensionType",432}, {""}, - {"templatesLocalDir",2178}, + {"lcwfvSuiteName",923}, {""}, {""}, {""}, - {"conceptsMasterDir",571}, + {"analysisOffsets",23}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"dateOfForecast",380}, {""}, {""}, - {"iteratorDisableUnrotate",1037}, + {"yearOfForecast",2422}, + {""}, {""}, {""}, {""}, + {"auxiliary",40}, + {"generatingProcessTemplate",674}, + {"representativeMember",1746}, + {"timeOfForecast",2163}, + {"overlayTemplateNumber",1496}, {""}, {""}, - {"gridDefinitionSection",915}, + {"anoffsetFrequency",33}, + {"xFirst",2402}, + {""}, {""}, {""}, {""}, + {"extraDim",596}, {""}, - {"indexingTime",975}, + {"observedData",1415}, {""}, - {"stretchingFactor",2137}, + {"northernLatitudeOfDomain",1260}, + {"forecastLeadTime",648}, {""}, - {"indexTemplate",971}, + {"originalSubCentreIdentifier",1488}, {""}, - {"ccsdsRsi",391}, - {""}, {""}, {""}, {""}, {""}, - {"gridDefinitionDescription",914}, - {""}, {""}, {""}, {""}, - {"listOfScaledFrequencies",1135}, - {"expoffset",795}, + {"boustrophedonic",96}, + {""}, {""}, {""}, + {"longitudeOfCentrePoint",1028}, + {""}, {""}, + {"stepTypeForConversion",2080}, + {"preferLocalConcepts",1627}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"referenceSampleInterval",1736}, {""}, {""}, {""}, - {"latitudeOfCentrePointInDegrees",1070}, + {"partitionItems",1591}, + {""}, {""}, {""}, + {"marsLevelist",1103}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"groupSplitting",924}, + {"localTimeMethod",1019}, + {""}, {""}, {""}, {""}, {""}, + {"ccccIdentifiers",113}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"heightLevelName",726}, {""}, {""}, {""}, {""}, {""}, {""}, - {"forecastLeadTime",871}, - {""}, {""}, - {"observedData",1492}, - {""}, {""}, {""}, {""}, - {"generatingProcessIdentificationNumber",895}, - {""}, {""}, {""}, {""}, - {"endOfInterval",755}, - {""}, {""}, {""}, {""}, - {"indicatorOfUnitForForecastTime",981}, + {"gridDefinitionSection",702}, + {""}, {""}, {""}, + {"southernLatitudeOfDomain",2036}, + {"expandedTypes",551}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"gridDefinitionDescription",701}, {""}, - {"referenceSampleInterval",1799}, + {"dayOfForecast",393}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"expver",560}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"groupSplitting",711}, {""}, {""}, - {"typeOfStatisticalProcessing",2271}, + {"anoffsetLast",34}, + {""}, {""}, {""}, + {"incrementOfLengths",767}, {""}, - {"correction4Part",615}, + {"bufrTemplate",104}, {""}, {""}, - {"marsRange",1238}, - {"clusterSize",546}, + {"indexTemplate",774}, {""}, {""}, - {"diffInDays",689}, - {""}, {""}, {""}, - {"yDirectionGridLength",2418}, - {""}, - {"longitudeSexagesimal",1202}, + {"integerScalingFactorAppliedToDirections",795}, + {"integerScalingFactorAppliedToFrequencies",796}, {""}, {""}, - {"listMembersUsed",1126}, - {""}, {""}, {""}, {""}, {""}, - {"stretchingFactorScaled",2138}, + {"selectedDay",1984}, + {""}, + {"marsEndStep",1091}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"xLast",2403}, {""}, {""}, - {"stepRange",2128}, - {"stepTypeInternal",2132}, + {"JS",849}, + {""}, {""}, {""}, {""}, + {"latitudeOfCentrePoint",891}, + {"representationType",1745}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"longitudinalDirectionGridLength",1057}, {""}, {""}, {""}, {""}, {""}, {""}, - {"tablesMasterDir",2169}, - {"marsForecastMonth",1225}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"scanningMode8",1944}, - {"xLast",2415}, - {"heightLevelName",935}, + {"conceptsMasterDir",300}, {""}, - {"horizontalCoordinateSupplement",940}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"conceptsLocalDirAll",297}, + {"rdbSubtype",1706}, + {""}, {""}, + {"hourOfForecast",741}, + {"bottomLevel",95}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"scanningMode8",1885}, {""}, {""}, {""}, {""}, {""}, - {"offsetFreeFormData",1514}, - {""}, {""}, {""}, {""}, - {"typeOfLevel",2260}, - {""}, - {"bufrTemplate",379}, + {"secondOfForecast",1905}, + {""}, {""}, + {"minuteOfForecast",1176}, {""}, {""}, {""}, - {"sequences",2050}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"optimizeScaleFactor",1552}, - {"quantile",1756}, + {"subSetK",2102}, {""}, {""}, {""}, - {"subSetM",2151}, - {""}, {""}, - {"rdbSubtype",1768}, - {"upperRange",2318}, - {""}, {""}, - {"northernLatitudeOfDomain",1359}, - {""}, {""}, - {"powerOfTenUsedToScaleClimateWeight",1690}, - {"rectimeMinute",1788}, - {""}, - {"radiusInMetres",1761}, - {"longitudinalDirectionGridLength",1205}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"conceptsLocalDirAll",568}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"qfe",1746}, - {""}, {""}, {""}, {""}, - {"marsLevelist",1233}, + {"climateDateFrom",159}, {""}, - {"levelIndicator",1116}, + {"stepTypeInternal",2081}, + {"generatingProcessIdentifier",673}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, - {"qnh",1749}, - {""}, - {"horizontalCoordinateDefinition",939}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"conceptsMasterMarsDir",572}, + {"defaultStepUnits",411}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, + {"satelliteIdentifier",1830}, + {"monthOfForecast",1213}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"southernLatitudeOfDomain",2091}, + {"roundedMarsLatitude",1768}, {""}, {""}, {""}, {""}, {""}, {""}, - {"numberOfTimeSteps",1473}, - {""}, {""}, {""}, {""}, - {"numberOfDirections",1400}, - {"DyInDegrees",43}, + {"marsForecastMonth",1094}, + {"zeros",2436}, {""}, {""}, - {"DiInDegrees",32}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"indexingDate",974}, - {""}, {""}, {""}, {""}, {""}, - {"anoffsetLast",315}, - {""}, - {"typicalMinute",2280}, - {"matchTimeRepres",1257}, - {""}, {""}, {""}, {""}, - {"numberOfFrequencies",1417}, - {""}, - {"groupSplittingMethodUsed",925}, - {"yDirectionGridLengthInMetres",2419}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"multiplicationFactorForLatLong",1332}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"bottomLevel",373}, - {""}, - {"rectimeSecond",1789}, + {"zero",2435}, + {"multiplicationFactorForLatLong",1219}, + {"stretchingFactor",2086}, {""}, {""}, {""}, - {"missingDataFlag",1306}, - {""}, {""}, - {"dx",714}, + {"biFourierMakeTemplate",79}, {""}, {""}, {""}, - {"crraSection",624}, - {""}, {""}, - {"numberOfDiamonds",1399}, - {""}, {""}, {""}, {""}, - {"max",1260}, - {""}, {""}, {""}, {""}, - {"optimisationTime",1551}, - {"conceptsLocalMarsDirAll",570}, + {"indexingTime",770}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"generatingProcessIdentificationNumber",672}, {""}, {""}, - {"numberingOrderOfDiamonds",1485}, + {"userTimeEnd",2306}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"typeOfLevel",2235}, + {"expoffset",559}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"localDefinitionNumber",982}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"tablesMasterDir",2120}, {""}, {""}, - {"frequency",884}, + {"referenceOfLengths",1733}, {""}, {""}, - {"numberOfSubsets",1469}, + {"DyInMetres",465}, {""}, {""}, - {"localDefinitionNumber",1144}, + {"DiInMetres",429}, + {""}, {""}, {""}, + {"centreLatitude",133}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"levelIndicator",947}, + {""}, + {"diffInDays",425}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, + {"secondLatitude",1901}, {""}, - {"longitudeOfFirstGridPoint",1181}, + {"stretchingFactorScaled",2087}, + {""}, + {"userDateEnd",2302}, + {""}, {""}, {""}, {""}, {""}, + {"centreLongitudeInDegrees",136}, + {""}, {""}, {""}, + {"typeOfStatisticalPostProcessingOfEnsembleMembers",2245}, + {""}, + {"siteElevation",2016}, + {""}, + {"longitudeSexagesimal",1055}, + {""}, + {"numberOfFloats",1326}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"LyInMetres",154}, - {"clutterFilterIndicator",549}, + {"atmosphericChemicalOrPhysicalConstituentType",38}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, + {"radiusInMetres",1698}, + {""}, {""}, + {"headersOnly",725}, {""}, {""}, {""}, {""}, - {"lowerRange",1207}, + {"rectimeMinute",1725}, + {"indexingDate",769}, + {""}, + {"userDateTimeEnd",2304}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"meanSize",1155}, + {"roundedMarsLongitude",1770}, + {"conceptsLocalMarsDirAll",299}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"matchLandType",1124}, {""}, {""}, - {"secondOrderFlags",1957}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"periodOfTimeIntervals",1676}, + {"roundedMarsLevelist",1769}, {""}, {""}, {""}, - {"FirstLatitude",67}, - {""}, {""}, {""}, {""}, - {"longitudeOfCentrePointInDegrees",1177}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"typicalSecond",2282}, + {"masterTableNumber",1119}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, - {"typeOfDistributionFunction",2251}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"Nr",198}, - {""}, - {"centreLatitude",405}, {""}, {""}, {""}, {""}, - {"yDirectionGridLengthInMillimetres",2420}, - {"is_uerra",1030}, - {""}, {""}, {""}, - {"Ny",205}, - {""}, {""}, {""}, - {"conceptsLocalDirECMF",569}, - {"listOfModelIdentifiers",1133}, - {"Ni",196}, - {"masterTableNumber",1250}, + {"typeOfStatisticalProcessing",2246}, {""}, {""}, - {"numberOfForcasts",1411}, + {"startOfMessage",2064}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"iteratorDisableUnrotate",838}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"endOfInterval",507}, {""}, - {"secondLatitude",1951}, + {"LyInMetres",1081}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"subSetM",2103}, + {"groupSplittingMethodUsed",712}, {""}, - {"numberOfSection",1464}, - {"endOfRange",758}, + {"perturbedType",1607}, + {""}, {""}, {""}, {""}, {""}, + {"datumSize",389}, + {""}, {""}, {""}, {""}, + {"secondSize",1912}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"correction3Part",613}, + {"SecondLatitude",1902}, + {""}, {""}, {""}, {""}, {""}, + {"typicalMinute",2257}, {""}, {""}, - {"localSection",1160}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"conceptsMasterMarsDir",301}, {""}, - {"orderOfSpatialDifferencing",1556}, - {"Dx",39}, + {"sequences",1994}, + {""}, {""}, {""}, {""}, {""}, + {"listOfScaledFrequencies",970}, + {""}, {""}, + {"quantile",1693}, + {"offsetFreeFormData",1438}, + {"latitudeOfCentrePointInDegrees",892}, + {"DyInDegrees",464}, + {""}, {""}, + {"DiInDegrees",428}, {""}, - {"numberOfForecastsInTube",1415}, + {"numberOfTimeSteps",1390}, {""}, {""}, {""}, {""}, - {"indicatorOfUnitOfTimeRange",984}, + {"numberOfDirections",1316}, {""}, {""}, {""}, {""}, {""}, - {"listOfDistributionFunctionParameter",1131}, - {""}, {""}, {""}, {""}, {""}, - {"isEps",1014}, + {"FirstLatitude",632}, {""}, {""}, {""}, - {"Ncy",194}, - {""}, {""}, {""}, {""}, - {"short_name",2062}, - {""}, {""}, - {"_T",286}, - {"addressOfFileFreeSpaceInfo",298}, - {""}, - {"Nuy",203}, - {""}, - {"expandedDescriptors",783}, + {"listOfModelIdentifiers",968}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"numberOfModels",1434}, + {"qfe",1683}, {""}, {""}, {""}, {""}, - {"binaryScaleFactor",365}, - {""}, - {"parameterName",1657}, + {"ensembleForecastNumbers",526}, {""}, {""}, {""}, - {"marsLongitude",1234}, - {"widthOfFirstOrderValues",2378}, - {""}, - {"siteLongitude",2072}, + {"marsLongitude",1104}, {""}, {""}, - {"firstLatitude",857}, - {"suiteName",2154}, - {"localLatitude",1150}, - {"unsignedIntegers",2310}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"diagnosticNumber",688}, + {"siteLongitude",2019}, {""}, {""}, - {"modelName",1317}, + {"firstLatitude",631}, {""}, - {"section_09",2029}, - {""}, {""}, {""}, {""}, - {"is_aerosol",1022}, - {""}, {""}, {""}, {""}, - {"numberOfOperationalForecastTube",1437}, - {"secondDimension",1948}, - {""}, {""}, {""}, {""}, - {"_endStep",289}, - {"ensembleForecastNumbers",768}, - {"secondOfForecastUsedInLocalTime",1955}, - {"lengthOfMessage",1109}, + {"localLatitude",990}, {""}, - {"minuteOfForecastUsedInLocalTime",1301}, + {"qnh",1686}, + {""}, {""}, + {"missingDataFlag",1183}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"numberOfSection",1381}, {""}, - {"numberOfStatisticallyProcessedFieldsForLocalTime",1467}, - {""}, - {"spectralDataRepresentationType",2105}, - {"cnmc_isac",551}, - {""}, {""}, {""}, - {"shortName",2059}, - {""}, {""}, {""}, {""}, - {"NT",188}, + {"clutterFilterIndicator",278}, {""}, {""}, - {"spectralDataRepresentationMode",2104}, - {""}, {""}, {""}, {""}, {""}, - {"SecondLatitude",226}, - {""}, {""}, {""}, - {"bitMapIndicator",366}, - {""}, {""}, {""}, {""}, {""}, - {"tiggeSection",2194}, - {""}, - {"numberOfDataMatrices",1394}, + {"numberOfDiamonds",1315}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, + {"numberOfSubsets",1386}, {""}, {""}, - {"local_use",1170}, - {"productDefinition",1731}, - {"gridName",918}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"Nassigned",191}, - {""}, {""}, {""}, {""}, - {"gts_header",931}, - {""}, {""}, {""}, - {"LcyInMetres",121}, + {"firstSize",637}, {""}, {""}, - {"marsEndStep",1222}, - {"energyNorm",766}, - {"monthOfForecastUsedInLocalTime",1325}, - {""}, {""}, {""}, {""}, {""}, - {"LuyInMetres",150}, - {"editionNumber",727}, + {"longitudeOfFirstGridPoint",1033}, {""}, {""}, {""}, - {"rdbtimeMinute",1775}, + {"dx",458}, {""}, {""}, {""}, - {"earthIsOblate",716}, - {"cnmc_cmcc",550}, - {"minuteOfReference",1303}, + {"listMembersUsed",961}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"max",1129}, + {""}, {""}, {""}, {""}, {""}, + {"expandedDescriptors",545}, + {""}, {""}, {""}, {""}, {""}, + {"J",840}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, - {"is_chemical",1024}, - {""}, {""}, {""}, - {"cfName",412}, - {""}, {""}, {""}, - {"unitOfOffsetFromReferenceTime",2291}, - {""}, - {"scaleFactorOfFirstSize",1898}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"dateOfReference",653}, - {""}, {""}, - {"yearOfReference",2430}, {""}, {""}, {""}, - {"DxInMetres",41}, + {"rectimeSecond",1726}, {""}, {""}, - {"sectionNumber",2019}, - {"timeOfReference",2210}, + {"unsignedIntegers",2287}, + {""}, {""}, {""}, {""}, + {"numberOfFrequencies",1333}, + {"localLongitude",993}, {""}, - {"efas_model",728}, + {"crraSection",353}, + {""}, {""}, {""}, + {"binaryScaleFactor",87}, {""}, - {"numberOfIterations",1425}, + {"diagnosticNumber",424}, {""}, {""}, {""}, {""}, {""}, - {"section7",2006}, - {""}, - {"tigge_name",2196}, + {"dataValues",374}, + {"optimisationTime",1474}, + {"secondOfForecastUsedInLocalTime",1906}, + {""}, {""}, + {"minuteOfForecastUsedInLocalTime",1177}, + {""}, {""}, + {"frequency",661}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"is_localtime",1027}, + {"ccsdsRsi",117}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"clusterSize",277}, {""}, {""}, {""}, {""}, - {"_TS",287}, + {"orderOfSpatialDifferencing",1478}, {""}, - {"centreLongitudeInDegrees",408}, + {"numberOfStatisticallyProcessedFieldsForLocalTime",1384}, {""}, {""}, - {"indicatorOfUnitForTimeIncrement",982}, - {""}, - {"dimensionType",693}, + {"numberOfForecastsInTube",1331}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"climatologicalRegime",433}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"_anoffset",288}, - {""}, {""}, - {"localLongitude",1153}, - {""}, {""}, {""}, - {"extractSubset",829}, - {""}, {""}, {""}, - {"simpleThinningSkip",2067}, + {"conceptsLocalDirECMF",298}, {""}, {""}, {""}, {""}, {""}, - {"observablePropertyTemplate",1487}, - {""}, {""}, - {"userTimeEnd",2325}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"rdbtimeSecond",1777}, - {""}, {""}, - {"marsParam",1236}, - {""}, {""}, {""}, {""}, - {"angleOfRotation",308}, - {"biFourierTruncationType",364}, - {""}, {""}, {""}, {""}, - {"Nf",195}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"clusterNumber",545}, + {"numberingOrderOfDiamonds",1280}, + {"powerOfTenUsedToScaleClimateWeight",1621}, {""}, - {"xDirectionGridLength",2411}, - {""}, {""}, {""}, {""}, - {"scaleFactorOfFirstFixedSurface",1897}, - {""}, {""}, - {"II",88}, - {"epsPoint",774}, + {"typicalSecond",2259}, + {"marsRange",1108}, {""}, - {"verificationDate",2345}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"longitudeOfGridPoints",1035}, {""}, {""}, {""}, - {"realPart",1780}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"userDateEnd",2321}, - {"observablePropertyTemplateNumber",1488}, - {"Lx",151}, - {"channelNumber",425}, - {""}, {""}, - {"scaleFactorOfStandardDeviation",1910}, - {"numberOfMembersInCluster",1428}, - {""}, {""}, {""}, {""}, - {"siteElevation",2069}, - {"indexingTimeMM",978}, - {"numberOfDistinctSection9s",1407}, - {""}, {""}, {""}, - {"scaleFactorOfStandardDeviationInTheCluster",1911}, - {""}, {""}, - {"numberOfLocalDefinitions",1426}, + {"LcyInMetres",927}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"hourOfReference",950}, - {"faFieldName",841}, - {"timeIncrement",2204}, + {"LuyInMetres",1077}, {""}, {""}, - {"computeLaplacianOperator",563}, + {"Dx",459}, + {"secondOrderFlags",1909}, + {"stepRange",2077}, + {""}, {""}, {""}, + {"rdbtimeMinute",1711}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"defaultName",671}, - {""}, - {"selectedDay",2042}, - {"section_8",2039}, - {""}, - {"scalingFactorForFrequencies",1937}, + {"Nr",1270}, + {"periodOfTimeIntervals",1605}, {""}, {""}, {""}, - {"selectedMonth",2046}, - {"unitsOfFirstFixedSurface",2303}, + {"observablePropertyTemplate",1410}, + {"typeOfDistributionFunction",2226}, + {""}, {""}, {""}, {""}, {""}, + {"Ny",1409}, {""}, - {"LaDInDegrees",106}, + {"localSection",1013}, + {""}, {""}, {""}, + {"Ni",1249}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"yDirectionGridLength",2415}, + {"numberOfForcasts",1327}, {""}, - {"XRInMetres",269}, + {"charValues",155}, {""}, {""}, - {"Lcx",118}, - {"userDateTimeEnd",2323}, + {"earthIsOblate",466}, + {""}, + {"numberOfDataMatrices",1310}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"scaleFactorOfSecondSize",1908}, - {"iDirectionIncrement",954}, - {"Lux",147}, + {"bitMapIndicator",89}, + {""}, {""}, {""}, {""}, + {"latitudeLastInDegrees",888}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"referenceValue",1738}, {""}, - {"northLatitudeOfCluster",1352}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"monthOfReference",1327}, + {"Ncy",1241}, + {"upperRange",2295}, + {""}, {""}, + {"listOfDistributionFunctionParameter",966}, {""}, - {"corr4Data",606}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"coordinate4Flag",595}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"XR",268}, - {""}, {""}, {""}, {""}, {""}, - {"sizeOfOffsets",2074}, + {"typeOfEnsembleForecast",2227}, + {"numberOfDistinctSection9s",1323}, + {"observablePropertyTemplateNumber",1411}, + {""}, {""}, + {"Nuy",1406}, + {""}, {""}, {""}, + {"ensembleForecastNumbersList",527}, {""}, - {"latitudeLastInDegrees",1066}, + {"numberOfModels",1350}, + {""}, {""}, + {"horizontalCoordinateSupplement",731}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, - {"dataValues",644}, - {""}, {""}, {""}, {""}, {""}, - {"scanningModeForOneDiamond",1945}, - {"simpleThinningStart",2068}, {""}, {""}, - {"ifsParam",967}, - {""}, {""}, {""}, - {"southLatitudeOfCluster",2087}, + {"parameterName",1581}, {""}, {""}, - {"section_08",2028}, - {"headersOnly",934}, - {"eastLongitudeOfCluster",721}, + {"Adelta",10}, + {"widthOfFirstOrderValues",2359}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"suiteName",2104}, {""}, {""}, - {"numberOfInts",1424}, - {"levTypeName",1114}, - {""}, - {"DxInDegrees",40}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"numberOfMissing",1430}, - {""}, {""}, {""}, {""}, {""}, - {"pvlLocation",1745}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, - {"xDirectionGridLengthInMetres",2412}, - {"correction1Part",609}, - {""}, {""}, {""}, {""}, {""}, - {"applicationIdentifier",316}, + {"numberOfLocalDefinitions",1343}, {""}, {""}, - {"gts_ddhh00",930}, - {"dirty_statistics",698}, + {"indicatorOfUnitForForecastTime",778}, + {"secondDimension",1898}, + {""}, {""}, {""}, + {"optimizeScaleFactor",1475}, + {"modelName",1201}, + {"longitudeOfCentrePointInDegrees",1029}, + {""}, {""}, {""}, {""}, + {"lowerRange",1067}, {""}, {""}, - {"forecastMonth",872}, - {"corr2Data",604}, + {"Lx",1078}, {""}, - {"representationType",1807}, + {"LaDInDegrees",867}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"simpleThinningMissingRadius",2066}, - {""}, {""}, - {"lengthIncrementForTheGroupLengths",1105}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"calendarIdPresent",381}, - {""}, - {"inputDelayedDescriptorReplicationFactor",986}, - {""}, - {"sfc_levtype",2056}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"modeNumber",1313}, + {"isAuto",805}, {""}, {""}, - {"tileIndex",2199}, + {"extractSubset",590}, {""}, {""}, {""}, {""}, - {"standardParallel",2110}, + {"biFourierTruncationType",86}, {""}, - {"numberOfForecastsUsedInLocalTime",1416}, - {"numberOfDistinctSection8s",1406}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"LxInMetres",152}, - {"numberInTheGridCoordinateList",1367}, + {"floatVal",644}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, - {"observationGeneratingProcessIdentifier",1490}, {""}, {""}, - {"typeOfEnsembleForecast",2252}, + {"shortName",2004}, {""}, {""}, {""}, - {"numberOfModeOfDistribution",1433}, + {"internalVersion",798}, + {"NT",1276}, + {"tiggeSection",2151}, + {""}, {""}, + {"numberOfDistinctSection8s",1322}, + {""}, {""}, {""}, + {"matchTimeRepres",1126}, + {""}, + {"horizontalCoordinateDefinition",730}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"createNewData",622}, - {"ensembleForecastNumbersList",769}, - {"unitsOfSecondFixedSurface",2304}, + {"Lcx",924}, + {""}, {""}, {""}, + {"numberOfMembersInCluster",1345}, + {""}, {""}, + {"productDefinition",1663}, + {""}, {""}, {""}, + {"Lux",1074}, + {"codedValues",283}, {""}, {""}, {""}, - {"charValues",427}, + {"bufrDataEncoded",100}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"computeLaplacianOperator",292}, {""}, - {"faModelName",843}, - {""}, {""}, {""}, {""}, - {"defaultFaFieldName",668}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"gridName",705}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"globalDomain",902}, + {"Nassigned",1233}, {""}, - {"referenceValue",1801}, + {"applicationIdentifier",35}, {""}, {""}, {""}, - {"g2grid",891}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"angleSubdivisions",311}, + {"numberOfIterations",1341}, {""}, {""}, {""}, {""}, - {"verifyingMonth",2348}, - {""}, {""}, {""}, - {"xDirectionGridLengthInMillimetres",2413}, - {""}, {""}, - {"secondDimensionPhysicalSignificance",1950}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"longitudeOfFirstGridPointInDegrees",1182}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"typeOfTimeIncrement",2272}, - {""}, {""}, - {"verificationMonth",2346}, + {"marsExpver",1093}, {""}, - {"forecastPeriod",874}, - {""}, {""}, - {"standardParallelInDegrees",2111}, - {""}, {""}, - {"defaultParameter",672}, - {""}, {""}, {""}, - {"selectedMinute",2045}, - {"sectionPosition",2020}, + {"energyNorm",519}, {""}, {""}, {""}, - {"totalNumber",2220}, - {"parameterIndicator",1656}, - {"westLongitudeOfCluster",2374}, - {"SPD",225}, - {""}, {""}, {""}, {""}, {""}, - {"indicatorOfUnitForTimeRange",983}, + {"subcentreOfAnalysis",2090}, {""}, - {"numberOfRadials",1457}, - {""}, {""}, {""}, - {"calendarIdentification",382}, - {""}, {""}, - {"unitOfTimeIncrement",2293}, - {"scaleFactorOfSecondFixedSurface",1907}, - {""}, {""}, - {"windPresent",2392}, - {""}, {""}, - {"floatVal",869}, - {"clusterMember7",542}, - {""}, {""}, {""}, {""}, - {"scaledFrequencies",1915}, - {"defaultTypeOfLevel",676}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"systemNumber",2162}, - {"internalVersion",1000}, + {"iDirectionIncrement",756}, + {""}, + {"editionNumber",479}, {""}, - {"neitherPresent",1345}, + {"dataAccessors",357}, {""}, - {"significanceOfReferenceTime",2065}, + {"lengthOfMessage",939}, + {"rdbtimeSecond",1713}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"boustrophedonicOrdering",375}, - {""}, {""}, {""}, {""}, - {"treatmentOfMissingData",2234}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"accumulationInterval",292}, - {""}, {""}, - {"codedValues",556}, - {""}, {""}, {""}, - {"numberOfIntegers",1423}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"legNumber",1102}, {""}, {""}, - {"ensembleStandardDeviation",771}, + {"cfName",140}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"monthlyVerificationTime",1209}, + {"TAFstr",2125}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"forecastPeriodTo",876}, - {"dataRepresentation",635}, + {"sectionNumber",1982}, {""}, {""}, {""}, {""}, - {"dateOfForecastRun",649}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"numberOfOperationalForecastTube",1354}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"numberOfForecastsUsedInLocalTime",1332}, {""}, - {"originalParameterNumber",1561}, - {""}, {""}, - {"forecastPeriodFrom",875}, + {"DxInMetres",461}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"perturbedType",1678}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"coordinate3Flag",592}, + {"tablesVersion",2121}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"typeOfEnsembleMember",2228}, + {"pvlLocation",1681}, + {"yDirectionGridLengthInMetres",2416}, + {"simpleThinningSkip",2014}, + {"addressOfFileFreeSpaceInfo",9}, {""}, {""}, {""}, - {"is_aerosol_optical",1023}, - {""}, - {"offsetSection7",1527}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"numberOfMembersInEnsemble",1429}, - {""}, {""}, - {"extractedDateTimeNumberOfSubsets",834}, - {"nameOfFirstFixedSurface",1341}, + {"spectralDataRepresentationType",2054}, {""}, {""}, {""}, {""}, - {"epsStatisticsPoint",776}, - {""}, {""}, - {"methodNumber",1293}, - {""}, {""}, {""}, {""}, - {"internationalDataSubCategory",1001}, - {""}, - {"isConstant",1011}, - {""}, {""}, - {"calendarIdentificationTemplateNumber",383}, - {"numberOfTimeIncrementsOfForecastsUsedInLocalTime",1471}, - {"earthMinorAxisInMetres",720}, - {""}, - {"defaultFaModelName",670}, - {""}, {""}, {""}, {""}, - {"typeOfFirstFixedSurface",2254}, - {""}, {""}, {""}, - {"expandedNames",784}, - {"probPoint",1724}, - {""}, {""}, - {"dewPointTemperature",686}, - {""}, - {"LIMITS",98}, - {""}, - {"lsdate_bug",1211}, - {""}, {""}, - {"typeOfEnsembleMember",2253}, - {""}, {""}, - {"LcxInMetres",119}, + {"monthlyVerificationDate",1207}, {""}, {""}, {""}, - {"isHindcast",1016}, - {"lstime_bug",1212}, - {"dataRepresentationType",638}, + {"II",762}, {""}, {""}, {""}, - {"matchLandType",1255}, - {"LuxInMetres",148}, - {""}, - {"productIdentifier",1734}, - {"generatingProcessTemplateNumber",898}, - {"is_chemical_distfn",1025}, + {"spectralDataRepresentationMode",2053}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"marsClass",1217}, - {""}, {""}, - {"lengthOfIndexTemplate",1108}, - {""}, {""}, {""}, {""}, - {"defaultSequence",673}, + {""}, {""}, {""}, {""}, {""}, + {"numberOfInts",1340}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"Nf",1246}, {""}, {""}, {""}, - {"longitudeFirstInDegrees",1173}, - {""}, {""}, {""}, {""}, - {"startStepInHours",2117}, + {"verificationDate",2326}, {""}, - {"clusterIdentifier",534}, - {""}, {""}, {""}, {""}, - {"LaR",107}, - {""}, {""}, {""}, - {"sampleSizeOfModelClimate",1886}, + {"doExtractDateTime",448}, + {""}, {""}, + {"clusterNumber",276}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"corr3Data",334}, {""}, - {"numberInTheAuxiliaryArray",1366}, + {"unitOfOffsetFromReferenceTime",2268}, + {"corr2Data",333}, {""}, - {"param_value_min",1651}, + {"simpleThinningStart",2015}, + {""}, {""}, {""}, + {"floatValues",645}, {""}, - {"oceanLevName",1495}, - {""}, {""}, {""}, {""}, - {"LoR",127}, + {"selectedMonth",1988}, + {""}, {""}, {""}, {""}, {""}, + {"northLatitudeOfCluster",1261}, {""}, - {"latitudeOfGridPoints",1073}, + {"TAF",2124}, + {""}, {""}, {""}, {""}, {""}, + {"stringValues",2088}, + {"createNewData",351}, {""}, {""}, {""}, - {"temperatureAndDewpointPresent",2177}, + {"channelNumber",153}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, + {"LxInMetres",1079}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"defaultShortName",674}, - {""}, - {"Adelta",13}, + {"defaultName",406}, + {""}, {""}, {""}, + {"timeIncrement",2160}, {""}, - {"scaleFactorOfDistributionFunctionParameter",1894}, + {"correction3Part",342}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"yDirectionGridLengthInMillimetres",2417}, + {""}, {""}, {""}, {""}, {""}, + {"southLatitudeOfCluster",2037}, + {""}, {""}, {""}, {""}, + {"eastLongitudeOfCluster",473}, {""}, {""}, - {"scanningMode7",1943}, + {"endOfRange",510}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"thresholdIndicator",2189}, - {"dataRepresentationTemplate",636}, + {"DxInDegrees",460}, + {""}, {""}, + {"marsExperimentOffset",1092}, {""}, {""}, {""}, {""}, {""}, {""}, - {"marsExpver",1224}, + {"levelValues",952}, {""}, - {"inputDataPresentIndicator",985}, + {"g2grid",668}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"monthlyVerificationTime",1330}, - {"floatValues",870}, + {"subSetJ",2101}, + {""}, {""}, {""}, {""}, {""}, + {"deleteExtraLocalSection",416}, + {""}, {""}, {""}, {""}, + {"isAccumulation",802}, {""}, {""}, - {"section6",2002}, + {"scalingFactorForFrequencies",1879}, {""}, {""}, {""}, - {"NL",184}, + {"modeNumber",1204}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"lengthIncrementForTheGroupLengths",935}, + {"corr1Data",332}, {""}, - {"Nb",192}, + {"forecastMonth",649}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"isAuto",1005}, - {""}, {""}, {""}, - {"stringValues",2139}, - {""}, {""}, {""}, - {"CDFstr",22}, + {"numberOfMembersInEnsemble",1346}, {""}, {""}, {""}, - {"tablesVersion",2170}, - {"rectimeHour",1787}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"corr3Data",605}, + {"faFieldName",615}, {""}, {""}, {""}, - {"TAFstr",233}, - {"standardParallelInMicrodegrees",2112}, - {""}, {""}, {""}, {""}, {""}, - {"parameterCode",1654}, + {"levTypeName",954}, + {""}, + {"numberOfMissing",1347}, + {"westLongitudeOfCluster",2357}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"libraryVersion",955}, {""}, {""}, {""}, {""}, {""}, {""}, - {"angleOfRotationInDegrees",309}, - {"dataRepresentationTemplateNumber",637}, - {""}, {""}, {""}, - {"CDF",21}, - {"numberOfMissingInStatisticalProcess",1431}, + {"globalDomain",681}, {""}, {""}, - {"changeDecimalPrecision",418}, + {"NL",1253}, {""}, {""}, {""}, {""}, {""}, - {"defaultFaLevelName",669}, - {"clusteringMethod",548}, - {"corr1Data",603}, - {""}, {""}, {""}, - {"TAF",232}, - {""}, - {"monthlyVerificationDate",1328}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"postProcessing",1689}, - {""}, {""}, {""}, - {"extractSubsetList",832}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"averagingPeriod",324}, + {"indexingTimeMM",773}, {""}, - {"oneConstant",1536}, - {""}, {""}, {""}, - {"localHour",1149}, + {"unitsOfFirstFixedSurface",2280}, + {""}, {""}, + {"inputExtendedDelayedDescriptorReplicationFactor",785}, + {"angleSubdivisions",29}, {""}, {""}, {""}, {""}, {""}, {""}, - {"bufrDataEncoded",376}, - {""}, {""}, {""}, - {"longitudeOfLastGridPoint",1185}, + {"tileIndex",2155}, {""}, {""}, {""}, - {"dataAccessors",628}, + {"latLonValues",920}, {""}, {""}, {""}, {""}, {""}, {""}, - {"faLevelName",842}, - {"marsExperimentOffset",1223}, - {"changingPrecision",423}, - {"typicalHour",2279}, - {""}, {""}, {""}, {""}, {""}, - {"constantFieldHalfByte",577}, + {"distanceFromTubeToEnsembleMean",440}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"orientationOfTheGrid",1557}, - {""}, {""}, {""}, {""}, - {"deleteExtraLocalSection",682}, + {"longitudeOfStretchingPole",1045}, {""}, {""}, {""}, {""}, - {"orderOfSPD",1555}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, - {"tubeNumber",2243}, + {"calendarIdPresent",108}, {""}, {""}, {""}, {""}, {""}, {""}, - {"endOfProduct",757}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"secondsOfReference",1970}, + {"climatologicalRegime",161}, + {""}, {""}, + {"numberOfIntegers",1339}, {""}, - {"trueLengthOfLastGroup",2236}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"primaryMissingValue",1721}, - {""}, {""}, {""}, {""}, - {"default_max_val",677}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"numberOfReservedBytes",1461}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"tileClassification",2198}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"centuryOfReference",410}, - {""}, {""}, {""}, - {"indexTemplateNumber",972}, + {"typeOfTimeIncrement",2247}, {""}, {""}, {""}, - {"longitudeOfStretchingPole",1193}, + {"parameterIndicator",1580}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"meaningOfVerticalCoordinate",1288}, + {"numberOfEffectiveValues",1325}, + {"internationalDataSubCategory",799}, + {""}, {""}, {""}, + {"totalNumber",2182}, + {""}, {""}, + {"primaryMissingValue",1652}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"subcentreOfAnalysis",2152}, - {""}, - {"tableNumber",2166}, + {"longitudeOfFirstGridPointInDegrees",1034}, + {""}, {""}, {""}, {""}, {""}, + {"unitOfTimeIncrement",2270}, + {""}, {""}, + {"simpleThinningMissingRadius",2013}, {""}, {""}, {""}, {""}, {""}, - {"tigge_short_name",2197}, + {"sensitiveAreaDomain",1993}, + {""}, + {"verificationMonth",2327}, + {"angleOfRotation",26}, + {"indicatorOfUnitForTimeIncrement",779}, + {"extractSubsetList",593}, + {"monthOfForecastUsedInLocalTime",1214}, + {"windVariableDirection",2384}, + {""}, + {"minuteOfReference",1180}, + {""}, {""}, {""}, + {"systemNumber",2112}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"sphericalHarmonics",2108}, + {"extractedDateTimeNumberOfSubsets",589}, + {""}, {""}, + {"LIMITS",956}, + {""}, + {"tablesVersionLatest",2122}, {""}, - {"correction4",614}, + {"secondDimensionPhysicalSignificance",1900}, {""}, {""}, {""}, {""}, - {"numberOfDistinctSection7s",1405}, - {"bitmapSectionPresent",369}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"baseAddress",51}, {""}, {""}, {""}, {""}, - {"memberNumber",1289}, + {"dateOfReference",385}, + {"ensembleStandardDeviation",533}, {""}, - {"jdSelected",1046}, - {""}, {""}, - {"doExtractDateTime",705}, + {"yearOfReference",2426}, + {"LcxInMetres",925}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"timeOfReference",2166}, {""}, {""}, - {"targetCompressionRatio",2173}, + {"marsParam",1106}, + {"LuxInMetres",1075}, + {"legNumber",933}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"isConstant",816}, {""}, - {"tiggeCentre",2190}, + {"monthlyVerificationMonth",1208}, + {"meaningOfVerticalCoordinate",1150}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"oceanLevName",1418}, + {"epsPoint",536}, + {""}, {""}, {""}, + {"faModelName",620}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"corr4Data",335}, {""}, {""}, - {"iDirectionIncrementInDegrees",957}, - {"libraryVersion",1121}, + {"realPart",1717}, {""}, {""}, {""}, {""}, {""}, {""}, - {"identificationNumber",962}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"verticalCoordinate",2357}, - {""}, {""}, {""}, - {"julianDay",1047}, - {""}, {""}, {""}, - {"typeOfHorizontalLine",2257}, + {"scaleFactorOfFirstSize",1863}, {""}, - {"parameterNumber",1658}, - {"iterationNumber",1036}, - {""}, {""}, - {"dimensionNumber",692}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"dayOfReference",664}, - {""}, {""}, {""}, {""}, - {"additionalFlagPresent",297}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"partitionNumber",1663}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"calendarIdentification",106}, + {""}, + {"xDirectionGridLength",2399}, {""}, {""}, - {"originatingCentre",1564}, + {"verifyingMonth",2329}, + {""}, {""}, {""}, {""}, {""}, + {"methodNumber",1166}, {""}, {""}, {""}, - {"parameterCategory",1653}, + {"numberOfModeOfDistribution",1351}, + {""}, + {"Experiment_Identifier",554}, + {""}, + {"marsClass",1086}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"numericValues",1403}, {""}, {""}, - {"directionNumber",695}, + {"numberInTheAuxiliaryArray",1283}, {""}, {""}, {""}, {""}, - {"truncateDegrees",2237}, - {""}, {""}, {""}, {""}, {""}, - {"inputExtendedDelayedDescriptorReplicationFactor",987}, + {"indicatorOfUnitOfTimeRange",781}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"primaryMissingValueSubstitute",1722}, - {""}, {""}, {""}, {""}, {""}, - {"nameOfSecondFixedSurface",1342}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"numericValues",1486}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"productIdentifier",1666}, {""}, {""}, {""}, {""}, {""}, {""}, - {"numberOfDistributionFunctionParameters",1408}, - {"coordinate1Flag",587}, - {""}, {""}, - {"typeOfSecondFixedSurface",2268}, - {""}, {""}, - {"monthlyVerificationMonth",1329}, + {"scaleFactorOfStandardDeviation",1875}, + {"Nb",1235}, + {""}, + {"accumulationInterval",3}, {""}, {""}, {""}, - {"biFourierSubTruncationType",363}, + {"oneConstant",1459}, {""}, {""}, {""}, - {"Nx",204}, - {""}, - {"subCentre",2140}, + {"minutesAfterDataCutoff",1181}, + {"scaleFactorOfStandardDeviationInTheCluster",1876}, {""}, {""}, {""}, {""}, - {"numberOfRows",1462}, - {""}, - {"numberOfEffectiveValues",1409}, + {"primaryMissingValueSubstitute",1653}, {""}, - {"satelliteNumber",1889}, - {""}, {""}, {""}, - {"coordinate4OfLastGridPoint",597}, - {""}, - {"extractSubsetIntervalEnd",830}, - {""}, - {"verticalDomainTemplateNumber",2360}, - {""}, {""}, {""}, {""}, - {"tableCode",2165}, + {"numberOfMissingInStatisticalProcess",1348}, {""}, {""}, {""}, {""}, - {"integerValues",999}, - {"functionCode",887}, - {"latLonValues",1063}, + {"clusterIdentifier",263}, {""}, {""}, - {"extractSubsetIntervalStart",831}, - {""}, {""}, {""}, - {"missingValue",1307}, - {""}, - {"angleOfRotationOfProjection",310}, - {""}, - {"Model_Identifier",168}, - {""}, {""}, {""}, {""}, - {"extraValues",802}, - {"widthOfSPD",2380}, + {"correction4Part",344}, {""}, {""}, - {"grib2divider",906}, + {"selectedMinute",1987}, + {"correction1Part",338}, + {""}, {""}, {""}, {""}, {""}, + {"integerValues",797}, {""}, - {"localDefNumberTwo",1142}, + {"defaultTypeOfLevel",412}, + {""}, {""}, + {"streamOfAnalysis",2085}, + {""}, {""}, + {"addExtraLocalSection",7}, + {"missingValue",1188}, + {"defaultShortName",409}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"extraValues",600}, + {""}, {""}, {""}, {""}, + {"scaleFactorOfSecondSize",1873}, {""}, - {"Ncx",193}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"radialAngularSpacing",1695}, + {"hourOfReference",745}, + {"windPresent",2373}, {""}, - {"Nux",202}, + {"thresholdIndicator",2142}, {""}, {""}, - {"orientationOfTheGridInDegrees",1558}, - {""}, {""}, - {"lengthOfProjectLocalTemplate",1111}, - {""}, {""}, {""}, - {"verticalCoordinateDefinition",2358}, + {"defaultFaFieldName",401}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"setCalendarId",2052}, - {""}, {""}, - {"rdbtimeHour",1774}, - {""}, {""}, {""}, {""}, - {"typeOfCompressionUsed",2250}, - {"clusterMember6",541}, - {""}, {""}, {""}, {""}, - {"typeOfSizeInterval",2269}, {""}, - {"groupLeafNodeK",922}, - {"firstMonthUsedToBuildClimateMonth2",860}, + {"TIDE",2145}, + {""}, {""}, {""}, {""}, {""}, + {"ifsParam",761}, + {""}, + {"scaledFrequencies",1834}, {""}, {""}, - {"startOfHeaders",2113}, + {"calendarIdentificationTemplateNumber",107}, + {"parameterCode",1578}, + {"faLevelName",616}, {""}, {""}, {""}, - {"endDayTrend4",737}, - {""}, - {"N",171}, + {"trueLengthOfLastGroup",2201}, {""}, - {"distanceFromTubeToEnsembleMean",701}, + {"inputDelayedDescriptorReplicationFactor",784}, + {""}, {""}, + {"is_uerra",834}, + {"sizeOfOffsets",2021}, + {"minuteOfAnalysis",1174}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"coordinateIndexNumber",600}, - {"tableReference",2167}, + {"latitudeOfStretchingPole",905}, + {"nameOfFirstFixedSurface",1230}, + {"monthOfReference",1217}, {""}, {""}, {""}, {""}, - {"isAccumulation",1004}, - {"monthOfModelVersion",1326}, + {"generatingProcessTemplateNumber",675}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"unitsOfSecondFixedSurface",2281}, {""}, - {"secondOfModelVersion",1956}, - {"windVariableDirection",2403}, + {"expandedNames",546}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"dayOfAnalysis",391}, {""}, - {"minuteOfModelVersion",1302}, + {"typeOfFirstFixedSurface",2229}, + {""}, {""}, {""}, + {"referenceValueError",1739}, {""}, - {"longitudeOfIcosahedronPole",1184}, - {""}, {""}, - {"latitudeOfStretchingPole",1083}, + {"defaultFaLevelName",402}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"tubeNumber",2212}, + {"mAngleMultiplier",1084}, {""}, {""}, {""}, - {"aerosolbinnumber",301}, + {"defaultSequence",408}, {""}, {""}, {""}, {""}, - {"projString",1738}, - {"scanPosition",1938}, + {"short_name",2003}, {""}, {""}, - {"isotopeIdentificationNumber",1034}, - {""}, {""}, {""}, {""}, - {"qnhPresent",1751}, - {"thisMarsClass",2183}, + {"_T",2114}, + {""}, {""}, {""}, {""}, {""}, + {"normAtInitialTime",1258}, + {"sectionPosition",1983}, + {""}, {""}, {""}, {""}, {""}, + {"CDFstr",119}, + {"verticalVisibility",2342}, + {"numberOfVerticalPoints",1401}, + {""}, {""}, + {"standardParallel",2059}, {""}, {""}, {""}, {""}, - {"sensitiveAreaDomain",2049}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"cloudsTitle4",529}, - {"julianForecastDay",1048}, - {""}, {""}, {""}, - {"directionScalingFactor",697}, + {"scaleFactorOfFirstFixedSurface",1862}, + {""}, + {"boustrophedonicOrdering",97}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, - {"numberOfPartitions",1441}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, + {"lengthOfIndexTemplate",938}, + {""}, + {"dewPointTemperature",420}, + {"startStepInHours",2067}, + {"scanningModeForOneDiamond",1886}, {""}, {""}, - {"extraDimensionPresent",799}, - {"offsetSection6",1526}, + {"numberOfVerticalCoordinateValues",1399}, + {""}, + {"is_aerosol",803}, + {""}, + {"numberInTheGridCoordinateList",1284}, {""}, {""}, {""}, {""}, {""}, {""}, - {"clusterMember10",536}, - {"originatingClass",1566}, - {""}, {""}, {""}, - {"streamOfAnalysis",2136}, - {""}, {""}, - {"latitudeOfFirstGridPoint",1071}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"typeOfPostProcessing",2264}, + {"tableNumber",2117}, + {""}, + {"_endStep",511}, + {"section_09",1924}, + {""}, + {"earthMinorAxisInMetres",470}, {""}, {""}, {""}, - {"numberOfRemaininChars",1459}, - {"boot_edition",372}, + {"postAuxiliary",1618}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"section9Pointer",2015}, - {""}, - {"scaleFactorOfRadiusOfSphericalEarth",1906}, + {"cnmc_isac",280}, {""}, {""}, - {"numberOfDistinctSection6s",1404}, - {""}, {""}, {""}, {""}, - {"earthMajorAxis",717}, - {"qfePresent",1747}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"xDirectionGridLengthInMetres",2400}, {""}, {""}, - {"complexPacking",560}, + {"offsetAfterPadding",1426}, {""}, - {"Azi",15}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"minuteOfAnalysis",1298}, + {"tileClassification",2154}, {""}, {""}, {""}, {""}, {""}, {""}, - {"SecondOfModelVersion",227}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"gridDefinitionTemplateNumber",916}, - {"versionNumOfFilesFreeSpaceStorage",2350}, + {"longitudeFirstInDegrees",1025}, {""}, - {"local_padding",1169}, + {"numberOfVerticalGridDescriptors",1400}, + {""}, {""}, {""}, + {"numberOfTimeIncrementsOfForecastsUsedInLocalTime",1388}, + {""}, {""}, + {"memberNumber",1160}, + {"parameterCategory",1577}, + {"iDirectionIncrementInDegrees",759}, + {"scaleValuesBy",1878}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"defaultFaModelName",403}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"listMembersMissing",1122}, + {"numberOfRadials",1374}, {""}, {""}, - {"baseAddress",330}, - {"projectionCenterFlag",1742}, + {"forecastPeriod",652}, + {"local_use",1020}, {""}, - {"offsetSection10",1520}, + {"standardParallelInDegrees",2060}, + {"extraLocalSectionPresent",599}, {""}, - {"dayOfAnalysis",659}, + {"defaultParameter",407}, + {""}, {""}, {""}, {""}, {""}, + {"section_8",1972}, + {""}, {""}, {""}, {""}, + {"gts_header",718}, + {"SPD",2052}, + {"numberOfDistributionFunctionParameters",1324}, {""}, {""}, - {"consensusCount",574}, - {""}, - {"numberOfVerticalPoints",1484}, - {""}, - {"jIncrement",1042}, - {""}, - {"laplacianScalingFactor",1059}, + {"setCalendarId",1996}, {""}, {""}, {""}, {""}, - {"section0Pointer",1973}, + {"CDF",118}, + {""}, {""}, {""}, + {"monthOfModelVersion",1215}, {""}, - {"verticalVisibility",2361}, - {"jdLocal",1045}, - {"constituentType",578}, - {"section_7",2038}, - {"minutesAfterDataCutoff",1304}, + {"secondOfModelVersion",1907}, + {"indexTemplateNumber",775}, + {""}, + {"minuteOfModelVersion",1178}, + {""}, {""}, + {"targetCompressionRatio",2126}, + {"extractSubsetIntervalEnd",591}, + {"tiggeCentre",2146}, + {"cnmc_cmcc",279}, + {""}, {""}, {""}, + {"Azi",46}, {""}, {""}, {""}, {""}, {""}, - {"timeDomainTemplate",2202}, + {"numberOfOctetsExtraDescriptors",1353}, {""}, {""}, - {"scanningMode6",1942}, + {"is_chemical",813}, + {"angleOfRotationInDegrees",27}, + {"extractSubsetIntervalStart",592}, + {"neitherPresent",1244}, + {"verticalCoordinate",2338}, + {""}, + {"grib3divider",687}, + {"offsetAfterLocalSection",1425}, + {""}, + {"grib2divider",684}, + {"extraLocalSectionNumber",598}, {""}, {""}, {""}, - {"lengthOfHeaders",1107}, + {"numberOfForecastsInEnsemble",1329}, + {"subCentre",2089}, + {"clusterMember10",267}, {""}, {""}, {""}, - {"shapeOfTheEarth",2057}, - {""}, - {"projectionCentreFlag",1743}, + {"probPoint",1657}, {""}, {""}, - {"numberOfVerticalCoordinateValues",1482}, - {""}, {""}, {""}, {""}, - {"climateDateTo",432}, - {"selectedHour",2044}, + {"doExtractSubsets",449}, {""}, - {"missingValueManagement",1308}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"typicalDateTime",2277}, + {"tablesVersionLatestOfficial",2123}, {""}, - {"productDefinitionTemplateNumber",1732}, - {""}, {""}, - {"predefined_grid",1695}, - {""}, {""}, - {"scaleFactorOfLowerLimit",1902}, + {"offsetSection10",1444}, {""}, {""}, {""}, {""}, - {"longitudeOfLastGridPointInDegrees",1186}, - {"radialAngularSpacing",1758}, - {""}, {""}, - {"isSatelliteType",1020}, - {"mAngleMultiplier",1214}, + {"efas_model",480}, + {"XRInMetres",2408}, {""}, {""}, {""}, - {"selectedFcIndex",2043}, - {""}, {""}, - {"tablesVersionLatest",2171}, + {"tableCode",2116}, {""}, {""}, {""}, - {"endOfMessage",756}, + {"coordinateIndexNumber",329}, + {"tigge_name",2150}, {""}, - {"constituentTypeName",579}, - {""}, {""}, - {"numberOfVerticalGridDescriptors",1483}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"MonthOfModelVersion",170}, + {"is_localtime",825}, {""}, - {"groupWidth",926}, - {"coordinate3OfLastGridPoint",594}, - {"endOfHeadersMarker",754}, - {"MinuteOfModelVersion",159}, - {"modelVersionTime",1319}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"operationalForecastCluster",1550}, - {""}, {""}, - {"interpretationOfNumberOfPoints",1002}, + {"offsetAfterCentreLocalSection",1423}, + {"xDirectionGridLengthInMillimetres",2401}, + {"jdSelected",846}, + {"_TS",2204}, {""}, {""}, - {"section_07",2027}, - {""}, {""}, - {"projectLocalTemplate",1740}, - {"identificationOfProject",964}, + {"forecastPeriodTo",654}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"identificationNumber",752}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"originalParameterNumber",1486}, + {""}, {""}, {""}, + {"section_08",1923}, + {"constituentType",307}, {""}, {""}, {""}, - {"referenceReflectivityForEchoTop",1798}, + {"julianDay",852}, + {""}, {""}, {""}, {""}, {""}, + {"_anoffset",30}, {""}, {""}, - {"scaleFactorAtReferencePoint",1891}, - {""}, - {"stepInHours",2127}, - {""}, - {"secondaryMissingValue",1967}, + {"significanceOfReferenceTime",2012}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"numberOfLevelValues",1342}, + {""}, {""}, {""}, {""}, + {"missingValueManagement",1189}, + {"observationGeneratingProcessIdentifier",1413}, {""}, - {"productDefinitionTemplateNumberInternal",1733}, - {"centralClusterDefinition",397}, + {"inputDataPresentIndicator",783}, {""}, - {"perturbationNumber",1677}, + {"epsStatisticsPoint",538}, + {"dataRepresentation",364}, + {"parameterNumber",1582}, + {"iterationNumber",836}, {""}, {""}, - {"totalInitialConditions",2218}, + {"dimensionNumber",431}, {""}, {""}, {""}, - {"section8Pointer",2012}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"normAtInitialTime",1350}, - {""}, {""}, {""}, {""}, - {"bufrHeaderCentre",377}, - {"centuryOfReferenceTimeOfData",411}, + {"constituentTypeName",308}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"modelVersionDate",1318}, - {""}, {""}, {""}, - {"decimalPrecision",666}, - {""}, {""}, - {"nosigPresent",1360}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"SecondOfModelVersion",1908}, {""}, {""}, - {"addExtraLocalSection",296}, - {"numberOfOctetsExtraDescriptors",1436}, + {"partitionNumber",1592}, {""}, - {"epsContinous",773}, - {"timeRangeIndicator",2211}, - {""}, {""}, {""}, {""}, - {"expandedCodes",779}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"truncateDegrees",2202}, + {"scaleFactorOfSecondFixedSurface",1872}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"modelVersionTime",1203}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"directionNumber",434}, + {"functionCode",664}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"grib1divider",683}, {""}, {""}, - {"postAuxiliary",1687}, + {"referenceReflectivityForEchoTop",1735}, {""}, {""}, - {"centralLongitude",398}, - {"dayOfEndOfOverallTimeInterval",660}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"offsetAfterLocalSection",1502}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"falseNorthing",846}, - {"extraLocalSectionPresent",801}, - {"implementationDateOfModelCycle",969}, + {"coordinate3Flag",321}, + {""}, {""}, + {"treatmentOfMissingData",2199}, + {""}, {""}, {""}, + {"numberOfAnalysis",1286}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"doExtractSubsets",706}, - {"grib3divider",907}, + {"forecastPeriodFrom",653}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, - {"patch_precip_fp",1670}, - {"default_step_units",679}, - {"typicalCentury",2275}, + {""}, + {"isotopeIdentificationNumber",829}, + {"verticalDomainTemplateNumber",2341}, {""}, {""}, - {"reservedSection4",1817}, - {"averaging2Flag",323}, + {"verticalCoordinateDefinition",2339}, {""}, - {"groupWidths",927}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"centreLatitudeInDegrees",406}, - {"offsetAfterPadding",1503}, - {"stepRangeInHours",2129}, - {""}, {""}, {""}, - {"grib1divider",903}, - {""}, {""}, {""}, {""}, - {"componentIndex",561}, + {"dataRepresentationType",367}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"modelVersionDate",1202}, {""}, - {"localDefNumberOne",1141}, - {"WMO",261}, + {"temperatureAndDewpointPresent",2129}, + {""}, {""}, {""}, {""}, {""}, + {"timeDomainTemplate",2158}, {""}, {""}, {""}, - {"originatorLocalTemplate",1567}, - {"NR",186}, - {"numberOfChars",1381}, + {"aerosolbinnumber",17}, {""}, - {"secondLatitudeInDegrees",1952}, + {"driverInformationBlockAddress",452}, + {"satelliteNumber",1831}, {""}, {""}, {""}, {""}, {""}, - {"extraLocalSectionNumber",800}, + {"endOfFileAddress",505}, {""}, - {"easternLongitudeOfDomain",724}, - {""}, {""}, - {"offsetAfterCentreLocalSection",1500}, + {"LoVInDegrees",1065}, + {""}, + {"originatingCentre",1489}, + {""}, {""}, {""}, + {"climateDateTo",160}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"extractAreaWestLongitude",567}, + {"typicalDateTime",2254}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"totalNumberOfdimensions",2233}, - {""}, {""}, - {"scaleFactorOfDistanceFromEnsembleMean",1893}, + {"groupLeafNodeK",709}, + {""}, {""}, {""}, {""}, {""}, + {"isSatelliteType",832}, {""}, {""}, {""}, - {"nameLegacyECMF",1340}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"firstMonthUsedToBuildClimateMonth1",859}, + {"scaleFactorOfDistributionFunctionParameter",1859}, + {""}, {""}, {""}, + {"jdLocal",845}, + {"LoV",1064}, + {""}, {""}, {""}, {""}, {""}, + {"dataRepresentationTemplate",365}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"dateOfForecastRun",381}, {""}, {""}, {""}, {""}, - {"extendedFlag",797}, + {"groupWidth",713}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"longitudeOfStretchingPoleInDegrees",1046}, {""}, {""}, - {"yearOfCentury",2425}, - {""}, {""}, {""}, - {"endOfFileAddress",753}, + {"biFourierSubTruncationType",85}, + {""}, + {"changeDecimalPrecision",146}, {""}, {""}, {""}, {""}, {""}, {""}, - {"longitudeOfStretchingPoleInDegrees",1194}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"Experiment_Identifier",55}, - {"versionOfModelClimate",2356}, + {"clusteringMethod",265}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"gridDefinitionTemplateNumber",703}, + {""}, {""}, {""}, {""}, + {"postProcessing",1620}, + {""}, {""}, {""}, {""}, + {"projString",1675}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"averagingPeriod",44}, + {"monthOfAnalysis",1211}, + {"LaR",874}, + {""}, {""}, {""}, + {"classOfAnalysis",158}, {""}, - {"Lar2InDegrees",112}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, - {"Lor2InDegrees",146}, - {"spare4",2101}, - {""}, - {"spatialProcessing",2102}, - {"isCorrection",1012}, - {""}, - {"heightOrPressureOfLevel",936}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"totalNumberOfTubes",2231}, - {"expandedOriginalCodes",785}, - {""}, {""}, - {"expandedOriginalWidths",788}, - {""}, {""}, - {"numberOfValues",1481}, - {""}, - {"numberOfForecastsInEnsemble",1413}, - {""}, - {"centralLongitudeInDegrees",399}, - {""}, {""}, {""}, {""}, - {"DjInMetres",37}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"MonthOfModelVersion",1216}, + {"dataRepresentationTemplateNumber",366}, {""}, {""}, {""}, - {"totalNumberOfFrequencies",2225}, - {""}, {""}, {""}, {""}, - {"extractAreaWestLongitude",808}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"section4",1993}, - {""}, {""}, {""}, {""}, {""}, - {"localSectionPresent",1161}, + {"MinuteOfModelVersion",1179}, {""}, {""}, {""}, - {"mars_labeling",1247}, - {"tablesVersionLatestOfficial",2172}, + {"LoR",1059}, + {"dirty_statistics",437}, + {"directionScalingFactor",436}, {""}, - {"bitmapPresent",368}, + {"Nx",1408}, {""}, - {"md5Data",1262}, - {""}, {""}, - {"timeRangeIndicatorFromStepRange",2212}, - {"totalNumberOfQuantiles",2228}, - {"numberOfCharacters",1380}, + {"thisMarsClass",2136}, + {"typeOfCompressionUsed",2225}, + {""}, {""}, {""}, {""}, {""}, + {"changingPrecision",151}, {""}, {""}, {""}, - {"P",209}, + {"standardParallelInMicrodegrees",2061}, {""}, {""}, {""}, - {"messageLength",1290}, - {"cfVarName",415}, - {""}, - {"expandedOriginalScales",787}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"versionNumberOfGribLocalTables",2354}, - {"isEPS",1013}, - {""}, {""}, {""}, {""}, - {"probContinous",1723}, + {"projectLocalTemplate",1672}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"sfc_levtype",2000}, + {""}, {""}, {""}, {""}, {""}, + {"numberOfValues",1398}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"gts_ddhh00",717}, {""}, {""}, {""}, - {"secondDimensionCoordinateValueDefinition",1949}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"diffInHours",690}, + {"bitmapSectionPresent",91}, {""}, {""}, {""}, {""}, {""}, - {"northernLatitudeOfClusterDomain",1358}, - {""}, - {"totalNumberOfDirections",2223}, - {"numberOfAnalysis",1370}, - {"biFourierCoefficients",356}, - {""}, - {"La2InDegrees",104}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"numberOfDistinctSection4s",1402}, - {"scaledValueOfFirstSize",1922}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"Lo2InDegrees",126}, - {""}, - {"westernLongitudeOfDomain",2377}, - {"correction3",612}, - {""}, {""}, - {"gridCoordinate",912}, - {"latitudeOfStretchingPoleInDegrees",1084}, + {"indicatorOfUnitForTimeRange",780}, + {""}, {""}, {""}, + {"Ncx",1240}, {""}, {""}, - {"LoVInDegrees",129}, + {"offsetAfterBitmap",1422}, + {"numberOfReservedBytes",1378}, + {""}, {""}, {""}, {""}, + {"XR",2407}, {""}, - {"attributeOfTile",319}, - {""}, {""}, {""}, - {"md5Section9",1276}, - {"startingAzimuth",2119}, + {"Nux",1405}, + {"centralClusterDefinition",125}, + {"endOfProduct",509}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"expandedAbbreviations",540}, + {"orientationOfTheGrid",1480}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"predefined_grid",1625}, + {"groupWidths",714}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"julianForecastDay",853}, + {"consensusCount",303}, + {"centralLongitude",126}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, + {"latitudeOfStretchingPoleInDegrees",906}, {""}, - {"n2",1335}, + {"is_chemical_distfn",814}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, + {"iScansNegatively",806}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"scaleFactorOfLengthOfSemiMinorAxis",1901}, - {""}, {""}, {""}, {""}, {""}, - {"matrixOfValues",1259}, + {"laplacianScalingFactor",872}, + {"originatingClass",1491}, + {""}, {""}, {""}, + {"dateOfAnalysis",379}, {""}, {""}, - {"driverInformationBlockAddress",709}, - {""}, {""}, {""}, {""}, - {"southernLatitudeOfClusterDomain",2090}, + {"yearOfAnalysis",2419}, {""}, {""}, {""}, - {"_leg_number",290}, - {"ITN",92}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"sp2",2093}, + {"cfVarName",143}, + {"isHindcast",824}, + {""}, + {"Lar2InDegrees",878}, + {"timeOfAnalysis",2162}, + {""}, {""}, {""}, + {"centreLatitudeInDegrees",134}, {""}, {""}, - {"extremeClockwiseWindDirection",835}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"spare2",2099}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"latitudeOfFirstGridPointInDegrees",1072}, + {"nameOfSecondFixedSurface",1231}, {""}, {""}, - {"X2",266}, - {"longitudeOfFirstDiamondCentreLine",1179}, - {"longitudeOfFirstDiamondCenterLine",1178}, + {"jIncrement",847}, + {""}, + {"N",1221}, + {""}, + {"Lor2InDegrees",1063}, + {"crraLocalVersion",352}, + {""}, {""}, {""}, + {"typeOfAnalysis",2222}, {""}, {""}, {""}, - {"default_min_val",678}, + {"northernLatitudeOfClusterDomain",1259}, {""}, - {"correction2Part",611}, - {"kurt",1053}, - {"latitudeOfCentralPointInClusterDomain",1068}, - {"referenceValueError",1802}, + {"orderOfSPD",1479}, + {"secondLatitudeInDegrees",1903}, + {"is_aerosol_optical",804}, + {""}, + {"easternLongitudeOfDomain",472}, {""}, {""}, {""}, {""}, - {"longitudeOfFirstDiamondCentreLineInDegrees",1180}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, - {"dummy2",712}, + {"typeOfSecondFixedSurface",2242}, + {""}, {""}, {""}, {""}, + {"unitsBias",2273}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"operationalForecastCluster",1472}, + {""}, + {"earthMajorAxis",467}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"startingAzimuth",2062}, {""}, - {"listMembersUsed4",1129}, + {"messageLength",1161}, + {"typicalCentury",2252}, {""}, {""}, {""}, {""}, - {"scaledValueOfFirstFixedSurface",1921}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"dataCategory",358}, + {""}, + {"coordinate4Flag",324}, {""}, {""}, {""}, - {"expandedOriginalReferences",786}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"timeCoordinateDefinition",2201}, + {"coordinate1Flag",316}, {""}, {""}, - {"numberOfForecastsInCluster",1412}, - {"kurtosis",1054}, + {"firstMonthUsedToBuildClimateMonth2",635}, + {"scaleFactorOfDistanceFromEnsembleMean",1858}, + {""}, + {"totalInitialConditions",2180}, + {"selectedFcIndex",1985}, + {""}, + {"lsdate_bug",1070}, {""}, {""}, {""}, {""}, - {"fileConsistencyFlags",852}, - {""}, {""}, {""}, - {"scaledValueOfStandardDeviation",1934}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"projectionCenterFlag",1670}, {""}, - {"projectLocalTemplateNumber",1741}, - {"scaledValueOfStandardDeviationInTheCluster",1935}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"marsType2",1246}, + {"primaryBitmap",1651}, {""}, {""}, {""}, - {"scaleFactorOfPrimeMeridianOffset",1905}, + {"lstime_bug",1073}, {""}, - {"DjInDegrees",36}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, - {"listOfContributingSpectralBands",1130}, + {"additionalFlagPresent",8}, {""}, - {"quantileValue",1757}, - {""}, {""}, {""}, {""}, - {"endStepInHours",760}, + {"southernLatitudeOfClusterDomain",2035}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"originatorLocalTemplate",1492}, {""}, - {"numberOfCategories",1379}, + {"secondsOfReference",1914}, {""}, - {"keySat",1051}, + {"sampleSizeOfModelClimate",1828}, {""}, {""}, {""}, - {"param_value_max",1650}, - {"keyData",1049}, - {"TIDE",234}, - {""}, {""}, {""}, {""}, {""}, - {"scaledValueOfSecondSize",1932}, + {"secondDimensionCoordinateValueDefinition",1899}, + {"identificationOfProject",754}, + {""}, {""}, {""}, {""}, + {"westernLongitudeOfDomain",2356}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"rectimeHour",1724}, {""}, {""}, - {"centralLongitudeInMicrodegrees",400}, - {""}, - {"typeOfIntervalForFirstAndSecondSize",2258}, - {"crraLocalVersion",623}, + {"projectionCentreFlag",1671}, + {"epsContinous",535}, {""}, {""}, {""}, {""}, {""}, - {"scaleValuesBy",1913}, + {"expandedCodes",541}, + {"centralLongitudeInDegrees",127}, + {"averaging2Flag",43}, + {""}, {""}, {""}, + {"La2InDegrees",865}, + {"typeOfIntervalForFirstAndSecondSize",2233}, + {"param_value_min",1590}, + {""}, + {"centuryOfReference",138}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"Lar1InDegrees",876}, + {"implementationDateOfModelCycle",765}, {""}, {""}, - {"plusOneinOrdersOfSPD",1685}, + {"Lo2InDegrees",975}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"md5Data",1133}, + {"dayOfEndOfOverallTimeInterval",392}, + {"typeOfSizeInterval",2243}, + {""}, + {"Lor1InDegrees",1061}, + {""}, {""}, {""}, {""}, + {"numberOfDataValues",1313}, + {"hourOfAnalysis",739}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"md5Section8",1275}, - {"predefined_grid_values",1696}, + {"matrixOfValues",1128}, + {"instrumentType",792}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"unitsBias",2296}, - {""}, {""}, {""}, {""}, - {"paleontologicalOffset",1645}, - {"secondaryMissingValueSubstitute",1968}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"averaging1Flag",322}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, - {"endDayTrend3",736}, - {""}, {""}, {""}, - {"is_ocean2d_param",1028}, + {"isEPS",822}, {""}, {""}, - {"md5Structure",1277}, + {"longitudeOfIcosahedronPole",1036}, {""}, {""}, - {"section_6",2037}, - {"numberOfRepresentativeMember",1460}, - {"skewness",2078}, - {""}, {""}, {""}, {""}, {""}, - {"primaryBitmap",1720}, - {""}, {""}, {""}, {""}, {""}, - {"coordinate1Start",588}, - {""}, {""}, {""}, - {"reserved2",1811}, - {""}, - {"numberIncludedInAverage",1368}, - {""}, {""}, {""}, - {"section7Pointer",2008}, - {""}, {""}, {""}, - {"numberOfDataValues",1397}, - {"epsStatisticsContinous",775}, + {"NAT",1234}, + {""}, {""}, + {"localHour",989}, {""}, - {"selectStepTemplateInstant",2040}, - {"groupInternalNodeK",921}, - {""}, {""}, {""}, {""}, {""}, - {"flagForIrregularGridCoordinateList",865}, - {""}, {""}, {""}, {""}, {""}, - {"cloudsTitle3",524}, - {"startOfRange",2115}, - {"typeOfIntervalForFirstAndSecondWavelength",2259}, - {"centreForTable2",404}, + {"secondaryMissingValue",1896}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"numberOfDistinctSection6s",1320}, + {""}, {""}, {""}, {""}, + {"tableReference",2118}, + {"typeOfAuxiliaryInformation",2223}, + {"widthOfSPD",2361}, {""}, {""}, - {"numberOfPoints",1442}, + {"perturbationNumber",1606}, + {"southEastLatitudeOfVerficationArea",2032}, {""}, {""}, - {"unknown",2305}, + {"doExtractArea",447}, + {"typicalHour",2256}, + {"firstMonthUsedToBuildClimateMonth1",634}, {""}, {""}, - {"unitsConversionOffset",2297}, + {"localDefNumberTwo",984}, + {""}, + {"numberOfDistinctSection3s",1317}, + {"numberOfChars",1297}, {""}, {""}, {""}, - {"keyMore",1050}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"maxLevelValue",1131}, + {""}, {""}, + {"attributeOfTile",39}, {""}, {""}, - {"expandedAbbreviations",778}, + {"numberOfPartitions",1358}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"md5Section9",1147}, + {"productDefinitionTemplateNumber",1664}, {""}, {""}, {""}, {""}, - {"numberOfForecastsInTheCluster",1414}, - {""}, - {"extractDateTimeYearStart",828}, + {"typeOfIntervalForFirstAndSecondWavelength",2234}, {""}, {""}, {""}, - {"Lar1InDegrees",110}, - {""}, {""}, {""}, - {"formatVersionMajorNumber",881}, + {"secondaryBitmap",1890}, + {""}, {""}, + {"dayOfReference",397}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"quantileValue",1694}, + {""}, + {"kurt",860}, + {""}, {""}, {""}, {""}, {""}, + {"orientationOfTheGridInDegrees",1481}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"Lor1InDegrees",144}, - {""}, {""}, - {"section_06",2026}, - {"qualityControl",1753}, + {"averaging1Flag",42}, + {""}, {""}, {""}, + {"La1InDegrees",863}, {""}, {""}, {""}, {""}, {""}, {""}, - {"section_10",2031}, - {"widthOfLengths",2379}, - {""}, {""}, {""}, {""}, - {"numberOfColumns",1388}, - {""}, {""}, {""}, {""}, - {"stepHumanReadable",2126}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"tigge_short_name",2152}, {""}, {""}, - {"NAT",174}, + {"endOfMessage",508}, {""}, {""}, {""}, {""}, - {"upperThreshold",2319}, - {""}, {""}, {""}, - {"clusterMember4",539}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"Lo1InDegrees",973}, + {""}, {""}, + {"n3",1225}, + {"projectLocalTemplateNumber",1673}, + {"probContinous",1656}, + {""}, {""}, + {"halfByte",721}, + {"n2",1223}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"kurtosis",861}, + {"correction2Part",340}, + {"productDefinitionTemplateNumberInternal",1665}, + {""}, {""}, + {"skewness",2025}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"WMO",2389}, {""}, {""}, {""}, - {"endMinuteTrend4",748}, - {"typeOfOriginalFieldValues",2262}, + {"constantFieldHalfByte",306}, {""}, {""}, - {"typeOfCalendar",2249}, - {"gridPointPosition",919}, + {"md5Section8",1146}, + {"sp3",2042}, + {""}, {""}, {""}, {""}, {""}, + {"sp2",2041}, {""}, {""}, {""}, {""}, - {"md5DataSection",1263}, - {"totalNumberOfForecastProbabilities",2224}, - {"section2Present",1986}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"totalNumberOfTileAttributePairs",2230}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"skew",2077}, - {""}, - {"inputOriginatingCentre",988}, + {"spare3",2048}, + {""}, {""}, {""}, + {"sphericalHarmonics",2057}, {""}, - {"resolutionAndComponentFlags",1818}, + {"spare2",2047}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"section6",1963}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"unknown",2282}, + {"keySat",857}, + {""}, {""}, {""}, {""}, + {"keyData",855}, + {""}, {""}, + {"extraDimensionPresent",597}, + {"skew",2024}, {""}, - {"sectionLengthLimitForEnsembles",2017}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"extremeClockwiseWindDirection",601}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"numberOfCharacters",1296}, {""}, {""}, - {"md5TimeDomainSection",1278}, + {"legBaseTime",931}, {""}, {""}, - {"secondsOfAnalysis",1969}, + {"dummy2",456}, {""}, - {"La1InDegrees",102}, + {"isCorrection",817}, + {"secondsOfAnalysis",1913}, + {"biFourierCoefficients",78}, + {"secondaryBitmapPresent",1892}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"scanPosition",1887}, + {""}, {""}, {""}, + {"falseNorthing",619}, {""}, {""}, - {"iScansNegatively",959}, - {"stepUnits",2133}, - {""}, - {"PLPresent",212}, - {"windSpeedTrend4",2397}, - {""}, {""}, {""}, {""}, {""}, - {"halfByte",932}, - {""}, - {"Lo1InDegrees",124}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"packingType",1574}, - {"scaledValueOfSecondFixedSurface",1931}, + {"yearOfCentury",2420}, + {"qnhPresent",1688}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"componentIndex",290}, {""}, - {"offsetSection4",1524}, - {"totalNumberOfIterations",2227}, - {"frequencyNumber",885}, - {"referenceOfWidths",1797}, + {"listMembersMissing",957}, + {"default_max_val",404}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"complexPacking",289}, {""}, {""}, {""}, - {"totalNumberOfDataValuesMissingInStatisticalProcess",2222}, + {"centuryOfAnalysis",137}, + {""}, {""}, {""}, + {"missing_values",1191}, {""}, {""}, - {"centuryOfAnalysis",409}, + {"extendedFlag",561}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"coordinate1End",586}, - {"extractDateTimeHourStart",815}, - {""}, {""}, - {"swapScanningX",2159}, - {"numberOfOctectsForNumberOfPoints",1435}, + {"correction3",341}, {""}, - {"windDirectionTrend4",2386}, + {"marsType2",1116}, + {""}, {""}, + {"legBaseDate",930}, + {"fileConsistencyFlags",626}, + {"numberOfRemaininChars",1376}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"La2",103}, {""}, - {"Lar2",111}, - {"nameECMF",1339}, - {""}, {""}, {""}, - {"azimuthalWidth",326}, - {""}, {""}, {""}, - {"numberOfDistinctSection3s",1401}, + {"sectionLengthLimitForEnsembles",1980}, + {"scaledValueOfFirstSize",1841}, {""}, {""}, {""}, - {"Lo2",125}, + {"table2Version",2115}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"secondaryBitmaps",1893}, + {""}, {""}, + {"versionOfModelClimate",2337}, {""}, - {"Lor2",145}, - {"Latin2",116}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"secondaryBitmap",1962}, - {"7777",5}, - {""}, {""}, {""}, {""}, {""}, - {"legBaseTime",1101}, + {"scaleFactorOfLowerLimit",1867}, + {"DjInMetres",446}, {""}, {""}, - {"LoV",128}, - {""}, {""}, {""}, {""}, {""}, - {"correction1",608}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"radiusOfCentralCluster",1762}, - {"dataCategory",629}, + {"section9Pointer",1978}, + {""}, {""}, {""}, {""}, + {"rdbtimeHour",1710}, {""}, - {"lowerThreshold",1208}, - {""}, {""}, {""}, {""}, {""}, - {"cloudsTitle4Trend4",533}, + {"coordinate1Start",317}, {""}, {""}, - {"typeOfAuxiliaryInformation",2248}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, - {"clusterMember2",537}, + {"qfePresent",1684}, {""}, - {"marsStream1",1242}, + {"predefined_grid_values",1626}, {""}, - {"unitsECMF",2300}, + {"md5Structure",1148}, + {"formatVersionMajorNumber",658}, {""}, {""}, {""}, {""}, {""}, - {"numberOfDataPoints",1395}, - {""}, {""}, {""}, - {"listOfEnsembleForecastNumbers",1132}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"endMinuteTrend2",746}, + {"typeOfPostProcessing",2239}, + {"widthOfLengths",2360}, + {"lengthOfProjectLocalTemplate",941}, {""}, {""}, - {"legBaseDate",1100}, - {"scanningMode4",1940}, - {""}, {""}, {""}, {""}, {""}, - {"stepForClustering",2125}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"iScansPositively",960}, + {"numberOfCategories",1295}, {""}, {""}, {""}, {""}, - {"doSimpleThinning",707}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"section6Pointer",2004}, - {""}, {""}, {""}, - {"selectStepTemplateInterval",2041}, + {"scaledValueOfStandardDeviation",1853}, + {"selectStepTemplateInstant",1991}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"numberOfRows",1379}, + {"scaledValueOfStandardDeviationInTheCluster",1854}, + {"iScansPositively",807}, + {""}, + {"gridCoordinate",699}, + {""}, + {"longitudeOfFirstDiamondCentreLine",1031}, + {"longitudeOfFirstDiamondCenterLine",1030}, + {""}, + {"expandedOriginalCodes",547}, {""}, {""}, - {"windUnits",2398}, - {""}, {""}, {""}, {""}, {""}, - {"section4Padding",1995}, - {"_numberOfValues",291}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"numberInMixedCoordinateDefinition",1365}, + {"expandedOriginalWidths",550}, {""}, - {"reservedSection3",1816}, + {"southEastLatitudeOfLPOArea",2031}, {""}, - {"windSpeedTrend2",2395}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"gridDescriptionSectionPresent",917}, + {"secondaryBitmapsCount",1894}, {""}, - {"monthOfEndOfOverallTimeInterval",1323}, - {"cloudsTitle4Trend2",531}, - {""}, {""}, {""}, {""}, - {"yearOfEndOfOverallTimeInterval",2426}, - {""}, {""}, {""}, {""}, - {"offsetSection2",1522}, + {"centralLongitudeInMicrodegrees",128}, + {"md5DataSection",1134}, {""}, - {"runwaySideCodeState4",1884}, - {"secondaryBitmapPresent",1963}, + {"longitudeOfFirstDiamondCentreLineInDegrees",1032}, + {"typeOfHorizontalLine",2232}, + {""}, {""}, {""}, {""}, {""}, + {"DELETE",414}, {""}, {""}, {""}, {""}, - {"table2Version",2164}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"frequencyScalingFactor",886}, - {""}, {""}, - {"is_ocean3d_param",1029}, - {""}, {""}, {""}, - {"windDirectionTrend2",2384}, + {"nameECMF",1228}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"BufrTemplate",105}, + {"numberOfForecastsInCluster",1328}, {""}, {""}, - {"scaledValueOfDistributionFunctionParameter",1918}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"reserved3",1750}, + {"timeRangeIndicator",2167}, {""}, {""}, - {"inputProcessIdentifier",990}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"numberOfLogicals",1427}, - {""}, {""}, {""}, - {"lengthOfTimeRange",1112}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"totalNumberOfRepetitions",2229}, - {""}, - {"section9Length",2014}, - {"indicatorOfTypeOfLevel",980}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"section2Padding",1984}, + {"extractDateTimeYearStart",587}, + {"scaledValueOfSecondSize",1851}, + {"reserved2",1749}, {""}, {""}, {""}, {""}, {""}, - {"biFourierResolutionParameterM",359}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"runwayDepositState4",1844}, - {"secondaryBitmaps",1964}, - {""}, {""}, {""}, - {"Ensemble_Identifier",51}, - {""}, - {"jDirectionIncrement",1038}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"lengthOfOriginatorLocalTemplate",1110}, - {""}, - {"typicalMonth",2281}, - {""}, {""}, - {"conceptsDir1",566}, + {"section8Pointer",1975}, + {"angleOfRotationOfProjection",28}, + {"latitudeOfGridPoints",895}, {""}, {""}, {""}, {""}, {""}, {""}, - {"section10Pointer",1976}, + {"upperThreshold",2296}, + {"section0Pointer",1926}, {""}, {""}, {""}, - {"distinctLongitudes",703}, - {""}, {""}, {""}, - {"numberOfComponents",1389}, + {"keyMore",856}, {""}, {""}, - {"pressureUnits",1719}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"latitudeOfSouthernPole",1081}, - {"secondaryBitMap",1961}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"endDayTrend1",734}, - {""}, {""}, {""}, {""}, {""}, - {"Yo",281}, + {"localDefNumberOne",983}, {""}, {""}, {""}, {""}, - {"secondaryBitmapsCount",1965}, + {"nosigPresent",1267}, + {"versionNumOfFilesFreeSpaceStorage",2334}, + {"thisExperimentVersionNumber",2135}, {""}, - {"section0Length",1972}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"La2",864}, + {"expandedOriginalScales",549}, + {"Lar2",877}, + {"interpretationOfNumberOfPoints",800}, {""}, - {"Yp",282}, + {"secondaryBitMap",1891}, + {"numberOfDistinctSection7s",1321}, + {""}, {""}, {""}, + {"numberOfDistinctSection4s",1318}, {""}, {""}, {""}, {""}, - {"longitudeOfNorthWestCornerOfArea",1187}, + {"Lo2",974}, {""}, - {"hourOfEndOfOverallTimeInterval",946}, - {"md5Section7",1274}, - {""}, {""}, - {"BufrTemplate",19}, + {"Lor2",1062}, + {"Latin2",884}, {""}, {""}, {""}, {""}, {""}, {""}, - {"numberOfClusters",1384}, + {"unitsECMF",2277}, {""}, {""}, - {"expandBy",777}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"resolutionAndComponentFlags8",1825}, - {""}, - {"cloudsTitle1",514}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"g1conceptsMasterDir",890}, - {"deleteCalendarId",681}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"productionStatusOfProcessedData",1736}, - {"latitudeWhereDxAndDyAreSpecified",1093}, - {"runwaySideCodeState2",1882}, + {"sp1",2040}, {""}, {""}, - {"totalLength",2219}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"instrumentType",994}, + {"listOfContributingSpectralBands",965}, + {""}, {""}, {""}, + {"listOfEnsembleForecastNumbers",967}, + {""}, + {"level_value_list",951}, {""}, - {"coordinate2Flag",590}, - {"latitudeWhereDxAndDyAreSpecifiedInDegrees",1094}, + {"spare1",2046}, + {""}, {""}, {""}, + {"lowerThreshold",1068}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"timeCoordinateDefinition",2157}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"DjInDegrees",445}, {""}, {""}, - {"spaceUnitFlag",2095}, - {"indexedStorageInternalNodeK",973}, + {"dummy1",455}, {""}, - {"sectionLengthLimitForProbability",2018}, + {"X2",2395}, + {""}, {""}, + {"packingType",1503}, + {"shapeOfVerificationArea",2002}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"section1",1928}, + {""}, {""}, {""}, + {"scaledValueOfFirstFixedSurface",1840}, + {""}, {""}, {""}, {""}, + {"secondaryMissingValueSubstitute",1897}, + {"totalNumberOfdimensions",2188}, + {""}, {""}, {""}, {""}, + {"centreForTable2",132}, {""}, - {"secondOrderOfDifferentWidth",1958}, + {"md5TimeDomainSection",1149}, + {"endDayTrend3",488}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, + {"heightOrPressureOfLevel",727}, + {""}, + {"Model_Identifier",1199}, {""}, - {"swapScanningLat",2157}, + {"decimalPrecision",399}, {""}, {""}, {""}, {""}, {""}, {""}, - {"n3",1336}, - {"offsetAfterBitmap",1499}, - {"swapScanningLon",2158}, + {"offsetBSection9",1434}, {""}, {""}, - {"twoOrdersOfSPD",2245}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"section10Length",1975}, + {"marsType1",1115}, + {""}, {""}, + {"expandBy",539}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, + {"startOfHeaders",2063}, {""}, {""}, {""}, {""}, - {"latitudeLongitudeValues",1067}, - {"monthOfAnalysis",1322}, - {"cloudsTitle3Trend4",528}, + {"bufrdcExpandedDescriptors",101}, + {""}, {""}, + {"cloudsTitle3",253}, {""}, {""}, {""}, - {"classOfAnalysis",430}, - {""}, - {"bufrdcExpandedDescriptors",380}, + {"qualityControl",1690}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"numberOfForecastsInTheCluster",1330}, {""}, {""}, {""}, - {"coordinateFlag2",599}, + {"ITN",839}, + {""}, + {"latitudeOfCentralPointInClusterDomain",890}, {""}, - {"section8Length",2011}, + {"totalNumberOfTubes",2197}, {""}, {""}, {""}, {""}, {""}, - {"sp3",2094}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"runwayDepositState2",1842}, - {""}, {""}, {""}, - {"spare3",2100}, + {"expandedOriginalReferences",548}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"numberOfTimeRange",1472}, - {""}, {""}, {""}, - {"flagForAnyFurtherInformation",864}, + {"extractDateTimeHourStart",574}, + {"coordinate3OfLastGridPoint",323}, {""}, {""}, - {"parametersVersion",1661}, - {""}, - {"forecastProbabilityNumber",877}, + {"totalNumberOfQuantiles",2194}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"secondOfEndOfOverallTimeInterval",1953}, - {"selectedYear",2048}, - {""}, - {"minuteOfEndOfOverallTimeInterval",1299}, - {""}, {""}, - {"rangeBinSpacing",1766}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"localYear",1168}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"offsetBSection9",1507}, - {""}, {""}, - {"listMembersUsed3",1128}, + {"Yo",2429}, {""}, {""}, {""}, {""}, {""}, - {"sp1",2092}, + {"epsStatisticsContinous",537}, + {"numberIncludedInAverage",1279}, + {""}, {""}, {""}, + {"stepRangeInHours",2078}, + {"sectionLengthLimitForProbability",1981}, {""}, {""}, - {"subDefinitions2",2142}, + {"referenceOfWidths",1734}, {""}, {""}, - {"typicalYear",2284}, - {"offsetBeforeData",1509}, - {""}, - {"minutesAfterReferenceTimeOfDataCutoff",1305}, + {"Yp",2430}, + {""}, {""}, + {"flagForAnyFurtherInformation",639}, {""}, - {"spare1",2098}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"expandedCrex_scales",780}, - {"cloudsTitle3Trend2",526}, + {"windSpeedTrend3",2377}, {""}, - {"X1",264}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"biFourierResolutionSubSetParameterM",361}, - {""}, {""}, - {"localNumberOfObservations",1158}, - {"typeOfPreProcessing",2265}, - {""}, {""}, {""}, {""}, {""}, - {"Model_Additional_Information",167}, - {"localExtensionPadding",1146}, + {"rangeBinSpacing",1703}, + {""}, {""}, {""}, + {"windSpeedTrend2",2376}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, + {"windVariableDirectionTrend3",2387}, + {""}, + {"reserved1",1748}, + {"windVariableDirectionTrend2",2386}, {""}, {""}, {""}, - {"dummy1",711}, - {""}, {""}, {""}, {""}, {""}, - {"significanceOfReferenceDateAndTime",2064}, - {""}, {""}, {""}, {""}, {""}, - {"observationType",1491}, + {"longitudeOfLastGridPoint",1037}, {""}, - {"section1",1974}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"percentileValue",1674}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"ijDirectionIncrementGiven",968}, - {"dateOfAnalysis",647}, + {"numberOfColumns",1304}, {""}, - {"expandedCrex_units",781}, - {"yearOfAnalysis",2424}, + {"typeOfOriginalFieldValues",2237}, {""}, - {"windVariableDirectionTrend4",2407}, - {""}, {""}, {""}, - {"versionNumOfRootGroupSymbolTableEntry",2351}, + {"totalLength",2181}, {""}, - {"timeOfAnalysis",2206}, - {"scaleFactorOfSecondWavelength",1909}, - {"timeDomainTemplateNumber",2203}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"unitOfTimeRange",2294}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"typeOfAnalysis",2247}, - {"marsType1",1245}, + {"section10Length",1930}, {""}, - {"gribDataQualityChecks",908}, - {""}, {""}, {""}, - {"cloudsTitle4Trend3",532}, + {"stepUnits",2082}, {""}, {""}, - {"ls_labeling",1210}, + {"offsetBeforeData",1429}, {""}, {""}, - {"directionOfVariation",696}, - {""}, {""}, {""}, {""}, {""}, - {"yCoordinateOfOriginOfSectorImage",2416}, - {"matchAerosolPacking",1254}, + {"bitmapPresent",90}, {""}, - {"rdbtimeMonth",1776}, - {""}, {""}, {""}, {""}, - {"versionNumberOfExperimentalSuite",2353}, - {""}, {""}, {""}, {""}, {""}, - {"accuracyMultipliedByFactor",294}, - {"numberOfPackedValues",1438}, + {"totalNumberOfDirections",2189}, {""}, - {"scaleFactorOfFirstWavelength",1899}, - {""}, {""}, {""}, {""}, {""}, - {"cloudsTitle4Trend1",530}, + {"selectedHour",1986}, + {""}, + {"windDirectionTrend3",2366}, + {""}, + {"selectStepTemplateInterval",1992}, + {""}, {""}, + {"La1",862}, + {"windDirectionTrend2",2365}, + {"Lar1",875}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"southEastLongitudeOfVerficationArea",2086}, - {"section4Pointer",1996}, - {"reserved3",1812}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"doExtractArea",704}, {""}, {""}, {""}, - {"missingValuesPresent",1310}, - {"originalParameterTableNumber",1562}, - {""}, {""}, {""}, {""}, - {"earthMajorAxisInMetres",718}, - {""}, - {"windVariableDirectionTrend2",2405}, - {""}, {""}, {""}, {""}, {""}, - {"dateSSTFieldUsed",655}, - {"section3Padding",1990}, + {"Lo1",972}, {""}, - {"groupLengths",923}, - {""}, {""}, - {"md5Section6",1273}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"Lor1",1060}, + {"Latin1",882}, {""}, {""}, {""}, {""}, {""}, - {"marsGrid",1226}, - {"presentTrend4",1702}, + {"totalNumberOfFrequencies",2191}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"flagForIrregularGridCoordinateList",640}, + {"spatialProcessing",2050}, {""}, {""}, - {"updateSequenceNumber",2316}, + {"boot_edition",94}, + {""}, {""}, {""}, + {"timeRangeIndicatorFromStepRange",2168}, + {""}, {""}, {""}, + {"windUnits",2379}, + {"centuryOfReferenceTimeOfData",139}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"clusterMember6",272}, + {""}, + {"typicalMonth",2258}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"offsetSection6",1450}, {""}, - {"section1Padding",1981}, + {"stepInHours",2076}, + {""}, + {"bufrHeaderCentre",102}, {""}, {""}, {""}, {""}, {""}, {""}, - {"reserved1",1810}, + {"accuracyMultipliedByFactor",5}, + {""}, {""}, {""}, {""}, {""}, + {"X1",2393}, {""}, {""}, {""}, {""}, {""}, {""}, - {"longitudeOfReferencePoint",1188}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"lengthOfHeaders",937}, + {""}, {""}, + {"localSectionPresent",1014}, + {"shapeOfTheEarth",2001}, + {"parametersVersion",1584}, + {""}, + {"clusterMember3",269}, + {"scaledValueOfSecondFixedSurface",1850}, {""}, {""}, {""}, {""}, - {"hourOfAnalysis",945}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"section2Pointer",1985}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"clusterMember2",268}, + {""}, {""}, {""}, {""}, + {"offsetSection3",1447}, + {"selectedYear",1990}, {""}, {""}, - {"SOH",224}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"firstDimensionCoordinateValueDefinition",855}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"scaleFactorOfRadiusOfSphericalEarth",1871}, {""}, - {"southEastLatitudeOfVerficationArea",2084}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, - {"unitsConversionScaleFactor",2298}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, - {"section_4",2035}, - {"compressedData",562}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"variationOfVisibility",2333}, - {"scaledValueOfRadiusOfSphericalEarth",1930}, - {"section3Flags",1988}, - {""}, {""}, {""}, {""}, {""}, - {"backgroundProcess",328}, + {"offsetSection2",1446}, + {""}, + {"correction1",337}, {""}, {""}, - {"originatorLocalTemplateNumber",1568}, + {"endMinuteTrend3",499}, + {"gridDescriptionSectionPresent",704}, + {"windVariableDirectionTrend1",2385}, + {""}, + {"localYear",1022}, + {""}, + {"endMinuteTrend2",498}, + {"reservedSection3",1754}, + {""}, {""}, {""}, {""}, {""}, + {"southEastLongitudeOfVerficationArea",2034}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"expandedCrex_widths",782}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"latitudeOfIcosahedronPole",1074}, + {"typicalYear",2261}, + {""}, + {"marsStream1",1112}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"spatialSmoothingOfProduct",2103}, - {"section1Flags",1979}, - {"Sub-Experiment_Identifier",231}, - {"originOfPostProcessing",1560}, + {"modelErrorType",1197}, + {""}, + {"runwaySideCodeState3",1821}, + {"numberOfLogicals",1344}, + {""}, {""}, {""}, {""}, + {"runwaySideCodeState2",1820}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"versionNumberOfGribLocalTables",2332}, {""}, {""}, {""}, {""}, {""}, - {"rdbtimeYear",1779}, - {""}, {""}, {""}, - {"bitsPerValue",370}, - {""}, {""}, {""}, - {"thisExperimentVersionNumber",2182}, + {"groupInternalNodeK",708}, + {"probabilityType",1654}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, - {"reservedNeedNotBePresent",1813}, {""}, {""}, {""}, {""}, - {"variationOfVisibilityDirection",2334}, + {"pressureUnits",1650}, {""}, - {"longitudeOfSubSatellitePoint",1195}, - {""}, {""}, {""}, - {"variationOfVisibilityDirectionAngle",2335}, + {"local_padding",1011}, + {""}, {""}, {""}, {""}, + {"percentileValue",1603}, + {"METARstr",1164}, {""}, {""}, {""}, - {"presentTrend2",1700}, - {""}, - {"section_04",2024}, + {"resolutionAndComponentFlags",1756}, + {""}, {""}, {""}, {""}, + {"probabilityTypeName",1655}, {""}, {""}, - {"longitudeOfSubSatellitePointInDegrees",1196}, + {"typeOfCalendar",2224}, + {""}, {""}, {""}, + {"scaledValueOfDistributionFunctionParameter",1837}, + {""}, {""}, {""}, + {"grib2LocalSectionPresent",686}, {""}, - {"GTSstr",79}, - {"expandedUnits",790}, + {"scaleFactorAtReferencePoint",1856}, {""}, {""}, {""}, - {"shortNameECMF",2060}, + {"spare4",2049}, {""}, {""}, {""}, {""}, {""}, - {"NP",185}, - {""}, {""}, {""}, {""}, - {"formatVersionMinorNumber",882}, - {""}, {""}, - {"section9UniqueIdentifier",2016}, - {"runwayFrictionCoefficientState4",1880}, - {""}, {""}, - {"Dj",34}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"frequencyNumber",662}, + {"scaleFactorOfLengthOfSemiMinorAxis",1866}, + {""}, + {"endOfHeadersMarker",506}, + {""}, {""}, {""}, {""}, {""}, + {"azimuthalWidth",47}, + {"windSpeedTrend1",2375}, {""}, {""}, - {"cloudsCode4",509}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"masterTablesVersionNumber",1251}, + {"section9Length",1977}, + {""}, {""}, {""}, {""}, + {"NV",1407}, + {"latitudeWhereDxAndDyAreSpecified",917}, + {""}, {""}, {""}, {""}, + {"runwayDepositState3",1781}, {""}, {""}, - {"shapeOfVerificationArea",2058}, - {"scaledValueOfLowerLimit",1926}, - {""}, {""}, {""}, {""}, {""}, - {"cloudsTitle1Trend4",518}, - {"preProcessingParameter",1692}, - {""}, {""}, {""}, {""}, {""}, - {"secondaryBitmapsSize",1966}, + {"stepForClustering",2074}, {""}, {""}, - {"reducedGrid",1790}, - {"tiggeLAMName",2191}, - {"windGust",2387}, - {"offsetFromReferenceOfFirstTime",1516}, + {"runwayDepositState2",1780}, + {""}, {""}, {""}, + {"paleontologicalOffset",1574}, + {"latitudeWhereDxAndDyAreSpecifiedInDegrees",918}, {""}, {""}, - {"cloudsTitle3Trend3",527}, + {"numberInMixedCoordinateDefinition",1282}, {""}, {""}, {""}, - {"La1",101}, + {"section7",1968}, + {"jDirectionIncrement",841}, {""}, - {"Lar1",109}, - {"clusterMember3",538}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"longitudeOfNorthWestCornerOfArea",1039}, {""}, {""}, - {"Lo1",123}, - {"endMonthTrend4",752}, - {"Lor1",143}, - {"Latin1",114}, - {""}, {""}, {""}, {""}, - {"tsectionNumber4",2240}, - {"N2",173}, - {"endMinuteTrend3",747}, - {""}, - {"offsetICEFieldsUsed",1517}, + {"scanningMode6",1883}, + {"grib2LocalSectionNumber",685}, + {"section4",1952}, + {""}, {""}, {""}, + {"unitsConversionOffset",2274}, {""}, - {"isectionNumber4",1033}, + {"windDirectionTrend1",2364}, + {""}, {""}, {""}, {""}, + {"monthOfEndOfOverallTimeInterval",1212}, {""}, - {"cloudsTitle3Trend1",525}, + {"swapScanningLat",2107}, {""}, - {"numberOfBits",1371}, + {"tiggeLAMName",2147}, + {"distinctLongitudes",442}, + {"yearOfEndOfOverallTimeInterval",2421}, + {"coordinate2Flag",319}, {""}, {""}, {""}, - {"section_2",2033}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"NV",190}, + {"swapScanningLon",2108}, {""}, {""}, {""}, {""}, - {"grib2LocalSectionPresent",905}, - {""}, {""}, {""}, {""}, - {"subLocalDefinition2",2144}, - {"runwayFrictionCoefficientState2",1878}, + {"inputOriginatingCentre",786}, {""}, - {"offsetEndSection4",1513}, + {"groupLengths",710}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, - {"GTS",78}, + {"coordinate4OfLastGridPoint",326}, + {""}, {""}, + {"lengthOfOriginatorLocalTemplate",940}, {""}, - {"clusterMember1",535}, - {"METARstr",157}, - {""}, {""}, {""}, - {"dateOfModelVersion",652}, - {"firstOrderValues",861}, + {"rdbtimeMonth",1712}, + {""}, {""}, {""}, {""}, {""}, + {"productionStatusOfProcessedData",1668}, {""}, - {"yearOfModelVersion",2429}, - {"alternativeRowScanning",303}, + {"NR",1271}, + {""}, {""}, {""}, {""}, + {"conceptsDir1",295}, + {""}, {""}, + {"normAtFinalTime",1257}, + {"section8Length",1974}, + {""}, {""}, {""}, {""}, {""}, + {"correction4",343}, + {""}, {""}, + {"radiusOfCentralCluster",1699}, + {"section0Length",1925}, {""}, - {"windSpeedTrend3",2396}, + {"subDefinitions2",2092}, + {""}, {""}, + {"windVariableDirectionTrend4",2388}, {""}, {""}, {""}, - {"cloudsTitle1Trend2",516}, - {"timeOfModelVersion",2209}, + {"firstDimensionCoordinateValueDefinition",629}, + {""}, {""}, + {"extractDateTimeYearEnd",585}, + {"totalNumberOfTileAttributePairs",2196}, + {"doSimpleThinning",451}, + {"latitudeOfFirstGridPoint",893}, + {""}, {""}, {""}, {""}, + {"unpackedError",2284}, {""}, {""}, {""}, - {"section7Length",2007}, + {"endDayTrend1",486}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"endMinuteTrend1",745}, - {""}, {""}, {""}, - {"jDirectionIncrementInDegrees",1041}, - {""}, {""}, {""}, - {"secondOrderValuesDifferentWidths",1959}, + {"unitsConversionScaleFactor",2275}, {""}, - {"offsetSection3",1523}, - {""}, {""}, {""}, - {"DiGiven",31}, - {"grib2LocalSectionNumber",904}, - {"latitudeOfSouthernPoleInDegrees",1082}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, - {"listOfParametersUsedForClustering",1134}, - {"physicalMeaningOfVerticalCoordinate",1682}, + {"clusterMember1",266}, {""}, {""}, {""}, {""}, - {"windDirectionTrend3",2385}, - {""}, {""}, - {"typeOfGrid",2256}, - {""}, {""}, - {"localLatitude2",1152}, - {""}, - {"section_02",2022}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"numberMissingFromAveragesOrAccumulations",1369}, + {"nameLegacyECMF",1229}, {""}, - {"padding_sec1_loc",1639}, - {"mixedCoordinateFieldFlag",1312}, + {"numberOfRepresentativeMember",1377}, + {""}, {""}, + {"directionOfVariation",435}, + {"offsetSection1",1443}, + {""}, {""}, {""}, {""}, {""}, + {"resolutionAndComponentFlags8",1763}, {""}, {""}, {""}, - {"qnhUnits",1752}, + {"diffInHours",426}, + {"endMinuteTrend1",497}, + {"coordinateFlag2",328}, {""}, - {"windSpeedTrend1",2394}, + {"numberOfBits",1287}, {""}, - {"numberOfCoordinatesValues",1392}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"parameterUnits",1659}, + {"rdbtimeYear",1715}, {""}, {""}, {""}, {""}, {""}, {""}, - {"windVariableDirectionTrend3",2406}, - {""}, - {"section8UniqueIdentifier",2013}, - {"normAtFinalTime",1349}, - {"offsetSection1",1519}, - {"dayOfModelVersion",663}, - {""}, {""}, {""}, {""}, - {"numberOfDistinctSection5s",1403}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"minutesAfterReferenceTimeOfDataCutoff",1182}, {""}, {""}, - {"pentagonalResolutionParameterJ",1671}, - {""}, - {"extractDateTimeYearEnd",826}, + {"section2Present",1943}, {""}, {""}, {""}, - {"dateOfSSTFieldUsed",654}, - {"windDirectionTrend1",2383}, - {""}, - {"dayOfTheYearDate",665}, + {"cloudsTitle1",243}, {""}, {""}, {""}, - {"windVariableDirectionTrend1",2404}, + {"numberOfOctectsForNumberOfPoints",1352}, + {"observationType",1414}, + {"gribDataQualityChecks",688}, + {""}, {""}, {""}, {""}, + {"frequencyScalingFactor",663}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"scaledValueOfDistanceFromEnsembleMean",1917}, - {""}, {""}, {""}, {""}, {""}, - {"typeOfSSTFieldUsed",2267}, - {"md5Product",1266}, - {""}, - {"endMonthTrend2",750}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"qfeUnits",1748}, {""}, {""}, {""}, {""}, - {"isectionNumber2",1031}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"unpackedError",2307}, + {"runwaySideCodeState1",1819}, + {"latitudeLongitudeValues",889}, {""}, {""}, {""}, - {"section3Pointer",1991}, + {"section10Pointer",1931}, {""}, {""}, {""}, - {"hourOfModelVersion",949}, + {"matchAerosolPacking",1123}, {""}, {""}, {""}, - {"numberOfDataBinsAlongRadials",1393}, - {""}, {""}, {""}, {""}, {""}, - {"experimentVersionNumber",791}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"longitudeOfTangencyPoint",1197}, + {"totalNumberOfForecastProbabilities",2190}, {""}, {""}, {""}, {""}, - {"correction2",610}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"section1Pointer",1982}, + {"significanceOfReferenceDateAndTime",2011}, + {""}, {""}, {""}, {""}, + {"hourOfEndOfOverallTimeInterval",740}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"localExtensionPadding",986}, + {""}, {""}, {""}, {""}, + {"masterTablesVersionNumber",1120}, + {"packingError",1502}, + {"startOfRange",2065}, + {"totalNumberOfDataValuesMissingInStatisticalProcess",2187}, + {"numberOfClusters",1300}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"P",1497}, + {""}, {""}, {""}, {""}, + {"marsKeywords1",1098}, {""}, {""}, - {"paramIdECMF",1648}, + {"numberOfComponents",1305}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"numberOfCodedValues",1385}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"marsStream2",1243}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, + {"numberOfPoints",1359}, + {""}, {""}, {""}, + {"latitudeOfSouthernPole",903}, + {"g1conceptsMasterDir",667}, + {""}, {""}, {""}, {""}, {""}, + {"scaledValueOfDistanceFromEnsembleMean",1836}, + {""}, {""}, + {"mars_labeling",1099}, + {""}, {""}, {""}, {""}, {""}, + {"section3Flags",1946}, + {"spaceUnitFlag",2043}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"totalNumberOfIterations",2193}, + {"runwayDepositState1",1779}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, + {"reservedNeedNotBePresent",1751}, {""}, {""}, {""}, {""}, - {"runwaySideCodeState3",1883}, - {"Product_Identifier",218}, + {"section_10",1929}, + {""}, {""}, {""}, {""}, {""}, + {"deleteCalendarId",415}, + {""}, {""}, {""}, {""}, {""}, + {"timeDomainTemplateNumber",2159}, + {"backgroundProcess",49}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"DayOfModelVersion",29}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"pentagonalResolutionParameterK",1672}, + {"extractDateTimeHourEnd",572}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"variationOfVisibility",2314}, {""}, {""}, - {"rootGroupObjectHeaderAddress",1827}, - {""}, - {"PVPresent",214}, + {"endDayTrend4",489}, + {"ijDirectionIncrementGiven",764}, + {""}, {""}, {""}, + {"Ensemble_Identifier",528}, {""}, {""}, {""}, - {"P2",211}, + {"secondOfEndOfOverallTimeInterval",1904}, {""}, {""}, - {"definitionFilesVersion",680}, + {"minuteOfEndOfOverallTimeInterval",1175}, + {"latitudeOfIcosahedronPole",896}, {""}, {""}, {""}, {""}, {""}, {""}, - {"FMULTM",66}, + {"numberOfDataBinsAlongRadials",1309}, + {""}, {""}, + {"preBitmapValues",1622}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"subDefinitions1",2091}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, + {"marsGrid",1095}, {""}, {""}, - {"longitudeOfCentralPointInClusterDomain",1175}, - {"marsKeywords1",1229}, + {"indicatorOfTypeOfLevel",777}, + {""}, {""}, {""}, {""}, + {"endStepInHours",513}, + {"twoOrdersOfSPD",2214}, + {"cloudsTitle4",258}, + {"subLocalDefinition2",2096}, {""}, - {"ZLMULT",285}, - {"xCoordinateOfOriginOfSectorImage",2409}, - {"templatesMasterDir",2179}, - {""}, {""}, {""}, - {"packingError",1573}, + {"longitudeOfLastGridPointInDegrees",1038}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"is_ocean3d_param",827}, {""}, - {"localLongitude2",1155}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"originatingCentreOfAnalysis",1565}, - {""}, {""}, {""}, - {"extractDateTimeHourEnd",813}, - {""}, {""}, {""}, {""}, {""}, - {"runwaySideCodeState1",1881}, + {"variationOfVisibilityDirection",2315}, + {"is_ocean2d_param",826}, {""}, {""}, {""}, - {"backgroundGeneratingProcessIdentifier",327}, + {"section1Flags",1935}, + {"variationOfVisibilityDirectionAngle",2316}, + {""}, {""}, {""}, {""}, + {"default_min_val",405}, {""}, - {"verticalVisibilityCoded",2362}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"runwayDepositState3",1843}, + {"coordinateFlag1",327}, + {""}, {""}, {""}, {""}, + {"numberOfDataPoints",1311}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"falseEasting",845}, - {"unstructuredGrid",2311}, - {"************_EXPERIMENT_************",2}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"codedNumberOfFirstOrderPackedValues",554}, + {""}, + {"coordinate2Start",320}, + {"secondaryBitmapsSize",1895}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"windSpeedTrend4",2378}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"swapScanningX",2109}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"numberOfCoordinatesValues",1308}, + {""}, {""}, {""}, {""}, {""}, + {"section3Padding",1948}, + {""}, {""}, + {"section2Padding",1941}, {""}, {""}, {""}, {""}, - {"pentagonalResolutionParameterM",1673}, - {""}, {""}, {""}, - {"Total_Number_Members_Used",256}, - {"tiggeLocalVersion",2192}, + {"param_value_max",1589}, + {"compressedData",291}, + {""}, {""}, {""}, {""}, {""}, + {"windDirectionTrend4",2367}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"numberOfPackedValues",1355}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"masterTablesVersionNumberLatest",1121}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"windGust",2368}, + {""}, {""}, + {"unitOfTimeRange",2271}, {""}, {""}, - {"numberOfUnexpandedDescriptors",1474}, + {"numberMissingFromAveragesOrAccumulations",1285}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"deletePV",684}, - {""}, - {"unstructuredGridType",2313}, - {"coordinateFlag1",598}, + {"_numberOfValues",1397}, + {""}, {""}, {""}, {""}, {""}, + {"PLPresent",1615}, + {"missingValuesPresent",1192}, + {""}, {""}, + {"tiggeLocalVersion",2148}, + {"coordAveragingTims",314}, {""}, - {"scaledValueOfLengthOfSemiMinorAxis",1925}, + {"secondOrderOfDifferentWidth",1910}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"numberOfClusterLowResolution",1383}, - {"oneMinuteMeanMaximumRVR4",1541}, - {""}, - {"dayOfForecastUsedInLocalTime",662}, + {"originatingCentreOfAnalysis",1490}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"verticalVisibilityCoded",2343}, + {"numberOfDistinctSection5s",1319}, + {""}, {""}, {""}, + {"firstOrderValues",636}, {""}, - {"runwayDepositState1",1841}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"coordAveragingTims",585}, + {"offsetICEFieldsUsed",1441}, {""}, {""}, - {"section6Length",2003}, + {"AA",2}, + {"indexedStorageInternalNodeK",768}, {""}, {""}, {""}, {""}, - {"coordinate2Start",591}, + {"scaleFactorOfPrimeMeridianOffset",1870}, + {""}, + {"dateSSTFieldUsed",387}, + {""}, {""}, {""}, + {"clusterMember7",273}, {""}, {""}, {""}, {""}, - {"rdb_key",1770}, - {""}, {""}, - {"beginDayTrend4",339}, + {"GTSstr",719}, {""}, - {"probabilityType",1726}, + {"secondOrderValuesDifferentWidths",1911}, + {"clusterMember4",270}, + {"formatVersionMinorNumber",659}, + {""}, + {"offsetSection7",1451}, {""}, {""}, - {"heightPressureEtcOfLevels",937}, + {"Model_Additional_Information",1196}, + {""}, {""}, {""}, {""}, + {"offsetSection4",1448}, {""}, {""}, - {"latitudeOfNorthWestCornerOfArea",1077}, + {"coordAveraging0",310}, + {"localLatitude2",992}, + {""}, {""}, {""}, {""}, {""}, + {"expandedUnits",552}, + {"endMinuteTrend4",500}, {""}, {""}, {""}, {""}, - {"rootTablesDir",1829}, - {""}, - {"numberOfUsedTileAttributes",1477}, - {"localTablesVersion",1162}, - {"coordAveraging0",581}, - {""}, {""}, {""}, - {"qnhAPresent",1750}, - {"conceptsDir2",567}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"dateOfIceFieldUsed",651}, - {""}, - {"masterTablesVersionNumberLatest",1252}, - {""}, - {"P_INST",215}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"biFourierResolutionParameterN",360}, - {"subDefinitions1",2141}, + {"paramIdECMF",1587}, + {"runwayFrictionCoefficientState3",1817}, + {""}, {""}, + {"runwayFrictionCoefficientState2",1816}, + {"numberOfCodedValues",1301}, {""}, {""}, {""}, {""}, {""}, - {"runwayFrictionCoefficientState3",1879}, - {""}, {""}, {""}, - {"numberOfStepsUsedForClustering",1468}, + {"section1Padding",1937}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"reservedSection4",1755}, {""}, {""}, - {"Total_Number_Members_Possible",255}, + {"listMembersUsed3",963}, + {""}, {""}, {""}, {""}, {""}, + {"experimentVersionNumber",555}, + {"bitsPerValue",92}, {""}, {""}, {""}, - {"dataSubCategory",641}, - {"endDayTrend2",735}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"reducedGrid",1727}, {""}, {""}, - {"probabilityTypeName",1727}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"extractDateTimeStart",825}, - {"yCoordinateOfSubSatellitePoint",2417}, - {"cloudsTitle1Trend3",517}, + {"extractDateTimeStart",584}, {""}, - {"runwayFrictionCoefficientState1",1877}, - {""}, {""}, - {"longitudeOfReferencePointInDegrees",1189}, - {"localFlagLatestVersion",1148}, + {"dateOfModelVersion",384}, + {"runwaySideCodeState4",1822}, + {"localFlagLatestVersion",988}, + {"yearOfModelVersion",2424}, {""}, {""}, - {"numberOfClusterHighResolution",1382}, + {"lengthOfTimeRange",942}, {""}, {""}, - {"extractDateTimeMinuteEnd",816}, - {"changeIndicatorTrend4",422}, + {"scaledValueOfLowerLimit",1845}, + {"longitudeOfReferencePoint",1040}, + {"timeOfModelVersion",2165}, + {""}, {""}, {""}, {""}, {""}, + {"extractDateTimeSecondEnd",581}, + {"inputProcessIdentifier",788}, {""}, {""}, {""}, - {"extractDateTimeSecondEnd",822}, - {""}, - {"Latin2InDegrees",117}, + {"falseEasting",618}, + {"subLocalDefinition1",2095}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"dayOfTheYearDate",398}, + {"extractDateTimeSecondStart",583}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"offsetEndSection4",1437}, + {""}, {""}, {""}, + {"originatorLocalTemplateNumber",1493}, + {""}, {""}, {""}, {""}, + {"localLongitude2",995}, + {"presentTrend3",1632}, + {""}, {""}, {""}, {""}, {""}, + {"presentTrend2",1631}, + {""}, {""}, {""}, {""}, + {"definitionFilesVersion",413}, {""}, {""}, - {"numberOfPointsInDomain",1453}, - {"NUT",189}, + {"forecastProbabilityNumber",655}, {""}, - {"extractedAreaNumberOfSubsets",833}, - {""}, {""}, - {"scaledValueOfPrimeMeridianOffset",1929}, - {"extractDateTimeMinuteStart",818}, + {"plusOneinOrdersOfSPD",1616}, + {"scaleFactorOfSecondWavelength",1874}, + {"gridPointPosition",706}, + {"alternativeRowScanning",21}, {""}, {""}, {""}, - {"cloudsTitle2",519}, - {"extractDateTimeSecondStart",824}, - {"cloudsTitle1Trend1",515}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"GTS",715}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"extractDateTimeMonthEnd",819}, - {""}, {""}, {""}, {""}, {""}, - {"qualityControlIndicator",1754}, - {""}, {""}, - {"numberOfCoefficientsOrValuesUsedToSpecifyFirstDimensionCoordinateFunction",1386}, - {"numberOfCoefficientsOrValuesUsedToSpecifySecondDimensionCoordinateFunction",1387}, {""}, {""}, - {"versionNumOfSharedHeaderMessageFormat",2352}, - {"extractDateTimeMonthStart",821}, - {""}, {""}, {""}, {""}, - {"longitudeOfTheSouthernPoleOfProjection",1201}, + {"localTablesVersion",1015}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"deletePV",418}, + {"dayOfModelVersion",395}, + {"Sub-Experiment_Identifier",2094}, {""}, {""}, {""}, - {"md5Headers",1265}, + {"section9UniqueIdentifier",1979}, + {"ZLMULT",2438}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"runwayDepositState4",1782}, + {""}, + {"latitudeOfNorthWestCornerOfArea",899}, + {"DiGiven",427}, {""}, {""}, {""}, - {"southEastLatitudeOfLPOArea",2083}, - {""}, {""}, {""}, {""}, {""}, - {"sizeOfLength",2073}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"runwayFrictionCoefficientState1",1815}, + {""}, + {"northWestLatitudeOfVerficationArea",1264}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"longitudeOfSubSatellitePoint",1047}, + {""}, {""}, + {"heightPressureEtcOfLevels",728}, + {""}, {""}, + {"latitudeOfFirstGridPointInDegrees",894}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"longitudeOfSubSatellitePointInDegrees",1048}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"baseTimeEPS",54}, + {"subLocalDefinitionLength2",2098}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"resolutionAndComponentFlags7",1824}, + {"numberOfTimeRange",1389}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"correction2",339}, + {""}, {""}, {""}, {""}, + {"scanningMode7",1884}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"scanningMode4",1881}, {""}, {""}, - {"oneMinuteMeanMaximumRVR2",1539}, - {"dateOfForecastUsedInLocalTime",650}, - {"satelliteID",1887}, + {"extractedAreaNumberOfSubsets",588}, + {"N2",1224}, {""}, - {"yearOfForecastUsedInLocalTime",2428}, + {"hourOfModelVersion",743}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"timeOfForecastUsedInLocalTime",2208}, - {""}, - {"changeIndicatorTrend2",420}, - {""}, {""}, {""}, - {"preBitmapValues",1691}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"beginDayTrend2",337}, + {"upperThresholdValue",2297}, + {"earthMajorAxisInMetres",468}, + {""}, {""}, {""}, {""}, {""}, + {"marsStream2",1113}, {""}, {""}, - {"easternLongitudeOfClusterDomain",723}, - {""}, {""}, {""}, {""}, - {"subLocalDefinitionLength2",2146}, - {""}, {""}, {""}, {""}, - {"beginMinuteTrend4",347}, + {"section8UniqueIdentifier",1976}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, - {"longitudeOfThePoleOfStretching",1198}, + {"stepHumanReadable",2075}, + {""}, + {"baseDateEPS",52}, + {""}, {""}, {""}, {""}, {""}, + {"Dj",443}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"localNumberOfObservations",1010}, + {"section4Padding",1954}, + {""}, {""}, + {"jDirectionIncrementInDegrees",844}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"scaleFactorOfFirstWavelength",1864}, {""}, {""}, - {"numberOfUsedSpatialTiles",1476}, + {"md5Section6",1144}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"mBasicAngle",1132}, + {""}, {""}, {""}, + {"lowerThresholdValue",1069}, {""}, {""}, - {"coordinate2End",589}, + {"localLatitude1",991}, {""}, - {"identificationOfOriginatingGeneratingCentre",963}, + {"DayOfModelVersion",396}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, - {"latitudeOfSubSatellitePoint",1085}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"extractAreaEastLongitude",803}, - {""}, {""}, {""}, {""}, {""}, - {"PUnset",213}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, - {"runwayDesignatorState4",1860}, + {""}, {""}, {""}, {""}, + {"typeOfGrid",2231}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"crraSuiteID",625}, - {""}, {""}, {""}, {""}, {""}, - {"upperThresholdValue",2320}, - {"unexpandedDescriptors",2289}, - {""}, {""}, {""}, {""}, {""}, - {"baseTimeEPS",333}, + {""}, {""}, + {"originalParameterTableNumber",1487}, {""}, - {"Total_Number_Members_Missing",254}, + {"numberOfCoefficientsOrValuesUsedToSpecifyFirstDimensionCoordinateFunction",1302}, + {"numberOfCoefficientsOrValuesUsedToSpecifySecondDimensionCoordinateFunction",1303}, + {""}, {""}, + {"updateSequenceNumber",2293}, {""}, - {"cfNameECMF",413}, + {"cloudsTitle3Trend3",256}, + {""}, {""}, + {"cloudsTitle3Trend2",255}, {""}, {""}, - {"produceLargeConstantFields",1729}, - {"beginMinuteTrend2",345}, + {"totalNumberOfRepetitions",2195}, + {""}, {""}, {""}, {""}, + {"numberOfDaysInClimateSamplingWindow",1314}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"biFourierResolutionParameterM",81}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"HDF5str",81}, + {"gribTablesVersionNo",697}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, + {"localLongitude1",994}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"presentTrend1",1630}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"runwayFrictionCoefficientState4",1818}, {""}, {""}, - {"biFourierResolutionSubSetParameterN",362}, + {"shortNameECMF",2005}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"packedValues",1501}, + {""}, + {"offsetFromReferenceOfFirstTime",1440}, + {""}, {""}, {""}, {""}, {""}, + {"tsectionNumber3",2207}, + {""}, {""}, {""}, + {"qnhAPresent",1687}, {""}, - {"section7UniqueIdentifier",2009}, + {"isectionNumber3",819}, {""}, {""}, {""}, - {"NrInRadiusOfEarthScaled",200}, + {"qnhUnits",1689}, + {""}, + {"isectionNumber2",818}, + {""}, + {"conceptsDir2",296}, {""}, {""}, {""}, {""}, - {"countOfICEFieldsUsed",618}, + {"rootTablesDir",1767}, + {""}, {""}, + {"parameterUnits",1585}, + {""}, {""}, {""}, {""}, {""}, + {"flagShowingPostAuxiliaryArrayInUse",643}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"hourOfForecastUsedInLocalTime",948}, - {"referenceForGroupWidths",1795}, - {""}, - {"gribTablesVersionNo",910}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"integerPointValues",995}, + {"unstructuredGrid",2288}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"wrongPadding",2408}, - {""}, {""}, - {"baseDateEPS",331}, - {""}, {""}, {""}, {""}, - {"unexpandedDescriptorsEncoded",2290}, - {""}, {""}, {""}, {""}, - {"NrInRadiusOfEarth",199}, + {"coordinate1End",315}, {""}, - {"runwayDesignatorState2",1858}, - {"presentTrend3",1701}, + {"endDayTrend2",487}, + {"offsetValuesBy",1456}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"totalNumberOfValuesInUnpackedSubset",2232}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"isRotatedGrid",1018}, - {""}, {""}, - {"latitudeFirstInDegrees",1065}, + {"subLocalDefinitionLength1",2097}, + {""}, {""}, {""}, + {"endMonthTrend3",503}, {""}, {""}, {""}, {""}, - {"sourceOfGridDefinition",2081}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"northWestLatitudeOfLPOArea",1263}, + {"endMonthTrend2",502}, + {"cloudsTitle3Trend1",254}, {""}, - {"westernLongitudeOfClusterDomain",2376}, - {"numberOfControlForecastTube",1391}, + {"latitudeOfSouthernPoleInDegrees",904}, + {"templatesMasterDir",2131}, + {"unstructuredGridType",2290}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, - {"cloudsCode3",504}, - {"Local_Number_Members_Used",138}, - {""}, {""}, {""}, - {"scaleFactorOfMajorAxisOfOblateSpheroidEarth",1903}, - {""}, {""}, {""}, - {"latitudinalDirectionGridLength",1097}, {""}, {""}, {""}, {""}, {""}, {""}, - {"referenceForGroupLengths",1794}, + {"countOfICEFieldsUsed",347}, {""}, - {"tablesLocalDir",2168}, - {"presentTrend1",1699}, + {"N1",1222}, + {"spatialSmoothingOfProduct",2051}, {""}, - {"northWestLongitudeOfVerficationArea",1357}, - {"timeIncrementBetweenSuccessiveFields",2205}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"unstructuredGridSubtype",2312}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"tiggeSuiteID",2195}, - {""}, {""}, {""}, {""}, - {"modelErrorType",1315}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"packedValues",1572}, + {"qfeUnits",1685}, {""}, - {"reservedSection2",1815}, - {"scaleFactorOfUpperLimit",1912}, - {""}, {""}, {""}, - {"lowerThresholdValue",1209}, - {""}, {""}, {""}, {""}, - {"section_3",2034}, - {""}, {""}, {""}, - {"marsClass2",1219}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"mixedCoordinateFieldFlag",1194}, + {"section6Pointer",1965}, {""}, - {"NH",181}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, - {"NC",176}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"numberOfContributingSpectralBands",1390}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"extractDateTimeEnd",812}, - {""}, {""}, - {"Local_Number_Members_Possible",134}, - {"verificationYear",2347}, + {"patch_precip_fp",1599}, + {"default_step_units",410}, {""}, - {"section4Length",1994}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"N1",172}, + {"cloudsTitle2",248}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"gribMasterTablesVersionNumber",909}, + {""}, {""}, {""}, {""}, {""}, + {"timeIncrementBetweenSuccessiveFields",2161}, + {"section3Pointer",1949}, {""}, {""}, - {"section_1",2030}, - {"typeOfLevelECMF",2261}, - {"numberOfBytesInLocalDefinition",1376}, - {"unpackedSubsetPrecision",2308}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"scaleFactorOfLengthOfSemiMajorAxis",1900}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"subLocalDefinition1",2143}, - {""}, {""}, {""}, - {"METAR",156}, - {""}, {""}, {""}, - {"northWestLatitudeOfVerficationArea",1355}, + {"section2Pointer",1942}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"section_03",2023}, + {"matchAerosolBinNumber",1122}, + {"Latin2InDegrees",885}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"Latin1InDegrees",115}, + {"scaledValueOfRadiusOfSphericalEarth",1849}, {""}, {""}, {""}, {""}, - {"numberOfHorizontalPoints",1422}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"rootGroupObjectHeaderAddress",1765}, {""}, - {"Original_Parameter_Identifier",208}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"flagShowingPostAuxiliaryArrayInUse",867}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"section2Length",1983}, - {""}, {""}, {""}, {""}, {""}, - {"md5Section4",1271}, - {"southPoleOnProjectionPlane",2089}, + {"yCoordinateOfOriginOfSectorImage",2413}, {""}, {""}, {""}, {""}, - {"localLatitude1",1151}, + {"changeIndicatorTrend3",149}, + {"pentagonalResolutionParameterK",1601}, {""}, - {"section_01",2021}, - {"changeIndicatorTrend3",421}, + {"changeIndicatorTrend2",148}, + {""}, {""}, {""}, + {"versionNumOfRootGroupSymbolTableEntry",2335}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, - {"section2Used",1987}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"endMonthTrend3",751}, - {""}, {""}, {""}, {""}, - {"numberOfBytesOfFreeFormatData",1377}, - {"numberOfDaysInClimateSamplingWindow",1398}, - {"tsectionNumber3",2239}, - {""}, {""}, {""}, {""}, - {"changeIndicatorTrend1",419}, - {"isectionNumber3",1032}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, - {"visibilityTrend4",2371}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"section6UniqueIdentifier",2005}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"visibilityInKilometresTrend4",2367}, + {"dateOfSSTFieldUsed",386}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"endMonthTrend1",749}, + {""}, {""}, + {"typeOfSSTFieldUsed",2244}, {""}, {""}, {""}, - {"YRInMetres",278}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"dayOfForecastUsedInLocalTime",394}, + {""}, {""}, {""}, {""}, {""}, + {"tablesLocalDir",2119}, {""}, {""}, - {"clusteringDomain",547}, - {""}, - {"longitudeOfSouthEastCornerOfArea",1190}, + {"FMULTM",647}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"tempPressureUnits",2175}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"beginMinuteTrend3",346}, + {""}, + {"biFourierResolutionSubSetParameterM",83}, {""}, {""}, {""}, {""}, - {"xCoordinateOfSubSatellitePoint",2410}, + {"dataSubCategory",371}, + {""}, {""}, + {"beginMinuteTrend3",68}, + {""}, {""}, + {"beginMinuteTrend2",67}, + {""}, {""}, {""}, {""}, {""}, + {"md5Section7",1145}, + {""}, {""}, {""}, {""}, {""}, + {"section1Pointer",1938}, {""}, {""}, - {"theHindcastMarsStream",2180}, + {"numberOfUnexpandedDescriptors",1391}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"easternLongitudeOfClusterDomain",471}, + {""}, {""}, {""}, {""}, {""}, + {"Latin1InDegrees",883}, + {"numberOfUsedTileAttributes",1394}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"scaledValueOfLengthOfSemiMinorAxis",1844}, {""}, {""}, {""}, {""}, - {"YR",277}, + {"numberOfBytesInLocalDefinition",1292}, + {"cfNameECMF",141}, + {""}, + {"pentagonalResolutionParameterM",1602}, {""}, - {"Local_Number_Members_Missing",130}, + {"totalAerosolBinsNumbers",2179}, + {"scaleFactorOfEarthMajorAxis",1860}, + {""}, + {"_leg_number",932}, + {""}, {""}, + {"scaleFactorOfEarthMinorAxis",1861}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"endGridDefinition",739}, - {""}, {""}, {""}, - {"numberOfMissingValues",1432}, - {""}, {""}, {""}, {""}, {""}, - {"beginMinuteTrend1",344}, - {""}, {""}, {""}, {""}, - {"unpackedValues",2309}, + {"cloudsTitle3Trend4",257}, + {""}, {""}, + {"changeIndicatorTrend1",147}, + {"numberOfStepsUsedForClustering",1385}, + {""}, {""}, + {"md5Product",1137}, + {"satelliteID",1829}, {""}, {""}, {""}, {""}, {""}, {""}, - {"cavokOrVisibility",386}, + {"latitudinalDirectionGridLength",919}, + {""}, + {"cloudsTitle4Trend3",261}, {""}, {""}, - {"latitudeOfTangencyPoint",1087}, + {"cloudsTitle4Trend2",260}, + {"cloudsTitle1Trend3",246}, {""}, - {"localUsePresent",1167}, + {"beginDayTrend3",60}, + {"cloudsTitle1Trend2",245}, + {""}, {""}, {""}, + {"METAR",1163}, + {"beginDayTrend2",59}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, + {"sizeOfLength",2020}, + {"reservedSection2",1753}, + {"cavokOrVisibility",111}, + {""}, {""}, + {"tiggeSuiteID",2153}, + {"westernLongitudeOfClusterDomain",2355}, {""}, - {"scaleFactorOfEarthMajorAxis",1895}, - {""}, {""}, {""}, {""}, - {"scaleFactorOfEarthMinorAxis",1896}, + {"endMonthTrend1",501}, + {""}, {""}, + {"identificationOfOriginatingGeneratingCentre",753}, {""}, {""}, {""}, {""}, {""}, {""}, - {"listMembersUsed2",1127}, - {""}, {""}, {""}, - {"runwayDesignatorState3",1859}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"P1",210}, - {""}, {""}, {""}, {""}, - {"matrixBitmapsPresent",1258}, + {"numberOfUsedSpatialTiles",1393}, + {""}, {""}, + {"unpackedValues",2286}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, + {"produceLargeConstantFields",1660}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, - {"unstructuredGridUUID",2314}, - {"Nj",197}, {""}, {""}, {""}, - {"localLongitude1",1154}, - {"typeOfTimeIncrementBetweenSuccessiveFieldsUsedInTheStatisticalProcessing",2273}, + {"beginMinuteTrend1",66}, + {""}, {""}, {""}, {""}, + {"jScansNegatively",850}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"listMembersUsed4",964}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"longitudeOfSouthEastCornerOfArea",1042}, {""}, - {"runwayDesignatorState1",1857}, + {"ls_labeling",1071}, {""}, {""}, {""}, {""}, - {"totalNumberOfClusters",2221}, + {"forecastOrSingularVectorNumber",650}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, - {"listMembersMissing4",1125}, + {"typeOfTimeIncrementBetweenSuccessiveFieldsUsedInTheStatisticalProcessing",2248}, {""}, {""}, {""}, {""}, {""}, {""}, - {"offsetValuesBy",1531}, + {"crraSuiteID",354}, + {""}, + {"oceanAtmosphereCoupling",1417}, {""}, {""}, {""}, {""}, - {"latitudeOfSubSatellitePointInDegrees",1086}, + {"expandedCrex_scales",542}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"resolutionAndComponentFlags6",1823}, - {"visibilityInKilometresTrend2",2365}, - {"beginMonthTrend4",351}, - {""}, {""}, {""}, {""}, {""}, - {"section5Pointer",2000}, + {"unexpandedDescriptors",2266}, + {""}, {""}, + {"presentTrend4",1633}, + {"NUT",1404}, + {""}, {""}, + {"verificationYear",2328}, {""}, - {"numberOfDataPointsExpected",1396}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"monthlyVerificationYear",1210}, + {""}, + {"longitudeOfTangencyPoint",1049}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"unstructuredGridSubtype",2289}, + {"latitudeOfSubSatellitePoint",907}, + {""}, + {"cloudsTitle4Trend1",259}, + {""}, {""}, {""}, + {"cloudsTitle1Trend1",244}, + {"longitudeOfReferencePointInDegrees",1041}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"numberOfRadarSitesUsed",1456}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, - {"numberOfGroups",1420}, + {"P2",1499}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"typeOfPreProcessing",2240}, {""}, {""}, {""}, {""}, {""}, - {"physicalFlag2",1681}, - {""}, {""}, - {"Date_E4",28}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, - {"gts_TTAAii",929}, + {"section7Pointer",1970}, {""}, {""}, {""}, - {"inputShortDelayedDescriptorReplicationFactor",991}, + {"section4Pointer",1955}, {""}, - {"longitudeLastInDegrees",1174}, + {"expandedCrex_units",543}, + {""}, {""}, {""}, {""}, {""}, + {"qualityControlIndicator",1691}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"numberOfBytesOfFreeFormatData",1293}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"unexpandedDescriptorsEncoded",2267}, + {""}, {""}, {""}, {""}, {""}, + {"dateOfIceFieldUsed",383}, + {""}, {""}, {""}, {""}, + {"physicalMeaningOfVerticalCoordinate",1611}, + {""}, {""}, {""}, {""}, {""}, + {"listOfParametersUsedForClustering",969}, {""}, {""}, - {"cloudsBase4",469}, - {""}, - {"forecastOrSingularVectorNumber",873}, + {"northWestLongitudeOfVerficationArea",1266}, {""}, {""}, - {"mBasicAngle",1215}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"section11Length",1933}, + {""}, {""}, {""}, {""}, {""}, + {"changeIndicatorTrend4",150}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"backgroundGeneratingProcessIdentifier",48}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"versionNumberOfExperimentalSuite",2331}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"cloudsCode1",494}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"Threshold_Or_Distribution_Units",247}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"numberOfPointsAlongXAxis",1449}, + {""}, + {"gribMasterTablesVersionNumber",696}, {""}, {""}, {""}, - {"padding_local40_1",1636}, + {"marsClass2",1088}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"referenceForGroupWidths",1732}, + {"runwayDesignatorState3",1797}, + {""}, + {"southEastLongitudeOfLPOArea",2033}, + {"runwayDesignatorState2",1796}, {""}, {""}, {""}, {""}, {""}, - {"cloudsBaseCoded4",489}, - {""}, {""}, {""}, - {"recentWeather",1783}, - {""}, {""}, {""}, {""}, - {"cloudsBaseCoded4Trend4",493}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"numberOfControlForecastTube",1307}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"extractAreaNorthLatitude",565}, + {"beginDayTrend1",58}, + {""}, {""}, {""}, {""}, {""}, + {"PVPresent",1682}, {""}, {""}, {""}, {""}, - {"oneMinuteMeanMinimumRVR4",1545}, + {"beginMinuteTrend4",69}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, + {"latitudeFirstInDegrees",887}, + {"expandedCrex_widths",544}, {""}, {""}, {""}, - {"scaledValueOfSecondWavelength",1933}, + {"integerPointValues",793}, + {"totalNumberOfValuesInUnpackedSubset",2198}, + {"extractDateTimeMinuteEnd",575}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"sourceOfGridDefinition",2029}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, - {"oceanAtmosphereCoupling",1494}, + {"extractDateTimeMinuteStart",577}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"section11Pointer",1978}, + {"dateOfForecastUsedInLocalTime",382}, {""}, {""}, - {"listMembersMissing2",1123}, + {"yearOfForecastUsedInLocalTime",2423}, {""}, {""}, {""}, {""}, {""}, - {"section3Length",1989}, - {"oneMinuteMeanMaximumRVR3",1540}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"section_6",1962}, + {""}, + {"timeOfForecastUsedInLocalTime",2164}, {""}, {""}, {""}, - {"scaledValueOfFirstWavelength",1923}, - {""}, {""}, {""}, {""}, {""}, - {"beginDayTrend3",338}, - {""}, {""}, - {"remarkPresent",1804}, + {"extractDateTimeMonthEnd",578}, + {"cloudsCode3",233}, + {""}, + {"originOfPostProcessing",1494}, {""}, {""}, - {"section1Length",1980}, + {"pentagonalResolutionParameterJ",1600}, + {""}, + {"referenceForGroupLengths",1731}, + {""}, {""}, {""}, {""}, {""}, + {"extractDateTimeMonthStart",580}, + {""}, {""}, {""}, + {"cloudsTitle4Trend4",262}, {""}, {""}, {""}, - {"DELETE",24}, + {"cloudsTitle1Trend4",247}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, + {"section_3",1945}, + {""}, {""}, {""}, + {"numberOfContributingSpectralBands",1306}, {""}, - {"cloudsBaseCoded4Trend2",491}, + {"section_2",1939}, {""}, {""}, {""}, {""}, {""}, {""}, - {"Minute_E4",162}, - {""}, - {"variationOfVisibilityTrend4",2343}, - {"firstDimensionPhysicalSignificance",856}, + {"numberOfMissingValues",1349}, {""}, {""}, {""}, {""}, {""}, {""}, - {"Date_E2",26}, - {""}, {""}, {""}, - {"oneMinuteMeanMaximumRVR1",1538}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"jScansPositively",1044}, - {""}, {""}, {""}, {""}, {""}, - {"kindOfProduct",1052}, + {"section6Length",1964}, {""}, - {"runwayFrictionCodeValueState4",1872}, - {""}, - {"subLocalDefinitionNumber2",2148}, + {"gts_TTAAii",720}, {""}, {""}, {""}, - {"basicAngleOfTheInitialProductionDomain",335}, + {"runwayDesignatorState1",1795}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, + {"section3Length",1947}, {""}, {""}, - {"runwayDepositCodeState4",1840}, + {"section2Length",1940}, {""}, - {"beginDayTrend1",336}, + {"P1",1498}, + {"tsectionNumber4",2208}, + {""}, {""}, {""}, {""}, {""}, + {"isectionNumber4",820}, {""}, {""}, {""}, - {"latitudeOfReferencePoint",1078}, + {"scaleFactorOfMajorAxisOfOblateSpheroidEarth",1868}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, + {"extractAreaEastLongitude",562}, + {""}, + {"section_06",1921}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"runwayFrictionCodeValueState3",1809}, + {""}, {""}, + {"runwayFrictionCodeValueState2",1808}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"NrInRadiusOfEarthScaled",1273}, + {"longitudeOfTheSouthernPoleOfProjection",1053}, + {"recentWeather",1720}, + {"reflectivityCalibrationConstant",1740}, + {"section2Used",1944}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, + {"endMonthTrend4",504}, + {""}, {""}, + {"section_03",1918}, + {""}, {""}, {""}, {""}, {""}, + {"section_02",1917}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"hourOfForecastUsedInLocalTime",742}, {""}, {""}, {""}, - {"subLocalDefinitionLength1",2145}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"beginHourTrend4",343}, + {"NrInRadiusOfEarth",1272}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"iDirectionIncrementGiven",955}, - {"cloudsTitle2Trend4",523}, + {"visibilityInKilometresTrend3",2347}, + {""}, {""}, {""}, + {"numberOfClusterLowResolution",1299}, + {"NC",1237}, + {"visibilityInKilometresTrend2",2346}, + {"NP",1269}, + {""}, {""}, {""}, + {"marsClass1",1087}, {""}, {""}, {""}, {""}, - {"inputOverriddenReferenceValues",989}, - {"variationOfVisibilityDirectionTrend4",2339}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"section11Length",1977}, - {""}, - {"radiusOfTheEarth",1764}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"numberOfBitsForScaledGroupLengths",1289}, {""}, {""}, {""}, {""}, - {"section4UniqueIdentifier",1997}, - {""}, - {"variationOfVisibilityTrend2",2341}, + {"longitudeLastInDegrees",1026}, {""}, {""}, {""}, {""}, - {"oneMinuteMeanMinimumRVR2",1543}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"scaledValueOfPrimeMeridianOffset",1848}, {""}, - {"timeUnitFlag",2213}, + {"longitudeOfCentralPointInClusterDomain",1027}, {""}, - {"deleteLocalDefinition",683}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"monthlyVerificationYear",1331}, + {"numberOfClusterHighResolution",1298}, {""}, - {"runwayFrictionCodeValueState2",1870}, + {"preProcessingParameter",1628}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"xCoordinateOfOriginOfSectorImage",2397}, + {""}, + {"section1Length",1936}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"INBITS",89}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"numberOfGroupsOfDataValues",1421}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"jScansPositively",851}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, + {"isRotatedGrid",830}, {""}, {""}, - {"cloudsTitle2Trend2",521}, + {"runwayFrictionCodeValueState1",1807}, {""}, {""}, {""}, {""}, {""}, - {"variationOfVisibilityDirectionTrend2",2337}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"numberOfBytesPerInteger",1378}, - {""}, - {"section5",1998}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"lengthOf4DvarWindow",1106}, + {"rdb_key",1705}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, + {"ECMWF",475}, {""}, - {"realPartOf00",1781}, + {"addEmptySection2",6}, {""}, {""}, {""}, - {"Minute_E2",160}, + {"clusteringDomain",264}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"runwayDesignatorState4",1798}, + {""}, {""}, {""}, {""}, + {"PUnset",1679}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"unstructuredGridUUID",2291}, + {"section11Pointer",1934}, + {""}, {""}, {""}, {""}, {""}, + {"section_1",1927}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"extractAreaNorthLatitude",806}, + {"scaleFactorOfUpperLimit",1877}, + {""}, + {"generalExtended2ordr",671}, + {""}, + {"endGridDefinition",491}, {""}, {""}, {""}, {""}, {""}, {""}, - {"ECMWF",45}, - {"numberOfSingularVectorsEvolved",1466}, + {"scaledValueOfSecondWavelength",1852}, + {""}, + {"oneMinuteMeanMaximumRVR3",1463}, + {"longitudeOfThePoleOfStretching",1050}, + {""}, {""}, {""}, {""}, + {"oneMinuteMeanMaximumRVR2",1462}, {""}, {""}, {""}, {""}, {""}, - {"gaussianGridName",892}, - {""}, {""}, {""}, - {"matchAerosolBinNumber",1253}, - {""}, {""}, - {"GDSPresent",68}, + {"matrixBitmapsPresent",1127}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"cloudsAbbreviation3",173}, {""}, - {"Ensemble_Combination_Number",50}, - {"numberInHorizontalCoordinates",1364}, - {""}, {""}, - {"horizontalDomainTemplate",942}, - {""}, {""}, {""}, - {"runwayDepositCodeState2",1838}, - {"northWestLatitudeOfLPOArea",1354}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"numberOfDataPointsExpected",1312}, {""}, {""}, {""}, - {"padding_loc9_2",1632}, + {"cloudsAbbreviation2",168}, {""}, {""}, - {"beginHourTrend2",341}, + {"offsetSection11",1445}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"md5Headers",1136}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"cloudsBaseCoded3Trend4",488}, + {"unpackedSubsetPrecision",2285}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"inputOverriddenReferenceValues",787}, + {"beginDayTrend4",61}, + {""}, + {"YRInMetres",2433}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"setToMissingIfOutOfRange",2055}, + {""}, {""}, + {"subLocalDefinitionNumber2",2100}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"cfVarNameECMF",416}, + {""}, {""}, {""}, {""}, {""}, + {"section_01",1916}, + {""}, {""}, {""}, {""}, + {"variationOfVisibilityTrend3",2323}, {""}, {""}, - {"padding_local_7_1",1638}, + {"variationOfVisibilityTrend2",2322}, + {""}, + {"listMembersUsed2",962}, + {""}, {""}, {""}, {""}, {""}, + {"numberOfGroups",1336}, + {""}, + {"numberOfSingularVectorsEvolved",1383}, + {""}, + {"section7Length",1969}, {""}, {""}, {""}, - {"sizeOfPostAuxiliaryArray",2075}, - {"longitudeOfThePolePoint",1199}, + {"section4Length",1953}, + {"latitudeOfSubSatellitePointInDegrees",908}, + {""}, + {"INBITS",766}, + {""}, {""}, {""}, {""}, {""}, + {"coordinate2End",318}, + {""}, {""}, {""}, {""}, {""}, + {"visibilityInKilometresTrend1",2345}, + {"numberOfPointsInDomain",1370}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"wrongPadding",2392}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"marsClass1",1218}, + {"FMULTE",646}, + {""}, {""}, {""}, + {"runwayFrictionCodeValueState4",1810}, + {""}, {""}, {""}, {""}, + {"scaledValueOfFirstWavelength",1842}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"realPartOf00",1718}, + {""}, {""}, {""}, {""}, + {"variationOfVisibilityDirectionTrend3",2319}, {""}, {""}, - {"offsetBSection6",1506}, + {"variationOfVisibilityDirectionTrend2",2318}, + {""}, {""}, + {"section5",1958}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, + {"iDirectionIncrementGiven",757}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"generalExtended2ordr",894}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"firstLatitudeInDegrees",858}, - {""}, - {"totalAerosolBinsNumbers",2217}, - {""}, {""}, {""}, {""}, - {"cloudsBaseCoded3Trend2",486}, - {""}, {""}, {""}, {""}, - {"Extra_Data_FreeFormat_0_none",56}, + {"physicalFlag2",1610}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"cloudsCode1",223}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, + {"biFourierResolutionParameterN",82}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"yCoordinateOfSubSatellitePoint",2414}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, + {"deleteLocalDefinition",417}, + {"variationOfVisibilityTrend1",2321}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"NEAREST",1243}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"getNumberOfValues",899}, - {""}, - {"scaleFactorOfMinorAxisOfOblateSpheroidEarth",1904}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"basicAngleOfTheInitialProductionDomain",56}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, - {"md5Section3",1270}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, - {"AA",6}, - {"southEastLongitudeOfLPOArea",2085}, + {""}, {""}, {""}, + {"oneMinuteMeanMaximumRVR1",1461}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, + {"postAuxiliaryArrayPresent",1619}, {""}, {""}, {""}, - {"cloudsBaseCoded4Trend3",492}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"paramIdLegacyECMF",1649}, + {"cloudsAbbreviation1",163}, + {""}, {""}, {""}, {""}, {""}, + {"variationOfVisibilityDirectionTrend1",2317}, {""}, - {"localTablesVersionNumber",1163}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"shortNameLegacyECMF",2061}, + {"HDF5str",724}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"visibilityTrend3",2370}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"jPointsAreConsecutive",1043}, + {"Nj",1252}, + {"runwayDepositCodeState3",1777}, + {""}, {""}, {""}, {""}, {""}, + {"runwayDepositCodeState2",1776}, {""}, {""}, - {"cloudsBaseCoded4Trend1",490}, - {""}, - {"reflectivityCalibrationConstant",1803}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"endHourTrend4",743}, + {"tempPressureUnits",2132}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"subLocalDefinitionNumber1",2099}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, - {"laplacianScalingFactorUnset",1060}, - {""}, {""}, - {"LLCOSP",99}, - {""}, {""}, - {"numberOfParallelsBetweenAPoleAndTheEquator",1439}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"runwayFrictionCoefficientCodeState4",1876}, - {""}, {""}, {""}, {""}, - {"numberOfPointsAlongXAxisInCouplingArea",1450}, - {"scaleFactorOfCentralWaveNumber",1892}, - {""}, {""}, {""}, {""}, - {"offsetFromOriginToInnerBound",1515}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"cloudsAbbreviation4",449}, - {"meanRVR4",1282}, - {"missingValueManagementUsed",1309}, - {""}, - {"md5Section5",1272}, - {""}, {""}, {""}, - {"numberOfBitsForScaledGroupLengths",1373}, {""}, - {"variationOfVisibilityTrend3",2342}, + {"numberOfBytesPerInteger",1294}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"codedNumberOfFirstOrderPackedValues",281}, + {""}, {""}, + {"ceilingAndVisibilityOK",120}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"cloudsTitle2Trend3",251}, + {""}, + {"weightAppliedToClimateMonth1",2354}, + {"cloudsTitle2Trend2",250}, + {""}, + {"SOH",2027}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"runwayFrictionCodeValueState3",1871}, - {""}, {""}, {""}, {""}, {""}, - {"variationOfVisibilityTrend1",2340}, + {"extractDateTimeEnd",571}, {""}, {""}, {""}, {""}, {""}, {""}, - {"offsetBeforePL",1510}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, - {"runwayFrictionCodeValueState1",1869}, + {"localTablesVersionNumber",1016}, + {""}, {""}, {""}, {""}, + {"firstLatitudeInDegrees",633}, + {"offsetBeforePL",1430}, + {"md5Section5",1143}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"numberOfSingularVectorsComputed",1465}, + {"YR",2432}, + {""}, {""}, {""}, {""}, + {"cloudsCode4",238}, {""}, - {"mask",1248}, - {"cloudsTitle2Trend3",522}, - {"numberOfReforecastYearsInModelClimate",1458}, - {""}, {""}, {""}, - {"runwayFrictionCoefficientCodeState2",1874}, - {"variationOfVisibilityDirectionTrend3",2338}, - {"runwayDepthOfDepositCodeState4",1848}, + {"widthOfWidths",2362}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"section_7",1967}, + {"cfVarNameECMF",144}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"section_4",1951}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"numberOfPointsAlongXAxis",1366}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"offsetBBitmap",1427}, + {""}, {""}, + {"numberOfRadarSitesUsed",1373}, + {"variationOfVisibilityTrend4",2324}, + {"section6UniqueIdentifier",1966}, {""}, - {"uuidOfVGrid",2328}, - {""}, - {"addEmptySection2",295}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"commonBlock",288}, {""}, - {"section3UniqueIdentifier",1992}, - {"widthOfWidths",2381}, + {"physicalFlag1",1609}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"inputShortDelayedDescriptorReplicationFactor",789}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"section3UniqueIdentifier",1950}, + {""}, {""}, {""}, {""}, + {"scaleFactorOfLengthOfSemiMajorAxis",1865}, {""}, {""}, - {"cloudsTitle2Trend1",520}, + {"getNumberOfValues",677}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"biFourierResolutionSubSetParameterN",84}, + {""}, {""}, {""}, + {"mask",1117}, + {""}, + {"localUsePresent",1021}, + {""}, {""}, {""}, + {"uuidOfVGrid",2309}, + {"missingValueManagementUsed",1190}, + {""}, {""}, {""}, + {"ZLBASE",2437}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"visibilityTrend3",2351}, + {""}, {""}, + {"paramIdLegacyECMF",1588}, + {""}, {""}, {""}, {""}, + {"cloudsTitle2Trend1",249}, + {""}, {""}, + {"cloudsBase3",193}, + {""}, {""}, {""}, {""}, {""}, + {"variationOfVisibilityDirectionTrend4",2320}, + {""}, {""}, {""}, {""}, + {"section_07",1922}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"section_04",1919}, + {""}, {""}, {""}, {""}, {""}, + {"section5Pointer",1960}, + {""}, {""}, + {"latitudeOfTangencyPoint",909}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"pack",1500}, + {""}, {""}, {""}, {""}, {""}, + {"gaussianGridName",669}, + {""}, + {"iDirectionIncrementGridLength",758}, + {"Date_E3",377}, + {""}, + {"scaledValueOfEarthMajorAxis",1838}, + {""}, {""}, {""}, + {"Date_E2",376}, + {"scaledValueOfEarthMinorAxis",1839}, + {"totalNumberOfClusters",2186}, + {""}, {""}, {""}, {""}, + {"visibilityInKilometresTrend4",2348}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"numberOfGroupsOfDataValues",1337}, + {""}, {""}, {""}, {""}, + {"timeUnitFlag",2176}, + {""}, {""}, {""}, + {"runwayDepositCodeState1",1775}, + {""}, {""}, + {"recentWeatherTry",1721}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"md5Section3",1141}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"projTargetString",1676}, + {"Ensemble_Combination_Number",522}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"firstDimensionPhysicalSignificance",630}, + {""}, {""}, + {"unpack",2283}, + {""}, {""}, {""}, + {"offsetAfterData",1424}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"projSourceString",1674}, + {""}, {""}, {""}, + {"listMembersMissing3",959}, + {""}, {""}, {""}, {""}, {""}, + {"listMembersMissing2",958}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"checkInternalVersion",156}, + {""}, {""}, {""}, {""}, + {"southPoleOnProjectionPlane",2039}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"constantAntennaElevationAngle",305}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"cloudsBaseCoded3",213}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"cloudsBaseCoded3Trend3",216}, + {""}, {""}, + {"cloudsBaseCoded3Trend2",215}, + {""}, {""}, {""}, {""}, {""}, + {"remarkPresent",1741}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"theHindcastMarsStream",2133}, + {""}, + {"lengthOf4DvarWindow",936}, + {""}, {""}, {""}, {""}, + {"clusterMember5",271}, + {""}, {""}, + {"Product_Identifier",1667}, + {""}, {""}, + {"jPointsAreConsecutive",848}, + {"runwayFrictionCoefficientCodeState3",1813}, + {""}, {""}, + {"runwayFrictionCoefficientCodeState2",1812}, + {"offsetSection5",1449}, + {""}, {""}, {""}, {""}, + {"oneMinuteMeanMaximumRVR4",1464}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"cloudsTitle2Trend4",252}, + {""}, {""}, + {"cloudsAbbreviation4",178}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, + {"experimentVersionNumberOfAnalysis",558}, + {""}, {""}, {""}, + {"offsetBeforeBitmap",1428}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, + {"typeOfLevelECMF",2236}, + {"beginMonthTrend3",72}, + {""}, {""}, {""}, + {"kindOfProduct",858}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, + {"legacyGaussSubarea",929}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"typeOfWavelengthInterval",2249}, + {""}, + {"cloudsBaseCoded3Trend1",214}, + {""}, {""}, + {"Minute_E3",1172}, + {""}, + {"endMark",496}, + {""}, {""}, {""}, + {"Minute_E2",1171}, + {""}, {""}, {""}, + {"section7UniqueIdentifier",1971}, + {""}, {""}, {""}, + {"section4UniqueIdentifier",1956}, + {""}, + {"versionNumOfSharedHeaderMessageFormat",2336}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, + {"runwayFrictionCoefficientCodeState1",1811}, + {""}, {""}, {""}, {""}, + {"intervalBetweenTimes",801}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"laplacianScalingFactorUnset",873}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, + {"GDSPresent",670}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"horizontalDomainTemplate",733}, + {""}, + {"P_INST",1612}, + {"xCoordinateOfSubSatellitePoint",2398}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"scanningMode5",1882}, + {""}, {""}, {""}, {""}, {""}, + {"************_EXPERIMENT_************",553}, + {""}, {""}, {""}, + {"scaleFactorOfMinorAxisOfOblateSpheroidEarth",1869}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, + {"extractAreaSouthLatitude",566}, + {""}, {""}, {""}, {""}, + {"offsetFromOriginToInnerBound",1439}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"hoursAfterReferenceTimeOfDataCutoff",747}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"latitudeOfReferencePoint",900}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, + {"sizeOfPostAuxiliaryArray",2022}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, + {"unitsLegacyECMF",2279}, + {""}, {""}, {""}, + {"scaledValueOfMajorAxisOfOblateSpheroidEarth",1846}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, + {"visibilityTrend1",2349}, + {""}, + {"offsetBSection6",1433}, + {""}, + {"swapScanningAlternativeRows",2106}, + {""}, {""}, {""}, + {"runwayDepositCodeState4",1778}, + {""}, {""}, + {"cloudsBase1",183}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"cloudsBaseCoded3Trend4",217}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"runwayDepthOfDepositCodeState3",1785}, + {""}, {""}, + {"runwayDepthOfDepositCodeState2",1784}, + {"NC2",1239}, + {""}, {""}, + {"northLatitudeOfDomainOfTubing",1262}, + {"cloudsBaseCoded4Trend3",221}, + {""}, {""}, + {"cloudsBaseCoded4Trend2",220}, + {"cloudsBaseCoded1Trend3",206}, + {""}, {""}, + {"cloudsBaseCoded1Trend2",205}, + {""}, {""}, {""}, + {"RENAME",1742}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"md5Section10",1139}, + {""}, {""}, {""}, {""}, + {"runwayFrictionCoefficientCodeState4",1814}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"numberOfReforecastYearsInModelClimate",1375}, + {"oneMinuteMeanMinimumRVR3",1467}, + {""}, {""}, {""}, {""}, {""}, + {"oneMinuteMeanMinimumRVR2",1466}, + {""}, {""}, {""}, + {"numberOfPointsAlongXAxisInCouplingArea",1367}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"cloudsCode2",228}, + {""}, {""}, + {"cfNameLegacyECMF",142}, + {""}, {""}, + {"md5Section1",1138}, + {"LSTCUM",1072}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"southLatitudeOfDomainOfTubing",2038}, + {""}, {""}, {""}, {""}, + {"eastLongitudeOfDomainOfTubing",474}, + {""}, {""}, {""}, + {"numberOfParallelsBetweenAPoleAndTheEquator",1356}, + {"Y2",2411}, + {""}, {""}, {""}, {""}, + {"numberOfSingularVectorsComputed",1382}, + {""}, {""}, {""}, {""}, + {"padding_local40_1",1566}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, + {"section5Length",1959}, + {""}, {""}, + {"radiusOfTheEarth",1701}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, + {"baseTimeOfThisLeg",55}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, + {"beginHourTrend3",64}, + {""}, {""}, {""}, {""}, {""}, + {"beginHourTrend2",63}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"runwayDepthOfDepositCodeState1",1783}, + {""}, {""}, + {"cloudsBaseCoded1",203}, + {""}, {""}, {""}, {""}, + {"cloudsBaseCoded4Trend1",219}, + {""}, {""}, {""}, + {"cloudsBaseCoded1Trend1",204}, + {""}, + {"northWestLongitudeOfLPOArea",1265}, + {"westLongitudeOfDomainOfTubing",2358}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, + {"DjGiven",444}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"baseDateOfThisLeg",53}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"visibilityTrend4",2352}, + {"scaledValueOfUpperLimit",1855}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"cloudsBase4",198}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"subdivisionsOfBasicAngle",2093}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"Date_E4",378}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, + {"meanRVR3",1153}, + {""}, {""}, {""}, {""}, {""}, + {"meanRVR2",1152}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, + {"Total_Number_Members_Used",2185}, + {""}, {""}, + {"beginMonthTrend1",70}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, + {"padding_sec1_loc",1568}, + {""}, + {"NC1",1238}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"md5Section4",1142}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, + {"listMembersMissing4",960}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, + {"oneMinuteMeanMinimumRVR1",1465}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"disableGrib1LocalSection",438}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"resolutionAndComponentFlags6",1761}, + {""}, + {"ITERATOR",837}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, + {"runwayExtentOfContaminationState3",1805}, + {""}, {""}, + {"runwayExtentOfContaminationState2",1804}, + {""}, {""}, {""}, + {"Y1",2409}, + {""}, {""}, {""}, + {"numberOfHorizontalPoints",1338}, + {""}, {""}, {""}, {""}, {""}, + {"Total_Number_Members_Possible",2184}, + {""}, {""}, {""}, {""}, {""}, + {"cloudsBaseCoded4",218}, + {"runwayDepthOfDepositCodeState4",1786}, + {"resolutionAndComponentFlags3",1759}, + {""}, {""}, {""}, {""}, {""}, + {"resolutionAndComponentFlags2",1758}, + {"cloudsBaseCoded4Trend4",222}, + {""}, {""}, {""}, + {"cloudsBaseCoded1Trend4",207}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"longitudeOfSouthernPole",1043}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, + {"beginHourTrend1",62}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, + {"ccsdsCompressionOptionsMask",115}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"skipExtraKeyAttributes",2026}, + {""}, {""}, + {"WRAPstr",2391}, + {""}, {""}, + {"numberOfBitsContainingEachPackedValue",1288}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"setToMissingIfOutOfRange",1999}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"windUnitsTrend3",2382}, + {""}, + {"NH",1248}, + {""}, {""}, {""}, + {"windUnitsTrend2",2381}, + {""}, {""}, + {"LLCOSP",971}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, + {"scaleFactorOfCentralWaveNumber",1857}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"longitudeOfThePolePoint",1051}, + {""}, {""}, {""}, {""}, {""}, + {"typeOfPacking",2238}, + {""}, {""}, {""}, + {"runwayExtentOfContaminationState1",1803}, + {""}, {""}, {""}, + {"beginMonthTrend4",73}, + {"typeOfGeneratingProcess",2230}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"ICPLSIZE",750}, + {""}, {""}, + {"Minute_E4",1173}, + {"NB",1236}, + {""}, {""}, {""}, + {"numberInHorizontalCoordinates",1281}, + {"Local_Number_Members_Used",1006}, + {""}, {""}, {""}, {""}, {""}, + {"typeOfProcessedData",2241}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, + {"meanRVR1",1151}, + {""}, + {"qualityValueAssociatedWithParameter",1692}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, + {"latitudeOfReferencePointInDegrees",901}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, + {"presentWeather3Present",1644}, + {""}, + {"lastMonthUsedToBuildClimateMonth2",880}, + {"presentWeather2Present",1639}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, + {"unusedBitsInBitmap",2292}, + {""}, {""}, {""}, + {"Local_Number_Members_Possible",1002}, + {""}, {""}, + {"Total_Number_Members_Missing",2183}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"NRj",1274}, + {""}, {""}, {""}, + {"numberOfGridInReference",1334}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"latitudeOfLastGridPoint",897}, + {""}, {""}, {""}, {""}, + {"observationDiagnostic",1412}, + {"offsetToEndOf4DvarWindow",1455}, + {"numberOfPointsAlongAMeridian",1360}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, + {"resolutionAndComponentFlags1",1757}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, + {"scaledValueOfLengthOfSemiMajorAxis",1843}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"CLNOMA",162}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, + {"runwayExtentOfContaminationState4",1806}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, + {"lastMonthUsedToBuildClimateMonth1",879}, + {"presentWeather1Present",1634}, + {"windUnitsTrend1",2380}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"shortNameLegacyECMF",2006}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"HourOfModelVersion",744}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, + {"endHourTrend3",494}, + {""}, {""}, {""}, {""}, {""}, + {"endHourTrend2",493}, + {"cloudsAbbreviation3Trend3",176}, + {""}, {""}, + {"cloudsAbbreviation2Trend3",171}, + {""}, {""}, + {"cloudsAbbreviation3Trend2",175}, + {"oneMinuteMeanMinimumRVR4",1468}, + {""}, + {"cloudsAbbreviation2Trend2",170}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, + {"section_11",1932}, + {""}, + {"numberOfPressureLevelsUsedForClustering",1372}, + {""}, {""}, {""}, {""}, + {"numberOfPointsAlongSecondAxis",1363}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"tsectionNumber5",2209}, + {""}, {""}, {""}, {""}, + {"coordAveraging3",313}, + {""}, {""}, {""}, {""}, {""}, + {"coordAveraging2",312}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, + {"section5UniqueIdentifier",1961}, + {""}, {""}, {""}, {""}, {""}, + {"md5GridSection",1135}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, + {"Local_Number_Members_Missing",998}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"beginHourTrend4",65}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, + {"numberOfPointsAlongAParallel",1361}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, + {"ICEFieldsUsed",749}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, + {"beginYearTrend3",76}, + {""}, + {"visibilityTrend2",2350}, + {""}, {""}, {""}, + {"beginYearTrend2",75}, + {""}, {""}, {""}, {""}, + {"cloudsAbbreviation1Trend3",166}, + {""}, + {"cloudsBase2",188}, + {""}, {""}, {""}, + {"cloudsAbbreviation1Trend2",165}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, + {"spacingOfBinsAlongRadials",2044}, + {""}, {""}, {""}, {""}, {""}, + {"meanRVR4",1154}, + {""}, {""}, {""}, {""}, + {"md5Section2",1140}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, + {"Extra_Data_FreeFormat_0_none",595}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, + {"extractDateTimeDayStart",570}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"endHourTrend1",492}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"cloudsAbbreviation3Trend1",174}, + {""}, {""}, + {"cloudsAbbreviation2Trend1",169}, + {""}, {""}, {""}, {""}, + {"experimentVersionNumber2",557}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, + {"codedNumberOfGroups",282}, + {""}, {""}, + {"cloudsBaseCoded2",208}, + {""}, {""}, {""}, {""}, {""}, + {"cloudsBaseCoded2Trend3",211}, + {""}, {""}, + {"cloudsBaseCoded2Trend2",210}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"coordAveraging1",311}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, + {"resolutionAndComponentFlags7",1762}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"resolutionAndComponentFlags4",1760}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, + {"ECMWF_s",476}, + {""}, + {"cloudsAbbreviation4Trend3",181}, + {""}, {""}, {""}, {""}, {""}, + {"cloudsAbbreviation4Trend2",180}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, + {"scaledValueOfMinorAxisOfOblateSpheroidEarth",1847}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"beginYearTrend1",74}, + {""}, + {"radiusOfClusterDomain",1700}, + {""}, {""}, + {"totalNumberOfGridPoints",2192}, + {""}, {""}, {""}, + {"windUnitsTrend4",2383}, + {"uuidOfHGrid",2308}, + {"cloudsAbbreviation1Trend1",164}, + {""}, {""}, + {"beginMonthTrend2",71}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"cloudsBaseCoded2Trend1",209}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, + {"horizontalDimensionProcessed",732}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"pastTendencyRVR3",1597}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"cloudsCode3Trend3",236}, + {""}, {""}, + {"cloudsCode3Trend2",235}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"Original_Parameter_Identifier",1485}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, + {"experimentVersionNumber1",556}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"longitudeOfSouthernPoleInDegrees",1044}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, + {"numberOfPointsUsed",1371}, + {""}, {""}, + {"numberOfUsefulPointsAlongXAxis",1395}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, + {"numberOfSecondOrderPackedValues",1380}, + {""}, {""}, {""}, + {"rootGroupSymbolTableEntry",1766}, + {""}, {""}, + {"padding_loc9_2",1561}, + {""}, + {"cloudsCode3Trend1",234}, + {""}, + {"cloudsAbbreviation4Trend1",179}, + {""}, {""}, {""}, {""}, {""}, + {"Ensemble_Identifier_E3",530}, + {""}, {""}, + {"Ensemble_Identifier_E2",529}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, + {"longitudeOfThePolePointInDegrees",1052}, + {""}, {""}, {""}, {""}, {""}, + {"cloudsBaseCoded2Trend4",212}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"offsetBeforePV",1431}, + {""}, {""}, {""}, {""}, {""}, + {"countOfGroupLengths",346}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"section_5",1957}, + {""}, {""}, {""}, + {"endHourTrend4",495}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"cloudsAbbreviation3Trend4",177}, + {""}, {""}, + {"cloudsAbbreviation2Trend4",172}, + {"numberOfPointsAlongFirstAxis",1362}, + {""}, {""}, {""}, {""}, {""}, + {"YearOfModelVersion",2425}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"latitudeOfThePolePoint",911}, + {""}, {""}, {""}, {""}, {""}, + {"endYearTrend3",517}, + {""}, {""}, {""}, {""}, {""}, + {"endYearTrend2",516}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, + {"numberOfBitsUsedForTheScaledGroupLengths",1291}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, + {"runwayDepthOfDepositState3",1789}, + {"latitudeOfLastGridPointInDegrees",898}, + {""}, + {"jDirectionIncrementGiven",842}, + {"flagForNormalOrStaggeredGrid",641}, + {""}, + {"runwayDepthOfDepositState2",1788}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"section_05",1920}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"runwayDesignatorRVR3",1793}, + {""}, {""}, {""}, {""}, {""}, + {"runwayDesignatorRVR2",1792}, + {""}, {""}, + {"probProductDefinition",1658}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"padding_local11_1",1563}, + {""}, {""}, {""}, {""}, + {"beginYearTrend4",77}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"cloudsCode3Trend4",237}, + {""}, + {"cloudsAbbreviation1Trend4",167}, + {""}, {""}, {""}, {""}, {""}, + {"mixedCoordinateDefinition",1193}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"cloudsCode4Trend3",241}, + {""}, {""}, + {"cloudsCode4Trend2",240}, + {"cloudsCode1Trend3",226}, + {""}, + {"extractDateTimeDayEnd",568}, + {"cloudsCode1Trend2",225}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"g1conceptsLocalDirAll",666}, + {""}, {""}, {""}, {""}, + {"padding_loc9_1",1560}, + {"padding_loc7_1",1559}, + {""}, {""}, {""}, {""}, + {"padding_loc6_1",1558}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, + {"typicalYear2",2262}, + {""}, {""}, {""}, + {"superblockExtensionAddress",2105}, + {""}, + {"scaledValueOfCentralWaveNumber",1835}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, + {"pastTendencyRVR1",1595}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, + {"padding_loc5_1",1557}, + {""}, {""}, {""}, {""}, + {"numberOfPointsAlongTheXAxis",1364}, + {""}, {""}, {""}, {""}, {""}, + {"Ensemble_Identifier_E4",531}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"cloudsCode4Trend1",239}, + {""}, {""}, {""}, + {"cloudsCode1Trend1",224}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, + {"endYearTrend1",515}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"typicalYearOfCentury",2263}, + {""}, {""}, {""}, {""}, + {"runwayDepthOfDepositState1",1787}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"cloudsAbbreviation4Trend4",182}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"altitudeOfTheCameraFromTheEarthsCentreMeasuredInUnitsOfTheEarthsRadius",22}, + {""}, + {"padding_loc50_1",1556}, + {""}, {""}, {""}, {""}, {""}, + {"ccsdsBlockSize",114}, + {""}, {""}, {""}, {""}, {""}, + {"runwayDesignatorRVR1",1791}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, + {"horizontalDomainTemplateNumber",734}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, + {"isCavok",808}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"uvRelativeToGrid",2310}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"jDirectionIncrementGridLength",843}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, + {"pastTendencyRVR4",1598}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"cloudsCode4Trend4",242}, + {""}, {""}, {""}, + {"cloudsCode1Trend4",227}, + {""}, {""}, {""}, + {"Missing_Model_LBC",1184}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, + {"lBB",921}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, + {"cloudsBase3Trend3",196}, + {""}, + {"latitudeOfSouthEastCornerOfArea",902}, + {"cloudsBase3Trend2",195}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"latitudeOfThePoleOfStretching",910}, + {""}, + {"setBitsPerValue",1995}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, + {"padding_grid90_1",1511}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"cfVarNameLegacyECMF",145}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, + {"************_ENSEMBLE_**************",521}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"sizeOfPostAuxiliaryArrayPlusOne",2023}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, + {"cloudsBase3Trend1",194}, + {"endYearTrend4",518}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, + {"windGustTrend3",2371}, + {""}, {""}, {""}, {""}, {""}, + {"windGustTrend2",2370}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"runwayDepthOfDepositState4",1790}, + {""}, + {"Original_CodeTable_2_Version_Number",1483}, + {""}, {""}, {""}, + {"latitudeOfThePolePointInDegrees",912}, + {"bufrHeaderSubCentre",103}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"Local_Number_Members_Possible_E3",1004}, + {""}, {""}, + {"Local_Number_Members_Possible_E2",1003}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"runwayDesignatorRVR4",1794}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"padding_local_7_1",1567}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, + {"HDF5",723}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"extractAreaLongitudeRank",564}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, + {"XpInGridLengths",2406}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"Local_Number_Members_Missing_E3",1000}, + {""}, {""}, + {"Local_Number_Members_Missing_E2",999}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, + {"************_PRODUCT_***************",1662}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, + {"runwayExtentOfContaminationCodeState3",1801}, + {""}, {""}, + {"runwayExtentOfContaminationCodeState2",1800}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"cloudsBase3Trend4",197}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"Threshold_Or_Distribution_Units",2144}, + {""}, {""}, {""}, + {"Hour_E3",737}, + {""}, {""}, {""}, + {"cloudsBase4Trend3",201}, + {""}, + {"Hour_E2",736}, + {"cloudsBase4Trend2",200}, + {"cloudsBase1Trend3",186}, + {""}, {""}, + {"cloudsBase1Trend2",185}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"sourceSinkChemicalPhysicalProcess",2030}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"TYPE_FF",2219}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"windGustTrend1",2369}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"runwayExtentOfContaminationCodeState1",1799}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"numberOfGridUsed",1335}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"BUFR",99}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, + {"ceilingAndVisibilityOKTrend3",123}, + {""}, {""}, {""}, {""}, {""}, + {"ceilingAndVisibilityOKTrend2",122}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, + {"cloudsBase4Trend1",199}, + {""}, {""}, {""}, + {"cloudsBase1Trend1",184}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, + {"WRAP",2390}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, + {"numberOfParametersUsedForClustering",1357}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"pastTendencyRVR2",1596}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, + {"Local_Number_Members_Possible_E4",1005}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, + {"cloudsCode2Trend3",231}, + {""}, {""}, + {"cloudsCode2Trend2",230}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, + {"TYPE_OF",2221}, + {"is_chemical_srcsink",815}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"latitudeOfTheSouthernPoleOfProjection",913}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"hoursAfterDataCutoff",746}, + {""}, {""}, {""}, {""}, + {"Local_Number_Members_Missing_E4",1001}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"runwayExtentOfContaminationCodeState4",1802}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"cloudsCode2Trend1",229}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, + {"offsetBSection5",1432}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"cloudsBase4Trend4",202}, + {""}, {""}, {""}, + {"cloudsBase1Trend4",187}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"ceilingAndVisibilityOKTrend1",121}, + {""}, {""}, + {"indexingTimeHHMM",772}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, + {"numberOfPointsAlongYAxis",1368}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"TYPE_FX",2220}, + {""}, + {"padding_local_35",1565}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"windGustTrend4",2372}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, + {"indexingTimeHH",771}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, + {"cloudsCode2Trend4",232}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"7777",1}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, + {"coordinate3OfFirstGridPoint",322}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"padding_loc30_2",1550}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"Hour_E4",738}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"Number_Combination_Ensembles_1_none",1278}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, + {"padding_sec3_1",1572}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, + {"*********_EXTRA_DATA_***************",594}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"versionNumberOfSuperblock",2333}, + {"ceilingAndVisibilityOKTrend4",124}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, + {"padding_loc3_1",1551}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"padding_grid1_2",1506}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, + {"padding_local1_31",1564}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"isCavokTrend3",811}, {""}, {""}, {""}, {""}, {""}, - {"variationOfVisibilityDirectionTrend1",2336}, + {"isCavokTrend2",810}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"padding_loc38_1",1554}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"padding_loc30_1",1549}, + {"NG",1247}, + {""}, {""}, {""}, {""}, + {"padding_loc4_2",1555}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, + {"padding_loc19_2",1530}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, + {"padding_grid3_1",1507}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"coordinate4OfFirstGridPoint",325}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, + {"cloudsBase2Trend3",191}, + {""}, {""}, + {"cloudsBase2Trend2",190}, + {""}, {""}, {""}, + {"numberOfTensOfThousandsOfYearsOfOffset",1387}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"padding_loc18_2",1525}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"numberOfPointsAlongYAxisInCouplingArea",1369}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, + {"extractAreaLatitudeRank",563}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"clusterMember5",540}, + {"padding_grid1_1",1505}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, + {"padding_sec4_1",1573}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"cloudsBase2Trend1",189}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, + {"isCavokTrend1",809}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"numberOfVGridUsed",1402}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, + {"padding_local1_1",1562}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, + {"padding_loc18_1",1524}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"padding_loc10_1",1512}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, + {"padding_grid4_1",1508}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, + {"CCCC",112}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"cloudsBase2Trend4",192}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"visibilityInKilometresTrend3",2366}, + {"biFourierPackingModeForAxes",80}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"extremeValuesRVR3",611}, + {""}, {""}, + {"extremeValuesRVR2",609}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, + {"Missing_Model_LBC_E3",1186}, + {""}, {""}, {""}, {""}, {""}, + {"Missing_Model_LBC_E2",1185}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"X2InGridLengths",2396}, + {""}, + {"padding_loc190_1",1526}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, + {"presentWeather3PresentTrend3",1647}, + {""}, {""}, + {"presentWeather2PresentTrend3",1642}, + {""}, {""}, + {"presentWeather3PresentTrend2",1646}, + {""}, {""}, + {"presentWeather2PresentTrend2",1641}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, + {"octetAtWichPackedDataBegins",1420}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"extremeValuesRVR1",607}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"beginMonthTrend3",350}, - {"iDirectionIncrementGridLength",956}, - {"latitudeOfReferencePointInDegrees",1079}, - {"pack",1571}, - {"endHourTrend2",741}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"unitsLegacyECMF",2302}, - {""}, {""}, - {"NRj",187}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, - {"typeOfPacking",2263}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"runwayDepthOfDepositCodeState2",1846}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"latitudeOfLastGridPoint",1075}, - {"visibilityInKilometresTrend1",2364}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"cloudsAbbreviation2",439}, - {"meanRVR2",1280}, - {"cloudsBase3",464}, - {""}, - {"unpack",2306}, - {"NC2",178}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"typeOfProcessedData",2266}, {""}, {""}, {""}, - {"offsetSection5",1525}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, - {"projTargetString",1739}, + {"isCavokTrend4",812}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, - {"physicalFlag1",1680}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, - {"projSourceString",1737}, - {""}, - {"cloudsBaseCoded1Trend4",478}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"cloudsBaseCoded3",484}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"cloudsBaseCoded3Trend3",487}, - {""}, - {"typeOfWavelengthInterval",2274}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"resolutionAndComponentFlags4",1822}, + {"X1InGridLengths",2394}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, + {"LBC_Initial_Conditions",922}, {""}, - {"cloudsBaseCoded3Trend1",485}, + {"presentWeather1PresentTrend3",1637}, {""}, {""}, {""}, {""}, {""}, - {"Ensemble_Identifier_E4",54}, - {"************_PRODUCT_***************",3}, - {"listMembersMissing3",1124}, + {"presentWeather1PresentTrend2",1636}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"HourOfModelVersion",82}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"padding_grid90_1",1582}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, + {"DIAG",422}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"checkInternalVersion",428}, - {"endMark",744}, - {""}, {""}, {""}, {""}, - {"scanningMode5",1941}, - {"LSTCUM",100}, - {""}, {""}, {""}, {""}, {""}, - {"cloudsBaseCoded1Trend2",476}, - {""}, {""}, {""}, {""}, - {"postAuxiliaryArrayPresent",1688}, - {"offsetSection11",1521}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"Date_E3",27}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"commonBlock",559}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"extractDateTimeSecondRank",582}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"Ensemble_Identifier_E2",52}, + {"extractDateTimeYearRank",586}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, - {"md5Section1",1267}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"extremeValuesRVR4",613}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"presentWeather3PresentTrend1",1645}, {""}, {""}, - {"Original_CodeTable_2_Version_Number",206}, - {"DjGiven",35}, + {"presentWeather2PresentTrend1",1640}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, - {"subLocalDefinitionNumber1",2147}, - {""}, {""}, {""}, - {"numberOfGridInReference",1418}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"oneMinuteMeanMinimumRVR3",1544}, - {""}, {""}, {""}, {""}, - {"northLatitudeOfDomainOfTubing",1353}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, - {"numberOfPressureLevelsUsedForClustering",1455}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, - {"resolutionAndComponentFlags2",1820}, - {"ITERATOR",91}, - {"visibilityTrend1",2368}, - {""}, {""}, {""}, {""}, {""}, - {"md5Section10",1268}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"cloudsCode2",499}, + {"YY",2434}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, - {"section5Length",1999}, - {""}, - {"oneMinuteMeanMinimumRVR1",1542}, - {""}, {""}, {""}, {""}, - {"runwayFrictionCoefficientCodeState3",1875}, - {"southLatitudeOfDomainOfTubing",2088}, - {""}, {""}, {""}, {""}, - {"eastLongitudeOfDomainOfTubing",722}, - {""}, {""}, {""}, - {"padding_loc4_2",1626}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"uuidOfHGrid",2327}, - {"intervalBetweenTimes",1003}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"Minute_E3",161}, - {"constantAntennaElevationAngle",576}, - {""}, {""}, - {"swapScanningAlternativeRows",2156}, - {""}, {""}, {""}, {""}, - {"runwayFrictionCoefficientCodeState1",1873}, - {""}, {""}, {""}, - {"disableGrib1LocalSection",699}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"Local_Number_Members_Possible_E4",137}, - {""}, {""}, {""}, - {"runwayDepositCodeState3",1839}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"beginHourTrend3",342}, + {"padding_sec2_3",1571}, {""}, {""}, {""}, {""}, {""}, - {"offsetAfterData",1501}, + {"padding_sec2_2",1570}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, - {"typeOfGeneratingProcess",2255}, - {"runwayDepthOfDepositCodeState3",1847}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, + {"swapScanningY",2110}, {""}, {""}, {""}, - {"scaledValueOfMajorAxisOfOblateSpheroidEarth",1927}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"legacyGaussSubarea",1103}, - {""}, {""}, {""}, - {"runwayDepositCodeState1",1837}, - {"ccsdsCompressionOptionsMask",389}, - {""}, {""}, {""}, - {"longitudeOfSouthernPole",1191}, - {"FMULTE",65}, + {"presentWeather1PresentTrend1",1635}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"runwayDepthOfDepositCodeState1",1845}, - {""}, {""}, {""}, {""}, - {"padding_loc9_1",1631}, + {"padding_loc2_2",1535}, {""}, - {"WRAPstr",263}, - {"beginHourTrend1",340}, - {"padding_loc7_1",1630}, - {"padding_loc6_1",1629}, + {"padding_loc29_3",1548}, + {"extractDateTimeHourRank",573}, {""}, {""}, {""}, {""}, - {"Local_Number_Members_Missing_E4",133}, + {"padding_loc29_2",1547}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"Local_Number_Members_Possible_E2",135}, - {""}, {""}, {""}, {""}, - {"scaledValueOfUpperLimit",1936}, - {""}, {""}, {""}, {""}, {""}, - {"horizontalDimensionProcessed",941}, - {""}, {""}, {""}, {""}, - {"beginMonthTrend1",348}, - {""}, {""}, {""}, {""}, {""}, - {"ceilingAndVisibilityOK",392}, - {""}, {""}, {""}, {""}, - {"longitudeOfThePolePointInDegrees",1200}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"hoursAfterReferenceTimeOfDataCutoff",952}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, - {"numberOfUsefulPointsAlongXAxis",1478}, - {"indexingTimeHH",976}, - {""}, {""}, {""}, {""}, - {"windUnitsTrend4",2402}, - {""}, {""}, - {"offsetBBitmap",1504}, - {"Threshold_Or_Distribution_0_no_1_yes",246}, - {""}, - {"westLongitudeOfDomainOfTubing",2375}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, - {"indexingTimeHHMM",977}, - {"cloudsBase1",454}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"scaledValueOfLengthOfSemiMajorAxis",1924}, - {""}, {""}, {""}, - {"Local_Number_Members_Missing_E2",131}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, - {"cloudsCode4Trend4",513}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, + {"RVR3_1",1826}, {""}, {""}, - {"cloudsBaseCoded1Trend3",477}, + {"RVR2_1",1825}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"cloudsBaseCoded1",474}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"cloudsBaseCoded1Trend1",475}, - {""}, {""}, {""}, {""}, - {"observationDiagnostic",1489}, - {""}, - {"Y2",275}, + {"TYPE_CF",2217}, + {"TYPE_PF",2251}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, - {"Ensemble_Identifier_E3",53}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, - {"NEAREST",179}, - {""}, {""}, {""}, - {"padding_loc5_1",1628}, - {""}, {""}, {""}, {""}, - {"cloudsCode4Trend2",511}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, - {"experimentVersionNumberOfAnalysis",794}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, - {"windUnitsTrend2",2400}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"codedNumberOfGroups",555}, - {""}, {""}, {""}, - {"Missing_Model_LBC",163}, - {"baseTimeOfThisLeg",334}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, - {"Less_Than_Or_To_Overall_Distribution",122}, - {""}, - {"numberOfPointsUsed",1454}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, - {"padding_loc50_1",1627}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"RVR1_1",1824}, + {"padding_sec2_1",1569}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"weightAppliedToClimateMonth1",2373}, - {""}, {""}, {""}, {""}, {""}, - {"padding_loc30_2",1621}, + {"Missing_Model_LBC_E4",1187}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, - {"baseDateOfThisLeg",332}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"scaledValueOfEarthMajorAxis",1919}, - {""}, {""}, {""}, {""}, - {"scaledValueOfEarthMinorAxis",1920}, - {""}, {""}, {""}, {""}, - {"pastTendencyRVR4",1669}, - {""}, {""}, - {"endHourTrend3",742}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"ECMWF_s",46}, - {""}, {""}, {""}, {""}, - {"section_5",2036}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"totalNumberOfGridPoints",2226}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, - {"recentWeatherTry",1784}, - {""}, {""}, {""}, {""}, - {"offsetBeforeBitmap",1508}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"cloudsAbbreviation3",444}, - {"meanRVR3",1281}, {""}, - {"northWestLongitudeOfLPOArea",1356}, + {"ExtremeValuesRVR3",612}, + {""}, {""}, + {"ExtremeValuesRVR2",610}, {""}, {""}, {""}, - {"endHourTrend1",740}, + {"padding_loc2_1",1533}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"padding_loc29_1",1546}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, + {"presentWeather3PresentTrend4",1648}, + {""}, {""}, + {"presentWeather2PresentTrend4",1643}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, - {"latitudeOfLastGridPointInDegrees",1076}, - {""}, {""}, {""}, {""}, - {"Local_Number_Members_Possible_E3",136}, {""}, {""}, {""}, {""}, {""}, {""}, - {"section_05",2025}, + {"Less_Than_Or_To_Overall_Distribution",943}, {""}, {""}, - {"cloudsCode3Trend4",508}, - {""}, - {"offsetToEndOf4DvarWindow",1530}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"runwayExtentOfContaminationState4",1868}, - {""}, {""}, {""}, {""}, {""}, - {"cloudsAbbreviation1",434}, - {"meanRVR1",1279}, - {""}, {""}, {""}, - {"NC1",177}, + {"Threshold_Or_Distribution_0_no_1_yes",2143}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"section_11",2032}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"precisionOfTheUnpackedSubset",1624}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, + {"padding_loc28_1",1545}, + {""}, {""}, {""}, + {"numberOfUsefulPointsAlongYAxis",1396}, + {""}, {""}, {""}, {""}, {""}, + {"padding_loc20_1",1532}, + {""}, {""}, {""}, {""}, {""}, + {"Ensemble_Combinat_Number_0_none_E3",524}, + {""}, {""}, + {"Ensemble_Combinat_Number_0_none_E2",523}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"section5UniqueIdentifier",2001}, + {""}, {""}, + {"padding_grid5_1",1510}, {""}, - {"Local_Number_Members_Missing_E3",132}, + {"ExtremeValuesRVR1",608}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"tsectionNumber5",2241}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"cloudsCode3Trend2",506}, + {""}, {""}, {""}, {""}, {""}, + {"RVR4_1",1827}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"runwayExtentOfContaminationState2",1866}, + {""}, + {"presentWeather1PresentTrend4",1638}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"runwayDesignatorRVR4",1856}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"GRIBEditionNumber",690}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"cloudsCode4Trend3",512}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, - {"radiusOfClusterDomain",1763}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, - {"cloudsCode4Trend1",510}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"BBB",57}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, - {"lastMonthUsedToBuildClimateMonth2",1062}, - {""}, {""}, {""}, {""}, - {"resolutionAndComponentFlags3",1821}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"padding_sec4_1",1644}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"presentWeather2Present",1708}, - {""}, {""}, - {"padding_loc19_2",1602}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, - {"resolutionAndComponentFlags1",1819}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, + {"TYPE_OR",2250}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"ExtremeValuesRVR4",614}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, - {"Hour_E4",85}, - {""}, {""}, {""}, - {"runwayDesignatorRVR2",1854}, - {"md5GridSection",1264}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"padding_loc37_2",1553}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, - {"extractAreaSouthLatitude",807}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"padding_loc13_3",1516}, + {""}, {""}, {""}, {""}, {""}, + {"padding_loc13_2",1515}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, - {"extractDateTimeDayStart",811}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, - {"latitudeOfThePolePoint",1089}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"beginYearTrend4",355}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"subdivisionsOfBasicAngle",2153}, - {""}, {""}, {""}, {""}, - {"probProductDefinition",1725}, + {""}, {""}, + {"extractDateTimeMinuteRank",576}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, + {"padding_grid50_1",1509}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, - {"longitudeOfSouthernPoleInDegrees",1192}, + {""}, {""}, {""}, {""}, {""}, + {"Ensemble_Combinat_Number_0_none_E4",525}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"extractDateTimeMonthRank",579}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"md5Section2",1269}, - {""}, - {"coordinate4OfFirstGridPoint",596}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"sizeOfPostAuxiliaryArrayPlusOne",2076}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"padding_loc18_2",1596}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"numberOfSecondOrderPackedValues",1463}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"numberOfPointsAlongAMeridian",1443}, - {"runwayDepthOfDepositState4",1852}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"ICEFieldsUsed",86}, - {""}, {""}, {""}, {""}, - {"visibilityTrend2",2369}, {""}, {""}, {""}, - {"cloudsCode1Trend4",498}, - {""}, {""}, {""}, {""}, - {"Hour_E2",83}, + {"numberOfPointsAlongTheYAxis",1365}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, - {"cloudsCode3Trend3",507}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"cfNameLegacyECMF",414}, - {""}, - {"runwayExtentOfContaminationState3",1867}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"padding_loc191_3",1529}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, - {"ICPLSIZE",87}, - {""}, - {"cloudsCode3Trend1",505}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"runwayExtentOfContaminationState1",1865}, - {""}, {""}, {""}, {""}, - {"padding_loc37_2",1623}, - {""}, - {"NB",175}, - {""}, - {"scaledValueOfMinorAxisOfOblateSpheroidEarth",1928}, - {""}, {""}, - {"horizontalDomainTemplateNumber",943}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"beginYearTrend2",353}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"cloudsCode1Trend2",496}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"experimentVersionNumber2",793}, - {""}, {""}, {""}, {""}, {""}, - {"padding_sec3_1",1643}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"Y1",273}, - {"countOfGroupLengths",617}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"cloudsAbbreviation4Trend4",453}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"spacingOfBinsAlongRadials",2096}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"extremeCounterClockwiseWindDirection",602}, {""}, {""}, - {"numberOfPointsAlongSecondAxis",1446}, - {""}, {""}, {""}, - {"coordAveraging2",583}, - {""}, {""}, {""}, - {"windUnitsTrend3",2401}, + {"genVertHeightCoords",676}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"mixedCoordinateDefinition",1311}, - {"cfVarNameLegacyECMF",417}, - {""}, - {"runwayDepthOfDepositState2",1850}, - {""}, {""}, {""}, - {"padding_loc3_1",1625}, - {""}, - {"lastMonthUsedToBuildClimateMonth1",1061}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"scaledValueOfCentralWaveNumber",1916}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, - {"beginMonthTrend2",349}, - {""}, {""}, - {"presentWeather3Present",1713}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"windUnitsTrend1",2399}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"numberOfPointsAlongAParallel",1444}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"cloudsAbbreviation2Trend4",443}, - {"cloudsBaseCoded2Trend4",483}, - {""}, - {"padding_loc190_1",1597}, - {""}, {""}, {""}, - {"presentWeather1Present",1703}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, - {"padding_local1_31",1635}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"pastTendencyRVR3",1668}, + {"padding_loc37_1",1552}, {""}, {""}, {""}, - {"cloudsBase2",459}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"padding_loc30_1",1620}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"padding_loc16_1",1522}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, - {"typicalYearOfCentury",2286}, - {""}, {""}, {""}, {""}, - {"coordinate3OfFirstGridPoint",593}, - {""}, {""}, {""}, {""}, {""}, - {"jDirectionIncrementGiven",1039}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, - {"padding_local_35",1637}, {""}, {""}, - {"endYearTrend4",765}, - {"cloudsBaseCoded2",479}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"cloudsAbbreviation4Trend2",451}, - {"cloudsBaseCoded2Trend2",481}, + {"padding_loc13_1",1514}, + {""}, {""}, + {"padding_loc12_1",1513}, {""}, {""}, {""}, {""}, {""}, - {"qualityValueAssociatedWithParameter",1755}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"HDF5",80}, + {"GRIB",682}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"flagForNormalOrStaggeredGrid",866}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, - {"padding_loc38_1",1624}, - {""}, {""}, - {"unusedBitsInBitmap",2315}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"TYPE_FF",241}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"TYPE_FX",242}, - {""}, {""}, {""}, {""}, - {"uvRelativeToGrid",2329}, - {""}, {""}, - {"cloudsAbbreviation2Trend2",441}, - {""}, - {"numberOfBitsContainingEachPackedValue",1372}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"extractDateTimeDayRank",569}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, - {"padding_local11_1",1633}, {""}, - {"superblockExtensionAddress",2155}, - {""}, {""}, {""}, {""}, - {"padding_grid1_2",1577}, + {"padding_loc17_2",1523}, + {""}, {""}, {""}, + {"padding_loc14_2",1520}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, - {"latitudeOfThePoleOfStretching",1088}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, - {"Number_Combination_Ensembles_1_none",201}, - {""}, {""}, {""}, {""}, - {"endYearTrend2",763}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, - {"cloudsCode1Trend3",497}, - {""}, - {"cloudsBase4Trend4",473}, - {""}, {""}, {""}, - {"TYPE_OF",243}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"bufrHeaderSubCentre",378}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"Time_Range_One_E3",2170}, {""}, {""}, - {"cloudsCode1Trend1",495}, - {""}, {""}, - {"CLNOMA",23}, + {"Time_Range_One_E2",2169}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, - {"padding_loc17_2",1594}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, - {"Time_Range_One_E4",250}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, - {"numberOfParametersUsedForClustering",1440}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"cloudsBase4Trend2",471}, - {"altitudeOfTheCameraFromTheEarthsCentreMeasuredInUnitsOfTheEarthsRadius",304}, - {""}, - {"RENAME",219}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"latitudeOfThePolePointInDegrees",1090}, + {"padding_loc192_1",1531}, + {""}, {""}, + {"P_TACC",1677}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"cloudsAbbreviation3Trend4",448}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"YearOfModelVersion",280}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, - {"runwayDesignatorRVR3",1855}, - {""}, {""}, {""}, {""}, - {"cloudsAbbreviation1Trend4",438}, {""}, {""}, {""}, {""}, {""}, - {"Time_Range_One_E2",248}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"numberOfPointsAlongFirstAxis",1445}, + {"numberOfUnusedBitsAtEndOfSection3",1392}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, - {"WRAP",262}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, - {"runwayDesignatorRVR1",1853}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"cloudsBaseCoded2Trend3",482}, - {""}, {""}, - {"padding_local1_1",1634}, - {""}, {""}, {""}, - {"latitudeOfSouthEastCornerOfArea",1080}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"numberOfPointsAlongTheXAxis",1447}, - {"numberOfBitsUsedForTheScaledGroupLengths",1375}, - {""}, {""}, {""}, {""}, {""}, - {"padding_loc10_1",1583}, - {"XpInGridLengths",272}, - {""}, {""}, {""}, - {"cloudsBaseCoded2Trend1",480}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"pastTendencyRVR1",1666}, - {"BUFR",18}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"ZLBASE",284}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"is_chemical_srcsink",1026}, - {""}, {""}, {""}, {""}, - {"padding_grid4_1",1579}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, - {"cloudsAbbreviation3Trend2",446}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"padding_loc14_1",1519}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"Hour_E3",84}, - {""}, {""}, {""}, {""}, {""}, - {"cloudsBase3Trend4",468}, - {""}, {""}, - {"cloudsAbbreviation1Trend2",436}, - {""}, {""}, {""}, {""}, - {"jDirectionIncrementGridLength",1040}, + {"padding_loc191_1",1527}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"padding_loc18_1",1595}, - {""}, {""}, {""}, {""}, {""}, - {"windGustTrend4",2391}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"isCavok",1006}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"typicalYear2",2285}, - {""}, {""}, {""}, - {"sourceSinkChemicalPhysicalProcess",2082}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"latitudeOfTheSouthernPoleOfProjection",1091}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"beginYearTrend3",354}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, - {"cloudsBase3Trend2",466}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"padding_loc37_1",1622}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, - {"offsetBeforePV",1511}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"coordAveraging3",584}, - {""}, {""}, - {"beginYearTrend1",352}, + {"padding_loc13_4",1517}, + {""}, {""}, {""}, {""}, {""}, + {"YpInGridLengths",2431}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"experimentVersionNumber1",792}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, - {"runwayDepthOfDepositState3",1851}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"cloudsBase4Trend3",472}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"coordAveraging1",582}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"cloudsBase4Trend1",470}, - {""}, {""}, {""}, - {"windGustTrend2",2389}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, - {"runwayDepthOfDepositState1",1849}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, - {"Time_Range_One_E3",249}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"Time_Range_One_E4",2171}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"*********_EXTRA_DATA_***************",4}, - {""}, - {"extractDateTimeDayEnd",809}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, - {"setBitsPerValue",2051}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"runwayBrakingActionState3",1773}, {""}, {""}, {""}, {""}, {""}, - {"cloudsAbbreviation4Trend3",452}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"runwayBrakingActionState2",1772}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, - {"numberOfGridUsed",1419}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, - {"cloudsAbbreviation4Trend1",450}, - {""}, {""}, {""}, {""}, - {"rootGroupSymbolTableEntry",1828}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, - {"cloudsAbbreviation2Trend3",442}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"padding_sec2_2",1641}, - {"ccsdsBlockSize",388}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, - {"g1conceptsLocalDirAll",889}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"cloudsAbbreviation2Trend1",440}, - {""}, {""}, {""}, {""}, {""}, - {"padding_grid3_1",1578}, - {""}, {""}, - {"skipExtraKeyAttributes",2079}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, - {"endYearTrend3",764}, - {"padding_loc2_2",1619}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"padding_loc29_2",1616}, - {""}, {""}, {""}, - {"padding_grid1_1",1576}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, - {"cloudsBase1Trend4",458}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"cloudsBase3Trend3",467}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, - {"endYearTrend1",762}, - {""}, {""}, - {"padding_loc14_2",1591}, - {""}, {""}, - {"cloudsBase3Trend1",465}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, - {"cloudsBase1Trend2",456}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"Local_Number_Members_Used_E3",1008}, + {""}, {""}, {""}, {""}, {""}, + {"Local_Number_Members_Used_E2",1007}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"runwayBrakingActionState1",1771}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"************_ENSEMBLE_**************",1}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"runwayExtentOfContaminationCodeState4",1864}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, - {"cloudsCode2Trend4",503}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"gts_CCCC",716}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, + {"GG",679}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, - {"runwayExtentOfContaminationCodeState2",1862}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, + {"bitsPerValueAndRepack",93}, + {""}, {""}, + {"padding_loc26_1",1542}, + {""}, + {"Model_LBC_Member_Identifier",1200}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, - {"cloudsCode2Trend2",501}, + {"padding_loc23_1",1536}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"cloudsAbbreviation3Trend3",447}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"cloudsAbbreviation1Trend3",437}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, - {"padding_loc13_4",1588}, - {""}, {""}, {""}, {""}, {""}, - {"cloudsAbbreviation3Trend1",445}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"cloudsAbbreviation1Trend1",435}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"padding_loc191_3",1600}, + {""}, + {"padding_loc27_2",1544}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"padding_loc16_1",1593}, - {""}, {""}, {""}, {""}, {""}, - {"Missing_Model_LBC_E4",166}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"Local_Number_Members_Used_E4",141}, + {"padding_loc21_1",1534}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, - {"padding_loc192_1",1601}, - {""}, {""}, {""}, {""}, {""}, - {"extractAreaLongitudeRank",805}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, - {"cloudsBase1Trend3",457}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"pastTendencyRVR2",1667}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"cloudsBase1Trend1",455}, - {""}, {""}, {""}, - {"numberOfPointsAlongYAxis",1451}, - {""}, {""}, - {"padding_grid50_1",1580}, - {""}, {""}, {""}, - {"windGustTrend3",2390}, - {""}, - {"padding_loc13_2",1586}, + {"TYPE_FC",2218}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, + {"padding_loc191_2",1528}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, - {"windGustTrend1",2388}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"isCavokTrend4",1010}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"Missing_Model_LBC_E2",164}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, + {"runwayBrakingActionState4",1774}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"Local_Number_Members_Used_E2",139}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"TYPE_PF",245}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"meanValueRVR3",1158}, + {""}, {""}, {""}, {""}, {""}, + {"meanValueRVR2",1157}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, - {"runwayExtentOfContaminationCodeState3",1863}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"hoursAfterDataCutoff",951}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"Ensemble_Combinat_Number_0_none_E4",49}, + {"ExtremeValuesInMaximumRVR3",605}, + {""}, {""}, {""}, {""}, {""}, + {"ExtremeValuesInMaximumRVR2",604}, + {""}, + {"Time_Range_Two_E3",2173}, {""}, {""}, - {"NG",180}, - {"runwayExtentOfContaminationCodeState1",1861}, + {"Time_Range_Two_E2",2172}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"cloudsCode2Trend3",502}, + {"TYPE_AN",2216}, + {""}, {""}, + {"padding_loc27_1",1543}, + {""}, {""}, {""}, + {"padding_loc15_1",1521}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"cloudsCode2Trend1",500}, - {""}, - {"padding_sec2_3",1642}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, - {"padding_loc27_2",1613}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, - {"Ensemble_Combinat_Number_0_none_E2",47}, - {""}, {""}, {""}, {""}, - {"isCavokTrend2",1008}, - {""}, {""}, - {"padding_sec2_1",1640}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"padding_loc29_3",1617}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, - {"numberOfTensOfThousandsOfYearsOfOffset",1470}, - {""}, - {"lBB",1055}, - {""}, - {"padding_loc2_1",1618}, - {""}, {""}, - {"TYPE_OR",244}, - {""}, {""}, {""}, - {"padding_loc29_1",1615}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"ceilingAndVisibilityOKTrend4",396}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"Local_Number_Members_Used_E4",1009}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, - {"padding_loc14_1",1590}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"padding_loc191_1",1598}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, - {"padding_loc20_1",1603}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"meanValueRVR1",1156}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, - {"offsetBSection5",1505}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, - {"padding_grid5_1",1581}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"ExtremeValuesInMaximumRVR1",603}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"padding_loc12_1",1584}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, - {"CCCC",20}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, - {"ceilingAndVisibilityOKTrend2",394}, - {""}, - {"padding_loc28_1",1614}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"RVR4_1",223}, - {""}, {""}, {""}, - {"versionNumberOfSuperblock",2355}, - {""}, - {"Original_Parameter_Iden_CodeTable2",207}, - {""}, {""}, {""}, {""}, - {"X2InGridLengths",267}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, - {"Time_Range_Two_E4",253}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"Time_Range_Two_E4",2174}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"TYPE_CF",239}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, - {"numberOfPointsAlongYAxisInCouplingArea",1452}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"RVR2_1",221}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, - {"LBC_Initial_Conditions",97}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, - {"Time_Range_Two_E2",251}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"Ensemble_Combinat_Number_0_none_E3",48}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -7078,88 +7808,70 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, + {"Original_Parameter_Iden_CodeTable2",1484}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, - {"extractAreaLatitudeRank",804}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"biFourierPackingModeForAxes",358}, - {""}, {""}, {""}, {""}, - {"padding_loc13_3",1587}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"numberOfVGridUsed",1480}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"padding_loc13_1",1585}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"meanValueRVR4",1159}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, - {"Missing_Model_LBC_E3",165}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"Local_Number_Members_Used_E3",140}, + {"ExtremeValuesInMaximumRVR4",606}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"extremeValuesRVR4",840}, + {"Y2InGridLengths",2412}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"X1InGridLengths",265}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, - {"cloudsBase2Trend4",463}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, - {"RVR3_1",222}, - {""}, {""}, {""}, - {"extractDateTimeYearRank",827}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"extremeValuesRVR2",838}, + {"INGRIB",782}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"RVR1_1",220}, + {"Used_Model_LBC",2298}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, + {"Y1InGridLengths",2410}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, - {"Time_Range_Two_E3",252}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, - {"cloudsBase2Trend2",461}, - {"isCavokTrend3",1009}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"padding_loc27_1",1612}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"isCavokTrend1",1007}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"presentWeather2PresentTrend4",1712}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, - {"extractDateTimeHourRank",814}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -7170,22 +7882,18 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"numberOfUsefulPointsAlongYAxis",1479}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"Model_LBC_Member_Identifier",169}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"ceilingAndVisibilityOKTrend3",395}, - {""}, {""}, {""}, - {"presentWeather2PresentTrend2",1710}, + {"padding_loc13_5",1518}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"GRIBEXSection1Problem",692}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -7193,34 +7901,18 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, - {"ceilingAndVisibilityOKTrend1",393}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"padding_loc26_1",1611}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, - {"extremeValuesRVR3",839}, - {""}, {""}, - {"P_TACC",216}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, - {"padding_loc191_2",1599}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, - {"extremeValuesRVR1",837}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"cloudsBase2Trend3",462}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"cloudsBase2Trend1",460}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -7228,13 +7920,9 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"presentWeather3PresentTrend4",1717}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"presentWeather1PresentTrend4",1707}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -7242,12 +7930,7 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"precisionOfTheUnpackedSubset",1694}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"genVertHeightCoords",893}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"DIAG",25}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -7259,13 +7942,10 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"presentWeather3PresentTrend2",1715}, + {"numberOfBitsUsedForTheGroupWidths",1290}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"swapScanningY",2160}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"presentWeather1PresentTrend2",1705}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -7274,30 +7954,18 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, - {"extractDateTimeMinuteRank",817}, - {""}, {""}, {""}, {""}, - {"extractDateTimeSecondRank",823}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, - {"extractDateTimeMonthRank",820}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"padding_loc15_1",1592}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, - {"gts_CCCC",928}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, - {"octetAtWichPackedDataBegins",1497}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -7307,6 +7975,8 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, + {"padding_loc244_3",1539}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -7316,19 +7986,13 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"extractDateTimeDayRank",810}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"YY",279}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"presentWeather2PresentTrend3",1711}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -7336,8 +8000,6 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"presentWeather2PresentTrend1",1709}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -7346,37 +8008,24 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, - {"At_least__Or_Distribut_Proportion_Of",14}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, - {"ExtremeValuesRVR4",64}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"GRIBEditionNumber",74}, - {"extremeCounterClockwiseWindDirection",836}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, + {"BUDG",98}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"ExtremeValuesRVR2",62}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"padding_loc23_1",1605}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"padding_loc21_1",1604}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"padding_loc244_3",1608}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -7394,31 +8043,22 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"presentWeather3PresentTrend3",1716}, + {""}, {""}, + {"padding_loc244_1",1537}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"presentWeather1PresentTrend3",1706}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, - {"TYPE_FC",240}, - {""}, {""}, {""}, {""}, - {"presentWeather3PresentTrend1",1714}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"presentWeather1PresentTrend1",1704}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, - {"GRIB",70}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -7434,24 +8074,14 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"ExtremeValuesRVR3",63}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, - {"NINT_RITZ_EXP",183}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, - {"ExtremeValuesRVR1",61}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"padding_loc13_5",1589}, - {""}, - {"numberOfPointsAlongTheYAxis",1448}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"YpInGridLengths",283}, + {"P_TAVG",1678}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -7462,8 +8092,6 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"padding_loc244_1",1606}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -7474,6 +8102,8 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"GRIBEXShBugPresent",693}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -7493,13 +8123,9 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, - {"Show_Combination_Ensem_E4_0_no_1_yes",230}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, - {"GG",69}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -7508,17 +8134,11 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, - {"Show_Combination_Ensem_E2_0_no_1_yes",228}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, - {"TYPE_AN",238}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"ExtremeValuesInMaximumRVR4",60}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -7541,27 +8161,31 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, + {"padding_loc244_2",1538}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"ExtremeValuesInMaximumRVR2",58}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, + {"GRIBEX_boustrophedonic",691}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"Used_Model_LBC",257}, + {""}, {""}, {""}, {""}, {""}, + {"Show_Combination_Ensem_E3_0_no_1_yes",2008}, + {""}, {""}, + {"Show_Combination_Ensem_E2_0_no_1_yes",2007}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, - {"meanValueRVR4",1287}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, + {"padding_loc245_1",1540}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -7570,13 +8194,8 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, - {"numberOfUnusedBitsAtEndOfSection3",1475}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, - {"Show_Combination_Ensem_E3_0_no_1_yes",229}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"BBB",16}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -7586,8 +8205,6 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, - {"meanValueRVR2",1285}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -7597,8 +8214,6 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"bitsPerValueAndRepack",371}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -7608,6 +8223,8 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, + {"Show_Combination_Ensem_E4_0_no_1_yes",2009}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -7615,8 +8232,6 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"runwayBrakingActionState4",1836}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -7628,8 +8243,6 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, - {"padding_loc244_2",1607}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -7642,8 +8255,6 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"runwayBrakingActionState2",1834}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -7663,13 +8274,15 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"At_least__Or_Distribut_Proportion_Of",37}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"NINT_RITZ_EXP",1251}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, - {"ExtremeValuesInMaximumRVR3",59}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -7677,8 +8290,6 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"ExtremeValuesInMaximumRVR1",57}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -7692,15 +8303,14 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"padding_loc245_1",1609}, + {"NINT_LOG10_RITZ",1250}, + {""}, {""}, {""}, {""}, + {"padding_loc245_2",1541}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"Y2InGridLengths",276}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -7708,19 +8318,13 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, - {"meanValueRVR3",1286}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, - {"INGRIB",90}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, - {"meanValueRVR1",1284}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -7743,8 +8347,6 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, - {"GRIBEXSection1Problem",71}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -7765,18 +8367,12 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, - {"runwayBrakingActionState3",1835}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"Y1InGridLengths",274}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"runwayBrakingActionState1",1833}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -7850,7 +8446,6 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"padding_loc245_2",1610}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -7860,11 +8455,7 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"numberOfBitsUsedForTheGroupWidths",1374}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, - {"P_TAVG",217}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -7899,6 +8490,9 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"Used_Model_LBC_E3",2300}, + {""}, {""}, + {"Used_Model_LBC_E2",2299}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -7917,8 +8511,6 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, - {"BUDG",17}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -7946,6 +8538,9 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"Used_Model_LBC_E4",2301}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -7961,8 +8556,6 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, - {"GRIBEX_boustrophedonic",73}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -7971,8 +8564,6 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, - {"Used_Model_LBC_E4",260}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -7984,8 +8575,6 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"Used_Model_LBC_E2",258}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -8008,7 +8597,6 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"NINT_LOG10_RITZ",182}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -8037,13 +8625,10 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"GRIBEXShBugPresent",72}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"Used_Model_LBC_E3",259}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -8070,6 +8655,8 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"GRIB_LATITUDE",694}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -8092,6 +8679,8 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"GRIB_DEPTH",689}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -8116,6 +8705,8 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, + {"AEC_PAD_RSI_OPTION_MASK",15}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -8181,14 +8772,14 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, - {"GRIB_DEPTH",75}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, + {"AEC_RESTRICTED_OPTION_MASK",16}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -8199,6 +8790,8 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"AEC_DATA_SIGNED_OPTION_MASK",14}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -8226,8 +8819,6 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, - {"AEC_PAD_RSI_OPTION_MASK",11}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -8344,6 +8935,8 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, + {"AEC_DATA_3BYTE_OPTION_MASK",11}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -8416,6 +9009,8 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"GRIB_LONGITUDE",695}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -8548,8 +9143,6 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"AEC_RESTRICTED_OPTION_MASK",12}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -8604,8 +9197,6 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"GRIB_LATITUDE",76}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -8640,8 +9231,6 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"AEC_DATA_SIGNED_OPTION_MASK",10}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -8822,6 +9411,8 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"AEC_DATA_MSB_OPTION_MASK",12}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -8859,8 +9450,6 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, - {"GRIB_LONGITUDE",77}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -8922,7 +9511,6 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"AEC_DATA_3BYTE_OPTION_MASK",7}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -9103,8 +9691,6 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, - {"AEC_DATA_MSB_OPTION_MASK",8}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -9391,8 +9977,10 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, - {"AEC_DATA_PREPROCESS_OPTION_MASK",9} + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"AEC_DATA_PREPROCESS_OPTION_MASK",13} }; const struct grib_keys_hash * @@ -9404,12 +9992,12 @@ grib_keys_hash_get (const char *str, size_t len) if (key <= MAX_HASH_VALUE) if (len == lengthtable[key]) - { + { const char *s = wordlist[key].name; if (*str == *s && !memcmp (str + 1, s + 1, len - 1)) return &wordlist[key]; - } + } } return 0; } diff --git a/tests/keys b/tests/keys index e7861f71b..75f167195 100644 --- a/tests/keys +++ b/tests/keys @@ -3,2435 +3,2441 @@ %} struct grib_keys_hash { char* name; int id;}; %% -************_ENSEMBLE_**************,1 -************_EXPERIMENT_************,2 -************_PRODUCT_***************,3 -*********_EXTRA_DATA_***************,4 -7777,5 -AA,6 -AEC_DATA_3BYTE_OPTION_MASK,7 -AEC_DATA_MSB_OPTION_MASK,8 -AEC_DATA_PREPROCESS_OPTION_MASK,9 -AEC_DATA_SIGNED_OPTION_MASK,10 -AEC_PAD_RSI_OPTION_MASK,11 -AEC_RESTRICTED_OPTION_MASK,12 -Adelta,13 -At_least__Or_Distribut_Proportion_Of,14 -Azi,15 -BBB,16 -BUDG,17 -BUFR,18 -BufrTemplate,19 -CCCC,20 -CDF,21 -CDFstr,22 -CLNOMA,23 -DELETE,24 -DIAG,25 -Date_E2,26 -Date_E3,27 -Date_E4,28 -DayOfModelVersion,29 -Di,30 -DiGiven,31 -DiInDegrees,32 -DiInMetres,33 -Dj,34 -DjGiven,35 -DjInDegrees,36 -DjInMetres,37 -Dstart,38 -Dx,39 -DxInDegrees,40 -DxInMetres,41 -Dy,42 -DyInDegrees,43 -DyInMetres,44 -ECMWF,45 -ECMWF_s,46 -Ensemble_Combinat_Number_0_none_E2,47 -Ensemble_Combinat_Number_0_none_E3,48 -Ensemble_Combinat_Number_0_none_E4,49 -Ensemble_Combination_Number,50 -Ensemble_Identifier,51 -Ensemble_Identifier_E2,52 -Ensemble_Identifier_E3,53 -Ensemble_Identifier_E4,54 -Experiment_Identifier,55 -Extra_Data_FreeFormat_0_none,56 -ExtremeValuesInMaximumRVR1,57 -ExtremeValuesInMaximumRVR2,58 -ExtremeValuesInMaximumRVR3,59 -ExtremeValuesInMaximumRVR4,60 -ExtremeValuesRVR1,61 -ExtremeValuesRVR2,62 -ExtremeValuesRVR3,63 -ExtremeValuesRVR4,64 -FMULTE,65 -FMULTM,66 -FirstLatitude,67 -GDSPresent,68 -GG,69 -GRIB,70 -GRIBEXSection1Problem,71 -GRIBEXShBugPresent,72 -GRIBEX_boustrophedonic,73 -GRIBEditionNumber,74 -GRIB_DEPTH,75 -GRIB_LATITUDE,76 -GRIB_LONGITUDE,77 -GTS,78 -GTSstr,79 -HDF5,80 -HDF5str,81 -HourOfModelVersion,82 -Hour_E2,83 -Hour_E3,84 -Hour_E4,85 -ICEFieldsUsed,86 -ICPLSIZE,87 -II,88 -INBITS,89 -INGRIB,90 -ITERATOR,91 -ITN,92 -J,93 -JS,94 -K,95 -KS,96 -LBC_Initial_Conditions,97 -LIMITS,98 -LLCOSP,99 -LSTCUM,100 -La1,101 -La1InDegrees,102 -La2,103 -La2InDegrees,104 -LaD,105 -LaDInDegrees,106 -LaR,107 -Lap,108 -Lar1,109 -Lar1InDegrees,110 -Lar2,111 -Lar2InDegrees,112 -Latin,113 -Latin1,114 -Latin1InDegrees,115 -Latin2,116 -Latin2InDegrees,117 -Lcx,118 -LcxInMetres,119 -Lcy,120 -LcyInMetres,121 -Less_Than_Or_To_Overall_Distribution,122 -Lo1,123 -Lo1InDegrees,124 -Lo2,125 -Lo2InDegrees,126 -LoR,127 -LoV,128 -LoVInDegrees,129 -Local_Number_Members_Missing,130 -Local_Number_Members_Missing_E2,131 -Local_Number_Members_Missing_E3,132 -Local_Number_Members_Missing_E4,133 -Local_Number_Members_Possible,134 -Local_Number_Members_Possible_E2,135 -Local_Number_Members_Possible_E3,136 -Local_Number_Members_Possible_E4,137 -Local_Number_Members_Used,138 -Local_Number_Members_Used_E2,139 -Local_Number_Members_Used_E3,140 -Local_Number_Members_Used_E4,141 -Lop,142 -Lor1,143 -Lor1InDegrees,144 -Lor2,145 -Lor2InDegrees,146 -Lux,147 -LuxInMetres,148 -Luy,149 -LuyInMetres,150 -Lx,151 -LxInMetres,152 -Ly,153 -LyInMetres,154 -M,155 -METAR,156 -METARstr,157 -MS,158 -MinuteOfModelVersion,159 -Minute_E2,160 -Minute_E3,161 -Minute_E4,162 -Missing_Model_LBC,163 -Missing_Model_LBC_E2,164 -Missing_Model_LBC_E3,165 -Missing_Model_LBC_E4,166 -Model_Additional_Information,167 -Model_Identifier,168 -Model_LBC_Member_Identifier,169 -MonthOfModelVersion,170 -N,171 -N1,172 -N2,173 -NAT,174 -NB,175 -NC,176 -NC1,177 -NC2,178 -NEAREST,179 -NG,180 -NH,181 -NINT_LOG10_RITZ,182 -NINT_RITZ_EXP,183 -NL,184 -NP,185 -NR,186 -NRj,187 -NT,188 -NUT,189 -NV,190 -Nassigned,191 -Nb,192 -Ncx,193 -Ncy,194 -Nf,195 -Ni,196 -Nj,197 -Nr,198 -NrInRadiusOfEarth,199 -NrInRadiusOfEarthScaled,200 -Number_Combination_Ensembles_1_none,201 -Nux,202 -Nuy,203 -Nx,204 -Ny,205 -Original_CodeTable_2_Version_Number,206 -Original_Parameter_Iden_CodeTable2,207 -Original_Parameter_Identifier,208 -P,209 -P1,210 -P2,211 -PLPresent,212 -PUnset,213 -PVPresent,214 -P_INST,215 -P_TACC,216 -P_TAVG,217 -Product_Identifier,218 -RENAME,219 -RVR1_1,220 -RVR2_1,221 -RVR3_1,222 -RVR4_1,223 -SOH,224 -SPD,225 -SecondLatitude,226 -SecondOfModelVersion,227 -Show_Combination_Ensem_E2_0_no_1_yes,228 -Show_Combination_Ensem_E3_0_no_1_yes,229 -Show_Combination_Ensem_E4_0_no_1_yes,230 -Sub-Experiment_Identifier,231 -TAF,232 -TAFstr,233 -TIDE,234 -TS,235 -TScalc,236 -TT,237 -TYPE_AN,238 -TYPE_CF,239 -TYPE_FC,240 -TYPE_FF,241 -TYPE_FX,242 -TYPE_OF,243 -TYPE_OR,244 -TYPE_PF,245 -Threshold_Or_Distribution_0_no_1_yes,246 -Threshold_Or_Distribution_Units,247 -Time_Range_One_E2,248 -Time_Range_One_E3,249 -Time_Range_One_E4,250 -Time_Range_Two_E2,251 -Time_Range_Two_E3,252 -Time_Range_Two_E4,253 -Total_Number_Members_Missing,254 -Total_Number_Members_Possible,255 -Total_Number_Members_Used,256 -Used_Model_LBC,257 -Used_Model_LBC_E2,258 -Used_Model_LBC_E3,259 -Used_Model_LBC_E4,260 -WMO,261 -WRAP,262 -WRAPstr,263 -X1,264 -X1InGridLengths,265 -X2,266 -X2InGridLengths,267 -XR,268 -XRInMetres,269 -Xo,270 -Xp,271 -XpInGridLengths,272 -Y1,273 -Y1InGridLengths,274 -Y2,275 -Y2InGridLengths,276 -YR,277 -YRInMetres,278 -YY,279 -YearOfModelVersion,280 -Yo,281 -Yp,282 -YpInGridLengths,283 -ZLBASE,284 -ZLMULT,285 -_T,286 -_TS,287 -_anoffset,288 -_endStep,289 -_leg_number,290 -_numberOfValues,291 -accumulationInterval,292 -accuracy,293 -accuracyMultipliedByFactor,294 -addEmptySection2,295 -addExtraLocalSection,296 -additionalFlagPresent,297 -addressOfFileFreeSpaceInfo,298 -aerosolType,299 -aerosolTypeName,300 -aerosolbinnumber,301 -aerosolpacking,302 -alternativeRowScanning,303 -altitudeOfTheCameraFromTheEarthsCentreMeasuredInUnitsOfTheEarthsRadius,304 -analysisOffsets,305 -angleDivisor,306 -angleMultiplier,307 -angleOfRotation,308 -angleOfRotationInDegrees,309 -angleOfRotationOfProjection,310 -angleSubdivisions,311 -anoffset,312 -anoffsetFirst,313 -anoffsetFrequency,314 -anoffsetLast,315 -applicationIdentifier,316 -assertion,317 -atmosphericChemicalOrPhysicalConstituentType,318 -attributeOfTile,319 -auxiliary,320 -average,321 -averaging1Flag,322 -averaging2Flag,323 -averagingPeriod,324 -avg,325 -azimuthalWidth,326 -backgroundGeneratingProcessIdentifier,327 -backgroundProcess,328 -band,329 -baseAddress,330 -baseDateEPS,331 -baseDateOfThisLeg,332 -baseTimeEPS,333 -baseTimeOfThisLeg,334 -basicAngleOfTheInitialProductionDomain,335 -beginDayTrend1,336 -beginDayTrend2,337 -beginDayTrend3,338 -beginDayTrend4,339 -beginHourTrend1,340 -beginHourTrend2,341 -beginHourTrend3,342 -beginHourTrend4,343 -beginMinuteTrend1,344 -beginMinuteTrend2,345 -beginMinuteTrend3,346 -beginMinuteTrend4,347 -beginMonthTrend1,348 -beginMonthTrend2,349 -beginMonthTrend3,350 -beginMonthTrend4,351 -beginYearTrend1,352 -beginYearTrend2,353 -beginYearTrend3,354 -beginYearTrend4,355 -biFourierCoefficients,356 -biFourierMakeTemplate,357 -biFourierPackingModeForAxes,358 -biFourierResolutionParameterM,359 -biFourierResolutionParameterN,360 -biFourierResolutionSubSetParameterM,361 -biFourierResolutionSubSetParameterN,362 -biFourierSubTruncationType,363 -biFourierTruncationType,364 -binaryScaleFactor,365 -bitMapIndicator,366 -bitmap,367 -bitmapPresent,368 -bitmapSectionPresent,369 -bitsPerValue,370 -bitsPerValueAndRepack,371 -boot_edition,372 -bottomLevel,373 -boustrophedonic,374 -boustrophedonicOrdering,375 -bufrDataEncoded,376 -bufrHeaderCentre,377 -bufrHeaderSubCentre,378 -bufrTemplate,379 -bufrdcExpandedDescriptors,380 -calendarIdPresent,381 -calendarIdentification,382 -calendarIdentificationTemplateNumber,383 -categories,384 -categoryType,385 -cavokOrVisibility,386 -ccccIdentifiers,387 -ccsdsBlockSize,388 -ccsdsCompressionOptionsMask,389 -ccsdsFlags,390 -ccsdsRsi,391 -ceilingAndVisibilityOK,392 -ceilingAndVisibilityOKTrend1,393 -ceilingAndVisibilityOKTrend2,394 -ceilingAndVisibilityOKTrend3,395 -ceilingAndVisibilityOKTrend4,396 -centralClusterDefinition,397 -centralLongitude,398 -centralLongitudeInDegrees,399 -centralLongitudeInMicrodegrees,400 -centre,401 -centreDescription,402 -centreForLocal,403 -centreForTable2,404 -centreLatitude,405 -centreLatitudeInDegrees,406 -centreLongitude,407 -centreLongitudeInDegrees,408 -centuryOfAnalysis,409 -centuryOfReference,410 -centuryOfReferenceTimeOfData,411 -cfName,412 -cfNameECMF,413 -cfNameLegacyECMF,414 -cfVarName,415 -cfVarNameECMF,416 -cfVarNameLegacyECMF,417 -changeDecimalPrecision,418 -changeIndicatorTrend1,419 -changeIndicatorTrend2,420 -changeIndicatorTrend3,421 -changeIndicatorTrend4,422 -changingPrecision,423 -channel,424 -channelNumber,425 -char,426 -charValues,427 -checkInternalVersion,428 -class,429 -classOfAnalysis,430 -climateDateFrom,431 -climateDateTo,432 -climatologicalRegime,433 -cloudsAbbreviation1,434 -cloudsAbbreviation1Trend1,435 -cloudsAbbreviation1Trend2,436 -cloudsAbbreviation1Trend3,437 -cloudsAbbreviation1Trend4,438 -cloudsAbbreviation2,439 -cloudsAbbreviation2Trend1,440 -cloudsAbbreviation2Trend2,441 -cloudsAbbreviation2Trend3,442 -cloudsAbbreviation2Trend4,443 -cloudsAbbreviation3,444 -cloudsAbbreviation3Trend1,445 -cloudsAbbreviation3Trend2,446 -cloudsAbbreviation3Trend3,447 -cloudsAbbreviation3Trend4,448 -cloudsAbbreviation4,449 -cloudsAbbreviation4Trend1,450 -cloudsAbbreviation4Trend2,451 -cloudsAbbreviation4Trend3,452 -cloudsAbbreviation4Trend4,453 -cloudsBase1,454 -cloudsBase1Trend1,455 -cloudsBase1Trend2,456 -cloudsBase1Trend3,457 -cloudsBase1Trend4,458 -cloudsBase2,459 -cloudsBase2Trend1,460 -cloudsBase2Trend2,461 -cloudsBase2Trend3,462 -cloudsBase2Trend4,463 -cloudsBase3,464 -cloudsBase3Trend1,465 -cloudsBase3Trend2,466 -cloudsBase3Trend3,467 -cloudsBase3Trend4,468 -cloudsBase4,469 -cloudsBase4Trend1,470 -cloudsBase4Trend2,471 -cloudsBase4Trend3,472 -cloudsBase4Trend4,473 -cloudsBaseCoded1,474 -cloudsBaseCoded1Trend1,475 -cloudsBaseCoded1Trend2,476 -cloudsBaseCoded1Trend3,477 -cloudsBaseCoded1Trend4,478 -cloudsBaseCoded2,479 -cloudsBaseCoded2Trend1,480 -cloudsBaseCoded2Trend2,481 -cloudsBaseCoded2Trend3,482 -cloudsBaseCoded2Trend4,483 -cloudsBaseCoded3,484 -cloudsBaseCoded3Trend1,485 -cloudsBaseCoded3Trend2,486 -cloudsBaseCoded3Trend3,487 -cloudsBaseCoded3Trend4,488 -cloudsBaseCoded4,489 -cloudsBaseCoded4Trend1,490 -cloudsBaseCoded4Trend2,491 -cloudsBaseCoded4Trend3,492 -cloudsBaseCoded4Trend4,493 -cloudsCode1,494 -cloudsCode1Trend1,495 -cloudsCode1Trend2,496 -cloudsCode1Trend3,497 -cloudsCode1Trend4,498 -cloudsCode2,499 -cloudsCode2Trend1,500 -cloudsCode2Trend2,501 -cloudsCode2Trend3,502 -cloudsCode2Trend4,503 -cloudsCode3,504 -cloudsCode3Trend1,505 -cloudsCode3Trend2,506 -cloudsCode3Trend3,507 -cloudsCode3Trend4,508 -cloudsCode4,509 -cloudsCode4Trend1,510 -cloudsCode4Trend2,511 -cloudsCode4Trend3,512 -cloudsCode4Trend4,513 -cloudsTitle1,514 -cloudsTitle1Trend1,515 -cloudsTitle1Trend2,516 -cloudsTitle1Trend3,517 -cloudsTitle1Trend4,518 -cloudsTitle2,519 -cloudsTitle2Trend1,520 -cloudsTitle2Trend2,521 -cloudsTitle2Trend3,522 -cloudsTitle2Trend4,523 -cloudsTitle3,524 -cloudsTitle3Trend1,525 -cloudsTitle3Trend2,526 -cloudsTitle3Trend3,527 -cloudsTitle3Trend4,528 -cloudsTitle4,529 -cloudsTitle4Trend1,530 -cloudsTitle4Trend2,531 -cloudsTitle4Trend3,532 -cloudsTitle4Trend4,533 -clusterIdentifier,534 -clusterMember1,535 -clusterMember10,536 -clusterMember2,537 -clusterMember3,538 -clusterMember4,539 -clusterMember5,540 -clusterMember6,541 -clusterMember7,542 -clusterMember8,543 -clusterMember9,544 -clusterNumber,545 -clusterSize,546 -clusteringDomain,547 -clusteringMethod,548 -clutterFilterIndicator,549 -cnmc_cmcc,550 -cnmc_isac,551 -codeFigure,552 -codeType,553 -codedNumberOfFirstOrderPackedValues,554 -codedNumberOfGroups,555 -codedValues,556 -coefsFirst,557 -coefsSecond,558 -commonBlock,559 -complexPacking,560 -componentIndex,561 -compressedData,562 -computeLaplacianOperator,563 -computeStatistics,564 -conceptDir,565 -conceptsDir1,566 -conceptsDir2,567 -conceptsLocalDirAll,568 -conceptsLocalDirECMF,569 -conceptsLocalMarsDirAll,570 -conceptsMasterDir,571 -conceptsMasterMarsDir,572 -consensus,573 -consensusCount,574 -const,575 -constantAntennaElevationAngle,576 -constantFieldHalfByte,577 -constituentType,578 -constituentTypeName,579 -controlForecastCluster,580 -coordAveraging0,581 -coordAveraging1,582 -coordAveraging2,583 -coordAveraging3,584 -coordAveragingTims,585 -coordinate1End,586 -coordinate1Flag,587 -coordinate1Start,588 -coordinate2End,589 -coordinate2Flag,590 -coordinate2Start,591 -coordinate3Flag,592 -coordinate3OfFirstGridPoint,593 -coordinate3OfLastGridPoint,594 -coordinate4Flag,595 -coordinate4OfFirstGridPoint,596 -coordinate4OfLastGridPoint,597 -coordinateFlag1,598 -coordinateFlag2,599 -coordinateIndexNumber,600 -coordinatesPresent,601 -core,602 -corr1Data,603 -corr2Data,604 -corr3Data,605 -corr4Data,606 -correction,607 -correction1,608 -correction1Part,609 -correction2,610 -correction2Part,611 -correction3,612 -correction3Part,613 -correction4,614 -correction4Part,615 -count,616 -countOfGroupLengths,617 -countOfICEFieldsUsed,618 -countTotal,619 -country,620 -crcrlf,621 -createNewData,622 -crraLocalVersion,623 -crraSection,624 -crraSuiteID,625 -daLoop,626 -data,627 -dataAccessors,628 -dataCategory,629 -dataDate,630 -dataFlag,631 -dataKeys,632 -dataLength,633 -dataOrigin,634 -dataRepresentation,635 -dataRepresentationTemplate,636 -dataRepresentationTemplateNumber,637 -dataRepresentationType,638 -dataSelection,639 -dataStream,640 -dataSubCategory,641 -dataTime,642 -dataType,643 -dataValues,644 -datasetForLocal,645 -date,646 -dateOfAnalysis,647 -dateOfForecast,648 -dateOfForecastRun,649 -dateOfForecastUsedInLocalTime,650 -dateOfIceFieldUsed,651 -dateOfModelVersion,652 -dateOfReference,653 -dateOfSSTFieldUsed,654 -dateSSTFieldUsed,655 -dateTime,656 -datumSize,657 -day,658 -dayOfAnalysis,659 -dayOfEndOfOverallTimeInterval,660 -dayOfForecast,661 -dayOfForecastUsedInLocalTime,662 -dayOfModelVersion,663 -dayOfReference,664 -dayOfTheYearDate,665 -decimalPrecision,666 -decimalScaleFactor,667 -defaultFaFieldName,668 -defaultFaLevelName,669 -defaultFaModelName,670 -defaultName,671 -defaultParameter,672 -defaultSequence,673 -defaultShortName,674 -defaultStepUnits,675 -defaultTypeOfLevel,676 -default_max_val,677 -default_min_val,678 -default_step_units,679 -definitionFilesVersion,680 -deleteCalendarId,681 -deleteExtraLocalSection,682 -deleteLocalDefinition,683 -deletePV,684 -derivedForecast,685 -dewPointTemperature,686 -diagnostic,687 -diagnosticNumber,688 -diffInDays,689 -diffInHours,690 -dimension,691 -dimensionNumber,692 -dimensionType,693 -direction,694 -directionNumber,695 -directionOfVariation,696 -directionScalingFactor,697 -dirty_statistics,698 -disableGrib1LocalSection,699 -discipline,700 -distanceFromTubeToEnsembleMean,701 -distinctLatitudes,702 -distinctLongitudes,703 -doExtractArea,704 -doExtractDateTime,705 -doExtractSubsets,706 -doSimpleThinning,707 -domain,708 -driverInformationBlockAddress,709 -dummy,710 -dummy1,711 -dummy2,712 -dummyc,713 -dx,714 -dy,715 -earthIsOblate,716 -earthMajorAxis,717 -earthMajorAxisInMetres,718 -earthMinorAxis,719 -earthMinorAxisInMetres,720 -eastLongitudeOfCluster,721 -eastLongitudeOfDomainOfTubing,722 -easternLongitudeOfClusterDomain,723 -easternLongitudeOfDomain,724 -ed,725 -edition,726 -editionNumber,727 -efas_model,728 -efiOrder,729 -eight,730 -elementsTable,731 -elevation,732 -eleven,733 -endDayTrend1,734 -endDayTrend2,735 -endDayTrend3,736 -endDayTrend4,737 -endDescriptors,738 -endGridDefinition,739 -endHourTrend1,740 -endHourTrend2,741 -endHourTrend3,742 -endHourTrend4,743 -endMark,744 -endMinuteTrend1,745 -endMinuteTrend2,746 -endMinuteTrend3,747 -endMinuteTrend4,748 -endMonthTrend1,749 -endMonthTrend2,750 -endMonthTrend3,751 -endMonthTrend4,752 -endOfFileAddress,753 -endOfHeadersMarker,754 -endOfInterval,755 -endOfMessage,756 -endOfProduct,757 -endOfRange,758 -endStep,759 -endStepInHours,760 -endTimeStep,761 -endYearTrend1,762 -endYearTrend2,763 -endYearTrend3,764 -endYearTrend4,765 -energyNorm,766 -enorm,767 -ensembleForecastNumbers,768 -ensembleForecastNumbersList,769 -ensembleSize,770 -ensembleStandardDeviation,771 -eps,772 -epsContinous,773 -epsPoint,774 -epsStatisticsContinous,775 -epsStatisticsPoint,776 -expandBy,777 -expandedAbbreviations,778 -expandedCodes,779 -expandedCrex_scales,780 -expandedCrex_units,781 -expandedCrex_widths,782 -expandedDescriptors,783 -expandedNames,784 -expandedOriginalCodes,785 -expandedOriginalReferences,786 -expandedOriginalScales,787 -expandedOriginalWidths,788 -expandedTypes,789 -expandedUnits,790 -experimentVersionNumber,791 -experimentVersionNumber1,792 -experimentVersionNumber2,793 -experimentVersionNumberOfAnalysis,794 -expoffset,795 -expver,796 -extendedFlag,797 -extraDim,798 -extraDimensionPresent,799 -extraLocalSectionNumber,800 -extraLocalSectionPresent,801 -extraValues,802 -extractAreaEastLongitude,803 -extractAreaLatitudeRank,804 -extractAreaLongitudeRank,805 -extractAreaNorthLatitude,806 -extractAreaSouthLatitude,807 -extractAreaWestLongitude,808 -extractDateTimeDayEnd,809 -extractDateTimeDayRank,810 -extractDateTimeDayStart,811 -extractDateTimeEnd,812 -extractDateTimeHourEnd,813 -extractDateTimeHourRank,814 -extractDateTimeHourStart,815 -extractDateTimeMinuteEnd,816 -extractDateTimeMinuteRank,817 -extractDateTimeMinuteStart,818 -extractDateTimeMonthEnd,819 -extractDateTimeMonthRank,820 -extractDateTimeMonthStart,821 -extractDateTimeSecondEnd,822 -extractDateTimeSecondRank,823 -extractDateTimeSecondStart,824 -extractDateTimeStart,825 -extractDateTimeYearEnd,826 -extractDateTimeYearRank,827 -extractDateTimeYearStart,828 -extractSubset,829 -extractSubsetIntervalEnd,830 -extractSubsetIntervalStart,831 -extractSubsetList,832 -extractedAreaNumberOfSubsets,833 -extractedDateTimeNumberOfSubsets,834 -extremeClockwiseWindDirection,835 -extremeCounterClockwiseWindDirection,836 -extremeValuesRVR1,837 -extremeValuesRVR2,838 -extremeValuesRVR3,839 -extremeValuesRVR4,840 -faFieldName,841 -faLevelName,842 -faModelName,843 -false,844 -falseEasting,845 -falseNorthing,846 -fcmonth,847 -fcperiod,848 -fgDate,849 -fgTime,850 -file,851 -fileConsistencyFlags,852 -fireTemplate,853 -firstDimension,854 -firstDimensionCoordinateValueDefinition,855 -firstDimensionPhysicalSignificance,856 -firstLatitude,857 -firstLatitudeInDegrees,858 -firstMonthUsedToBuildClimateMonth1,859 -firstMonthUsedToBuildClimateMonth2,860 -firstOrderValues,861 -firstSize,862 -flag,863 -flagForAnyFurtherInformation,864 -flagForIrregularGridCoordinateList,865 -flagForNormalOrStaggeredGrid,866 -flagShowingPostAuxiliaryArrayInUse,867 -flags,868 -floatVal,869 -floatValues,870 -forecastLeadTime,871 -forecastMonth,872 -forecastOrSingularVectorNumber,873 -forecastPeriod,874 -forecastPeriodFrom,875 -forecastPeriodTo,876 -forecastProbabilityNumber,877 -forecastSteps,878 -forecastTime,879 -forecastperiod,880 -formatVersionMajorNumber,881 -formatVersionMinorNumber,882 -freeFormData,883 -frequency,884 -frequencyNumber,885 -frequencyScalingFactor,886 -functionCode,887 -g,888 -g1conceptsLocalDirAll,889 -g1conceptsMasterDir,890 -g2grid,891 -gaussianGridName,892 -genVertHeightCoords,893 -generalExtended2ordr,894 -generatingProcessIdentificationNumber,895 -generatingProcessIdentifier,896 -generatingProcessTemplate,897 -generatingProcessTemplateNumber,898 -getNumberOfValues,899 -gg,900 -global,901 -globalDomain,902 -grib1divider,903 -grib2LocalSectionNumber,904 -grib2LocalSectionPresent,905 -grib2divider,906 -grib3divider,907 -gribDataQualityChecks,908 -gribMasterTablesVersionNumber,909 -gribTablesVersionNo,910 -grid,911 -gridCoordinate,912 -gridDefinition,913 -gridDefinitionDescription,914 -gridDefinitionSection,915 -gridDefinitionTemplateNumber,916 -gridDescriptionSectionPresent,917 -gridName,918 -gridPointPosition,919 -gridType,920 -groupInternalNodeK,921 -groupLeafNodeK,922 -groupLengths,923 -groupSplitting,924 -groupSplittingMethodUsed,925 -groupWidth,926 -groupWidths,927 -gts_CCCC,928 -gts_TTAAii,929 -gts_ddhh00,930 -gts_header,931 -halfByte,932 -hdate,933 -headersOnly,934 -heightLevelName,935 -heightOrPressureOfLevel,936 -heightPressureEtcOfLevels,937 -hideThis,938 -horizontalCoordinateDefinition,939 -horizontalCoordinateSupplement,940 -horizontalDimensionProcessed,941 -horizontalDomainTemplate,942 -horizontalDomainTemplateNumber,943 -hour,944 -hourOfAnalysis,945 -hourOfEndOfOverallTimeInterval,946 -hourOfForecast,947 -hourOfForecastUsedInLocalTime,948 -hourOfModelVersion,949 -hourOfReference,950 -hoursAfterDataCutoff,951 -hoursAfterReferenceTimeOfDataCutoff,952 -hundred,953 -iDirectionIncrement,954 -iDirectionIncrementGiven,955 -iDirectionIncrementGridLength,956 -iDirectionIncrementInDegrees,957 -iIncrement,958 -iScansNegatively,959 -iScansPositively,960 -ident,961 -identificationNumber,962 -identificationOfOriginatingGeneratingCentre,963 -identificationOfProject,964 -identifier,965 -ieeeFloats,966 -ifsParam,967 -ijDirectionIncrementGiven,968 -implementationDateOfModelCycle,969 -incrementOfLengths,970 -indexTemplate,971 -indexTemplateNumber,972 -indexedStorageInternalNodeK,973 -indexingDate,974 -indexingTime,975 -indexingTimeHH,976 -indexingTimeHHMM,977 -indexingTimeMM,978 -indicatorOfParameter,979 -indicatorOfTypeOfLevel,980 -indicatorOfUnitForForecastTime,981 -indicatorOfUnitForTimeIncrement,982 -indicatorOfUnitForTimeRange,983 -indicatorOfUnitOfTimeRange,984 -inputDataPresentIndicator,985 -inputDelayedDescriptorReplicationFactor,986 -inputExtendedDelayedDescriptorReplicationFactor,987 -inputOriginatingCentre,988 -inputOverriddenReferenceValues,989 -inputProcessIdentifier,990 -inputShortDelayedDescriptorReplicationFactor,991 -instrument,992 -instrumentIdentifier,993 -instrumentType,994 -integerPointValues,995 -integerScaleFactor,996 -integerScalingFactorAppliedToDirections,997 -integerScalingFactorAppliedToFrequencies,998 -integerValues,999 -internalVersion,1000 -internationalDataSubCategory,1001 -interpretationOfNumberOfPoints,1002 -intervalBetweenTimes,1003 -isAccumulation,1004 -isAuto,1005 -isCavok,1006 -isCavokTrend1,1007 -isCavokTrend2,1008 -isCavokTrend3,1009 -isCavokTrend4,1010 -isConstant,1011 -isCorrection,1012 -isEPS,1013 -isEps,1014 -isFillup,1015 -isHindcast,1016 -isOctahedral,1017 -isRotatedGrid,1018 -isSatellite,1019 -isSatelliteType,1020 -isSens,1021 -is_aerosol,1022 -is_aerosol_optical,1023 -is_chemical,1024 -is_chemical_distfn,1025 -is_chemical_srcsink,1026 -is_localtime,1027 -is_ocean2d_param,1028 -is_ocean3d_param,1029 -is_uerra,1030 -isectionNumber2,1031 -isectionNumber3,1032 -isectionNumber4,1033 -isotopeIdentificationNumber,1034 -iteration,1035 -iterationNumber,1036 -iteratorDisableUnrotate,1037 -jDirectionIncrement,1038 -jDirectionIncrementGiven,1039 -jDirectionIncrementGridLength,1040 -jDirectionIncrementInDegrees,1041 -jIncrement,1042 -jPointsAreConsecutive,1043 -jScansPositively,1044 -jdLocal,1045 -jdSelected,1046 -julianDay,1047 -julianForecastDay,1048 -keyData,1049 -keyMore,1050 -keySat,1051 -kindOfProduct,1052 -kurt,1053 -kurtosis,1054 -lBB,1055 -landtype,1056 -laplacianOperator,1057 -laplacianOperatorIsSet,1058 -laplacianScalingFactor,1059 -laplacianScalingFactorUnset,1060 -lastMonthUsedToBuildClimateMonth1,1061 -lastMonthUsedToBuildClimateMonth2,1062 -latLonValues,1063 -latitude,1064 -latitudeFirstInDegrees,1065 -latitudeLastInDegrees,1066 -latitudeLongitudeValues,1067 -latitudeOfCentralPointInClusterDomain,1068 -latitudeOfCentrePoint,1069 -latitudeOfCentrePointInDegrees,1070 -latitudeOfFirstGridPoint,1071 -latitudeOfFirstGridPointInDegrees,1072 -latitudeOfGridPoints,1073 -latitudeOfIcosahedronPole,1074 -latitudeOfLastGridPoint,1075 -latitudeOfLastGridPointInDegrees,1076 -latitudeOfNorthWestCornerOfArea,1077 -latitudeOfReferencePoint,1078 -latitudeOfReferencePointInDegrees,1079 -latitudeOfSouthEastCornerOfArea,1080 -latitudeOfSouthernPole,1081 -latitudeOfSouthernPoleInDegrees,1082 -latitudeOfStretchingPole,1083 -latitudeOfStretchingPoleInDegrees,1084 -latitudeOfSubSatellitePoint,1085 -latitudeOfSubSatellitePointInDegrees,1086 -latitudeOfTangencyPoint,1087 -latitudeOfThePoleOfStretching,1088 -latitudeOfThePolePoint,1089 -latitudeOfThePolePointInDegrees,1090 -latitudeOfTheSouthernPoleOfProjection,1091 -latitudeSexagesimal,1092 -latitudeWhereDxAndDyAreSpecified,1093 -latitudeWhereDxAndDyAreSpecifiedInDegrees,1094 -latitudes,1095 -latitudesList,1096 -latitudinalDirectionGridLength,1097 -lcwfvSuiteName,1098 -leadtime,1099 -legBaseDate,1100 -legBaseTime,1101 -legNumber,1102 -legacyGaussSubarea,1103 -lengthDescriptors,1104 -lengthIncrementForTheGroupLengths,1105 -lengthOf4DvarWindow,1106 -lengthOfHeaders,1107 -lengthOfIndexTemplate,1108 -lengthOfMessage,1109 -lengthOfOriginatorLocalTemplate,1110 -lengthOfProjectLocalTemplate,1111 -lengthOfTimeRange,1112 -lev,1113 -levTypeName,1114 -level,1115 -levelIndicator,1116 -levelType,1117 -levelist,1118 -levels,1119 -levtype,1120 -libraryVersion,1121 -listMembersMissing,1122 -listMembersMissing2,1123 -listMembersMissing3,1124 -listMembersMissing4,1125 -listMembersUsed,1126 -listMembersUsed2,1127 -listMembersUsed3,1128 -listMembersUsed4,1129 -listOfContributingSpectralBands,1130 -listOfDistributionFunctionParameter,1131 -listOfEnsembleForecastNumbers,1132 -listOfModelIdentifiers,1133 -listOfParametersUsedForClustering,1134 -listOfScaledFrequencies,1135 -local,1136 -localDate,1137 -localDateTime,1138 -localDay,1139 -localDecimalScaleFactor,1140 -localDefNumberOne,1141 -localDefNumberTwo,1142 -localDefinition,1143 -localDefinitionNumber,1144 -localDir,1145 -localExtensionPadding,1146 -localFlag,1147 -localFlagLatestVersion,1148 -localHour,1149 -localLatitude,1150 -localLatitude1,1151 -localLatitude2,1152 -localLongitude,1153 -localLongitude1,1154 -localLongitude2,1155 -localMinute,1156 -localMonth,1157 -localNumberOfObservations,1158 -localSecond,1159 -localSection,1160 -localSectionPresent,1161 -localTablesVersion,1162 -localTablesVersionNumber,1163 -localTime,1164 -localTimeForecastList,1165 -localTimeMethod,1166 -localUsePresent,1167 -localYear,1168 -local_padding,1169 -local_use,1170 -logTransform,1171 -longitude,1172 -longitudeFirstInDegrees,1173 -longitudeLastInDegrees,1174 -longitudeOfCentralPointInClusterDomain,1175 -longitudeOfCentrePoint,1176 -longitudeOfCentrePointInDegrees,1177 -longitudeOfFirstDiamondCenterLine,1178 -longitudeOfFirstDiamondCentreLine,1179 -longitudeOfFirstDiamondCentreLineInDegrees,1180 -longitudeOfFirstGridPoint,1181 -longitudeOfFirstGridPointInDegrees,1182 -longitudeOfGridPoints,1183 -longitudeOfIcosahedronPole,1184 -longitudeOfLastGridPoint,1185 -longitudeOfLastGridPointInDegrees,1186 -longitudeOfNorthWestCornerOfArea,1187 -longitudeOfReferencePoint,1188 -longitudeOfReferencePointInDegrees,1189 -longitudeOfSouthEastCornerOfArea,1190 -longitudeOfSouthernPole,1191 -longitudeOfSouthernPoleInDegrees,1192 -longitudeOfStretchingPole,1193 -longitudeOfStretchingPoleInDegrees,1194 -longitudeOfSubSatellitePoint,1195 -longitudeOfSubSatellitePointInDegrees,1196 -longitudeOfTangencyPoint,1197 -longitudeOfThePoleOfStretching,1198 -longitudeOfThePolePoint,1199 -longitudeOfThePolePointInDegrees,1200 -longitudeOfTheSouthernPoleOfProjection,1201 -longitudeSexagesimal,1202 -longitudes,1203 -longitudesList,1204 -longitudinalDirectionGridLength,1205 -lowerLimit,1206 -lowerRange,1207 -lowerThreshold,1208 -lowerThresholdValue,1209 -ls_labeling,1210 -lsdate_bug,1211 -lstime_bug,1212 -m,1213 -mAngleMultiplier,1214 -mBasicAngle,1215 -mars,1216 -marsClass,1217 -marsClass1,1218 -marsClass2,1219 -marsDir,1220 -marsDomain,1221 -marsEndStep,1222 -marsExperimentOffset,1223 -marsExpver,1224 -marsForecastMonth,1225 -marsGrid,1226 -marsIdent,1227 -marsKeywords,1228 -marsKeywords1,1229 -marsLamModel,1230 -marsLatitude,1231 -marsLevel,1232 -marsLevelist,1233 -marsLongitude,1234 -marsModel,1235 -marsParam,1236 -marsQuantile,1237 -marsRange,1238 -marsStartStep,1239 -marsStep,1240 -marsStream,1241 -marsStream1,1242 -marsStream2,1243 -marsType,1244 -marsType1,1245 -marsType2,1246 -mars_labeling,1247 -mask,1248 -masterDir,1249 -masterTableNumber,1250 -masterTablesVersionNumber,1251 -masterTablesVersionNumberLatest,1252 -matchAerosolBinNumber,1253 -matchAerosolPacking,1254 -matchLandType,1255 -matchSort,1256 -matchTimeRepres,1257 -matrixBitmapsPresent,1258 -matrixOfValues,1259 -max,1260 -maximum,1261 -md5Data,1262 -md5DataSection,1263 -md5GridSection,1264 -md5Headers,1265 -md5Product,1266 -md5Section1,1267 -md5Section10,1268 -md5Section2,1269 -md5Section3,1270 -md5Section4,1271 -md5Section5,1272 -md5Section6,1273 -md5Section7,1274 -md5Section8,1275 -md5Section9,1276 -md5Structure,1277 -md5TimeDomainSection,1278 -meanRVR1,1279 -meanRVR2,1280 -meanRVR3,1281 -meanRVR4,1282 -meanSize,1283 -meanValueRVR1,1284 -meanValueRVR2,1285 -meanValueRVR3,1286 -meanValueRVR4,1287 -meaningOfVerticalCoordinate,1288 -memberNumber,1289 -messageLength,1290 -metadata,1291 -method,1292 -methodNumber,1293 -million,1294 -min,1295 -minimum,1296 -minute,1297 -minuteOfAnalysis,1298 -minuteOfEndOfOverallTimeInterval,1299 -minuteOfForecast,1300 -minuteOfForecastUsedInLocalTime,1301 -minuteOfModelVersion,1302 -minuteOfReference,1303 -minutesAfterDataCutoff,1304 -minutesAfterReferenceTimeOfDataCutoff,1305 -missingDataFlag,1306 -missingValue,1307 -missingValueManagement,1308 -missingValueManagementUsed,1309 -missingValuesPresent,1310 -mixedCoordinateDefinition,1311 -mixedCoordinateFieldFlag,1312 -modeNumber,1313 -model,1314 -modelErrorType,1315 -modelIdentifier,1316 -modelName,1317 -modelVersionDate,1318 -modelVersionTime,1319 -molarMass,1320 -month,1321 -monthOfAnalysis,1322 -monthOfEndOfOverallTimeInterval,1323 -monthOfForecast,1324 -monthOfForecastUsedInLocalTime,1325 -monthOfModelVersion,1326 -monthOfReference,1327 -monthlyVerificationDate,1328 -monthlyVerificationMonth,1329 -monthlyVerificationTime,1330 -monthlyVerificationYear,1331 -multiplicationFactorForLatLong,1332 -mybits,1333 -n,1334 -n2,1335 -n3,1336 -na,1337 -name,1338 -nameECMF,1339 -nameLegacyECMF,1340 -nameOfFirstFixedSurface,1341 -nameOfSecondFixedSurface,1342 -names,1343 -nd,1344 -neitherPresent,1345 -newSubtype,1346 -nlev,1347 -nnn,1348 -normAtFinalTime,1349 -normAtInitialTime,1350 -normal,1351 -northLatitudeOfCluster,1352 -northLatitudeOfDomainOfTubing,1353 -northWestLatitudeOfLPOArea,1354 -northWestLatitudeOfVerficationArea,1355 -northWestLongitudeOfLPOArea,1356 -northWestLongitudeOfVerficationArea,1357 -northernLatitudeOfClusterDomain,1358 -northernLatitudeOfDomain,1359 -nosigPresent,1360 -notDecoded,1361 -nt,1362 -number,1363 -numberInHorizontalCoordinates,1364 -numberInMixedCoordinateDefinition,1365 -numberInTheAuxiliaryArray,1366 -numberInTheGridCoordinateList,1367 -numberIncludedInAverage,1368 -numberMissingFromAveragesOrAccumulations,1369 -numberOfAnalysis,1370 -numberOfBits,1371 -numberOfBitsContainingEachPackedValue,1372 -numberOfBitsForScaledGroupLengths,1373 -numberOfBitsUsedForTheGroupWidths,1374 -numberOfBitsUsedForTheScaledGroupLengths,1375 -numberOfBytesInLocalDefinition,1376 -numberOfBytesOfFreeFormatData,1377 -numberOfBytesPerInteger,1378 -numberOfCategories,1379 -numberOfCharacters,1380 -numberOfChars,1381 -numberOfClusterHighResolution,1382 -numberOfClusterLowResolution,1383 -numberOfClusters,1384 -numberOfCodedValues,1385 -numberOfCoefficientsOrValuesUsedToSpecifyFirstDimensionCoordinateFunction,1386 -numberOfCoefficientsOrValuesUsedToSpecifySecondDimensionCoordinateFunction,1387 -numberOfColumns,1388 -numberOfComponents,1389 -numberOfContributingSpectralBands,1390 -numberOfControlForecastTube,1391 -numberOfCoordinatesValues,1392 -numberOfDataBinsAlongRadials,1393 -numberOfDataMatrices,1394 -numberOfDataPoints,1395 -numberOfDataPointsExpected,1396 -numberOfDataValues,1397 -numberOfDaysInClimateSamplingWindow,1398 -numberOfDiamonds,1399 -numberOfDirections,1400 -numberOfDistinctSection3s,1401 -numberOfDistinctSection4s,1402 -numberOfDistinctSection5s,1403 -numberOfDistinctSection6s,1404 -numberOfDistinctSection7s,1405 -numberOfDistinctSection8s,1406 -numberOfDistinctSection9s,1407 -numberOfDistributionFunctionParameters,1408 -numberOfEffectiveValues,1409 -numberOfFloats,1410 -numberOfForcasts,1411 -numberOfForecastsInCluster,1412 -numberOfForecastsInEnsemble,1413 -numberOfForecastsInTheCluster,1414 -numberOfForecastsInTube,1415 -numberOfForecastsUsedInLocalTime,1416 -numberOfFrequencies,1417 -numberOfGridInReference,1418 -numberOfGridUsed,1419 -numberOfGroups,1420 -numberOfGroupsOfDataValues,1421 -numberOfHorizontalPoints,1422 -numberOfIntegers,1423 -numberOfInts,1424 -numberOfIterations,1425 -numberOfLocalDefinitions,1426 -numberOfLogicals,1427 -numberOfMembersInCluster,1428 -numberOfMembersInEnsemble,1429 -numberOfMissing,1430 -numberOfMissingInStatisticalProcess,1431 -numberOfMissingValues,1432 -numberOfModeOfDistribution,1433 -numberOfModels,1434 -numberOfOctectsForNumberOfPoints,1435 -numberOfOctetsExtraDescriptors,1436 -numberOfOperationalForecastTube,1437 -numberOfPackedValues,1438 -numberOfParallelsBetweenAPoleAndTheEquator,1439 -numberOfParametersUsedForClustering,1440 -numberOfPartitions,1441 -numberOfPoints,1442 -numberOfPointsAlongAMeridian,1443 -numberOfPointsAlongAParallel,1444 -numberOfPointsAlongFirstAxis,1445 -numberOfPointsAlongSecondAxis,1446 -numberOfPointsAlongTheXAxis,1447 -numberOfPointsAlongTheYAxis,1448 -numberOfPointsAlongXAxis,1449 -numberOfPointsAlongXAxisInCouplingArea,1450 -numberOfPointsAlongYAxis,1451 -numberOfPointsAlongYAxisInCouplingArea,1452 -numberOfPointsInDomain,1453 -numberOfPointsUsed,1454 -numberOfPressureLevelsUsedForClustering,1455 -numberOfRadarSitesUsed,1456 -numberOfRadials,1457 -numberOfReforecastYearsInModelClimate,1458 -numberOfRemaininChars,1459 -numberOfRepresentativeMember,1460 -numberOfReservedBytes,1461 -numberOfRows,1462 -numberOfSecondOrderPackedValues,1463 -numberOfSection,1464 -numberOfSingularVectorsComputed,1465 -numberOfSingularVectorsEvolved,1466 -numberOfStatisticallyProcessedFieldsForLocalTime,1467 -numberOfStepsUsedForClustering,1468 -numberOfSubsets,1469 -numberOfTensOfThousandsOfYearsOfOffset,1470 -numberOfTimeIncrementsOfForecastsUsedInLocalTime,1471 -numberOfTimeRange,1472 -numberOfTimeSteps,1473 -numberOfUnexpandedDescriptors,1474 -numberOfUnusedBitsAtEndOfSection3,1475 -numberOfUsedSpatialTiles,1476 -numberOfUsedTileAttributes,1477 -numberOfUsefulPointsAlongXAxis,1478 -numberOfUsefulPointsAlongYAxis,1479 -numberOfVGridUsed,1480 -numberOfValues,1481 -numberOfVerticalCoordinateValues,1482 -numberOfVerticalGridDescriptors,1483 -numberOfVerticalPoints,1484 -numberingOrderOfDiamonds,1485 -numericValues,1486 -observablePropertyTemplate,1487 -observablePropertyTemplateNumber,1488 -observationDiagnostic,1489 -observationGeneratingProcessIdentifier,1490 -observationType,1491 -observedData,1492 -obstype,1493 -oceanAtmosphereCoupling,1494 -oceanLevName,1495 -oceanStream,1496 -octetAtWichPackedDataBegins,1497 -offset,1498 -offsetAfterBitmap,1499 -offsetAfterCentreLocalSection,1500 -offsetAfterData,1501 -offsetAfterLocalSection,1502 -offsetAfterPadding,1503 -offsetBBitmap,1504 -offsetBSection5,1505 -offsetBSection6,1506 -offsetBSection9,1507 -offsetBeforeBitmap,1508 -offsetBeforeData,1509 -offsetBeforePL,1510 -offsetBeforePV,1511 -offsetDescriptors,1512 -offsetEndSection4,1513 -offsetFreeFormData,1514 -offsetFromOriginToInnerBound,1515 -offsetFromReferenceOfFirstTime,1516 -offsetICEFieldsUsed,1517 -offsetSection0,1518 -offsetSection1,1519 -offsetSection10,1520 -offsetSection11,1521 -offsetSection2,1522 -offsetSection3,1523 -offsetSection4,1524 -offsetSection5,1525 -offsetSection6,1526 -offsetSection7,1527 -offsetSection8,1528 -offsetSection9,1529 -offsetToEndOf4DvarWindow,1530 -offsetValuesBy,1531 -offsetdate,1532 -offsettime,1533 -oldSubtype,1534 -one,1535 -oneConstant,1536 -oneMillionConstant,1537 -oneMinuteMeanMaximumRVR1,1538 -oneMinuteMeanMaximumRVR2,1539 -oneMinuteMeanMaximumRVR3,1540 -oneMinuteMeanMaximumRVR4,1541 -oneMinuteMeanMinimumRVR1,1542 -oneMinuteMeanMinimumRVR2,1543 -oneMinuteMeanMinimumRVR3,1544 -oneMinuteMeanMinimumRVR4,1545 -oneThousand,1546 -oper,1547 -operStream,1548 -operatingMode,1549 -operationalForecastCluster,1550 -optimisationTime,1551 -optimizeScaleFactor,1552 -optionalData,1553 -opttime,1554 -orderOfSPD,1555 -orderOfSpatialDifferencing,1556 -orientationOfTheGrid,1557 -orientationOfTheGridInDegrees,1558 -origin,1559 -originOfPostProcessing,1560 -originalParameterNumber,1561 -originalParameterTableNumber,1562 -originalSubCentreIdentifier,1563 -originatingCentre,1564 -originatingCentreOfAnalysis,1565 -originatingClass,1566 -originatorLocalTemplate,1567 -originatorLocalTemplateNumber,1568 -overlayTemplate,1569 -overlayTemplateNumber,1570 -pack,1571 -packedValues,1572 -packingError,1573 -packingType,1574 -padding,1575 -padding_grid1_1,1576 -padding_grid1_2,1577 -padding_grid3_1,1578 -padding_grid4_1,1579 -padding_grid50_1,1580 -padding_grid5_1,1581 -padding_grid90_1,1582 -padding_loc10_1,1583 -padding_loc12_1,1584 -padding_loc13_1,1585 -padding_loc13_2,1586 -padding_loc13_3,1587 -padding_loc13_4,1588 -padding_loc13_5,1589 -padding_loc14_1,1590 -padding_loc14_2,1591 -padding_loc15_1,1592 -padding_loc16_1,1593 -padding_loc17_2,1594 -padding_loc18_1,1595 -padding_loc18_2,1596 -padding_loc190_1,1597 -padding_loc191_1,1598 -padding_loc191_2,1599 -padding_loc191_3,1600 -padding_loc192_1,1601 -padding_loc19_2,1602 -padding_loc20_1,1603 -padding_loc21_1,1604 -padding_loc23_1,1605 -padding_loc244_1,1606 -padding_loc244_2,1607 -padding_loc244_3,1608 -padding_loc245_1,1609 -padding_loc245_2,1610 -padding_loc26_1,1611 -padding_loc27_1,1612 -padding_loc27_2,1613 -padding_loc28_1,1614 -padding_loc29_1,1615 -padding_loc29_2,1616 -padding_loc29_3,1617 -padding_loc2_1,1618 -padding_loc2_2,1619 -padding_loc30_1,1620 -padding_loc30_2,1621 -padding_loc37_1,1622 -padding_loc37_2,1623 -padding_loc38_1,1624 -padding_loc3_1,1625 -padding_loc4_2,1626 -padding_loc50_1,1627 -padding_loc5_1,1628 -padding_loc6_1,1629 -padding_loc7_1,1630 -padding_loc9_1,1631 -padding_loc9_2,1632 -padding_local11_1,1633 -padding_local1_1,1634 -padding_local1_31,1635 -padding_local40_1,1636 -padding_local_35,1637 -padding_local_7_1,1638 -padding_sec1_loc,1639 -padding_sec2_1,1640 -padding_sec2_2,1641 -padding_sec2_3,1642 -padding_sec3_1,1643 -padding_sec4_1,1644 -paleontologicalOffset,1645 -param,1646 -paramId,1647 -paramIdECMF,1648 -paramIdLegacyECMF,1649 -param_value_max,1650 -param_value_min,1651 -parameter,1652 -parameterCategory,1653 -parameterCode,1654 -parameterDiscipline,1655 -parameterIndicator,1656 -parameterName,1657 -parameterNumber,1658 -parameterUnits,1659 -parameters,1660 -parametersVersion,1661 -partitionItems,1662 -partitionNumber,1663 -partitionTable,1664 -partitions,1665 -pastTendencyRVR1,1666 -pastTendencyRVR2,1667 -pastTendencyRVR3,1668 -pastTendencyRVR4,1669 -patch_precip_fp,1670 -pentagonalResolutionParameterJ,1671 -pentagonalResolutionParameterK,1672 -pentagonalResolutionParameterM,1673 -percentileValue,1674 -periodOfTime,1675 -periodOfTimeIntervals,1676 -perturbationNumber,1677 -perturbedType,1678 -phase,1679 -physicalFlag1,1680 -physicalFlag2,1681 -physicalMeaningOfVerticalCoordinate,1682 -pl,1683 -platform,1684 -plusOneinOrdersOfSPD,1685 -points,1686 -postAuxiliary,1687 -postAuxiliaryArrayPresent,1688 -postProcessing,1689 -powerOfTenUsedToScaleClimateWeight,1690 -preBitmapValues,1691 -preProcessingParameter,1692 -precision,1693 -precisionOfTheUnpackedSubset,1694 -predefined_grid,1695 -predefined_grid_values,1696 -preferLocalConcepts,1697 -present,1698 -presentTrend1,1699 -presentTrend2,1700 -presentTrend3,1701 -presentTrend4,1702 -presentWeather1Present,1703 -presentWeather1PresentTrend1,1704 -presentWeather1PresentTrend2,1705 -presentWeather1PresentTrend3,1706 -presentWeather1PresentTrend4,1707 -presentWeather2Present,1708 -presentWeather2PresentTrend1,1709 -presentWeather2PresentTrend2,1710 -presentWeather2PresentTrend3,1711 -presentWeather2PresentTrend4,1712 -presentWeather3Present,1713 -presentWeather3PresentTrend1,1714 -presentWeather3PresentTrend2,1715 -presentWeather3PresentTrend3,1716 -presentWeather3PresentTrend4,1717 -pressureLevel,1718 -pressureUnits,1719 -primaryBitmap,1720 -primaryMissingValue,1721 -primaryMissingValueSubstitute,1722 -probContinous,1723 -probPoint,1724 -probProductDefinition,1725 -probabilityType,1726 -probabilityTypeName,1727 -process,1728 -produceLargeConstantFields,1729 -product,1730 -productDefinition,1731 -productDefinitionTemplateNumber,1732 -productDefinitionTemplateNumberInternal,1733 -productIdentifier,1734 -productType,1735 -productionStatusOfProcessedData,1736 -projSourceString,1737 -projString,1738 -projTargetString,1739 -projectLocalTemplate,1740 -projectLocalTemplateNumber,1741 -projectionCenterFlag,1742 -projectionCentreFlag,1743 -pv,1744 -pvlLocation,1745 -qfe,1746 -qfePresent,1747 -qfeUnits,1748 -qnh,1749 -qnhAPresent,1750 -qnhPresent,1751 -qnhUnits,1752 -qualityControl,1753 -qualityControlIndicator,1754 -qualityValueAssociatedWithParameter,1755 -quantile,1756 -quantileValue,1757 -radialAngularSpacing,1758 -radials,1759 -radius,1760 -radiusInMetres,1761 -radiusOfCentralCluster,1762 -radiusOfClusterDomain,1763 -radiusOfTheEarth,1764 -range,1765 -rangeBinSpacing,1766 -rdbDateTime,1767 -rdbSubtype,1768 -rdbType,1769 -rdb_key,1770 -rdbtime,1771 -rdbtimeDate,1772 -rdbtimeDay,1773 -rdbtimeHour,1774 -rdbtimeMinute,1775 -rdbtimeMonth,1776 -rdbtimeSecond,1777 -rdbtimeTime,1778 -rdbtimeYear,1779 -realPart,1780 -realPartOf00,1781 -recDateTime,1782 -recentWeather,1783 -recentWeatherTry,1784 -rectime,1785 -rectimeDay,1786 -rectimeHour,1787 -rectimeMinute,1788 -rectimeSecond,1789 -reducedGrid,1790 -refdate,1791 -reference,1792 -referenceDate,1793 -referenceForGroupLengths,1794 -referenceForGroupWidths,1795 -referenceOfLengths,1796 -referenceOfWidths,1797 -referenceReflectivityForEchoTop,1798 -referenceSampleInterval,1799 -referenceStep,1800 -referenceValue,1801 -referenceValueError,1802 -reflectivityCalibrationConstant,1803 -remarkPresent,1804 -reportType,1805 -representationMode,1806 -representationType,1807 -representativeMember,1808 -reserved,1809 -reserved1,1810 -reserved2,1811 -reserved3,1812 -reservedNeedNotBePresent,1813 -reservedOctet,1814 -reservedSection2,1815 -reservedSection3,1816 -reservedSection4,1817 -resolutionAndComponentFlags,1818 -resolutionAndComponentFlags1,1819 -resolutionAndComponentFlags2,1820 -resolutionAndComponentFlags3,1821 -resolutionAndComponentFlags4,1822 -resolutionAndComponentFlags6,1823 -resolutionAndComponentFlags7,1824 -resolutionAndComponentFlags8,1825 -restricted,1826 -rootGroupObjectHeaderAddress,1827 -rootGroupSymbolTableEntry,1828 -rootTablesDir,1829 -roundedMarsLatitude,1830 -roundedMarsLevelist,1831 -roundedMarsLongitude,1832 -runwayBrakingActionState1,1833 -runwayBrakingActionState2,1834 -runwayBrakingActionState3,1835 -runwayBrakingActionState4,1836 -runwayDepositCodeState1,1837 -runwayDepositCodeState2,1838 -runwayDepositCodeState3,1839 -runwayDepositCodeState4,1840 -runwayDepositState1,1841 -runwayDepositState2,1842 -runwayDepositState3,1843 -runwayDepositState4,1844 -runwayDepthOfDepositCodeState1,1845 -runwayDepthOfDepositCodeState2,1846 -runwayDepthOfDepositCodeState3,1847 -runwayDepthOfDepositCodeState4,1848 -runwayDepthOfDepositState1,1849 -runwayDepthOfDepositState2,1850 -runwayDepthOfDepositState3,1851 -runwayDepthOfDepositState4,1852 -runwayDesignatorRVR1,1853 -runwayDesignatorRVR2,1854 -runwayDesignatorRVR3,1855 -runwayDesignatorRVR4,1856 -runwayDesignatorState1,1857 -runwayDesignatorState2,1858 -runwayDesignatorState3,1859 -runwayDesignatorState4,1860 -runwayExtentOfContaminationCodeState1,1861 -runwayExtentOfContaminationCodeState2,1862 -runwayExtentOfContaminationCodeState3,1863 -runwayExtentOfContaminationCodeState4,1864 -runwayExtentOfContaminationState1,1865 -runwayExtentOfContaminationState2,1866 -runwayExtentOfContaminationState3,1867 -runwayExtentOfContaminationState4,1868 -runwayFrictionCodeValueState1,1869 -runwayFrictionCodeValueState2,1870 -runwayFrictionCodeValueState3,1871 -runwayFrictionCodeValueState4,1872 -runwayFrictionCoefficientCodeState1,1873 -runwayFrictionCoefficientCodeState2,1874 -runwayFrictionCoefficientCodeState3,1875 -runwayFrictionCoefficientCodeState4,1876 -runwayFrictionCoefficientState1,1877 -runwayFrictionCoefficientState2,1878 -runwayFrictionCoefficientState3,1879 -runwayFrictionCoefficientState4,1880 -runwaySideCodeState1,1881 -runwaySideCodeState2,1882 -runwaySideCodeState3,1883 -runwaySideCodeState4,1884 -runwayState,1885 -sampleSizeOfModelClimate,1886 -satelliteID,1887 -satelliteIdentifier,1888 -satelliteNumber,1889 -satelliteSeries,1890 -scaleFactorAtReferencePoint,1891 -scaleFactorOfCentralWaveNumber,1892 -scaleFactorOfDistanceFromEnsembleMean,1893 -scaleFactorOfDistributionFunctionParameter,1894 -scaleFactorOfEarthMajorAxis,1895 -scaleFactorOfEarthMinorAxis,1896 -scaleFactorOfFirstFixedSurface,1897 -scaleFactorOfFirstSize,1898 -scaleFactorOfFirstWavelength,1899 -scaleFactorOfLengthOfSemiMajorAxis,1900 -scaleFactorOfLengthOfSemiMinorAxis,1901 -scaleFactorOfLowerLimit,1902 -scaleFactorOfMajorAxisOfOblateSpheroidEarth,1903 -scaleFactorOfMinorAxisOfOblateSpheroidEarth,1904 -scaleFactorOfPrimeMeridianOffset,1905 -scaleFactorOfRadiusOfSphericalEarth,1906 -scaleFactorOfSecondFixedSurface,1907 -scaleFactorOfSecondSize,1908 -scaleFactorOfSecondWavelength,1909 -scaleFactorOfStandardDeviation,1910 -scaleFactorOfStandardDeviationInTheCluster,1911 -scaleFactorOfUpperLimit,1912 -scaleValuesBy,1913 -scaledDirections,1914 -scaledFrequencies,1915 -scaledValueOfCentralWaveNumber,1916 -scaledValueOfDistanceFromEnsembleMean,1917 -scaledValueOfDistributionFunctionParameter,1918 -scaledValueOfEarthMajorAxis,1919 -scaledValueOfEarthMinorAxis,1920 -scaledValueOfFirstFixedSurface,1921 -scaledValueOfFirstSize,1922 -scaledValueOfFirstWavelength,1923 -scaledValueOfLengthOfSemiMajorAxis,1924 -scaledValueOfLengthOfSemiMinorAxis,1925 -scaledValueOfLowerLimit,1926 -scaledValueOfMajorAxisOfOblateSpheroidEarth,1927 -scaledValueOfMinorAxisOfOblateSpheroidEarth,1928 -scaledValueOfPrimeMeridianOffset,1929 -scaledValueOfRadiusOfSphericalEarth,1930 -scaledValueOfSecondFixedSurface,1931 -scaledValueOfSecondSize,1932 -scaledValueOfSecondWavelength,1933 -scaledValueOfStandardDeviation,1934 -scaledValueOfStandardDeviationInTheCluster,1935 -scaledValueOfUpperLimit,1936 -scalingFactorForFrequencies,1937 -scanPosition,1938 -scanningMode,1939 -scanningMode4,1940 -scanningMode5,1941 -scanningMode6,1942 -scanningMode7,1943 -scanningMode8,1944 -scanningModeForOneDiamond,1945 -sd,1946 -second,1947 -secondDimension,1948 -secondDimensionCoordinateValueDefinition,1949 -secondDimensionPhysicalSignificance,1950 -secondLatitude,1951 -secondLatitudeInDegrees,1952 -secondOfEndOfOverallTimeInterval,1953 -secondOfForecast,1954 -secondOfForecastUsedInLocalTime,1955 -secondOfModelVersion,1956 -secondOrderFlags,1957 -secondOrderOfDifferentWidth,1958 -secondOrderValuesDifferentWidths,1959 -secondSize,1960 -secondaryBitMap,1961 -secondaryBitmap,1962 -secondaryBitmapPresent,1963 -secondaryBitmaps,1964 -secondaryBitmapsCount,1965 -secondaryBitmapsSize,1966 -secondaryMissingValue,1967 -secondaryMissingValueSubstitute,1968 -secondsOfAnalysis,1969 -secondsOfReference,1970 -section,1971 -section0Length,1972 -section0Pointer,1973 -section1,1974 -section10Length,1975 -section10Pointer,1976 -section11Length,1977 -section11Pointer,1978 -section1Flags,1979 -section1Length,1980 -section1Padding,1981 -section1Pointer,1982 -section2Length,1983 -section2Padding,1984 -section2Pointer,1985 -section2Present,1986 -section2Used,1987 -section3Flags,1988 -section3Length,1989 -section3Padding,1990 -section3Pointer,1991 -section3UniqueIdentifier,1992 -section4,1993 -section4Length,1994 -section4Padding,1995 -section4Pointer,1996 -section4UniqueIdentifier,1997 -section5,1998 -section5Length,1999 -section5Pointer,2000 -section5UniqueIdentifier,2001 -section6,2002 -section6Length,2003 -section6Pointer,2004 -section6UniqueIdentifier,2005 -section7,2006 -section7Length,2007 -section7Pointer,2008 -section7UniqueIdentifier,2009 -section8,2010 -section8Length,2011 -section8Pointer,2012 -section8UniqueIdentifier,2013 -section9Length,2014 -section9Pointer,2015 -section9UniqueIdentifier,2016 -sectionLengthLimitForEnsembles,2017 -sectionLengthLimitForProbability,2018 -sectionNumber,2019 -sectionPosition,2020 -section_01,2021 -section_02,2022 -section_03,2023 -section_04,2024 -section_05,2025 -section_06,2026 -section_07,2027 -section_08,2028 -section_09,2029 -section_1,2030 -section_10,2031 -section_11,2032 -section_2,2033 -section_3,2034 -section_4,2035 -section_5,2036 -section_6,2037 -section_7,2038 -section_8,2039 -selectStepTemplateInstant,2040 -selectStepTemplateInterval,2041 -selectedDay,2042 -selectedFcIndex,2043 -selectedHour,2044 -selectedMinute,2045 -selectedMonth,2046 -selectedSecond,2047 -selectedYear,2048 -sensitiveAreaDomain,2049 -sequences,2050 -setBitsPerValue,2051 -setCalendarId,2052 -setDecimalPrecision,2053 -setLocalDefinition,2054 -setToMissingIfOutOfRange,2055 -sfc_levtype,2056 -shapeOfTheEarth,2057 -shapeOfVerificationArea,2058 -shortName,2059 -shortNameECMF,2060 -shortNameLegacyECMF,2061 -short_name,2062 -signature,2063 -significanceOfReferenceDateAndTime,2064 -significanceOfReferenceTime,2065 -simpleThinningMissingRadius,2066 -simpleThinningSkip,2067 -simpleThinningStart,2068 -siteElevation,2069 -siteId,2070 -siteLatitude,2071 -siteLongitude,2072 -sizeOfLength,2073 -sizeOfOffsets,2074 -sizeOfPostAuxiliaryArray,2075 -sizeOfPostAuxiliaryArrayPlusOne,2076 -skew,2077 -skewness,2078 -skipExtraKeyAttributes,2079 -sort,2080 -sourceOfGridDefinition,2081 -sourceSinkChemicalPhysicalProcess,2082 -southEastLatitudeOfLPOArea,2083 -southEastLatitudeOfVerficationArea,2084 -southEastLongitudeOfLPOArea,2085 -southEastLongitudeOfVerficationArea,2086 -southLatitudeOfCluster,2087 -southLatitudeOfDomainOfTubing,2088 -southPoleOnProjectionPlane,2089 -southernLatitudeOfClusterDomain,2090 -southernLatitudeOfDomain,2091 -sp1,2092 -sp2,2093 -sp3,2094 -spaceUnitFlag,2095 -spacingOfBinsAlongRadials,2096 -spare,2097 -spare1,2098 -spare2,2099 -spare3,2100 -spare4,2101 -spatialProcessing,2102 -spatialSmoothingOfProduct,2103 -spectralDataRepresentationMode,2104 -spectralDataRepresentationType,2105 -spectralMode,2106 -spectralType,2107 -sphericalHarmonics,2108 -standardDeviation,2109 -standardParallel,2110 -standardParallelInDegrees,2111 -standardParallelInMicrodegrees,2112 -startOfHeaders,2113 -startOfMessage,2114 -startOfRange,2115 -startStep,2116 -startStepInHours,2117 -startTimeStep,2118 -startingAzimuth,2119 -statisticalProcess,2120 -statisticalProcessesList,2121 -statistics,2122 -status,2123 -step,2124 -stepForClustering,2125 -stepHumanReadable,2126 -stepInHours,2127 -stepRange,2128 -stepRangeInHours,2129 -stepType,2130 -stepTypeForConversion,2131 -stepTypeInternal,2132 -stepUnits,2133 -stepZero,2134 -stream,2135 -streamOfAnalysis,2136 -stretchingFactor,2137 -stretchingFactorScaled,2138 -stringValues,2139 -subCentre,2140 -subDefinitions1,2141 -subDefinitions2,2142 -subLocalDefinition1,2143 -subLocalDefinition2,2144 -subLocalDefinitionLength1,2145 -subLocalDefinitionLength2,2146 -subLocalDefinitionNumber1,2147 -subLocalDefinitionNumber2,2148 -subSetJ,2149 -subSetK,2150 -subSetM,2151 -subcentreOfAnalysis,2152 -subdivisionsOfBasicAngle,2153 -suiteName,2154 -superblockExtensionAddress,2155 -swapScanningAlternativeRows,2156 -swapScanningLat,2157 -swapScanningLon,2158 -swapScanningX,2159 -swapScanningY,2160 -system,2161 -systemNumber,2162 -t,2163 -table2Version,2164 -tableCode,2165 -tableNumber,2166 -tableReference,2167 -tablesLocalDir,2168 -tablesMasterDir,2169 -tablesVersion,2170 -tablesVersionLatest,2171 -tablesVersionLatestOfficial,2172 -targetCompressionRatio,2173 -td,2174 -tempPressureUnits,2175 -temperature,2176 -temperatureAndDewpointPresent,2177 -templatesLocalDir,2178 -templatesMasterDir,2179 -theHindcastMarsStream,2180 -theMessage,2181 -thisExperimentVersionNumber,2182 -thisMarsClass,2183 -thisMarsStream,2184 -thisMarsType,2185 -thousand,2186 -three,2187 -threshold,2188 -thresholdIndicator,2189 -tiggeCentre,2190 -tiggeLAMName,2191 -tiggeLocalVersion,2192 -tiggeModel,2193 -tiggeSection,2194 -tiggeSuiteID,2195 -tigge_name,2196 -tigge_short_name,2197 -tileClassification,2198 -tileIndex,2199 -time,2200 -timeCoordinateDefinition,2201 -timeDomainTemplate,2202 -timeDomainTemplateNumber,2203 -timeIncrement,2204 -timeIncrementBetweenSuccessiveFields,2205 -timeOfAnalysis,2206 -timeOfForecast,2207 -timeOfForecastUsedInLocalTime,2208 -timeOfModelVersion,2209 -timeOfReference,2210 -timeRangeIndicator,2211 -timeRangeIndicatorFromStepRange,2212 -timeUnitFlag,2213 -timerepres,2214 -topLevel,2215 -total,2216 -totalAerosolBinsNumbers,2217 -totalInitialConditions,2218 -totalLength,2219 -totalNumber,2220 -totalNumberOfClusters,2221 -totalNumberOfDataValuesMissingInStatisticalProcess,2222 -totalNumberOfDirections,2223 -totalNumberOfForecastProbabilities,2224 -totalNumberOfFrequencies,2225 -totalNumberOfGridPoints,2226 -totalNumberOfIterations,2227 -totalNumberOfQuantiles,2228 -totalNumberOfRepetitions,2229 -totalNumberOfTileAttributePairs,2230 -totalNumberOfTubes,2231 -totalNumberOfValuesInUnpackedSubset,2232 -totalNumberOfdimensions,2233 -treatmentOfMissingData,2234 -true,2235 -trueLengthOfLastGroup,2236 -truncateDegrees,2237 -truncateLaplacian,2238 -tsectionNumber3,2239 -tsectionNumber4,2240 -tsectionNumber5,2241 -tubeDomain,2242 -tubeNumber,2243 -two,2244 -twoOrdersOfSPD,2245 -type,2246 -typeOfAnalysis,2247 -typeOfAuxiliaryInformation,2248 -typeOfCalendar,2249 -typeOfCompressionUsed,2250 -typeOfDistributionFunction,2251 -typeOfEnsembleForecast,2252 -typeOfEnsembleMember,2253 -typeOfFirstFixedSurface,2254 -typeOfGeneratingProcess,2255 -typeOfGrid,2256 -typeOfHorizontalLine,2257 -typeOfIntervalForFirstAndSecondSize,2258 -typeOfIntervalForFirstAndSecondWavelength,2259 -typeOfLevel,2260 -typeOfLevelECMF,2261 -typeOfOriginalFieldValues,2262 -typeOfPacking,2263 -typeOfPostProcessing,2264 -typeOfPreProcessing,2265 -typeOfProcessedData,2266 -typeOfSSTFieldUsed,2267 -typeOfSecondFixedSurface,2268 -typeOfSizeInterval,2269 -typeOfStatisticalPostProcessingOfEnsembleMembers,2270 -typeOfStatisticalProcessing,2271 -typeOfTimeIncrement,2272 -typeOfTimeIncrementBetweenSuccessiveFieldsUsedInTheStatisticalProcessing,2273 -typeOfWavelengthInterval,2274 -typicalCentury,2275 -typicalDate,2276 -typicalDateTime,2277 -typicalDay,2278 -typicalHour,2279 -typicalMinute,2280 -typicalMonth,2281 -typicalSecond,2282 -typicalTime,2283 -typicalYear,2284 -typicalYear2,2285 -typicalYearOfCentury,2286 -uco,2287 -ucs,2288 -unexpandedDescriptors,2289 -unexpandedDescriptorsEncoded,2290 -unitOfOffsetFromReferenceTime,2291 -unitOfTime,2292 -unitOfTimeIncrement,2293 -unitOfTimeRange,2294 -units,2295 -unitsBias,2296 -unitsConversionOffset,2297 -unitsConversionScaleFactor,2298 -unitsDecimalScaleFactor,2299 -unitsECMF,2300 -unitsFactor,2301 -unitsLegacyECMF,2302 -unitsOfFirstFixedSurface,2303 -unitsOfSecondFixedSurface,2304 -unknown,2305 -unpack,2306 -unpackedError,2307 -unpackedSubsetPrecision,2308 -unpackedValues,2309 -unsignedIntegers,2310 -unstructuredGrid,2311 -unstructuredGridSubtype,2312 -unstructuredGridType,2313 -unstructuredGridUUID,2314 -unusedBitsInBitmap,2315 -updateSequenceNumber,2316 -upperLimit,2317 -upperRange,2318 -upperThreshold,2319 -upperThresholdValue,2320 -userDateEnd,2321 -userDateStart,2322 -userDateTimeEnd,2323 -userDateTimeStart,2324 -userTimeEnd,2325 -userTimeStart,2326 -uuidOfHGrid,2327 -uuidOfVGrid,2328 -uvRelativeToGrid,2329 -validityDate,2330 -validityTime,2331 -values,2332 -variationOfVisibility,2333 -variationOfVisibilityDirection,2334 -variationOfVisibilityDirectionAngle,2335 -variationOfVisibilityDirectionTrend1,2336 -variationOfVisibilityDirectionTrend2,2337 -variationOfVisibilityDirectionTrend3,2338 -variationOfVisibilityDirectionTrend4,2339 -variationOfVisibilityTrend1,2340 -variationOfVisibilityTrend2,2341 -variationOfVisibilityTrend3,2342 -variationOfVisibilityTrend4,2343 -varno,2344 -verificationDate,2345 -verificationMonth,2346 -verificationYear,2347 -verifyingMonth,2348 -version,2349 -versionNumOfFilesFreeSpaceStorage,2350 -versionNumOfRootGroupSymbolTableEntry,2351 -versionNumOfSharedHeaderMessageFormat,2352 -versionNumberOfExperimentalSuite,2353 -versionNumberOfGribLocalTables,2354 -versionNumberOfSuperblock,2355 -versionOfModelClimate,2356 -verticalCoordinate,2357 -verticalCoordinateDefinition,2358 -verticalDomainTemplate,2359 -verticalDomainTemplateNumber,2360 -verticalVisibility,2361 -verticalVisibilityCoded,2362 -visibility,2363 -visibilityInKilometresTrend1,2364 -visibilityInKilometresTrend2,2365 -visibilityInKilometresTrend3,2366 -visibilityInKilometresTrend4,2367 -visibilityTrend1,2368 -visibilityTrend2,2369 -visibilityTrend3,2370 -visibilityTrend4,2371 -waveDomain,2372 -weightAppliedToClimateMonth1,2373 -westLongitudeOfCluster,2374 -westLongitudeOfDomainOfTubing,2375 -westernLongitudeOfClusterDomain,2376 -westernLongitudeOfDomain,2377 -widthOfFirstOrderValues,2378 -widthOfLengths,2379 -widthOfSPD,2380 -widthOfWidths,2381 -windDirection,2382 -windDirectionTrend1,2383 -windDirectionTrend2,2384 -windDirectionTrend3,2385 -windDirectionTrend4,2386 -windGust,2387 -windGustTrend1,2388 -windGustTrend2,2389 -windGustTrend3,2390 -windGustTrend4,2391 -windPresent,2392 -windSpeed,2393 -windSpeedTrend1,2394 -windSpeedTrend2,2395 -windSpeedTrend3,2396 -windSpeedTrend4,2397 -windUnits,2398 -windUnitsTrend1,2399 -windUnitsTrend2,2400 -windUnitsTrend3,2401 -windUnitsTrend4,2402 -windVariableDirection,2403 -windVariableDirectionTrend1,2404 -windVariableDirectionTrend2,2405 -windVariableDirectionTrend3,2406 -windVariableDirectionTrend4,2407 -wrongPadding,2408 -xCoordinateOfOriginOfSectorImage,2409 -xCoordinateOfSubSatellitePoint,2410 -xDirectionGridLength,2411 -xDirectionGridLengthInMetres,2412 -xDirectionGridLengthInMillimetres,2413 -xFirst,2414 -xLast,2415 -yCoordinateOfOriginOfSectorImage,2416 -yCoordinateOfSubSatellitePoint,2417 -yDirectionGridLength,2418 -yDirectionGridLengthInMetres,2419 -yDirectionGridLengthInMillimetres,2420 -yFirst,2421 -yLast,2422 -year,2423 -yearOfAnalysis,2424 -yearOfCentury,2425 -yearOfEndOfOverallTimeInterval,2426 -yearOfForecast,2427 -yearOfForecastUsedInLocalTime,2428 -yearOfModelVersion,2429 -yearOfReference,2430 -zero,2431 -zeros,2432 +7777,1 +AA,2 +accumulationInterval,3 +accuracy,4 +accuracyMultipliedByFactor,5 +addEmptySection2,6 +addExtraLocalSection,7 +additionalFlagPresent,8 +addressOfFileFreeSpaceInfo,9 +Adelta,10 +AEC_DATA_3BYTE_OPTION_MASK,11 +AEC_DATA_MSB_OPTION_MASK,12 +AEC_DATA_PREPROCESS_OPTION_MASK,13 +AEC_DATA_SIGNED_OPTION_MASK,14 +AEC_PAD_RSI_OPTION_MASK,15 +AEC_RESTRICTED_OPTION_MASK,16 +aerosolbinnumber,17 +aerosolpacking,18 +aerosolType,19 +aerosolTypeName,20 +alternativeRowScanning,21 +altitudeOfTheCameraFromTheEarthsCentreMeasuredInUnitsOfTheEarthsRadius,22 +analysisOffsets,23 +angleDivisor,24 +angleMultiplier,25 +angleOfRotation,26 +angleOfRotationInDegrees,27 +angleOfRotationOfProjection,28 +angleSubdivisions,29 +_anoffset,30 +anoffset,31 +anoffsetFirst,32 +anoffsetFrequency,33 +anoffsetLast,34 +applicationIdentifier,35 +assertion,36 +At_least__Or_Distribut_Proportion_Of,37 +atmosphericChemicalOrPhysicalConstituentType,38 +attributeOfTile,39 +auxiliary,40 +average,41 +averaging1Flag,42 +averaging2Flag,43 +averagingPeriod,44 +avg,45 +Azi,46 +azimuthalWidth,47 +backgroundGeneratingProcessIdentifier,48 +backgroundProcess,49 +band,50 +baseAddress,51 +baseDateEPS,52 +baseDateOfThisLeg,53 +baseTimeEPS,54 +baseTimeOfThisLeg,55 +basicAngleOfTheInitialProductionDomain,56 +BBB,57 +beginDayTrend1,58 +beginDayTrend2,59 +beginDayTrend3,60 +beginDayTrend4,61 +beginHourTrend1,62 +beginHourTrend2,63 +beginHourTrend3,64 +beginHourTrend4,65 +beginMinuteTrend1,66 +beginMinuteTrend2,67 +beginMinuteTrend3,68 +beginMinuteTrend4,69 +beginMonthTrend1,70 +beginMonthTrend2,71 +beginMonthTrend3,72 +beginMonthTrend4,73 +beginYearTrend1,74 +beginYearTrend2,75 +beginYearTrend3,76 +beginYearTrend4,77 +biFourierCoefficients,78 +biFourierMakeTemplate,79 +biFourierPackingModeForAxes,80 +biFourierResolutionParameterM,81 +biFourierResolutionParameterN,82 +biFourierResolutionSubSetParameterM,83 +biFourierResolutionSubSetParameterN,84 +biFourierSubTruncationType,85 +biFourierTruncationType,86 +binaryScaleFactor,87 +bitmap,88 +bitMapIndicator,89 +bitmapPresent,90 +bitmapSectionPresent,91 +bitsPerValue,92 +bitsPerValueAndRepack,93 +boot_edition,94 +bottomLevel,95 +boustrophedonic,96 +boustrophedonicOrdering,97 +BUDG,98 +BUFR,99 +bufrDataEncoded,100 +bufrdcExpandedDescriptors,101 +bufrHeaderCentre,102 +bufrHeaderSubCentre,103 +bufrTemplate,104 +BufrTemplate,105 +calendarIdentification,106 +calendarIdentificationTemplateNumber,107 +calendarIdPresent,108 +categories,109 +categoryType,110 +cavokOrVisibility,111 +CCCC,112 +ccccIdentifiers,113 +ccsdsBlockSize,114 +ccsdsCompressionOptionsMask,115 +ccsdsFlags,116 +ccsdsRsi,117 +CDF,118 +CDFstr,119 +ceilingAndVisibilityOK,120 +ceilingAndVisibilityOKTrend1,121 +ceilingAndVisibilityOKTrend2,122 +ceilingAndVisibilityOKTrend3,123 +ceilingAndVisibilityOKTrend4,124 +centralClusterDefinition,125 +centralLongitude,126 +centralLongitudeInDegrees,127 +centralLongitudeInMicrodegrees,128 +centre,129 +centreDescription,130 +centreForLocal,131 +centreForTable2,132 +centreLatitude,133 +centreLatitudeInDegrees,134 +centreLongitude,135 +centreLongitudeInDegrees,136 +centuryOfAnalysis,137 +centuryOfReference,138 +centuryOfReferenceTimeOfData,139 +cfName,140 +cfNameECMF,141 +cfNameLegacyECMF,142 +cfVarName,143 +cfVarNameECMF,144 +cfVarNameLegacyECMF,145 +changeDecimalPrecision,146 +changeIndicatorTrend1,147 +changeIndicatorTrend2,148 +changeIndicatorTrend3,149 +changeIndicatorTrend4,150 +changingPrecision,151 +channel,152 +channelNumber,153 +char,154 +charValues,155 +checkInternalVersion,156 +class,157 +classOfAnalysis,158 +climateDateFrom,159 +climateDateTo,160 +climatologicalRegime,161 +CLNOMA,162 +cloudsAbbreviation1,163 +cloudsAbbreviation1Trend1,164 +cloudsAbbreviation1Trend2,165 +cloudsAbbreviation1Trend3,166 +cloudsAbbreviation1Trend4,167 +cloudsAbbreviation2,168 +cloudsAbbreviation2Trend1,169 +cloudsAbbreviation2Trend2,170 +cloudsAbbreviation2Trend3,171 +cloudsAbbreviation2Trend4,172 +cloudsAbbreviation3,173 +cloudsAbbreviation3Trend1,174 +cloudsAbbreviation3Trend2,175 +cloudsAbbreviation3Trend3,176 +cloudsAbbreviation3Trend4,177 +cloudsAbbreviation4,178 +cloudsAbbreviation4Trend1,179 +cloudsAbbreviation4Trend2,180 +cloudsAbbreviation4Trend3,181 +cloudsAbbreviation4Trend4,182 +cloudsBase1,183 +cloudsBase1Trend1,184 +cloudsBase1Trend2,185 +cloudsBase1Trend3,186 +cloudsBase1Trend4,187 +cloudsBase2,188 +cloudsBase2Trend1,189 +cloudsBase2Trend2,190 +cloudsBase2Trend3,191 +cloudsBase2Trend4,192 +cloudsBase3,193 +cloudsBase3Trend1,194 +cloudsBase3Trend2,195 +cloudsBase3Trend3,196 +cloudsBase3Trend4,197 +cloudsBase4,198 +cloudsBase4Trend1,199 +cloudsBase4Trend2,200 +cloudsBase4Trend3,201 +cloudsBase4Trend4,202 +cloudsBaseCoded1,203 +cloudsBaseCoded1Trend1,204 +cloudsBaseCoded1Trend2,205 +cloudsBaseCoded1Trend3,206 +cloudsBaseCoded1Trend4,207 +cloudsBaseCoded2,208 +cloudsBaseCoded2Trend1,209 +cloudsBaseCoded2Trend2,210 +cloudsBaseCoded2Trend3,211 +cloudsBaseCoded2Trend4,212 +cloudsBaseCoded3,213 +cloudsBaseCoded3Trend1,214 +cloudsBaseCoded3Trend2,215 +cloudsBaseCoded3Trend3,216 +cloudsBaseCoded3Trend4,217 +cloudsBaseCoded4,218 +cloudsBaseCoded4Trend1,219 +cloudsBaseCoded4Trend2,220 +cloudsBaseCoded4Trend3,221 +cloudsBaseCoded4Trend4,222 +cloudsCode1,223 +cloudsCode1Trend1,224 +cloudsCode1Trend2,225 +cloudsCode1Trend3,226 +cloudsCode1Trend4,227 +cloudsCode2,228 +cloudsCode2Trend1,229 +cloudsCode2Trend2,230 +cloudsCode2Trend3,231 +cloudsCode2Trend4,232 +cloudsCode3,233 +cloudsCode3Trend1,234 +cloudsCode3Trend2,235 +cloudsCode3Trend3,236 +cloudsCode3Trend4,237 +cloudsCode4,238 +cloudsCode4Trend1,239 +cloudsCode4Trend2,240 +cloudsCode4Trend3,241 +cloudsCode4Trend4,242 +cloudsTitle1,243 +cloudsTitle1Trend1,244 +cloudsTitle1Trend2,245 +cloudsTitle1Trend3,246 +cloudsTitle1Trend4,247 +cloudsTitle2,248 +cloudsTitle2Trend1,249 +cloudsTitle2Trend2,250 +cloudsTitle2Trend3,251 +cloudsTitle2Trend4,252 +cloudsTitle3,253 +cloudsTitle3Trend1,254 +cloudsTitle3Trend2,255 +cloudsTitle3Trend3,256 +cloudsTitle3Trend4,257 +cloudsTitle4,258 +cloudsTitle4Trend1,259 +cloudsTitle4Trend2,260 +cloudsTitle4Trend3,261 +cloudsTitle4Trend4,262 +clusterIdentifier,263 +clusteringDomain,264 +clusteringMethod,265 +clusterMember1,266 +clusterMember10,267 +clusterMember2,268 +clusterMember3,269 +clusterMember4,270 +clusterMember5,271 +clusterMember6,272 +clusterMember7,273 +clusterMember8,274 +clusterMember9,275 +clusterNumber,276 +clusterSize,277 +clutterFilterIndicator,278 +cnmc_cmcc,279 +cnmc_isac,280 +codedNumberOfFirstOrderPackedValues,281 +codedNumberOfGroups,282 +codedValues,283 +codeFigure,284 +codeType,285 +coefsFirst,286 +coefsSecond,287 +commonBlock,288 +complexPacking,289 +componentIndex,290 +compressedData,291 +computeLaplacianOperator,292 +computeStatistics,293 +conceptDir,294 +conceptsDir1,295 +conceptsDir2,296 +conceptsLocalDirAll,297 +conceptsLocalDirECMF,298 +conceptsLocalMarsDirAll,299 +conceptsMasterDir,300 +conceptsMasterMarsDir,301 +consensus,302 +consensusCount,303 +const,304 +constantAntennaElevationAngle,305 +constantFieldHalfByte,306 +constituentType,307 +constituentTypeName,308 +controlForecastCluster,309 +coordAveraging0,310 +coordAveraging1,311 +coordAveraging2,312 +coordAveraging3,313 +coordAveragingTims,314 +coordinate1End,315 +coordinate1Flag,316 +coordinate1Start,317 +coordinate2End,318 +coordinate2Flag,319 +coordinate2Start,320 +coordinate3Flag,321 +coordinate3OfFirstGridPoint,322 +coordinate3OfLastGridPoint,323 +coordinate4Flag,324 +coordinate4OfFirstGridPoint,325 +coordinate4OfLastGridPoint,326 +coordinateFlag1,327 +coordinateFlag2,328 +coordinateIndexNumber,329 +coordinatesPresent,330 +core,331 +corr1Data,332 +corr2Data,333 +corr3Data,334 +corr4Data,335 +correction,336 +correction1,337 +correction1Part,338 +correction2,339 +correction2Part,340 +correction3,341 +correction3Part,342 +correction4,343 +correction4Part,344 +count,345 +countOfGroupLengths,346 +countOfICEFieldsUsed,347 +country,348 +countTotal,349 +crcrlf,350 +createNewData,351 +crraLocalVersion,352 +crraSection,353 +crraSuiteID,354 +daLoop,355 +data,356 +dataAccessors,357 +dataCategory,358 +dataDate,359 +dataFlag,360 +dataKeys,361 +dataLength,362 +dataOrigin,363 +dataRepresentation,364 +dataRepresentationTemplate,365 +dataRepresentationTemplateNumber,366 +dataRepresentationType,367 +dataSelection,368 +datasetForLocal,369 +dataStream,370 +dataSubCategory,371 +dataTime,372 +dataType,373 +dataValues,374 +date,375 +Date_E2,376 +Date_E3,377 +Date_E4,378 +dateOfAnalysis,379 +dateOfForecast,380 +dateOfForecastRun,381 +dateOfForecastUsedInLocalTime,382 +dateOfIceFieldUsed,383 +dateOfModelVersion,384 +dateOfReference,385 +dateOfSSTFieldUsed,386 +dateSSTFieldUsed,387 +dateTime,388 +datumSize,389 +day,390 +dayOfAnalysis,391 +dayOfEndOfOverallTimeInterval,392 +dayOfForecast,393 +dayOfForecastUsedInLocalTime,394 +dayOfModelVersion,395 +DayOfModelVersion,396 +dayOfReference,397 +dayOfTheYearDate,398 +decimalPrecision,399 +decimalScaleFactor,400 +defaultFaFieldName,401 +defaultFaLevelName,402 +defaultFaModelName,403 +default_max_val,404 +default_min_val,405 +defaultName,406 +defaultParameter,407 +defaultSequence,408 +defaultShortName,409 +default_step_units,410 +defaultStepUnits,411 +defaultTypeOfLevel,412 +definitionFilesVersion,413 +DELETE,414 +deleteCalendarId,415 +deleteExtraLocalSection,416 +deleteLocalDefinition,417 +deletePV,418 +derivedForecast,419 +dewPointTemperature,420 +Di,421 +DIAG,422 +diagnostic,423 +diagnosticNumber,424 +diffInDays,425 +diffInHours,426 +DiGiven,427 +DiInDegrees,428 +DiInMetres,429 +dimension,430 +dimensionNumber,431 +dimensionType,432 +direction,433 +directionNumber,434 +directionOfVariation,435 +directionScalingFactor,436 +dirty_statistics,437 +disableGrib1LocalSection,438 +discipline,439 +distanceFromTubeToEnsembleMean,440 +distinctLatitudes,441 +distinctLongitudes,442 +Dj,443 +DjGiven,444 +DjInDegrees,445 +DjInMetres,446 +doExtractArea,447 +doExtractDateTime,448 +doExtractSubsets,449 +domain,450 +doSimpleThinning,451 +driverInformationBlockAddress,452 +Dstart,453 +dummy,454 +dummy1,455 +dummy2,456 +dummyc,457 +dx,458 +Dx,459 +DxInDegrees,460 +DxInMetres,461 +dy,462 +Dy,463 +DyInDegrees,464 +DyInMetres,465 +earthIsOblate,466 +earthMajorAxis,467 +earthMajorAxisInMetres,468 +earthMinorAxis,469 +earthMinorAxisInMetres,470 +easternLongitudeOfClusterDomain,471 +easternLongitudeOfDomain,472 +eastLongitudeOfCluster,473 +eastLongitudeOfDomainOfTubing,474 +ECMWF,475 +ECMWF_s,476 +ed,477 +edition,478 +editionNumber,479 +efas_model,480 +efiOrder,481 +eight,482 +elementsTable,483 +elevation,484 +eleven,485 +endDayTrend1,486 +endDayTrend2,487 +endDayTrend3,488 +endDayTrend4,489 +endDescriptors,490 +endGridDefinition,491 +endHourTrend1,492 +endHourTrend2,493 +endHourTrend3,494 +endHourTrend4,495 +endMark,496 +endMinuteTrend1,497 +endMinuteTrend2,498 +endMinuteTrend3,499 +endMinuteTrend4,500 +endMonthTrend1,501 +endMonthTrend2,502 +endMonthTrend3,503 +endMonthTrend4,504 +endOfFileAddress,505 +endOfHeadersMarker,506 +endOfInterval,507 +endOfMessage,508 +endOfProduct,509 +endOfRange,510 +_endStep,511 +endStep,512 +endStepInHours,513 +endTimeStep,514 +endYearTrend1,515 +endYearTrend2,516 +endYearTrend3,517 +endYearTrend4,518 +energyNorm,519 +enorm,520 +************_ENSEMBLE_**************,521 +Ensemble_Combination_Number,522 +Ensemble_Combinat_Number_0_none_E2,523 +Ensemble_Combinat_Number_0_none_E3,524 +Ensemble_Combinat_Number_0_none_E4,525 +ensembleForecastNumbers,526 +ensembleForecastNumbersList,527 +Ensemble_Identifier,528 +Ensemble_Identifier_E2,529 +Ensemble_Identifier_E3,530 +Ensemble_Identifier_E4,531 +ensembleSize,532 +ensembleStandardDeviation,533 +eps,534 +epsContinous,535 +epsPoint,536 +epsStatisticsContinous,537 +epsStatisticsPoint,538 +expandBy,539 +expandedAbbreviations,540 +expandedCodes,541 +expandedCrex_scales,542 +expandedCrex_units,543 +expandedCrex_widths,544 +expandedDescriptors,545 +expandedNames,546 +expandedOriginalCodes,547 +expandedOriginalReferences,548 +expandedOriginalScales,549 +expandedOriginalWidths,550 +expandedTypes,551 +expandedUnits,552 +************_EXPERIMENT_************,553 +Experiment_Identifier,554 +experimentVersionNumber,555 +experimentVersionNumber1,556 +experimentVersionNumber2,557 +experimentVersionNumberOfAnalysis,558 +expoffset,559 +expver,560 +extendedFlag,561 +extractAreaEastLongitude,562 +extractAreaLatitudeRank,563 +extractAreaLongitudeRank,564 +extractAreaNorthLatitude,565 +extractAreaSouthLatitude,566 +extractAreaWestLongitude,567 +extractDateTimeDayEnd,568 +extractDateTimeDayRank,569 +extractDateTimeDayStart,570 +extractDateTimeEnd,571 +extractDateTimeHourEnd,572 +extractDateTimeHourRank,573 +extractDateTimeHourStart,574 +extractDateTimeMinuteEnd,575 +extractDateTimeMinuteRank,576 +extractDateTimeMinuteStart,577 +extractDateTimeMonthEnd,578 +extractDateTimeMonthRank,579 +extractDateTimeMonthStart,580 +extractDateTimeSecondEnd,581 +extractDateTimeSecondRank,582 +extractDateTimeSecondStart,583 +extractDateTimeStart,584 +extractDateTimeYearEnd,585 +extractDateTimeYearRank,586 +extractDateTimeYearStart,587 +extractedAreaNumberOfSubsets,588 +extractedDateTimeNumberOfSubsets,589 +extractSubset,590 +extractSubsetIntervalEnd,591 +extractSubsetIntervalStart,592 +extractSubsetList,593 +*********_EXTRA_DATA_***************,594 +Extra_Data_FreeFormat_0_none,595 +extraDim,596 +extraDimensionPresent,597 +extraLocalSectionNumber,598 +extraLocalSectionPresent,599 +extraValues,600 +extremeClockwiseWindDirection,601 +extremeCounterClockwiseWindDirection,602 +ExtremeValuesInMaximumRVR1,603 +ExtremeValuesInMaximumRVR2,604 +ExtremeValuesInMaximumRVR3,605 +ExtremeValuesInMaximumRVR4,606 +extremeValuesRVR1,607 +ExtremeValuesRVR1,608 +extremeValuesRVR2,609 +ExtremeValuesRVR2,610 +extremeValuesRVR3,611 +ExtremeValuesRVR3,612 +extremeValuesRVR4,613 +ExtremeValuesRVR4,614 +faFieldName,615 +faLevelName,616 +false,617 +falseEasting,618 +falseNorthing,619 +faModelName,620 +fcmonth,621 +fcperiod,622 +fgDate,623 +fgTime,624 +file,625 +fileConsistencyFlags,626 +fireTemplate,627 +firstDimension,628 +firstDimensionCoordinateValueDefinition,629 +firstDimensionPhysicalSignificance,630 +firstLatitude,631 +FirstLatitude,632 +firstLatitudeInDegrees,633 +firstMonthUsedToBuildClimateMonth1,634 +firstMonthUsedToBuildClimateMonth2,635 +firstOrderValues,636 +firstSize,637 +flag,638 +flagForAnyFurtherInformation,639 +flagForIrregularGridCoordinateList,640 +flagForNormalOrStaggeredGrid,641 +flags,642 +flagShowingPostAuxiliaryArrayInUse,643 +floatVal,644 +floatValues,645 +FMULTE,646 +FMULTM,647 +forecastLeadTime,648 +forecastMonth,649 +forecastOrSingularVectorNumber,650 +forecastperiod,651 +forecastPeriod,652 +forecastPeriodFrom,653 +forecastPeriodTo,654 +forecastProbabilityNumber,655 +forecastSteps,656 +forecastTime,657 +formatVersionMajorNumber,658 +formatVersionMinorNumber,659 +freeFormData,660 +frequency,661 +frequencyNumber,662 +frequencyScalingFactor,663 +functionCode,664 +g,665 +g1conceptsLocalDirAll,666 +g1conceptsMasterDir,667 +g2grid,668 +gaussianGridName,669 +GDSPresent,670 +generalExtended2ordr,671 +generatingProcessIdentificationNumber,672 +generatingProcessIdentifier,673 +generatingProcessTemplate,674 +generatingProcessTemplateNumber,675 +genVertHeightCoords,676 +getNumberOfValues,677 +gg,678 +GG,679 +global,680 +globalDomain,681 +GRIB,682 +grib1divider,683 +grib2divider,684 +grib2LocalSectionNumber,685 +grib2LocalSectionPresent,686 +grib3divider,687 +gribDataQualityChecks,688 +GRIB_DEPTH,689 +GRIBEditionNumber,690 +GRIBEX_boustrophedonic,691 +GRIBEXSection1Problem,692 +GRIBEXShBugPresent,693 +GRIB_LATITUDE,694 +GRIB_LONGITUDE,695 +gribMasterTablesVersionNumber,696 +gribTablesVersionNo,697 +grid,698 +gridCoordinate,699 +gridDefinition,700 +gridDefinitionDescription,701 +gridDefinitionSection,702 +gridDefinitionTemplateNumber,703 +gridDescriptionSectionPresent,704 +gridName,705 +gridPointPosition,706 +gridType,707 +groupInternalNodeK,708 +groupLeafNodeK,709 +groupLengths,710 +groupSplitting,711 +groupSplittingMethodUsed,712 +groupWidth,713 +groupWidths,714 +GTS,715 +gts_CCCC,716 +gts_ddhh00,717 +gts_header,718 +GTSstr,719 +gts_TTAAii,720 +halfByte,721 +hdate,722 +HDF5,723 +HDF5str,724 +headersOnly,725 +heightLevelName,726 +heightOrPressureOfLevel,727 +heightPressureEtcOfLevels,728 +hideThis,729 +horizontalCoordinateDefinition,730 +horizontalCoordinateSupplement,731 +horizontalDimensionProcessed,732 +horizontalDomainTemplate,733 +horizontalDomainTemplateNumber,734 +hour,735 +Hour_E2,736 +Hour_E3,737 +Hour_E4,738 +hourOfAnalysis,739 +hourOfEndOfOverallTimeInterval,740 +hourOfForecast,741 +hourOfForecastUsedInLocalTime,742 +hourOfModelVersion,743 +HourOfModelVersion,744 +hourOfReference,745 +hoursAfterDataCutoff,746 +hoursAfterReferenceTimeOfDataCutoff,747 +hundred,748 +ICEFieldsUsed,749 +ICPLSIZE,750 +ident,751 +identificationNumber,752 +identificationOfOriginatingGeneratingCentre,753 +identificationOfProject,754 +identifier,755 +iDirectionIncrement,756 +iDirectionIncrementGiven,757 +iDirectionIncrementGridLength,758 +iDirectionIncrementInDegrees,759 +ieeeFloats,760 +ifsParam,761 +II,762 +iIncrement,763 +ijDirectionIncrementGiven,764 +implementationDateOfModelCycle,765 +INBITS,766 +incrementOfLengths,767 +indexedStorageInternalNodeK,768 +indexingDate,769 +indexingTime,770 +indexingTimeHH,771 +indexingTimeHHMM,772 +indexingTimeMM,773 +indexTemplate,774 +indexTemplateNumber,775 +indicatorOfParameter,776 +indicatorOfTypeOfLevel,777 +indicatorOfUnitForForecastTime,778 +indicatorOfUnitForTimeIncrement,779 +indicatorOfUnitForTimeRange,780 +indicatorOfUnitOfTimeRange,781 +INGRIB,782 +inputDataPresentIndicator,783 +inputDelayedDescriptorReplicationFactor,784 +inputExtendedDelayedDescriptorReplicationFactor,785 +inputOriginatingCentre,786 +inputOverriddenReferenceValues,787 +inputProcessIdentifier,788 +inputShortDelayedDescriptorReplicationFactor,789 +instrument,790 +instrumentIdentifier,791 +instrumentType,792 +integerPointValues,793 +integerScaleFactor,794 +integerScalingFactorAppliedToDirections,795 +integerScalingFactorAppliedToFrequencies,796 +integerValues,797 +internalVersion,798 +internationalDataSubCategory,799 +interpretationOfNumberOfPoints,800 +intervalBetweenTimes,801 +isAccumulation,802 +is_aerosol,803 +is_aerosol_optical,804 +isAuto,805 +iScansNegatively,806 +iScansPositively,807 +isCavok,808 +isCavokTrend1,809 +isCavokTrend2,810 +isCavokTrend3,811 +isCavokTrend4,812 +is_chemical,813 +is_chemical_distfn,814 +is_chemical_srcsink,815 +isConstant,816 +isCorrection,817 +isectionNumber2,818 +isectionNumber3,819 +isectionNumber4,820 +isEps,821 +isEPS,822 +isFillup,823 +isHindcast,824 +is_localtime,825 +is_ocean2d_param,826 +is_ocean3d_param,827 +isOctahedral,828 +isotopeIdentificationNumber,829 +isRotatedGrid,830 +isSatellite,831 +isSatelliteType,832 +isSens,833 +is_uerra,834 +iteration,835 +iterationNumber,836 +ITERATOR,837 +iteratorDisableUnrotate,838 +ITN,839 +J,840 +jDirectionIncrement,841 +jDirectionIncrementGiven,842 +jDirectionIncrementGridLength,843 +jDirectionIncrementInDegrees,844 +jdLocal,845 +jdSelected,846 +jIncrement,847 +jPointsAreConsecutive,848 +JS,849 +jScansNegatively,850 +jScansPositively,851 +julianDay,852 +julianForecastDay,853 +K,854 +keyData,855 +keyMore,856 +keySat,857 +kindOfProduct,858 +KS,859 +kurt,860 +kurtosis,861 +La1,862 +La1InDegrees,863 +La2,864 +La2InDegrees,865 +LaD,866 +LaDInDegrees,867 +landtype,868 +Lap,869 +laplacianOperator,870 +laplacianOperatorIsSet,871 +laplacianScalingFactor,872 +laplacianScalingFactorUnset,873 +LaR,874 +Lar1,875 +Lar1InDegrees,876 +Lar2,877 +Lar2InDegrees,878 +lastMonthUsedToBuildClimateMonth1,879 +lastMonthUsedToBuildClimateMonth2,880 +Latin,881 +Latin1,882 +Latin1InDegrees,883 +Latin2,884 +Latin2InDegrees,885 +latitude,886 +latitudeFirstInDegrees,887 +latitudeLastInDegrees,888 +latitudeLongitudeValues,889 +latitudeOfCentralPointInClusterDomain,890 +latitudeOfCentrePoint,891 +latitudeOfCentrePointInDegrees,892 +latitudeOfFirstGridPoint,893 +latitudeOfFirstGridPointInDegrees,894 +latitudeOfGridPoints,895 +latitudeOfIcosahedronPole,896 +latitudeOfLastGridPoint,897 +latitudeOfLastGridPointInDegrees,898 +latitudeOfNorthWestCornerOfArea,899 +latitudeOfReferencePoint,900 +latitudeOfReferencePointInDegrees,901 +latitudeOfSouthEastCornerOfArea,902 +latitudeOfSouthernPole,903 +latitudeOfSouthernPoleInDegrees,904 +latitudeOfStretchingPole,905 +latitudeOfStretchingPoleInDegrees,906 +latitudeOfSubSatellitePoint,907 +latitudeOfSubSatellitePointInDegrees,908 +latitudeOfTangencyPoint,909 +latitudeOfThePoleOfStretching,910 +latitudeOfThePolePoint,911 +latitudeOfThePolePointInDegrees,912 +latitudeOfTheSouthernPoleOfProjection,913 +latitudes,914 +latitudeSexagesimal,915 +latitudesList,916 +latitudeWhereDxAndDyAreSpecified,917 +latitudeWhereDxAndDyAreSpecifiedInDegrees,918 +latitudinalDirectionGridLength,919 +latLonValues,920 +lBB,921 +LBC_Initial_Conditions,922 +lcwfvSuiteName,923 +Lcx,924 +LcxInMetres,925 +Lcy,926 +LcyInMetres,927 +leadtime,928 +legacyGaussSubarea,929 +legBaseDate,930 +legBaseTime,931 +_leg_number,932 +legNumber,933 +lengthDescriptors,934 +lengthIncrementForTheGroupLengths,935 +lengthOf4DvarWindow,936 +lengthOfHeaders,937 +lengthOfIndexTemplate,938 +lengthOfMessage,939 +lengthOfOriginatorLocalTemplate,940 +lengthOfProjectLocalTemplate,941 +lengthOfTimeRange,942 +Less_Than_Or_To_Overall_Distribution,943 +lev,944 +level,945 +levelFactor,946 +levelIndicator,947 +levelist,948 +levels,949 +levelType,950 +level_value_list,951 +levelValues,952 +levtype,953 +levTypeName,954 +libraryVersion,955 +LIMITS,956 +listMembersMissing,957 +listMembersMissing2,958 +listMembersMissing3,959 +listMembersMissing4,960 +listMembersUsed,961 +listMembersUsed2,962 +listMembersUsed3,963 +listMembersUsed4,964 +listOfContributingSpectralBands,965 +listOfDistributionFunctionParameter,966 +listOfEnsembleForecastNumbers,967 +listOfModelIdentifiers,968 +listOfParametersUsedForClustering,969 +listOfScaledFrequencies,970 +LLCOSP,971 +Lo1,972 +Lo1InDegrees,973 +Lo2,974 +Lo2InDegrees,975 +local,976 +localDate,977 +localDateTime,978 +localDay,979 +localDecimalScaleFactor,980 +localDefinition,981 +localDefinitionNumber,982 +localDefNumberOne,983 +localDefNumberTwo,984 +localDir,985 +localExtensionPadding,986 +localFlag,987 +localFlagLatestVersion,988 +localHour,989 +localLatitude,990 +localLatitude1,991 +localLatitude2,992 +localLongitude,993 +localLongitude1,994 +localLongitude2,995 +localMinute,996 +localMonth,997 +Local_Number_Members_Missing,998 +Local_Number_Members_Missing_E2,999 +Local_Number_Members_Missing_E3,1000 +Local_Number_Members_Missing_E4,1001 +Local_Number_Members_Possible,1002 +Local_Number_Members_Possible_E2,1003 +Local_Number_Members_Possible_E3,1004 +Local_Number_Members_Possible_E4,1005 +Local_Number_Members_Used,1006 +Local_Number_Members_Used_E2,1007 +Local_Number_Members_Used_E3,1008 +Local_Number_Members_Used_E4,1009 +localNumberOfObservations,1010 +local_padding,1011 +localSecond,1012 +localSection,1013 +localSectionPresent,1014 +localTablesVersion,1015 +localTablesVersionNumber,1016 +localTime,1017 +localTimeForecastList,1018 +localTimeMethod,1019 +local_use,1020 +localUsePresent,1021 +localYear,1022 +logTransform,1023 +longitude,1024 +longitudeFirstInDegrees,1025 +longitudeLastInDegrees,1026 +longitudeOfCentralPointInClusterDomain,1027 +longitudeOfCentrePoint,1028 +longitudeOfCentrePointInDegrees,1029 +longitudeOfFirstDiamondCenterLine,1030 +longitudeOfFirstDiamondCentreLine,1031 +longitudeOfFirstDiamondCentreLineInDegrees,1032 +longitudeOfFirstGridPoint,1033 +longitudeOfFirstGridPointInDegrees,1034 +longitudeOfGridPoints,1035 +longitudeOfIcosahedronPole,1036 +longitudeOfLastGridPoint,1037 +longitudeOfLastGridPointInDegrees,1038 +longitudeOfNorthWestCornerOfArea,1039 +longitudeOfReferencePoint,1040 +longitudeOfReferencePointInDegrees,1041 +longitudeOfSouthEastCornerOfArea,1042 +longitudeOfSouthernPole,1043 +longitudeOfSouthernPoleInDegrees,1044 +longitudeOfStretchingPole,1045 +longitudeOfStretchingPoleInDegrees,1046 +longitudeOfSubSatellitePoint,1047 +longitudeOfSubSatellitePointInDegrees,1048 +longitudeOfTangencyPoint,1049 +longitudeOfThePoleOfStretching,1050 +longitudeOfThePolePoint,1051 +longitudeOfThePolePointInDegrees,1052 +longitudeOfTheSouthernPoleOfProjection,1053 +longitudes,1054 +longitudeSexagesimal,1055 +longitudesList,1056 +longitudinalDirectionGridLength,1057 +Lop,1058 +LoR,1059 +Lor1,1060 +Lor1InDegrees,1061 +Lor2,1062 +Lor2InDegrees,1063 +LoV,1064 +LoVInDegrees,1065 +lowerLimit,1066 +lowerRange,1067 +lowerThreshold,1068 +lowerThresholdValue,1069 +lsdate_bug,1070 +ls_labeling,1071 +LSTCUM,1072 +lstime_bug,1073 +Lux,1074 +LuxInMetres,1075 +Luy,1076 +LuyInMetres,1077 +Lx,1078 +LxInMetres,1079 +Ly,1080 +LyInMetres,1081 +m,1082 +M,1083 +mAngleMultiplier,1084 +mars,1085 +marsClass,1086 +marsClass1,1087 +marsClass2,1088 +marsDir,1089 +marsDomain,1090 +marsEndStep,1091 +marsExperimentOffset,1092 +marsExpver,1093 +marsForecastMonth,1094 +marsGrid,1095 +marsIdent,1096 +marsKeywords,1097 +marsKeywords1,1098 +mars_labeling,1099 +marsLamModel,1100 +marsLatitude,1101 +marsLevel,1102 +marsLevelist,1103 +marsLongitude,1104 +marsModel,1105 +marsParam,1106 +marsQuantile,1107 +marsRange,1108 +marsStartStep,1109 +marsStep,1110 +marsStream,1111 +marsStream1,1112 +marsStream2,1113 +marsType,1114 +marsType1,1115 +marsType2,1116 +mask,1117 +masterDir,1118 +masterTableNumber,1119 +masterTablesVersionNumber,1120 +masterTablesVersionNumberLatest,1121 +matchAerosolBinNumber,1122 +matchAerosolPacking,1123 +matchLandType,1124 +matchSort,1125 +matchTimeRepres,1126 +matrixBitmapsPresent,1127 +matrixOfValues,1128 +max,1129 +maximum,1130 +maxLevelValue,1131 +mBasicAngle,1132 +md5Data,1133 +md5DataSection,1134 +md5GridSection,1135 +md5Headers,1136 +md5Product,1137 +md5Section1,1138 +md5Section10,1139 +md5Section2,1140 +md5Section3,1141 +md5Section4,1142 +md5Section5,1143 +md5Section6,1144 +md5Section7,1145 +md5Section8,1146 +md5Section9,1147 +md5Structure,1148 +md5TimeDomainSection,1149 +meaningOfVerticalCoordinate,1150 +meanRVR1,1151 +meanRVR2,1152 +meanRVR3,1153 +meanRVR4,1154 +meanSize,1155 +meanValueRVR1,1156 +meanValueRVR2,1157 +meanValueRVR3,1158 +meanValueRVR4,1159 +memberNumber,1160 +messageLength,1161 +metadata,1162 +METAR,1163 +METARstr,1164 +method,1165 +methodNumber,1166 +million,1167 +min,1168 +minimum,1169 +minute,1170 +Minute_E2,1171 +Minute_E3,1172 +Minute_E4,1173 +minuteOfAnalysis,1174 +minuteOfEndOfOverallTimeInterval,1175 +minuteOfForecast,1176 +minuteOfForecastUsedInLocalTime,1177 +minuteOfModelVersion,1178 +MinuteOfModelVersion,1179 +minuteOfReference,1180 +minutesAfterDataCutoff,1181 +minutesAfterReferenceTimeOfDataCutoff,1182 +missingDataFlag,1183 +Missing_Model_LBC,1184 +Missing_Model_LBC_E2,1185 +Missing_Model_LBC_E3,1186 +Missing_Model_LBC_E4,1187 +missingValue,1188 +missingValueManagement,1189 +missingValueManagementUsed,1190 +missing_values,1191 +missingValuesPresent,1192 +mixedCoordinateDefinition,1193 +mixedCoordinateFieldFlag,1194 +model,1195 +Model_Additional_Information,1196 +modelErrorType,1197 +modelIdentifier,1198 +Model_Identifier,1199 +Model_LBC_Member_Identifier,1200 +modelName,1201 +modelVersionDate,1202 +modelVersionTime,1203 +modeNumber,1204 +molarMass,1205 +month,1206 +monthlyVerificationDate,1207 +monthlyVerificationMonth,1208 +monthlyVerificationTime,1209 +monthlyVerificationYear,1210 +monthOfAnalysis,1211 +monthOfEndOfOverallTimeInterval,1212 +monthOfForecast,1213 +monthOfForecastUsedInLocalTime,1214 +monthOfModelVersion,1215 +MonthOfModelVersion,1216 +monthOfReference,1217 +MS,1218 +multiplicationFactorForLatLong,1219 +n,1220 +N,1221 +N1,1222 +n2,1223 +N2,1224 +n3,1225 +na,1226 +name,1227 +nameECMF,1228 +nameLegacyECMF,1229 +nameOfFirstFixedSurface,1230 +nameOfSecondFixedSurface,1231 +names,1232 +Nassigned,1233 +NAT,1234 +Nb,1235 +NB,1236 +NC,1237 +NC1,1238 +NC2,1239 +Ncx,1240 +Ncy,1241 +nd,1242 +NEAREST,1243 +neitherPresent,1244 +newSubtype,1245 +Nf,1246 +NG,1247 +NH,1248 +Ni,1249 +NINT_LOG10_RITZ,1250 +NINT_RITZ_EXP,1251 +Nj,1252 +NL,1253 +nlev,1254 +nnn,1255 +normal,1256 +normAtFinalTime,1257 +normAtInitialTime,1258 +northernLatitudeOfClusterDomain,1259 +northernLatitudeOfDomain,1260 +northLatitudeOfCluster,1261 +northLatitudeOfDomainOfTubing,1262 +northWestLatitudeOfLPOArea,1263 +northWestLatitudeOfVerficationArea,1264 +northWestLongitudeOfLPOArea,1265 +northWestLongitudeOfVerficationArea,1266 +nosigPresent,1267 +notDecoded,1268 +NP,1269 +Nr,1270 +NR,1271 +NrInRadiusOfEarth,1272 +NrInRadiusOfEarthScaled,1273 +NRj,1274 +nt,1275 +NT,1276 +number,1277 +Number_Combination_Ensembles_1_none,1278 +numberIncludedInAverage,1279 +numberingOrderOfDiamonds,1280 +numberInHorizontalCoordinates,1281 +numberInMixedCoordinateDefinition,1282 +numberInTheAuxiliaryArray,1283 +numberInTheGridCoordinateList,1284 +numberMissingFromAveragesOrAccumulations,1285 +numberOfAnalysis,1286 +numberOfBits,1287 +numberOfBitsContainingEachPackedValue,1288 +numberOfBitsForScaledGroupLengths,1289 +numberOfBitsUsedForTheGroupWidths,1290 +numberOfBitsUsedForTheScaledGroupLengths,1291 +numberOfBytesInLocalDefinition,1292 +numberOfBytesOfFreeFormatData,1293 +numberOfBytesPerInteger,1294 +numberOfCategories,1295 +numberOfCharacters,1296 +numberOfChars,1297 +numberOfClusterHighResolution,1298 +numberOfClusterLowResolution,1299 +numberOfClusters,1300 +numberOfCodedValues,1301 +numberOfCoefficientsOrValuesUsedToSpecifyFirstDimensionCoordinateFunction,1302 +numberOfCoefficientsOrValuesUsedToSpecifySecondDimensionCoordinateFunction,1303 +numberOfColumns,1304 +numberOfComponents,1305 +numberOfContributingSpectralBands,1306 +numberOfControlForecastTube,1307 +numberOfCoordinatesValues,1308 +numberOfDataBinsAlongRadials,1309 +numberOfDataMatrices,1310 +numberOfDataPoints,1311 +numberOfDataPointsExpected,1312 +numberOfDataValues,1313 +numberOfDaysInClimateSamplingWindow,1314 +numberOfDiamonds,1315 +numberOfDirections,1316 +numberOfDistinctSection3s,1317 +numberOfDistinctSection4s,1318 +numberOfDistinctSection5s,1319 +numberOfDistinctSection6s,1320 +numberOfDistinctSection7s,1321 +numberOfDistinctSection8s,1322 +numberOfDistinctSection9s,1323 +numberOfDistributionFunctionParameters,1324 +numberOfEffectiveValues,1325 +numberOfFloats,1326 +numberOfForcasts,1327 +numberOfForecastsInCluster,1328 +numberOfForecastsInEnsemble,1329 +numberOfForecastsInTheCluster,1330 +numberOfForecastsInTube,1331 +numberOfForecastsUsedInLocalTime,1332 +numberOfFrequencies,1333 +numberOfGridInReference,1334 +numberOfGridUsed,1335 +numberOfGroups,1336 +numberOfGroupsOfDataValues,1337 +numberOfHorizontalPoints,1338 +numberOfIntegers,1339 +numberOfInts,1340 +numberOfIterations,1341 +numberOfLevelValues,1342 +numberOfLocalDefinitions,1343 +numberOfLogicals,1344 +numberOfMembersInCluster,1345 +numberOfMembersInEnsemble,1346 +numberOfMissing,1347 +numberOfMissingInStatisticalProcess,1348 +numberOfMissingValues,1349 +numberOfModels,1350 +numberOfModeOfDistribution,1351 +numberOfOctectsForNumberOfPoints,1352 +numberOfOctetsExtraDescriptors,1353 +numberOfOperationalForecastTube,1354 +numberOfPackedValues,1355 +numberOfParallelsBetweenAPoleAndTheEquator,1356 +numberOfParametersUsedForClustering,1357 +numberOfPartitions,1358 +numberOfPoints,1359 +numberOfPointsAlongAMeridian,1360 +numberOfPointsAlongAParallel,1361 +numberOfPointsAlongFirstAxis,1362 +numberOfPointsAlongSecondAxis,1363 +numberOfPointsAlongTheXAxis,1364 +numberOfPointsAlongTheYAxis,1365 +numberOfPointsAlongXAxis,1366 +numberOfPointsAlongXAxisInCouplingArea,1367 +numberOfPointsAlongYAxis,1368 +numberOfPointsAlongYAxisInCouplingArea,1369 +numberOfPointsInDomain,1370 +numberOfPointsUsed,1371 +numberOfPressureLevelsUsedForClustering,1372 +numberOfRadarSitesUsed,1373 +numberOfRadials,1374 +numberOfReforecastYearsInModelClimate,1375 +numberOfRemaininChars,1376 +numberOfRepresentativeMember,1377 +numberOfReservedBytes,1378 +numberOfRows,1379 +numberOfSecondOrderPackedValues,1380 +numberOfSection,1381 +numberOfSingularVectorsComputed,1382 +numberOfSingularVectorsEvolved,1383 +numberOfStatisticallyProcessedFieldsForLocalTime,1384 +numberOfStepsUsedForClustering,1385 +numberOfSubsets,1386 +numberOfTensOfThousandsOfYearsOfOffset,1387 +numberOfTimeIncrementsOfForecastsUsedInLocalTime,1388 +numberOfTimeRange,1389 +numberOfTimeSteps,1390 +numberOfUnexpandedDescriptors,1391 +numberOfUnusedBitsAtEndOfSection3,1392 +numberOfUsedSpatialTiles,1393 +numberOfUsedTileAttributes,1394 +numberOfUsefulPointsAlongXAxis,1395 +numberOfUsefulPointsAlongYAxis,1396 +_numberOfValues,1397 +numberOfValues,1398 +numberOfVerticalCoordinateValues,1399 +numberOfVerticalGridDescriptors,1400 +numberOfVerticalPoints,1401 +numberOfVGridUsed,1402 +numericValues,1403 +NUT,1404 +Nux,1405 +Nuy,1406 +NV,1407 +Nx,1408 +Ny,1409 +observablePropertyTemplate,1410 +observablePropertyTemplateNumber,1411 +observationDiagnostic,1412 +observationGeneratingProcessIdentifier,1413 +observationType,1414 +observedData,1415 +obstype,1416 +oceanAtmosphereCoupling,1417 +oceanLevName,1418 +oceanStream,1419 +octetAtWichPackedDataBegins,1420 +offset,1421 +offsetAfterBitmap,1422 +offsetAfterCentreLocalSection,1423 +offsetAfterData,1424 +offsetAfterLocalSection,1425 +offsetAfterPadding,1426 +offsetBBitmap,1427 +offsetBeforeBitmap,1428 +offsetBeforeData,1429 +offsetBeforePL,1430 +offsetBeforePV,1431 +offsetBSection5,1432 +offsetBSection6,1433 +offsetBSection9,1434 +offsetdate,1435 +offsetDescriptors,1436 +offsetEndSection4,1437 +offsetFreeFormData,1438 +offsetFromOriginToInnerBound,1439 +offsetFromReferenceOfFirstTime,1440 +offsetICEFieldsUsed,1441 +offsetSection0,1442 +offsetSection1,1443 +offsetSection10,1444 +offsetSection11,1445 +offsetSection2,1446 +offsetSection3,1447 +offsetSection4,1448 +offsetSection5,1449 +offsetSection6,1450 +offsetSection7,1451 +offsetSection8,1452 +offsetSection9,1453 +offsettime,1454 +offsetToEndOf4DvarWindow,1455 +offsetValuesBy,1456 +oldSubtype,1457 +one,1458 +oneConstant,1459 +oneMillionConstant,1460 +oneMinuteMeanMaximumRVR1,1461 +oneMinuteMeanMaximumRVR2,1462 +oneMinuteMeanMaximumRVR3,1463 +oneMinuteMeanMaximumRVR4,1464 +oneMinuteMeanMinimumRVR1,1465 +oneMinuteMeanMinimumRVR2,1466 +oneMinuteMeanMinimumRVR3,1467 +oneMinuteMeanMinimumRVR4,1468 +oneThousand,1469 +oper,1470 +operatingMode,1471 +operationalForecastCluster,1472 +operStream,1473 +optimisationTime,1474 +optimizeScaleFactor,1475 +optionalData,1476 +opttime,1477 +orderOfSpatialDifferencing,1478 +orderOfSPD,1479 +orientationOfTheGrid,1480 +orientationOfTheGridInDegrees,1481 +origin,1482 +Original_CodeTable_2_Version_Number,1483 +Original_Parameter_Iden_CodeTable2,1484 +Original_Parameter_Identifier,1485 +originalParameterNumber,1486 +originalParameterTableNumber,1487 +originalSubCentreIdentifier,1488 +originatingCentre,1489 +originatingCentreOfAnalysis,1490 +originatingClass,1491 +originatorLocalTemplate,1492 +originatorLocalTemplateNumber,1493 +originOfPostProcessing,1494 +overlayTemplate,1495 +overlayTemplateNumber,1496 +P,1497 +P1,1498 +P2,1499 +pack,1500 +packedValues,1501 +packingError,1502 +packingType,1503 +padding,1504 +padding_grid1_1,1505 +padding_grid1_2,1506 +padding_grid3_1,1507 +padding_grid4_1,1508 +padding_grid50_1,1509 +padding_grid5_1,1510 +padding_grid90_1,1511 +padding_loc10_1,1512 +padding_loc12_1,1513 +padding_loc13_1,1514 +padding_loc13_2,1515 +padding_loc13_3,1516 +padding_loc13_4,1517 +padding_loc13_5,1518 +padding_loc14_1,1519 +padding_loc14_2,1520 +padding_loc15_1,1521 +padding_loc16_1,1522 +padding_loc17_2,1523 +padding_loc18_1,1524 +padding_loc18_2,1525 +padding_loc190_1,1526 +padding_loc191_1,1527 +padding_loc191_2,1528 +padding_loc191_3,1529 +padding_loc19_2,1530 +padding_loc192_1,1531 +padding_loc20_1,1532 +padding_loc2_1,1533 +padding_loc21_1,1534 +padding_loc2_2,1535 +padding_loc23_1,1536 +padding_loc244_1,1537 +padding_loc244_2,1538 +padding_loc244_3,1539 +padding_loc245_1,1540 +padding_loc245_2,1541 +padding_loc26_1,1542 +padding_loc27_1,1543 +padding_loc27_2,1544 +padding_loc28_1,1545 +padding_loc29_1,1546 +padding_loc29_2,1547 +padding_loc29_3,1548 +padding_loc30_1,1549 +padding_loc30_2,1550 +padding_loc3_1,1551 +padding_loc37_1,1552 +padding_loc37_2,1553 +padding_loc38_1,1554 +padding_loc4_2,1555 +padding_loc50_1,1556 +padding_loc5_1,1557 +padding_loc6_1,1558 +padding_loc7_1,1559 +padding_loc9_1,1560 +padding_loc9_2,1561 +padding_local1_1,1562 +padding_local11_1,1563 +padding_local1_31,1564 +padding_local_35,1565 +padding_local40_1,1566 +padding_local_7_1,1567 +padding_sec1_loc,1568 +padding_sec2_1,1569 +padding_sec2_2,1570 +padding_sec2_3,1571 +padding_sec3_1,1572 +padding_sec4_1,1573 +paleontologicalOffset,1574 +param,1575 +parameter,1576 +parameterCategory,1577 +parameterCode,1578 +parameterDiscipline,1579 +parameterIndicator,1580 +parameterName,1581 +parameterNumber,1582 +parameters,1583 +parametersVersion,1584 +parameterUnits,1585 +paramId,1586 +paramIdECMF,1587 +paramIdLegacyECMF,1588 +param_value_max,1589 +param_value_min,1590 +partitionItems,1591 +partitionNumber,1592 +partitions,1593 +partitionTable,1594 +pastTendencyRVR1,1595 +pastTendencyRVR2,1596 +pastTendencyRVR3,1597 +pastTendencyRVR4,1598 +patch_precip_fp,1599 +pentagonalResolutionParameterJ,1600 +pentagonalResolutionParameterK,1601 +pentagonalResolutionParameterM,1602 +percentileValue,1603 +periodOfTime,1604 +periodOfTimeIntervals,1605 +perturbationNumber,1606 +perturbedType,1607 +phase,1608 +physicalFlag1,1609 +physicalFlag2,1610 +physicalMeaningOfVerticalCoordinate,1611 +P_INST,1612 +pl,1613 +platform,1614 +PLPresent,1615 +plusOneinOrdersOfSPD,1616 +points,1617 +postAuxiliary,1618 +postAuxiliaryArrayPresent,1619 +postProcessing,1620 +powerOfTenUsedToScaleClimateWeight,1621 +preBitmapValues,1622 +precision,1623 +precisionOfTheUnpackedSubset,1624 +predefined_grid,1625 +predefined_grid_values,1626 +preferLocalConcepts,1627 +preProcessingParameter,1628 +present,1629 +presentTrend1,1630 +presentTrend2,1631 +presentTrend3,1632 +presentTrend4,1633 +presentWeather1Present,1634 +presentWeather1PresentTrend1,1635 +presentWeather1PresentTrend2,1636 +presentWeather1PresentTrend3,1637 +presentWeather1PresentTrend4,1638 +presentWeather2Present,1639 +presentWeather2PresentTrend1,1640 +presentWeather2PresentTrend2,1641 +presentWeather2PresentTrend3,1642 +presentWeather2PresentTrend4,1643 +presentWeather3Present,1644 +presentWeather3PresentTrend1,1645 +presentWeather3PresentTrend2,1646 +presentWeather3PresentTrend3,1647 +presentWeather3PresentTrend4,1648 +pressureLevel,1649 +pressureUnits,1650 +primaryBitmap,1651 +primaryMissingValue,1652 +primaryMissingValueSubstitute,1653 +probabilityType,1654 +probabilityTypeName,1655 +probContinous,1656 +probPoint,1657 +probProductDefinition,1658 +process,1659 +produceLargeConstantFields,1660 +product,1661 +************_PRODUCT_***************,1662 +productDefinition,1663 +productDefinitionTemplateNumber,1664 +productDefinitionTemplateNumberInternal,1665 +productIdentifier,1666 +Product_Identifier,1667 +productionStatusOfProcessedData,1668 +productType,1669 +projectionCenterFlag,1670 +projectionCentreFlag,1671 +projectLocalTemplate,1672 +projectLocalTemplateNumber,1673 +projSourceString,1674 +projString,1675 +projTargetString,1676 +P_TACC,1677 +P_TAVG,1678 +PUnset,1679 +pv,1680 +pvlLocation,1681 +PVPresent,1682 +qfe,1683 +qfePresent,1684 +qfeUnits,1685 +qnh,1686 +qnhAPresent,1687 +qnhPresent,1688 +qnhUnits,1689 +qualityControl,1690 +qualityControlIndicator,1691 +qualityValueAssociatedWithParameter,1692 +quantile,1693 +quantileValue,1694 +radialAngularSpacing,1695 +radials,1696 +radius,1697 +radiusInMetres,1698 +radiusOfCentralCluster,1699 +radiusOfClusterDomain,1700 +radiusOfTheEarth,1701 +range,1702 +rangeBinSpacing,1703 +rdbDateTime,1704 +rdb_key,1705 +rdbSubtype,1706 +rdbtime,1707 +rdbtimeDate,1708 +rdbtimeDay,1709 +rdbtimeHour,1710 +rdbtimeMinute,1711 +rdbtimeMonth,1712 +rdbtimeSecond,1713 +rdbtimeTime,1714 +rdbtimeYear,1715 +rdbType,1716 +realPart,1717 +realPartOf00,1718 +recDateTime,1719 +recentWeather,1720 +recentWeatherTry,1721 +rectime,1722 +rectimeDay,1723 +rectimeHour,1724 +rectimeMinute,1725 +rectimeSecond,1726 +reducedGrid,1727 +refdate,1728 +reference,1729 +referenceDate,1730 +referenceForGroupLengths,1731 +referenceForGroupWidths,1732 +referenceOfLengths,1733 +referenceOfWidths,1734 +referenceReflectivityForEchoTop,1735 +referenceSampleInterval,1736 +referenceStep,1737 +referenceValue,1738 +referenceValueError,1739 +reflectivityCalibrationConstant,1740 +remarkPresent,1741 +RENAME,1742 +reportType,1743 +representationMode,1744 +representationType,1745 +representativeMember,1746 +reserved,1747 +reserved1,1748 +reserved2,1749 +reserved3,1750 +reservedNeedNotBePresent,1751 +reservedOctet,1752 +reservedSection2,1753 +reservedSection3,1754 +reservedSection4,1755 +resolutionAndComponentFlags,1756 +resolutionAndComponentFlags1,1757 +resolutionAndComponentFlags2,1758 +resolutionAndComponentFlags3,1759 +resolutionAndComponentFlags4,1760 +resolutionAndComponentFlags6,1761 +resolutionAndComponentFlags7,1762 +resolutionAndComponentFlags8,1763 +restricted,1764 +rootGroupObjectHeaderAddress,1765 +rootGroupSymbolTableEntry,1766 +rootTablesDir,1767 +roundedMarsLatitude,1768 +roundedMarsLevelist,1769 +roundedMarsLongitude,1770 +runwayBrakingActionState1,1771 +runwayBrakingActionState2,1772 +runwayBrakingActionState3,1773 +runwayBrakingActionState4,1774 +runwayDepositCodeState1,1775 +runwayDepositCodeState2,1776 +runwayDepositCodeState3,1777 +runwayDepositCodeState4,1778 +runwayDepositState1,1779 +runwayDepositState2,1780 +runwayDepositState3,1781 +runwayDepositState4,1782 +runwayDepthOfDepositCodeState1,1783 +runwayDepthOfDepositCodeState2,1784 +runwayDepthOfDepositCodeState3,1785 +runwayDepthOfDepositCodeState4,1786 +runwayDepthOfDepositState1,1787 +runwayDepthOfDepositState2,1788 +runwayDepthOfDepositState3,1789 +runwayDepthOfDepositState4,1790 +runwayDesignatorRVR1,1791 +runwayDesignatorRVR2,1792 +runwayDesignatorRVR3,1793 +runwayDesignatorRVR4,1794 +runwayDesignatorState1,1795 +runwayDesignatorState2,1796 +runwayDesignatorState3,1797 +runwayDesignatorState4,1798 +runwayExtentOfContaminationCodeState1,1799 +runwayExtentOfContaminationCodeState2,1800 +runwayExtentOfContaminationCodeState3,1801 +runwayExtentOfContaminationCodeState4,1802 +runwayExtentOfContaminationState1,1803 +runwayExtentOfContaminationState2,1804 +runwayExtentOfContaminationState3,1805 +runwayExtentOfContaminationState4,1806 +runwayFrictionCodeValueState1,1807 +runwayFrictionCodeValueState2,1808 +runwayFrictionCodeValueState3,1809 +runwayFrictionCodeValueState4,1810 +runwayFrictionCoefficientCodeState1,1811 +runwayFrictionCoefficientCodeState2,1812 +runwayFrictionCoefficientCodeState3,1813 +runwayFrictionCoefficientCodeState4,1814 +runwayFrictionCoefficientState1,1815 +runwayFrictionCoefficientState2,1816 +runwayFrictionCoefficientState3,1817 +runwayFrictionCoefficientState4,1818 +runwaySideCodeState1,1819 +runwaySideCodeState2,1820 +runwaySideCodeState3,1821 +runwaySideCodeState4,1822 +runwayState,1823 +RVR1_1,1824 +RVR2_1,1825 +RVR3_1,1826 +RVR4_1,1827 +sampleSizeOfModelClimate,1828 +satelliteID,1829 +satelliteIdentifier,1830 +satelliteNumber,1831 +satelliteSeries,1832 +scaledDirections,1833 +scaledFrequencies,1834 +scaledValueOfCentralWaveNumber,1835 +scaledValueOfDistanceFromEnsembleMean,1836 +scaledValueOfDistributionFunctionParameter,1837 +scaledValueOfEarthMajorAxis,1838 +scaledValueOfEarthMinorAxis,1839 +scaledValueOfFirstFixedSurface,1840 +scaledValueOfFirstSize,1841 +scaledValueOfFirstWavelength,1842 +scaledValueOfLengthOfSemiMajorAxis,1843 +scaledValueOfLengthOfSemiMinorAxis,1844 +scaledValueOfLowerLimit,1845 +scaledValueOfMajorAxisOfOblateSpheroidEarth,1846 +scaledValueOfMinorAxisOfOblateSpheroidEarth,1847 +scaledValueOfPrimeMeridianOffset,1848 +scaledValueOfRadiusOfSphericalEarth,1849 +scaledValueOfSecondFixedSurface,1850 +scaledValueOfSecondSize,1851 +scaledValueOfSecondWavelength,1852 +scaledValueOfStandardDeviation,1853 +scaledValueOfStandardDeviationInTheCluster,1854 +scaledValueOfUpperLimit,1855 +scaleFactorAtReferencePoint,1856 +scaleFactorOfCentralWaveNumber,1857 +scaleFactorOfDistanceFromEnsembleMean,1858 +scaleFactorOfDistributionFunctionParameter,1859 +scaleFactorOfEarthMajorAxis,1860 +scaleFactorOfEarthMinorAxis,1861 +scaleFactorOfFirstFixedSurface,1862 +scaleFactorOfFirstSize,1863 +scaleFactorOfFirstWavelength,1864 +scaleFactorOfLengthOfSemiMajorAxis,1865 +scaleFactorOfLengthOfSemiMinorAxis,1866 +scaleFactorOfLowerLimit,1867 +scaleFactorOfMajorAxisOfOblateSpheroidEarth,1868 +scaleFactorOfMinorAxisOfOblateSpheroidEarth,1869 +scaleFactorOfPrimeMeridianOffset,1870 +scaleFactorOfRadiusOfSphericalEarth,1871 +scaleFactorOfSecondFixedSurface,1872 +scaleFactorOfSecondSize,1873 +scaleFactorOfSecondWavelength,1874 +scaleFactorOfStandardDeviation,1875 +scaleFactorOfStandardDeviationInTheCluster,1876 +scaleFactorOfUpperLimit,1877 +scaleValuesBy,1878 +scalingFactorForFrequencies,1879 +scanningMode,1880 +scanningMode4,1881 +scanningMode5,1882 +scanningMode6,1883 +scanningMode7,1884 +scanningMode8,1885 +scanningModeForOneDiamond,1886 +scanPosition,1887 +sd,1888 +second,1889 +secondaryBitmap,1890 +secondaryBitMap,1891 +secondaryBitmapPresent,1892 +secondaryBitmaps,1893 +secondaryBitmapsCount,1894 +secondaryBitmapsSize,1895 +secondaryMissingValue,1896 +secondaryMissingValueSubstitute,1897 +secondDimension,1898 +secondDimensionCoordinateValueDefinition,1899 +secondDimensionPhysicalSignificance,1900 +secondLatitude,1901 +SecondLatitude,1902 +secondLatitudeInDegrees,1903 +secondOfEndOfOverallTimeInterval,1904 +secondOfForecast,1905 +secondOfForecastUsedInLocalTime,1906 +secondOfModelVersion,1907 +SecondOfModelVersion,1908 +secondOrderFlags,1909 +secondOrderOfDifferentWidth,1910 +secondOrderValuesDifferentWidths,1911 +secondSize,1912 +secondsOfAnalysis,1913 +secondsOfReference,1914 +section,1915 +section_01,1916 +section_02,1917 +section_03,1918 +section_04,1919 +section_05,1920 +section_06,1921 +section_07,1922 +section_08,1923 +section_09,1924 +section0Length,1925 +section0Pointer,1926 +section_1,1927 +section1,1928 +section_10,1929 +section10Length,1930 +section10Pointer,1931 +section_11,1932 +section11Length,1933 +section11Pointer,1934 +section1Flags,1935 +section1Length,1936 +section1Padding,1937 +section1Pointer,1938 +section_2,1939 +section2Length,1940 +section2Padding,1941 +section2Pointer,1942 +section2Present,1943 +section2Used,1944 +section_3,1945 +section3Flags,1946 +section3Length,1947 +section3Padding,1948 +section3Pointer,1949 +section3UniqueIdentifier,1950 +section_4,1951 +section4,1952 +section4Length,1953 +section4Padding,1954 +section4Pointer,1955 +section4UniqueIdentifier,1956 +section_5,1957 +section5,1958 +section5Length,1959 +section5Pointer,1960 +section5UniqueIdentifier,1961 +section_6,1962 +section6,1963 +section6Length,1964 +section6Pointer,1965 +section6UniqueIdentifier,1966 +section_7,1967 +section7,1968 +section7Length,1969 +section7Pointer,1970 +section7UniqueIdentifier,1971 +section_8,1972 +section8,1973 +section8Length,1974 +section8Pointer,1975 +section8UniqueIdentifier,1976 +section9Length,1977 +section9Pointer,1978 +section9UniqueIdentifier,1979 +sectionLengthLimitForEnsembles,1980 +sectionLengthLimitForProbability,1981 +sectionNumber,1982 +sectionPosition,1983 +selectedDay,1984 +selectedFcIndex,1985 +selectedHour,1986 +selectedMinute,1987 +selectedMonth,1988 +selectedSecond,1989 +selectedYear,1990 +selectStepTemplateInstant,1991 +selectStepTemplateInterval,1992 +sensitiveAreaDomain,1993 +sequences,1994 +setBitsPerValue,1995 +setCalendarId,1996 +setDecimalPrecision,1997 +setLocalDefinition,1998 +setToMissingIfOutOfRange,1999 +sfc_levtype,2000 +shapeOfTheEarth,2001 +shapeOfVerificationArea,2002 +short_name,2003 +shortName,2004 +shortNameECMF,2005 +shortNameLegacyECMF,2006 +Show_Combination_Ensem_E2_0_no_1_yes,2007 +Show_Combination_Ensem_E3_0_no_1_yes,2008 +Show_Combination_Ensem_E4_0_no_1_yes,2009 +signature,2010 +significanceOfReferenceDateAndTime,2011 +significanceOfReferenceTime,2012 +simpleThinningMissingRadius,2013 +simpleThinningSkip,2014 +simpleThinningStart,2015 +siteElevation,2016 +siteId,2017 +siteLatitude,2018 +siteLongitude,2019 +sizeOfLength,2020 +sizeOfOffsets,2021 +sizeOfPostAuxiliaryArray,2022 +sizeOfPostAuxiliaryArrayPlusOne,2023 +skew,2024 +skewness,2025 +skipExtraKeyAttributes,2026 +SOH,2027 +sort,2028 +sourceOfGridDefinition,2029 +sourceSinkChemicalPhysicalProcess,2030 +southEastLatitudeOfLPOArea,2031 +southEastLatitudeOfVerficationArea,2032 +southEastLongitudeOfLPOArea,2033 +southEastLongitudeOfVerficationArea,2034 +southernLatitudeOfClusterDomain,2035 +southernLatitudeOfDomain,2036 +southLatitudeOfCluster,2037 +southLatitudeOfDomainOfTubing,2038 +southPoleOnProjectionPlane,2039 +sp1,2040 +sp2,2041 +sp3,2042 +spaceUnitFlag,2043 +spacingOfBinsAlongRadials,2044 +spare,2045 +spare1,2046 +spare2,2047 +spare3,2048 +spare4,2049 +spatialProcessing,2050 +spatialSmoothingOfProduct,2051 +SPD,2052 +spectralDataRepresentationMode,2053 +spectralDataRepresentationType,2054 +spectralMode,2055 +spectralType,2056 +sphericalHarmonics,2057 +standardDeviation,2058 +standardParallel,2059 +standardParallelInDegrees,2060 +standardParallelInMicrodegrees,2061 +startingAzimuth,2062 +startOfHeaders,2063 +startOfMessage,2064 +startOfRange,2065 +startStep,2066 +startStepInHours,2067 +startTimeStep,2068 +statisticalProcess,2069 +statisticalProcessesList,2070 +statistics,2071 +status,2072 +step,2073 +stepForClustering,2074 +stepHumanReadable,2075 +stepInHours,2076 +stepRange,2077 +stepRangeInHours,2078 +stepType,2079 +stepTypeForConversion,2080 +stepTypeInternal,2081 +stepUnits,2082 +stepZero,2083 +stream,2084 +streamOfAnalysis,2085 +stretchingFactor,2086 +stretchingFactorScaled,2087 +stringValues,2088 +subCentre,2089 +subcentreOfAnalysis,2090 +subDefinitions1,2091 +subDefinitions2,2092 +subdivisionsOfBasicAngle,2093 +Sub-Experiment_Identifier,2094 +subLocalDefinition1,2095 +subLocalDefinition2,2096 +subLocalDefinitionLength1,2097 +subLocalDefinitionLength2,2098 +subLocalDefinitionNumber1,2099 +subLocalDefinitionNumber2,2100 +subSetJ,2101 +subSetK,2102 +subSetM,2103 +suiteName,2104 +superblockExtensionAddress,2105 +swapScanningAlternativeRows,2106 +swapScanningLat,2107 +swapScanningLon,2108 +swapScanningX,2109 +swapScanningY,2110 +system,2111 +systemNumber,2112 +t,2113 +_T,2114 +table2Version,2115 +tableCode,2116 +tableNumber,2117 +tableReference,2118 +tablesLocalDir,2119 +tablesMasterDir,2120 +tablesVersion,2121 +tablesVersionLatest,2122 +tablesVersionLatestOfficial,2123 +TAF,2124 +TAFstr,2125 +targetCompressionRatio,2126 +td,2127 +temperature,2128 +temperatureAndDewpointPresent,2129 +templatesLocalDir,2130 +templatesMasterDir,2131 +tempPressureUnits,2132 +theHindcastMarsStream,2133 +theMessage,2134 +thisExperimentVersionNumber,2135 +thisMarsClass,2136 +thisMarsStream,2137 +thisMarsType,2138 +thousand,2139 +three,2140 +threshold,2141 +thresholdIndicator,2142 +Threshold_Or_Distribution_0_no_1_yes,2143 +Threshold_Or_Distribution_Units,2144 +TIDE,2145 +tiggeCentre,2146 +tiggeLAMName,2147 +tiggeLocalVersion,2148 +tiggeModel,2149 +tigge_name,2150 +tiggeSection,2151 +tigge_short_name,2152 +tiggeSuiteID,2153 +tileClassification,2154 +tileIndex,2155 +time,2156 +timeCoordinateDefinition,2157 +timeDomainTemplate,2158 +timeDomainTemplateNumber,2159 +timeIncrement,2160 +timeIncrementBetweenSuccessiveFields,2161 +timeOfAnalysis,2162 +timeOfForecast,2163 +timeOfForecastUsedInLocalTime,2164 +timeOfModelVersion,2165 +timeOfReference,2166 +timeRangeIndicator,2167 +timeRangeIndicatorFromStepRange,2168 +Time_Range_One_E2,2169 +Time_Range_One_E3,2170 +Time_Range_One_E4,2171 +Time_Range_Two_E2,2172 +Time_Range_Two_E3,2173 +Time_Range_Two_E4,2174 +timerepres,2175 +timeUnitFlag,2176 +topLevel,2177 +total,2178 +totalAerosolBinsNumbers,2179 +totalInitialConditions,2180 +totalLength,2181 +totalNumber,2182 +Total_Number_Members_Missing,2183 +Total_Number_Members_Possible,2184 +Total_Number_Members_Used,2185 +totalNumberOfClusters,2186 +totalNumberOfDataValuesMissingInStatisticalProcess,2187 +totalNumberOfdimensions,2188 +totalNumberOfDirections,2189 +totalNumberOfForecastProbabilities,2190 +totalNumberOfFrequencies,2191 +totalNumberOfGridPoints,2192 +totalNumberOfIterations,2193 +totalNumberOfQuantiles,2194 +totalNumberOfRepetitions,2195 +totalNumberOfTileAttributePairs,2196 +totalNumberOfTubes,2197 +totalNumberOfValuesInUnpackedSubset,2198 +treatmentOfMissingData,2199 +true,2200 +trueLengthOfLastGroup,2201 +truncateDegrees,2202 +truncateLaplacian,2203 +_TS,2204 +TS,2205 +TScalc,2206 +tsectionNumber3,2207 +tsectionNumber4,2208 +tsectionNumber5,2209 +TT,2210 +tubeDomain,2211 +tubeNumber,2212 +two,2213 +twoOrdersOfSPD,2214 +type,2215 +TYPE_AN,2216 +TYPE_CF,2217 +TYPE_FC,2218 +TYPE_FF,2219 +TYPE_FX,2220 +TYPE_OF,2221 +typeOfAnalysis,2222 +typeOfAuxiliaryInformation,2223 +typeOfCalendar,2224 +typeOfCompressionUsed,2225 +typeOfDistributionFunction,2226 +typeOfEnsembleForecast,2227 +typeOfEnsembleMember,2228 +typeOfFirstFixedSurface,2229 +typeOfGeneratingProcess,2230 +typeOfGrid,2231 +typeOfHorizontalLine,2232 +typeOfIntervalForFirstAndSecondSize,2233 +typeOfIntervalForFirstAndSecondWavelength,2234 +typeOfLevel,2235 +typeOfLevelECMF,2236 +typeOfOriginalFieldValues,2237 +typeOfPacking,2238 +typeOfPostProcessing,2239 +typeOfPreProcessing,2240 +typeOfProcessedData,2241 +typeOfSecondFixedSurface,2242 +typeOfSizeInterval,2243 +typeOfSSTFieldUsed,2244 +typeOfStatisticalPostProcessingOfEnsembleMembers,2245 +typeOfStatisticalProcessing,2246 +typeOfTimeIncrement,2247 +typeOfTimeIncrementBetweenSuccessiveFieldsUsedInTheStatisticalProcessing,2248 +typeOfWavelengthInterval,2249 +TYPE_OR,2250 +TYPE_PF,2251 +typicalCentury,2252 +typicalDate,2253 +typicalDateTime,2254 +typicalDay,2255 +typicalHour,2256 +typicalMinute,2257 +typicalMonth,2258 +typicalSecond,2259 +typicalTime,2260 +typicalYear,2261 +typicalYear2,2262 +typicalYearOfCentury,2263 +uco,2264 +ucs,2265 +unexpandedDescriptors,2266 +unexpandedDescriptorsEncoded,2267 +unitOfOffsetFromReferenceTime,2268 +unitOfTime,2269 +unitOfTimeIncrement,2270 +unitOfTimeRange,2271 +units,2272 +unitsBias,2273 +unitsConversionOffset,2274 +unitsConversionScaleFactor,2275 +unitsDecimalScaleFactor,2276 +unitsECMF,2277 +unitsFactor,2278 +unitsLegacyECMF,2279 +unitsOfFirstFixedSurface,2280 +unitsOfSecondFixedSurface,2281 +unknown,2282 +unpack,2283 +unpackedError,2284 +unpackedSubsetPrecision,2285 +unpackedValues,2286 +unsignedIntegers,2287 +unstructuredGrid,2288 +unstructuredGridSubtype,2289 +unstructuredGridType,2290 +unstructuredGridUUID,2291 +unusedBitsInBitmap,2292 +updateSequenceNumber,2293 +upperLimit,2294 +upperRange,2295 +upperThreshold,2296 +upperThresholdValue,2297 +Used_Model_LBC,2298 +Used_Model_LBC_E2,2299 +Used_Model_LBC_E3,2300 +Used_Model_LBC_E4,2301 +userDateEnd,2302 +userDateStart,2303 +userDateTimeEnd,2304 +userDateTimeStart,2305 +userTimeEnd,2306 +userTimeStart,2307 +uuidOfHGrid,2308 +uuidOfVGrid,2309 +uvRelativeToGrid,2310 +validityDate,2311 +validityTime,2312 +values,2313 +variationOfVisibility,2314 +variationOfVisibilityDirection,2315 +variationOfVisibilityDirectionAngle,2316 +variationOfVisibilityDirectionTrend1,2317 +variationOfVisibilityDirectionTrend2,2318 +variationOfVisibilityDirectionTrend3,2319 +variationOfVisibilityDirectionTrend4,2320 +variationOfVisibilityTrend1,2321 +variationOfVisibilityTrend2,2322 +variationOfVisibilityTrend3,2323 +variationOfVisibilityTrend4,2324 +varno,2325 +verificationDate,2326 +verificationMonth,2327 +verificationYear,2328 +verifyingMonth,2329 +version,2330 +versionNumberOfExperimentalSuite,2331 +versionNumberOfGribLocalTables,2332 +versionNumberOfSuperblock,2333 +versionNumOfFilesFreeSpaceStorage,2334 +versionNumOfRootGroupSymbolTableEntry,2335 +versionNumOfSharedHeaderMessageFormat,2336 +versionOfModelClimate,2337 +verticalCoordinate,2338 +verticalCoordinateDefinition,2339 +verticalDomainTemplate,2340 +verticalDomainTemplateNumber,2341 +verticalVisibility,2342 +verticalVisibilityCoded,2343 +visibility,2344 +visibilityInKilometresTrend1,2345 +visibilityInKilometresTrend2,2346 +visibilityInKilometresTrend3,2347 +visibilityInKilometresTrend4,2348 +visibilityTrend1,2349 +visibilityTrend2,2350 +visibilityTrend3,2351 +visibilityTrend4,2352 +waveDomain,2353 +weightAppliedToClimateMonth1,2354 +westernLongitudeOfClusterDomain,2355 +westernLongitudeOfDomain,2356 +westLongitudeOfCluster,2357 +westLongitudeOfDomainOfTubing,2358 +widthOfFirstOrderValues,2359 +widthOfLengths,2360 +widthOfSPD,2361 +widthOfWidths,2362 +windDirection,2363 +windDirectionTrend1,2364 +windDirectionTrend2,2365 +windDirectionTrend3,2366 +windDirectionTrend4,2367 +windGust,2368 +windGustTrend1,2369 +windGustTrend2,2370 +windGustTrend3,2371 +windGustTrend4,2372 +windPresent,2373 +windSpeed,2374 +windSpeedTrend1,2375 +windSpeedTrend2,2376 +windSpeedTrend3,2377 +windSpeedTrend4,2378 +windUnits,2379 +windUnitsTrend1,2380 +windUnitsTrend2,2381 +windUnitsTrend3,2382 +windUnitsTrend4,2383 +windVariableDirection,2384 +windVariableDirectionTrend1,2385 +windVariableDirectionTrend2,2386 +windVariableDirectionTrend3,2387 +windVariableDirectionTrend4,2388 +WMO,2389 +WRAP,2390 +WRAPstr,2391 +wrongPadding,2392 +X1,2393 +X1InGridLengths,2394 +X2,2395 +X2InGridLengths,2396 +xCoordinateOfOriginOfSectorImage,2397 +xCoordinateOfSubSatellitePoint,2398 +xDirectionGridLength,2399 +xDirectionGridLengthInMetres,2400 +xDirectionGridLengthInMillimetres,2401 +xFirst,2402 +xLast,2403 +Xo,2404 +Xp,2405 +XpInGridLengths,2406 +XR,2407 +XRInMetres,2408 +Y1,2409 +Y1InGridLengths,2410 +Y2,2411 +Y2InGridLengths,2412 +yCoordinateOfOriginOfSectorImage,2413 +yCoordinateOfSubSatellitePoint,2414 +yDirectionGridLength,2415 +yDirectionGridLengthInMetres,2416 +yDirectionGridLengthInMillimetres,2417 +year,2418 +yearOfAnalysis,2419 +yearOfCentury,2420 +yearOfEndOfOverallTimeInterval,2421 +yearOfForecast,2422 +yearOfForecastUsedInLocalTime,2423 +yearOfModelVersion,2424 +YearOfModelVersion,2425 +yearOfReference,2426 +yFirst,2427 +yLast,2428 +Yo,2429 +Yp,2430 +YpInGridLengths,2431 +YR,2432 +YRInMetres,2433 +YY,2434 +zero,2435 +zeros,2436 +ZLBASE,2437 +ZLMULT,2438 From 9bc8bddcb40159428701437cc9bb3eac3ac212a4 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 12 Apr 2023 17:54:29 +0100 Subject: [PATCH 053/378] Update list of keys and hash --- src/grib_hash_keys.cc | 4880 ++++++++++++++++++++-------------------- src/grib_itrie_keys.cc | 4 - tests/keys | 4872 +++++++++++++++++++-------------------- 3 files changed, 4874 insertions(+), 4882 deletions(-) diff --git a/src/grib_hash_keys.cc b/src/grib_hash_keys.cc index a68403d91..67c10cc03 100644 --- a/src/grib_hash_keys.cc +++ b/src/grib_hash_keys.cc @@ -2713,3718 +2713,3718 @@ static const unsigned char lengthtable[] = static const struct grib_keys_hash wordlist[] = { {""}, {""}, {""}, - {"n",1220}, + {"n",1339}, {""}, - {"nd",1242}, - {"ed",477}, - {"nnn",1255}, - {"td",2127}, - {"t",2113}, + {"nd",1349}, + {"ed",725}, + {"nnn",1353}, + {"td",2180}, + {"t",2169}, {""}, - {"nt",1275}, - {"sd",1888}, - {"na",1226}, + {"nt",1367}, + {"sd",1952}, + {"na",1342}, {""}, - {"m",1082}, + {"m",1217}, {""}, - {"dy",462}, - {"date",375}, + {"dy",715}, + {"date",646}, {""}, - {"year",2418}, - {"name",1227}, - {"min",1168}, - {"day",390}, - {"data",356}, + {"year",2429}, + {"name",1343}, + {"min",1300}, + {"day",658}, + {"data",627}, {""}, {""}, - {"ident",751}, - {"one",1458}, - {"time",2156}, + {"ident",961}, + {"one",1541}, + {"time",2206}, {""}, {""}, {""}, - {"mars",1085}, + {"mars",1220}, {""}, {""}, - {"names",1232}, + {"names",1348}, {""}, {""}, {""}, - {"stream",2084}, - {"sort",2028}, + {"stream",2141}, + {"sort",2086}, {""}, - {"enorm",520}, + {"enorm",767}, {""}, {""}, - {"metadata",1162}, + {"metadata",1296}, {""}, - {"type",2215}, - {"system",2111}, - {"eps",534}, - {"domain",450}, - {"spare",2045}, + {"type",2252}, + {"system",2167}, + {"eps",772}, + {"domain",708}, + {"spare",2103}, {""}, {""}, {""}, - {"edition",478}, - {"oper",1470}, - {"present",1629}, - {"param",1575}, + {"edition",726}, + {"oper",1553}, + {"present",1704}, + {"param",1652}, {""}, {""}, {""}, {""}, {""}, {""}, - {"parameter",1576}, - {"iteration",835}, + {"parameter",1658}, + {"iteration",1035}, {""}, - {"assertion",36}, - {"dimension",430}, + {"assertion",317}, + {"dimension",691}, {""}, - {"centre",129}, + {"centre",401}, {""}, {""}, {""}, - {"step",2073}, + {"step",2130}, {""}, - {"true",2200}, + {"true",2241}, {""}, {""}, {""}, - {"parameters",1583}, - {"core",331}, - {"timerepres",2175}, - {"opttime",1477}, - {"points",1617}, + {"parameters",1666}, + {"core",602}, + {"timerepres",2220}, + {"opttime",1560}, + {"points",1692}, {""}, {""}, - {"rectime",1722}, + {"rectime",1791}, {""}, {""}, {""}, - {"second",1889}, + {"second",1953}, {""}, {""}, - {"const",304}, - {"minute",1170}, - {"restricted",1764}, - {"dummy",454}, + {"const",575}, + {"minute",1302}, + {"restricted",1832}, + {"dummy",710}, {""}, - {"units",2272}, + {"units",2301}, {""}, - {"stepZero",2083}, - {"radius",1697}, + {"stepZero",2140}, + {"radius",1766}, {""}, {""}, - {"section",1915}, - {"status",2072}, + {"section",1977}, + {"status",2129}, {""}, - {"partitions",1593}, + {"partitions",1671}, {""}, - {"leadtime",928}, - {"direction",433}, + {"leadtime",1100}, + {"direction",694}, {""}, {""}, - {"radials",1696}, - {"instrument",790}, + {"radials",1765}, + {"instrument",992}, {""}, {""}, {""}, - {"minimum",1169}, + {"minimum",1301}, {""}, {""}, {""}, - {"three",2140}, - {"dateTime",388}, + {"three",2193}, + {"dateTime",656}, {""}, - {"hdate",722}, - {"dataTime",372}, - {"landtype",868}, + {"hdate",933}, + {"dataTime",642}, + {"landtype",1057}, {""}, {""}, - {"statistics",2071}, + {"statistics",2128}, {""}, {""}, {""}, - {"process",1659}, - {"ucs",2265}, - {"two",2213}, + {"process",1734}, + {"ucs",2294}, + {"two",2250}, {""}, {""}, {""}, {""}, {""}, - {"precision",1623}, + {"precision",1699}, {""}, {""}, - {"dataType",373}, + {"dataType",643}, {""}, - {"method",1165}, + {"method",1297}, {""}, {""}, - {"count",345}, - {"marsType",1114}, + {"count",616}, + {"marsType",1248}, {""}, {""}, {""}, {""}, - {"class",157}, - {"phase",1608}, + {"class",429}, + {"phase",1685}, {""}, - {"uco",2264}, + {"uco",2293}, {""}, {""}, {""}, - {"country",348}, + {"country",620}, {""}, {""}, {""}, {""}, {""}, - {"latitude",886}, - {"pl",1613}, - {"char",154}, - {"Dy",463}, - {"stepType",2079}, - {"model",1195}, - {"correction",336}, + {"latitude",1065}, + {"pl",1689}, + {"char",426}, + {"Dy",42}, + {"stepType",2136}, + {"model",1320}, + {"correction",607}, {""}, - {"total",2178}, - {"Di",421}, - {"normal",1256}, + {"total",2222}, + {"Di",30}, + {"normal",1356}, {""}, - {"consensus",302}, - {"product",1661}, + {"consensus",573}, + {"product",1736}, {""}, - {"latitudes",914}, - {"hundred",748}, + {"latitudes",1096}, + {"hundred",953}, {""}, {""}, - {"Dstart",453}, - {"reportType",1743}, + {"Dstart",38}, + {"reportType",1811}, {""}, {""}, - {"dataDate",359}, - {"range",1702}, - {"grid",698}, - {"million",1167}, - {"marsDir",1089}, - {"hour",735}, - {"dummyc",457}, + {"dataDate",630}, + {"range",1771}, + {"grid",911}, + {"million",1299}, + {"marsDir",1224}, + {"hour",944}, + {"dummyc",713}, {""}, {""}, - {"isSens",833}, + {"isSens",1021}, {"yFirst",2427}, {""}, - {"masterDir",1118}, - {"discipline",439}, + {"masterDir",1253}, + {"discipline",700}, {""}, - {"codeType",285}, + {"codeType",553}, {""}, - {"dataStream",370}, + {"dataStream",640}, {""}, {""}, {""}, {""}, {""}, - {"marsStream",1111}, + {"marsStream",1245}, {""}, - {"refdate",1728}, + {"refdate",1797}, {""}, - {"thousand",2139}, + {"thousand",2192}, {""}, {""}, {""}, - {"elementsTable",483}, + {"elementsTable",731}, {""}, {""}, - {"origin",1482}, + {"origin",1565}, {""}, {""}, {""}, {""}, - {"marsDomain",1090}, + {"marsDomain",1225}, {""}, - {"endStep",512}, + {"endStep",759}, {""}, {""}, {""}, {""}, {""}, - {"temperature",2128}, + {"temperature",2182}, {""}, {""}, {""}, {""}, {""}, - {"identifier",755}, - {"operStream",1473}, + {"identifier",965}, + {"operStream",1554}, {""}, {""}, {""}, {""}, - {"marsStep",1110}, - {"month",1206}, - {"startStep",2066}, - {"TT",2210}, + {"marsStep",1244}, + {"month",1327}, + {"startStep",2122}, + {"TT",237}, {""}, {""}, - {"accuracy",4}, - {"partitionTable",1594}, + {"accuracy",293}, + {"partitionTable",1670}, {""}, {""}, {""}, {""}, {""}, {""}, - {"rectimeDay",1723}, + {"rectimeDay",1792}, {""}, {""}, {""}, - {"reference",1729}, + {"reference",1798}, {""}, {""}, - {"notDecoded",1268}, + {"notDecoded",1366}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"marsQuantile",1107}, - {"reserved",1747}, - {"file",625}, + {"marsQuantile",1241}, + {"reserved",1815}, + {"file",851}, {""}, - {"signature",2010}, + {"signature",2069}, {""}, - {"false",617}, + {"false",844}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"local",976}, - {"dataKeys",361}, + {"local",1140}, + {"dataKeys",632}, {""}, {""}, {""}, - {"oceanStream",1419}, - {"standardDeviation",2058}, - {"categories",109}, + {"oceanStream",1502}, + {"standardDeviation",2115}, + {"categories",384}, {""}, {""}, - {"ieeeFloats",760}, - {"version",2330}, - {"windSpeed",2374}, - {"varno",2325}, + {"ieeeFloats",966}, + {"version",2355}, + {"windSpeed",2399}, + {"varno",2350}, {""}, {""}, {""}, - {"eight",482}, + {"eight",730}, {""}, {""}, - {"section8",1973}, + {"section8",2016}, {""}, {""}, {""}, - {"channel",152}, - {"fcperiod",622}, - {"endTimeStep",514}, - {"Ly",1080}, - {"gridType",707}, + {"channel",424}, + {"fcperiod",848}, + {"endTimeStep",761}, + {"Ly",153}, + {"gridType",920}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"Latin",881}, - {"threshold",2141}, - {"localTime",1017}, + {"Latin",113}, + {"threshold",2194}, + {"localTime",1168}, {""}, {""}, {""}, {""}, {"yLast",2428}, {""}, - {"eleven",485}, + {"eleven",733}, {""}, - {"conceptDir",294}, + {"conceptDir",565}, {""}, {""}, - {"platform",1614}, + {"platform",1690}, {""}, - {"hideThis",729}, + {"hideThis",938}, {""}, {""}, {""}, {""}, {""}, {""}, - {"diagnostic",423}, + {"diagnostic",687}, {""}, {""}, {""}, - {"g",665}, + {"g",888}, {""}, {""}, {""}, - {"longitude",1024}, + {"longitude",1176}, {""}, {""}, - {"typicalDay",2255}, + {"typicalDay",2284}, {""}, - {"aerosolType",19}, + {"aerosolType",299}, {""}, {""}, {""}, - {"Lap",869}, + {"Lap",108}, {""}, {""}, {""}, - {"matchSort",1125}, - {"Lcy",926}, - {"longitudes",1054}, + {"matchSort",1260}, + {"Lcy",120}, + {"longitudes",1207}, {""}, - {"levtype",953}, - {"elevation",484}, + {"levtype",1124}, + {"elevation",732}, {""}, {""}, {""}, {""}, {""}, - {"Lop",1058}, - {"Luy",1076}, - {"endDescriptors",490}, + {"Lop",142}, + {"Luy",149}, + {"endDescriptors",738}, {""}, {""}, {""}, {""}, - {"dataSelection",368}, - {"spectralType",2056}, + {"dataSelection",639}, + {"spectralType",2113}, {""}, {""}, - {"localDir",985}, + {"localDir",1149}, {""}, - {"localDate",977}, + {"localDate",1141}, {""}, - {"typicalTime",2260}, + {"typicalTime",2289}, {""}, {""}, - {"localDay",979}, + {"localDay",1143}, {""}, - {"TS",2205}, - {"countTotal",349}, + {"TS",235}, + {"countTotal",619}, {""}, {""}, - {"unitsFactor",2278}, - {"padding",1504}, + {"unitsFactor",2307}, + {"padding",1581}, {""}, {""}, - {"productType",1669}, - {"daLoop",355}, + {"productType",1741}, + {"daLoop",626}, {""}, {""}, - {"windDirection",2363}, - {"aerosolTypeName",20}, - {"values",2313}, + {"windDirection",2388}, + {"aerosolTypeName",300}, + {"values",2338}, {""}, {""}, - {"levels",949}, + {"levels",1123}, {""}, {""}, {""}, {""}, {""}, - {"userTimeStart",2307}, + {"userTimeStart",2332}, {""}, - {"optionalData",1476}, + {"optionalData",1559}, {""}, - {"offset",1421}, + {"offset",1504}, {""}, - {"levelist",948}, - {"Xo",2404}, + {"levelist",1122}, + {"Xo",270}, {""}, {""}, {""}, {""}, - {"anoffset",31}, + {"anoffset",312}, {""}, {""}, {""}, {""}, {""}, - {"offsetdate",1435}, - {"recDateTime",1719}, + {"offsetdate",1538}, + {"recDateTime",1788}, {""}, - {"band",50}, + {"band",329}, {""}, {""}, {""}, - {"Xp",2405}, + {"Xp",271}, {""}, {""}, {""}, - {"offsettime",1454}, - {"average",41}, + {"offsettime",1539}, + {"average",321}, {""}, {""}, {""}, - {"isFillup",823}, - {"runwayState",1823}, - {"isSatellite",831}, + {"isFillup",1015}, + {"runwayState",1891}, + {"isSatellite",1019}, {""}, - {"typicalDate",2253}, + {"typicalDate",2282}, {""}, {""}, - {"flags",642}, + {"flags",868}, {""}, - {"rdbtime",1707}, + {"rdbtime",1777}, {""}, {""}, {""}, - {"upperLimit",2294}, - {"level",945}, + {"upperLimit",2323}, + {"level",1116}, {""}, - {"coefsFirst",286}, + {"coefsFirst",557}, {""}, {""}, - {"centreDescription",130}, + {"centreDescription",402}, {""}, {""}, - {"fgTime",624}, + {"fgTime",850}, {""}, - {"TScalc",2206}, + {"TScalc",236}, {""}, {""}, - {"forecastperiod",651}, + {"forecastperiod",880}, {""}, {""}, - {"categoryType",110}, + {"categoryType",385}, {""}, - {"userDateStart",2303}, + {"userDateStart",2328}, {""}, {""}, - {"K",854}, + {"K",95}, {""}, - {"statisticalProcess",2069}, + {"statisticalProcess",2126}, {""}, {""}, {""}, - {"fcmonth",621}, - {"oneThousand",1469}, + {"fcmonth",847}, + {"oneThousand",1552}, {""}, {""}, {""}, - {"codeFigure",284}, + {"codeFigure",552}, {""}, - {"overlayTemplate",1495}, + {"overlayTemplate",1575}, {""}, {""}, {""}, {""}, {""}, - {"obstype",1416}, - {"selectedSecond",1989}, + {"obstype",1499}, + {"selectedSecond",2053}, {""}, {""}, - {"number",1277}, - {"molarMass",1205}, + {"number",1368}, + {"molarMass",1326}, {""}, - {"statisticalProcessesList",2070}, + {"statisticalProcessesList",2127}, {""}, {""}, - {"referenceDate",1730}, - {"bitmap",88}, + {"referenceDate",1799}, + {"bitmap",367}, {""}, {""}, {""}, {""}, {""}, - {"forecastTime",657}, - {"levelType",950}, - {"lowerLimit",1066}, + {"forecastTime",879}, + {"levelType",1119}, + {"lowerLimit",1210}, {""}, {""}, - {"gg",678}, + {"gg",900}, {""}, {""}, {""}, {""}, - {"pv",1680}, + {"pv",1750}, {""}, {""}, {""}, {""}, {""}, {""}, - {"fgDate",623}, - {"satelliteSeries",1832}, + {"fgDate",849}, + {"satelliteSeries",1896}, {""}, {""}, {""}, - {"startTimeStep",2068}, + {"startTimeStep",2124}, {""}, {""}, {""}, {""}, {""}, - {"truncateLaplacian",2203}, + {"truncateLaplacian",2244}, {""}, {""}, {""}, {""}, - {"waveDomain",2353}, + {"waveDomain",2378}, {""}, - {"ccsdsFlags",116}, + {"ccsdsFlags",390}, {""}, - {"KS",859}, - {"rdbType",1716}, + {"KS",96}, + {"rdbType",1775}, {""}, {""}, - {"marsModel",1105}, - {"crcrlf",350}, + {"marsModel",1239}, + {"crcrlf",621}, {""}, {""}, {""}, - {"efiOrder",481}, + {"efiOrder",729}, {""}, {""}, {""}, {""}, {""}, - {"dataOrigin",363}, + {"dataOrigin",634}, {""}, {""}, - {"lev",944}, - {"localDateTime",978}, - {"nlev",1254}, + {"lev",1114}, + {"localDateTime",1142}, + {"nlev",1352}, {""}, {""}, {""}, {""}, {""}, {""}, - {"forecastSteps",656}, + {"forecastSteps",878}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"validityTime",2312}, + {"validityTime",2337}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"fireTemplate",627}, - {"dataFlag",360}, + {"fireTemplate",853}, + {"dataFlag",631}, {""}, - {"avg",45}, + {"avg",325}, {""}, {""}, - {"marsStartStep",1109}, + {"marsStartStep",1243}, {""}, {""}, {""}, {""}, - {"LaD",866}, + {"LaD",105}, {""}, - {"flag",638}, + {"flag",863}, {""}, {""}, {""}, {""}, {""}, {""}, - {"representationMode",1744}, + {"representationMode",1812}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"localSecond",1012}, + {"localSecond",1163}, {""}, {""}, - {"rdbtimeDay",1709}, + {"rdbtimeDay",1779}, {""}, {""}, {""}, {""}, - {"isOctahedral",828}, + {"isOctahedral",1017}, {""}, {""}, - {"aerosolpacking",18}, + {"aerosolpacking",302}, {""}, {""}, - {"unitsDecimalScaleFactor",2276}, + {"unitsDecimalScaleFactor",2305}, {""}, {""}, - {"freeFormData",660}, + {"freeFormData",883}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"coordinatesPresent",330}, - {"parameterDiscipline",1579}, + {"coordinatesPresent",601}, + {"parameterDiscipline",1661}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"rdbtimeTime",1714}, + {"rdbtimeTime",1784}, {""}, {""}, - {"instrumentIdentifier",791}, - {"referenceStep",1737}, + {"instrumentIdentifier",993}, + {"referenceStep",1806}, {""}, {""}, - {"pressureLevel",1649}, + {"pressureLevel",1724}, {""}, {""}, - {"logTransform",1023}, + {"logTransform",1175}, {""}, - {"indicatorOfParameter",776}, + {"indicatorOfParameter",979}, {""}, {""}, {""}, {""}, - {"MS",1218}, + {"MS",158}, {""}, {""}, - {"coefsSecond",287}, + {"coefsSecond",558}, {""}, {""}, {""}, {""}, - {"theMessage",2134}, + {"theMessage",2187}, {""}, {""}, {""}, {""}, - {"marsLatitude",1101}, + {"marsLatitude",1235}, {""}, {""}, - {"siteLatitude",2018}, + {"siteLatitude",2077}, {""}, - {"tubeDomain",2211}, + {"tubeDomain",2248}, {""}, {""}, {""}, - {"levelFactor",946}, + {"levelFactor",1117}, {""}, {""}, {""}, {""}, {""}, - {"userDateTimeStart",2305}, + {"userDateTimeStart",2330}, {""}, - {"clusterMember9",275}, - {"dataLength",362}, + {"clusterMember9",544}, + {"dataLength",633}, {""}, {""}, {""}, - {"marsLevel",1102}, + {"marsLevel",1236}, {""}, - {"siteId",2017}, - {"validityDate",2311}, + {"siteId",2076}, + {"validityDate",2336}, {""}, {""}, - {"offsetSection9",1453}, + {"offsetSection9",1535}, {""}, {""}, - {"thisMarsType",2138}, + {"thisMarsType",2191}, {""}, - {"unitOfTime",2269}, - {"marsIdent",1096}, + {"unitOfTime",2298}, + {"marsIdent",1231}, {""}, - {"rdbtimeDate",1708}, - {"computeStatistics",293}, - {"laplacianOperator",870}, + {"rdbtimeDate",1778}, + {"computeStatistics",564}, + {"laplacianOperator",1058}, {""}, {""}, {""}, {""}, - {"firstDimension",628}, + {"firstDimension",854}, {""}, {""}, {""}, - {"M",1083}, - {"paramId",1586}, - {"gridDefinition",700}, + {"M",155}, + {"paramId",1653}, + {"gridDefinition",913}, {""}, {""}, - {"distinctLatitudes",441}, - {"topLevel",2177}, + {"distinctLatitudes",702}, + {"topLevel",2221}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"angleDivisor",24}, + {"angleDivisor",306}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"oneMillionConstant",1460}, + {"oneMillionConstant",1543}, {""}, - {"datasetForLocal",369}, + {"datasetForLocal",645}, {""}, {""}, {""}, {""}, - {"localDecimalScaleFactor",980}, - {"localDefinition",981}, + {"localDecimalScaleFactor",1144}, + {"localDefinition",1147}, {""}, {""}, - {"derivedForecast",419}, + {"derivedForecast",685}, {""}, {""}, {""}, - {"localMinute",996}, + {"localMinute",1160}, {""}, - {"iIncrement",763}, + {"iIncrement",958}, {""}, {""}, {""}, {""}, - {"oldSubtype",1457}, + {"oldSubtype",1540}, {""}, {""}, - {"newSubtype",1245}, + {"newSubtype",1351}, {""}, {""}, - {"setLocalDefinition",1998}, + {"setLocalDefinition",2060}, {""}, - {"centreLongitude",135}, + {"centreLongitude",407}, {""}, {""}, - {"longitudesList",1056}, + {"longitudesList",1208}, {""}, {""}, {""}, - {"latitudesList",916}, - {"ensembleSize",532}, + {"latitudesList",1097}, + {"ensembleSize",770}, {""}, - {"localFlag",987}, + {"localFlag",1151}, {""}, - {"operatingMode",1471}, - {"decimalScaleFactor",400}, + {"operatingMode",1555}, + {"decimalScaleFactor",667}, {""}, {""}, - {"rdbDateTime",1704}, + {"rdbDateTime",1773}, {""}, {""}, {""}, {""}, {""}, - {"earthMinorAxis",469}, + {"earthMinorAxis",719}, {""}, {""}, - {"visibility",2344}, + {"visibility",2369}, {""}, {""}, - {"angleMultiplier",25}, + {"angleMultiplier",307}, {""}, - {"marsKeywords",1097}, + {"marsKeywords",1232}, {""}, {""}, {""}, {""}, - {"latitudeSexagesimal",915}, - {"localMonth",997}, + {"latitudeSexagesimal",1093}, + {"localMonth",1161}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"global",680}, + {"global",901}, {""}, - {"periodOfTime",1604}, + {"periodOfTime",1681}, {""}, - {"lengthDescriptors",934}, + {"lengthDescriptors",1105}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"controlForecastCluster",309}, - {"spectralMode",2055}, + {"controlForecastCluster",580}, + {"spectralMode",2112}, {""}, {""}, {""}, - {"integerScaleFactor",794}, + {"integerScaleFactor",996}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"setDecimalPrecision",1997}, + {"setDecimalPrecision",2059}, {""}, {""}, {""}, {""}, {""}, {""}, - {"thisMarsStream",2137}, + {"thisMarsStream",2190}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"reservedOctet",1752}, + {"reservedOctet",1820}, {""}, - {"scaledDirections",1833}, + {"scaledDirections",1920}, {""}, - {"centreForLocal",131}, - {"maximum",1130}, - {"localTimeForecastList",1018}, - {"verticalDomainTemplate",2340}, + {"centreForLocal",403}, + {"maximum",1266}, + {"localTimeForecastList",1169}, + {"verticalDomainTemplate",2365}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"offsetDescriptors",1436}, + {"offsetDescriptors",1518}, {""}, {""}, - {"modelIdentifier",1198}, + {"modelIdentifier",1322}, {""}, - {"clusterMember8",274}, - {"tiggeModel",2149}, - {"laplacianOperatorIsSet",871}, + {"clusterMember8",543}, + {"tiggeModel",2199}, + {"laplacianOperatorIsSet",1059}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"offsetSection8",1452}, + {"offsetSection8",1534}, {""}, {""}, {""}, {""}, {""}, {""}, - {"anoffsetFirst",32}, + {"anoffsetFirst",313}, {""}, {""}, {""}, {""}, {""}, - {"marsLamModel",1100}, + {"marsLamModel",1234}, {""}, - {"isEps",821}, + {"isEps",1014}, {""}, - {"templatesLocalDir",2130}, + {"templatesLocalDir",2184}, {""}, {""}, - {"offsetSection0",1442}, + {"offsetSection0",1524}, {""}, - {"scanningMode",1880}, + {"scanningMode",1945}, {""}, {""}, {""}, {""}, - {"dimensionType",432}, + {"dimensionType",693}, {""}, - {"lcwfvSuiteName",923}, + {"lcwfvSuiteName",1099}, {""}, {""}, {""}, - {"analysisOffsets",23}, + {"analysisOffsets",305}, {""}, {""}, {""}, {""}, {""}, {""}, - {"dateOfForecast",380}, + {"dateOfForecast",648}, {""}, {""}, - {"yearOfForecast",2422}, + {"yearOfForecast",2433}, {""}, {""}, {""}, {""}, - {"auxiliary",40}, - {"generatingProcessTemplate",674}, - {"representativeMember",1746}, - {"timeOfForecast",2163}, - {"overlayTemplateNumber",1496}, + {"auxiliary",320}, + {"generatingProcessTemplate",897}, + {"representativeMember",1814}, + {"timeOfForecast",2213}, + {"overlayTemplateNumber",1576}, {""}, {""}, - {"anoffsetFrequency",33}, - {"xFirst",2402}, + {"anoffsetFrequency",314}, + {"xFirst",2420}, {""}, {""}, {""}, {""}, - {"extraDim",596}, + {"extraDim",798}, {""}, - {"observedData",1415}, + {"observedData",1498}, {""}, - {"northernLatitudeOfDomain",1260}, - {"forecastLeadTime",648}, + {"northernLatitudeOfDomain",1364}, + {"forecastLeadTime",871}, {""}, - {"originalSubCentreIdentifier",1488}, + {"originalSubCentreIdentifier",1569}, {""}, - {"boustrophedonic",96}, + {"boustrophedonic",374}, {""}, {""}, {""}, - {"longitudeOfCentrePoint",1028}, + {"longitudeOfCentrePoint",1180}, {""}, {""}, - {"stepTypeForConversion",2080}, - {"preferLocalConcepts",1627}, + {"stepTypeForConversion",2137}, + {"preferLocalConcepts",1703}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"referenceSampleInterval",1736}, + {"referenceSampleInterval",1805}, {""}, {""}, {""}, - {"partitionItems",1591}, + {"partitionItems",1668}, {""}, {""}, {""}, - {"marsLevelist",1103}, + {"marsLevelist",1237}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"localTimeMethod",1019}, + {"localTimeMethod",1170}, {""}, {""}, {""}, {""}, {""}, - {"ccccIdentifiers",113}, + {"ccccIdentifiers",387}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"heightLevelName",726}, + {"heightLevelName",935}, {""}, {""}, {""}, {""}, {""}, {""}, - {"gridDefinitionSection",702}, + {"gridDefinitionSection",915}, {""}, {""}, {""}, - {"southernLatitudeOfDomain",2036}, - {"expandedTypes",551}, + {"southernLatitudeOfDomain",2097}, + {"expandedTypes",789}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"gridDefinitionDescription",701}, + {"gridDefinitionDescription",914}, {""}, - {"dayOfForecast",393}, + {"dayOfForecast",661}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"expver",560}, + {"expver",796}, {""}, {""}, {""}, {""}, {""}, {""}, - {"groupSplitting",711}, + {"groupSplitting",924}, {""}, {""}, - {"anoffsetLast",34}, + {"anoffsetLast",315}, {""}, {""}, {""}, - {"incrementOfLengths",767}, + {"incrementOfLengths",970}, {""}, - {"bufrTemplate",104}, + {"bufrTemplate",379}, {""}, {""}, - {"indexTemplate",774}, + {"indexTemplate",971}, {""}, {""}, - {"integerScalingFactorAppliedToDirections",795}, - {"integerScalingFactorAppliedToFrequencies",796}, + {"integerScalingFactorAppliedToDirections",997}, + {"integerScalingFactorAppliedToFrequencies",998}, {""}, {""}, - {"selectedDay",1984}, + {"selectedDay",2048}, {""}, - {"marsEndStep",1091}, + {"marsEndStep",1226}, {""}, {""}, {""}, {""}, {""}, {""}, - {"xLast",2403}, + {"xLast",2421}, {""}, {""}, - {"JS",849}, + {"JS",94}, {""}, {""}, {""}, {""}, - {"latitudeOfCentrePoint",891}, - {"representationType",1745}, + {"latitudeOfCentrePoint",1070}, + {"representationType",1813}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"longitudinalDirectionGridLength",1057}, + {"longitudinalDirectionGridLength",1209}, {""}, {""}, {""}, {""}, {""}, {""}, - {"conceptsMasterDir",300}, + {"conceptsMasterDir",571}, {""}, - {"conceptsLocalDirAll",297}, - {"rdbSubtype",1706}, + {"conceptsLocalDirAll",568}, + {"rdbSubtype",1774}, {""}, {""}, - {"hourOfForecast",741}, - {"bottomLevel",95}, + {"hourOfForecast",947}, + {"bottomLevel",373}, {""}, {""}, {""}, {""}, {""}, {""}, - {"scanningMode8",1885}, + {"scanningMode8",1950}, {""}, {""}, {""}, {""}, {""}, - {"secondOfForecast",1905}, + {"secondOfForecast",1960}, {""}, {""}, - {"minuteOfForecast",1176}, + {"minuteOfForecast",1305}, {""}, {""}, {""}, - {"subSetK",2102}, + {"subSetK",2156}, {""}, {""}, {""}, - {"climateDateFrom",159}, + {"climateDateFrom",431}, {""}, - {"stepTypeInternal",2081}, - {"generatingProcessIdentifier",673}, + {"stepTypeInternal",2138}, + {"generatingProcessIdentifier",896}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"defaultStepUnits",411}, + {"defaultStepUnits",675}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"satelliteIdentifier",1830}, - {"monthOfForecast",1213}, + {"satelliteIdentifier",1894}, + {"monthOfForecast",1330}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"roundedMarsLatitude",1768}, + {"roundedMarsLatitude",1836}, {""}, {""}, {""}, {""}, {""}, {""}, - {"marsForecastMonth",1094}, - {"zeros",2436}, + {"marsForecastMonth",1229}, + {"zeros",2438}, {""}, {""}, - {"zero",2435}, - {"multiplicationFactorForLatLong",1219}, - {"stretchingFactor",2086}, + {"zero",2437}, + {"multiplicationFactorForLatLong",1338}, + {"stretchingFactor",2143}, {""}, {""}, {""}, - {"biFourierMakeTemplate",79}, + {"biFourierMakeTemplate",357}, {""}, {""}, {""}, - {"indexingTime",770}, + {"indexingTime",975}, {""}, {""}, {""}, {""}, {""}, {""}, - {"generatingProcessIdentificationNumber",672}, + {"generatingProcessIdentificationNumber",895}, {""}, {""}, - {"userTimeEnd",2306}, + {"userTimeEnd",2331}, {""}, {""}, {""}, {""}, {""}, {""}, - {"typeOfLevel",2235}, - {"expoffset",559}, + {"typeOfLevel",2266}, + {"expoffset",795}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"localDefinitionNumber",982}, + {"localDefinitionNumber",1148}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"tablesMasterDir",2120}, + {"tablesMasterDir",2175}, {""}, {""}, - {"referenceOfLengths",1733}, + {"referenceOfLengths",1802}, {""}, {""}, - {"DyInMetres",465}, + {"DyInMetres",44}, {""}, {""}, - {"DiInMetres",429}, + {"DiInMetres",33}, {""}, {""}, {""}, - {"centreLatitude",133}, + {"centreLatitude",405}, {""}, {""}, {""}, {""}, {""}, {""}, - {"levelIndicator",947}, + {"levelIndicator",1118}, {""}, - {"diffInDays",425}, + {"diffInDays",689}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"secondLatitude",1901}, + {"secondLatitude",1957}, {""}, - {"stretchingFactorScaled",2087}, + {"stretchingFactorScaled",2144}, {""}, - {"userDateEnd",2302}, + {"userDateEnd",2327}, {""}, {""}, {""}, {""}, {""}, - {"centreLongitudeInDegrees",136}, + {"centreLongitudeInDegrees",408}, {""}, {""}, {""}, - {"typeOfStatisticalPostProcessingOfEnsembleMembers",2245}, + {"typeOfStatisticalPostProcessingOfEnsembleMembers",2276}, {""}, - {"siteElevation",2016}, + {"siteElevation",2075}, {""}, - {"longitudeSexagesimal",1055}, + {"longitudeSexagesimal",1206}, {""}, - {"numberOfFloats",1326}, + {"numberOfFloats",1415}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"atmosphericChemicalOrPhysicalConstituentType",38}, + {"atmosphericChemicalOrPhysicalConstituentType",318}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"radiusInMetres",1698}, + {"radiusInMetres",1767}, {""}, {""}, - {"headersOnly",725}, + {"headersOnly",934}, {""}, {""}, {""}, {""}, - {"rectimeMinute",1725}, - {"indexingDate",769}, + {"rectimeMinute",1794}, + {"indexingDate",974}, {""}, - {"userDateTimeEnd",2304}, + {"userDateTimeEnd",2329}, {""}, {""}, {""}, {""}, {""}, {""}, - {"meanSize",1155}, - {"roundedMarsLongitude",1770}, - {"conceptsLocalMarsDirAll",299}, + {"meanSize",1288}, + {"roundedMarsLongitude",1838}, + {"conceptsLocalMarsDirAll",570}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"matchLandType",1124}, + {"matchLandType",1259}, {""}, {""}, - {"roundedMarsLevelist",1769}, + {"roundedMarsLevelist",1837}, {""}, {""}, {""}, - {"masterTableNumber",1119}, + {"masterTableNumber",1254}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"typeOfStatisticalProcessing",2246}, + {"typeOfStatisticalProcessing",2277}, {""}, {""}, - {"startOfMessage",2064}, + {"startOfMessage",2120}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"iteratorDisableUnrotate",838}, + {"iteratorDisableUnrotate",1037}, {""}, {""}, {""}, {""}, {""}, {""}, - {"endOfInterval",507}, + {"endOfInterval",755}, {""}, - {"LyInMetres",1081}, + {"LyInMetres",154}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"subSetM",2103}, - {"groupSplittingMethodUsed",712}, + {"subSetM",2157}, + {"groupSplittingMethodUsed",925}, {""}, - {"perturbedType",1607}, + {"perturbedType",1684}, {""}, {""}, {""}, {""}, {""}, - {"datumSize",389}, + {"datumSize",657}, {""}, {""}, {""}, {""}, - {"secondSize",1912}, + {"secondSize",1966}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"SecondLatitude",1902}, + {"SecondLatitude",226}, {""}, {""}, {""}, {""}, {""}, - {"typicalMinute",2257}, + {"typicalMinute",2286}, {""}, {""}, - {"conceptsMasterMarsDir",301}, + {"conceptsMasterMarsDir",572}, {""}, - {"sequences",1994}, + {"sequences",2056}, {""}, {""}, {""}, {""}, {""}, - {"listOfScaledFrequencies",970}, + {"listOfScaledFrequencies",1139}, {""}, {""}, - {"quantile",1693}, - {"offsetFreeFormData",1438}, - {"latitudeOfCentrePointInDegrees",892}, - {"DyInDegrees",464}, + {"quantile",1762}, + {"offsetFreeFormData",1520}, + {"latitudeOfCentrePointInDegrees",1071}, + {"DyInDegrees",43}, {""}, {""}, - {"DiInDegrees",428}, + {"DiInDegrees",32}, {""}, - {"numberOfTimeSteps",1390}, + {"numberOfTimeSteps",1479}, {""}, {""}, {""}, {""}, - {"numberOfDirections",1316}, + {"numberOfDirections",1405}, {""}, {""}, {""}, {""}, {""}, - {"FirstLatitude",632}, + {"FirstLatitude",67}, {""}, {""}, {""}, - {"listOfModelIdentifiers",968}, + {"listOfModelIdentifiers",1137}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"qfe",1683}, + {"qfe",1752}, {""}, {""}, {""}, {""}, - {"ensembleForecastNumbers",526}, + {"ensembleForecastNumbers",768}, {""}, {""}, {""}, - {"marsLongitude",1104}, + {"marsLongitude",1238}, {""}, {""}, - {"siteLongitude",2019}, + {"siteLongitude",2078}, {""}, {""}, - {"firstLatitude",631}, + {"firstLatitude",857}, {""}, - {"localLatitude",990}, + {"localLatitude",1154}, {""}, - {"qnh",1686}, + {"qnh",1755}, {""}, {""}, - {"missingDataFlag",1183}, + {"missingDataFlag",1311}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"numberOfSection",1381}, + {"numberOfSection",1470}, {""}, - {"clutterFilterIndicator",278}, + {"clutterFilterIndicator",549}, {""}, {""}, - {"numberOfDiamonds",1315}, + {"numberOfDiamonds",1404}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"numberOfSubsets",1386}, + {"numberOfSubsets",1475}, {""}, {""}, - {"firstSize",637}, + {"firstSize",862}, {""}, {""}, - {"longitudeOfFirstGridPoint",1033}, + {"longitudeOfFirstGridPoint",1185}, {""}, {""}, {""}, - {"dx",458}, + {"dx",714}, {""}, {""}, {""}, - {"listMembersUsed",961}, + {"listMembersUsed",1130}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"max",1129}, + {"max",1264}, {""}, {""}, {""}, {""}, {""}, - {"expandedDescriptors",545}, + {"expandedDescriptors",783}, {""}, {""}, {""}, {""}, {""}, - {"J",840}, + {"J",93}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"rectimeSecond",1726}, + {"rectimeSecond",1795}, {""}, {""}, - {"unsignedIntegers",2287}, + {"unsignedIntegers",2316}, {""}, {""}, {""}, {""}, - {"numberOfFrequencies",1333}, - {"localLongitude",993}, + {"numberOfFrequencies",1422}, + {"localLongitude",1157}, {""}, - {"crraSection",353}, + {"crraSection",624}, {""}, {""}, {""}, - {"binaryScaleFactor",87}, + {"binaryScaleFactor",365}, {""}, - {"diagnosticNumber",424}, + {"diagnosticNumber",688}, {""}, {""}, {""}, {""}, {""}, - {"dataValues",374}, - {"optimisationTime",1474}, - {"secondOfForecastUsedInLocalTime",1906}, + {"dataValues",644}, + {"optimisationTime",1557}, + {"secondOfForecastUsedInLocalTime",1961}, {""}, {""}, - {"minuteOfForecastUsedInLocalTime",1177}, + {"minuteOfForecastUsedInLocalTime",1306}, {""}, {""}, - {"frequency",661}, + {"frequency",884}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"ccsdsRsi",117}, + {"ccsdsRsi",391}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"clusterSize",277}, + {"clusterSize",546}, {""}, {""}, {""}, {""}, - {"orderOfSpatialDifferencing",1478}, + {"orderOfSpatialDifferencing",1562}, {""}, - {"numberOfStatisticallyProcessedFieldsForLocalTime",1384}, + {"numberOfStatisticallyProcessedFieldsForLocalTime",1473}, {""}, {""}, - {"numberOfForecastsInTube",1331}, + {"numberOfForecastsInTube",1420}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"conceptsLocalDirECMF",298}, + {"conceptsLocalDirECMF",569}, {""}, {""}, {""}, {""}, {""}, - {"numberingOrderOfDiamonds",1280}, - {"powerOfTenUsedToScaleClimateWeight",1621}, + {"numberingOrderOfDiamonds",1491}, + {"powerOfTenUsedToScaleClimateWeight",1696}, {""}, - {"typicalSecond",2259}, - {"marsRange",1108}, + {"typicalSecond",2288}, + {"marsRange",1242}, {""}, - {"longitudeOfGridPoints",1035}, + {"longitudeOfGridPoints",1187}, {""}, {""}, {""}, - {"LcyInMetres",927}, + {"LcyInMetres",121}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"LuyInMetres",1077}, + {"LuyInMetres",150}, {""}, {""}, - {"Dx",459}, - {"secondOrderFlags",1909}, - {"stepRange",2077}, + {"Dx",39}, + {"secondOrderFlags",1963}, + {"stepRange",2134}, {""}, {""}, {""}, - {"rdbtimeMinute",1711}, + {"rdbtimeMinute",1781}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"Nr",1270}, - {"periodOfTimeIntervals",1605}, + {"Nr",198}, + {"periodOfTimeIntervals",1682}, {""}, {""}, {""}, - {"observablePropertyTemplate",1410}, - {"typeOfDistributionFunction",2226}, + {"observablePropertyTemplate",1493}, + {"typeOfDistributionFunction",2257}, {""}, {""}, {""}, {""}, {""}, - {"Ny",1409}, + {"Ny",205}, {""}, - {"localSection",1013}, + {"localSection",1164}, {""}, {""}, {""}, - {"Ni",1249}, + {"Ni",196}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"yDirectionGridLength",2415}, - {"numberOfForcasts",1327}, + {"yDirectionGridLength",2424}, + {"numberOfForcasts",1416}, {""}, - {"charValues",155}, + {"charValues",427}, {""}, {""}, - {"earthIsOblate",466}, + {"earthIsOblate",716}, {""}, - {"numberOfDataMatrices",1310}, + {"numberOfDataMatrices",1399}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"bitMapIndicator",89}, + {"bitMapIndicator",366}, {""}, {""}, {""}, {""}, - {"latitudeLastInDegrees",888}, + {"latitudeLastInDegrees",1067}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"referenceValue",1738}, + {"referenceValue",1807}, {""}, - {"Ncy",1241}, - {"upperRange",2295}, + {"Ncy",194}, + {"upperRange",2324}, {""}, {""}, - {"listOfDistributionFunctionParameter",966}, + {"listOfDistributionFunctionParameter",1135}, {""}, - {"typeOfEnsembleForecast",2227}, - {"numberOfDistinctSection9s",1323}, - {"observablePropertyTemplateNumber",1411}, + {"typeOfEnsembleForecast",2258}, + {"numberOfDistinctSection9s",1412}, + {"observablePropertyTemplateNumber",1494}, {""}, {""}, - {"Nuy",1406}, + {"Nuy",203}, {""}, {""}, {""}, - {"ensembleForecastNumbersList",527}, + {"ensembleForecastNumbersList",769}, {""}, - {"numberOfModels",1350}, + {"numberOfModels",1440}, {""}, {""}, - {"horizontalCoordinateSupplement",731}, + {"horizontalCoordinateSupplement",940}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"parameterName",1581}, + {"parameterName",1663}, {""}, {""}, - {"Adelta",10}, - {"widthOfFirstOrderValues",2359}, + {"Adelta",13}, + {"widthOfFirstOrderValues",2384}, {""}, {""}, {""}, {""}, {""}, {""}, - {"suiteName",2104}, + {"suiteName",2160}, {""}, {""}, - {"numberOfLocalDefinitions",1343}, + {"numberOfLocalDefinitions",1432}, {""}, {""}, - {"indicatorOfUnitForForecastTime",778}, - {"secondDimension",1898}, + {"indicatorOfUnitForForecastTime",981}, + {"secondDimension",1954}, {""}, {""}, {""}, - {"optimizeScaleFactor",1475}, - {"modelName",1201}, - {"longitudeOfCentrePointInDegrees",1029}, + {"optimizeScaleFactor",1558}, + {"modelName",1323}, + {"longitudeOfCentrePointInDegrees",1181}, {""}, {""}, {""}, {""}, - {"lowerRange",1067}, + {"lowerRange",1211}, {""}, {""}, - {"Lx",1078}, + {"Lx",151}, {""}, - {"LaDInDegrees",867}, + {"LaDInDegrees",106}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"isAuto",805}, + {"isAuto",1005}, {""}, {""}, - {"extractSubset",590}, + {"extractSubset",829}, {""}, {""}, {""}, {""}, - {"biFourierTruncationType",86}, + {"biFourierTruncationType",364}, {""}, - {"floatVal",644}, + {"floatVal",869}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"shortName",2004}, + {"shortName",2065}, {""}, {""}, {""}, - {"internalVersion",798}, - {"NT",1276}, - {"tiggeSection",2151}, + {"internalVersion",1000}, + {"NT",188}, + {"tiggeSection",2200}, {""}, {""}, - {"numberOfDistinctSection8s",1322}, + {"numberOfDistinctSection8s",1411}, {""}, {""}, {""}, - {"matchTimeRepres",1126}, + {"matchTimeRepres",1261}, {""}, - {"horizontalCoordinateDefinition",730}, + {"horizontalCoordinateDefinition",939}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"Lcx",924}, + {"Lcx",118}, {""}, {""}, {""}, - {"numberOfMembersInCluster",1345}, + {"numberOfMembersInCluster",1434}, {""}, {""}, - {"productDefinition",1663}, + {"productDefinition",1737}, {""}, {""}, {""}, - {"Lux",1074}, - {"codedValues",283}, + {"Lux",147}, + {"codedValues",556}, {""}, {""}, {""}, - {"bufrDataEncoded",100}, + {"bufrDataEncoded",376}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"computeLaplacianOperator",292}, + {"computeLaplacianOperator",563}, {""}, - {"gridName",705}, + {"gridName",918}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"Nassigned",1233}, + {"Nassigned",191}, {""}, - {"applicationIdentifier",35}, + {"applicationIdentifier",316}, {""}, {""}, {""}, - {"numberOfIterations",1341}, + {"numberOfIterations",1430}, {""}, {""}, {""}, {""}, - {"marsExpver",1093}, + {"marsExpver",1228}, {""}, - {"energyNorm",519}, + {"energyNorm",766}, {""}, {""}, {""}, - {"subcentreOfAnalysis",2090}, + {"subcentreOfAnalysis",2158}, {""}, - {"iDirectionIncrement",756}, + {"iDirectionIncrement",954}, {""}, - {"editionNumber",479}, + {"editionNumber",727}, {""}, - {"dataAccessors",357}, + {"dataAccessors",628}, {""}, - {"lengthOfMessage",939}, - {"rdbtimeSecond",1713}, + {"lengthOfMessage",1110}, + {"rdbtimeSecond",1783}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"cfName",140}, + {"cfName",412}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"monthlyVerificationTime",1209}, - {"TAFstr",2125}, + {"monthlyVerificationTime",1336}, + {"TAFstr",233}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"sectionNumber",1982}, + {"sectionNumber",2025}, {""}, {""}, {""}, {""}, - {"numberOfOperationalForecastTube",1354}, + {"numberOfOperationalForecastTube",1443}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"numberOfForecastsUsedInLocalTime",1332}, + {"numberOfForecastsUsedInLocalTime",1421}, {""}, - {"DxInMetres",461}, + {"DxInMetres",41}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"tablesVersion",2121}, + {"tablesVersion",2176}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"typeOfEnsembleMember",2228}, - {"pvlLocation",1681}, - {"yDirectionGridLengthInMetres",2416}, - {"simpleThinningSkip",2014}, - {"addressOfFileFreeSpaceInfo",9}, + {"typeOfEnsembleMember",2259}, + {"pvlLocation",1751}, + {"yDirectionGridLengthInMetres",2425}, + {"simpleThinningSkip",2073}, + {"addressOfFileFreeSpaceInfo",298}, {""}, {""}, {""}, - {"spectralDataRepresentationType",2054}, + {"spectralDataRepresentationType",2111}, {""}, {""}, {""}, {""}, - {"monthlyVerificationDate",1207}, + {"monthlyVerificationDate",1334}, {""}, {""}, {""}, - {"II",762}, + {"II",88}, {""}, {""}, {""}, - {"spectralDataRepresentationMode",2053}, + {"spectralDataRepresentationMode",2110}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"numberOfInts",1340}, + {"numberOfInts",1429}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"Nf",1246}, + {"Nf",195}, {""}, {""}, {""}, - {"verificationDate",2326}, + {"verificationDate",2351}, {""}, - {"doExtractDateTime",448}, + {"doExtractDateTime",705}, {""}, {""}, - {"clusterNumber",276}, + {"clusterNumber",545}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"corr3Data",334}, + {"corr3Data",605}, {""}, - {"unitOfOffsetFromReferenceTime",2268}, - {"corr2Data",333}, + {"unitOfOffsetFromReferenceTime",2297}, + {"corr2Data",604}, {""}, - {"simpleThinningStart",2015}, + {"simpleThinningStart",2074}, {""}, {""}, {""}, - {"floatValues",645}, + {"floatValues",870}, {""}, - {"selectedMonth",1988}, + {"selectedMonth",2052}, {""}, {""}, {""}, {""}, {""}, - {"northLatitudeOfCluster",1261}, + {"northLatitudeOfCluster",1357}, {""}, - {"TAF",2124}, + {"TAF",232}, {""}, {""}, {""}, {""}, {""}, - {"stringValues",2088}, - {"createNewData",351}, + {"stringValues",2145}, + {"createNewData",622}, {""}, {""}, {""}, - {"channelNumber",153}, + {"channelNumber",425}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"LxInMetres",1079}, + {"LxInMetres",152}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"defaultName",406}, + {"defaultName",671}, {""}, {""}, {""}, - {"timeIncrement",2160}, + {"timeIncrement",2210}, {""}, - {"correction3Part",342}, + {"correction3Part",613}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"yDirectionGridLengthInMillimetres",2417}, + {"yDirectionGridLengthInMillimetres",2426}, {""}, {""}, {""}, {""}, {""}, - {"southLatitudeOfCluster",2037}, + {"southLatitudeOfCluster",2093}, {""}, {""}, {""}, {""}, - {"eastLongitudeOfCluster",473}, + {"eastLongitudeOfCluster",721}, {""}, {""}, - {"endOfRange",510}, + {"endOfRange",758}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"DxInDegrees",460}, + {"DxInDegrees",40}, {""}, {""}, - {"marsExperimentOffset",1092}, + {"marsExperimentOffset",1227}, {""}, {""}, {""}, {""}, {""}, {""}, - {"levelValues",952}, + {"levelValues",1120}, {""}, - {"g2grid",668}, + {"g2grid",891}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"subSetJ",2101}, + {"subSetJ",2155}, {""}, {""}, {""}, {""}, {""}, - {"deleteExtraLocalSection",416}, + {"deleteExtraLocalSection",682}, {""}, {""}, {""}, {""}, - {"isAccumulation",802}, + {"isAccumulation",1004}, {""}, {""}, - {"scalingFactorForFrequencies",1879}, + {"scalingFactorForFrequencies",1943}, {""}, {""}, {""}, - {"modeNumber",1204}, + {"modeNumber",1319}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"lengthIncrementForTheGroupLengths",935}, - {"corr1Data",332}, + {"lengthIncrementForTheGroupLengths",1106}, + {"corr1Data",603}, {""}, - {"forecastMonth",649}, + {"forecastMonth",872}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"numberOfMembersInEnsemble",1346}, + {"numberOfMembersInEnsemble",1435}, {""}, {""}, {""}, - {"faFieldName",615}, + {"faFieldName",841}, {""}, {""}, {""}, - {"levTypeName",954}, + {"levTypeName",1115}, {""}, - {"numberOfMissing",1347}, - {"westLongitudeOfCluster",2357}, + {"numberOfMissing",1436}, + {"westLongitudeOfCluster",2380}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"libraryVersion",955}, + {"libraryVersion",1125}, {""}, {""}, {""}, {""}, {""}, {""}, - {"globalDomain",681}, + {"globalDomain",902}, {""}, {""}, - {"NL",1253}, + {"NL",184}, {""}, {""}, {""}, {""}, {""}, - {"indexingTimeMM",773}, + {"indexingTimeMM",978}, {""}, - {"unitsOfFirstFixedSurface",2280}, + {"unitsOfFirstFixedSurface",2309}, {""}, {""}, - {"inputExtendedDelayedDescriptorReplicationFactor",785}, - {"angleSubdivisions",29}, + {"inputExtendedDelayedDescriptorReplicationFactor",987}, + {"angleSubdivisions",311}, {""}, {""}, {""}, {""}, {""}, {""}, - {"tileIndex",2155}, + {"tileIndex",2205}, {""}, {""}, {""}, - {"latLonValues",920}, + {"latLonValues",1064}, {""}, {""}, {""}, {""}, {""}, {""}, - {"distanceFromTubeToEnsembleMean",440}, + {"distanceFromTubeToEnsembleMean",701}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"longitudeOfStretchingPole",1045}, + {"longitudeOfStretchingPole",1197}, {""}, {""}, {""}, {""}, - {"calendarIdPresent",108}, + {"calendarIdPresent",381}, {""}, {""}, {""}, {""}, {""}, {""}, - {"climatologicalRegime",161}, + {"climatologicalRegime",433}, {""}, {""}, - {"numberOfIntegers",1339}, + {"numberOfIntegers",1428}, {""}, - {"typeOfTimeIncrement",2247}, + {"typeOfTimeIncrement",2278}, {""}, {""}, {""}, - {"parameterIndicator",1580}, + {"parameterIndicator",1662}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"numberOfEffectiveValues",1325}, - {"internationalDataSubCategory",799}, + {"numberOfEffectiveValues",1414}, + {"internationalDataSubCategory",1001}, {""}, {""}, {""}, - {"totalNumber",2182}, + {"totalNumber",2226}, {""}, {""}, - {"primaryMissingValue",1652}, + {"primaryMissingValue",1727}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"longitudeOfFirstGridPointInDegrees",1034}, + {"longitudeOfFirstGridPointInDegrees",1186}, {""}, {""}, {""}, {""}, {""}, - {"unitOfTimeIncrement",2270}, + {"unitOfTimeIncrement",2299}, {""}, {""}, - {"simpleThinningMissingRadius",2013}, + {"simpleThinningMissingRadius",2072}, {""}, {""}, {""}, {""}, {""}, - {"sensitiveAreaDomain",1993}, + {"sensitiveAreaDomain",2055}, {""}, - {"verificationMonth",2327}, - {"angleOfRotation",26}, - {"indicatorOfUnitForTimeIncrement",779}, - {"extractSubsetList",593}, - {"monthOfForecastUsedInLocalTime",1214}, - {"windVariableDirection",2384}, + {"verificationMonth",2352}, + {"angleOfRotation",308}, + {"indicatorOfUnitForTimeIncrement",982}, + {"extractSubsetList",832}, + {"monthOfForecastUsedInLocalTime",1331}, + {"windVariableDirection",2409}, {""}, - {"minuteOfReference",1180}, + {"minuteOfReference",1308}, {""}, {""}, {""}, - {"systemNumber",2112}, + {"systemNumber",2168}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"extractedDateTimeNumberOfSubsets",589}, + {"extractedDateTimeNumberOfSubsets",834}, {""}, {""}, - {"LIMITS",956}, + {"LIMITS",98}, {""}, - {"tablesVersionLatest",2122}, + {"tablesVersionLatest",2177}, {""}, - {"secondDimensionPhysicalSignificance",1900}, + {"secondDimensionPhysicalSignificance",1956}, {""}, {""}, {""}, {""}, - {"baseAddress",51}, + {"baseAddress",330}, {""}, {""}, {""}, {""}, - {"dateOfReference",385}, - {"ensembleStandardDeviation",533}, + {"dateOfReference",653}, + {"ensembleStandardDeviation",771}, {""}, - {"yearOfReference",2426}, - {"LcxInMetres",925}, + {"yearOfReference",2436}, + {"LcxInMetres",119}, {""}, {""}, {""}, {""}, {""}, {""}, - {"timeOfReference",2166}, + {"timeOfReference",2216}, {""}, {""}, - {"marsParam",1106}, - {"LuxInMetres",1075}, - {"legNumber",933}, + {"marsParam",1240}, + {"LuxInMetres",148}, + {"legNumber",1103}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"isConstant",816}, + {"isConstant",1011}, {""}, - {"monthlyVerificationMonth",1208}, - {"meaningOfVerticalCoordinate",1150}, + {"monthlyVerificationMonth",1335}, + {"meaningOfVerticalCoordinate",1293}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"oceanLevName",1418}, - {"epsPoint",536}, + {"oceanLevName",1501}, + {"epsPoint",774}, {""}, {""}, {""}, - {"faModelName",620}, + {"faModelName",843}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"corr4Data",335}, + {"corr4Data",606}, {""}, {""}, - {"realPart",1717}, + {"realPart",1786}, {""}, {""}, {""}, {""}, {""}, {""}, - {"scaleFactorOfFirstSize",1863}, + {"scaleFactorOfFirstSize",1904}, {""}, - {"calendarIdentification",106}, + {"calendarIdentification",382}, {""}, - {"xDirectionGridLength",2399}, + {"xDirectionGridLength",2417}, {""}, {""}, - {"verifyingMonth",2329}, + {"verifyingMonth",2354}, {""}, {""}, {""}, {""}, {""}, - {"methodNumber",1166}, + {"methodNumber",1298}, {""}, {""}, {""}, - {"numberOfModeOfDistribution",1351}, + {"numberOfModeOfDistribution",1439}, {""}, - {"Experiment_Identifier",554}, + {"Experiment_Identifier",55}, {""}, - {"marsClass",1086}, + {"marsClass",1221}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"numericValues",1403}, + {"numericValues",1492}, {""}, {""}, - {"numberInTheAuxiliaryArray",1283}, + {"numberInTheAuxiliaryArray",1371}, {""}, {""}, {""}, {""}, - {"indicatorOfUnitOfTimeRange",781}, + {"indicatorOfUnitOfTimeRange",984}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"productIdentifier",1666}, + {"productIdentifier",1740}, {""}, {""}, {""}, {""}, {""}, {""}, - {"scaleFactorOfStandardDeviation",1875}, - {"Nb",1235}, + {"scaleFactorOfStandardDeviation",1916}, + {"Nb",192}, {""}, - {"accumulationInterval",3}, + {"accumulationInterval",292}, {""}, {""}, {""}, - {"oneConstant",1459}, + {"oneConstant",1542}, {""}, {""}, {""}, - {"minutesAfterDataCutoff",1181}, - {"scaleFactorOfStandardDeviationInTheCluster",1876}, + {"minutesAfterDataCutoff",1309}, + {"scaleFactorOfStandardDeviationInTheCluster",1917}, {""}, {""}, {""}, {""}, - {"primaryMissingValueSubstitute",1653}, + {"primaryMissingValueSubstitute",1728}, {""}, - {"numberOfMissingInStatisticalProcess",1348}, + {"numberOfMissingInStatisticalProcess",1437}, {""}, {""}, {""}, {""}, - {"clusterIdentifier",263}, + {"clusterIdentifier",534}, {""}, {""}, - {"correction4Part",344}, + {"correction4Part",615}, {""}, {""}, - {"selectedMinute",1987}, - {"correction1Part",338}, + {"selectedMinute",2051}, + {"correction1Part",609}, {""}, {""}, {""}, {""}, {""}, - {"integerValues",797}, + {"integerValues",999}, {""}, - {"defaultTypeOfLevel",412}, + {"defaultTypeOfLevel",676}, {""}, {""}, - {"streamOfAnalysis",2085}, + {"streamOfAnalysis",2142}, {""}, {""}, - {"addExtraLocalSection",7}, - {"missingValue",1188}, - {"defaultShortName",409}, + {"addExtraLocalSection",296}, + {"missingValue",1312}, + {"defaultShortName",674}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"extraValues",600}, + {"extraValues",802}, {""}, {""}, {""}, {""}, - {"scaleFactorOfSecondSize",1873}, + {"scaleFactorOfSecondSize",1914}, {""}, - {"radialAngularSpacing",1695}, - {"hourOfReference",745}, - {"windPresent",2373}, + {"radialAngularSpacing",1764}, + {"hourOfReference",950}, + {"windPresent",2398}, {""}, - {"thresholdIndicator",2142}, + {"thresholdIndicator",2195}, {""}, {""}, - {"defaultFaFieldName",401}, + {"defaultFaFieldName",668}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"TIDE",2145}, + {"TIDE",234}, {""}, {""}, {""}, {""}, {""}, - {"ifsParam",761}, + {"ifsParam",967}, {""}, - {"scaledFrequencies",1834}, + {"scaledFrequencies",1921}, {""}, {""}, - {"calendarIdentificationTemplateNumber",107}, - {"parameterCode",1578}, - {"faLevelName",616}, + {"calendarIdentificationTemplateNumber",383}, + {"parameterCode",1660}, + {"faLevelName",842}, {""}, {""}, {""}, - {"trueLengthOfLastGroup",2201}, + {"trueLengthOfLastGroup",2242}, {""}, - {"inputDelayedDescriptorReplicationFactor",784}, + {"inputDelayedDescriptorReplicationFactor",986}, {""}, {""}, - {"is_uerra",834}, - {"sizeOfOffsets",2021}, - {"minuteOfAnalysis",1174}, + {"is_uerra",1030}, + {"sizeOfOffsets",2080}, + {"minuteOfAnalysis",1303}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"latitudeOfStretchingPole",905}, - {"nameOfFirstFixedSurface",1230}, - {"monthOfReference",1217}, + {"latitudeOfStretchingPole",1084}, + {"nameOfFirstFixedSurface",1346}, + {"monthOfReference",1333}, {""}, {""}, {""}, {""}, - {"generatingProcessTemplateNumber",675}, + {"generatingProcessTemplateNumber",898}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"unitsOfSecondFixedSurface",2281}, + {"unitsOfSecondFixedSurface",2310}, {""}, - {"expandedNames",546}, + {"expandedNames",784}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"dayOfAnalysis",391}, + {"dayOfAnalysis",659}, {""}, - {"typeOfFirstFixedSurface",2229}, + {"typeOfFirstFixedSurface",2260}, {""}, {""}, {""}, - {"referenceValueError",1739}, + {"referenceValueError",1808}, {""}, - {"defaultFaLevelName",402}, + {"defaultFaLevelName",669}, {""}, {""}, {""}, {""}, {""}, {""}, - {"tubeNumber",2212}, - {"mAngleMultiplier",1084}, + {"tubeNumber",2249}, + {"mAngleMultiplier",1218}, {""}, {""}, {""}, - {"defaultSequence",408}, + {"defaultSequence",673}, {""}, {""}, {""}, {""}, - {"short_name",2003}, + {"short_name",2068}, {""}, {""}, - {"_T",2114}, + {"_T",286}, {""}, {""}, {""}, {""}, {""}, - {"normAtInitialTime",1258}, - {"sectionPosition",1983}, + {"normAtInitialTime",1355}, + {"sectionPosition",2026}, {""}, {""}, {""}, {""}, {""}, - {"CDFstr",119}, - {"verticalVisibility",2342}, - {"numberOfVerticalPoints",1401}, + {"CDFstr",22}, + {"verticalVisibility",2367}, + {"numberOfVerticalPoints",1490}, {""}, {""}, - {"standardParallel",2059}, + {"standardParallel",2116}, {""}, {""}, {""}, {""}, - {"scaleFactorOfFirstFixedSurface",1862}, + {"scaleFactorOfFirstFixedSurface",1903}, {""}, - {"boustrophedonicOrdering",97}, + {"boustrophedonicOrdering",375}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"lengthOfIndexTemplate",938}, + {"lengthOfIndexTemplate",1109}, {""}, - {"dewPointTemperature",420}, - {"startStepInHours",2067}, - {"scanningModeForOneDiamond",1886}, + {"dewPointTemperature",686}, + {"startStepInHours",2123}, + {"scanningModeForOneDiamond",1951}, {""}, {""}, - {"numberOfVerticalCoordinateValues",1399}, + {"numberOfVerticalCoordinateValues",1488}, {""}, - {"is_aerosol",803}, + {"is_aerosol",1022}, {""}, - {"numberInTheGridCoordinateList",1284}, + {"numberInTheGridCoordinateList",1372}, {""}, {""}, {""}, {""}, {""}, {""}, - {"tableNumber",2117}, + {"tableNumber",2172}, {""}, - {"_endStep",511}, - {"section_09",1924}, + {"_endStep",289}, + {"section_09",2035}, {""}, - {"earthMinorAxisInMetres",470}, + {"earthMinorAxisInMetres",720}, {""}, {""}, {""}, - {"postAuxiliary",1618}, + {"postAuxiliary",1693}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"cnmc_isac",280}, + {"cnmc_isac",551}, {""}, {""}, - {"xDirectionGridLengthInMetres",2400}, + {"xDirectionGridLengthInMetres",2418}, {""}, {""}, - {"offsetAfterPadding",1426}, + {"offsetAfterPadding",1509}, {""}, - {"tileClassification",2154}, + {"tileClassification",2204}, {""}, {""}, {""}, {""}, {""}, {""}, - {"longitudeFirstInDegrees",1025}, + {"longitudeFirstInDegrees",1177}, {""}, - {"numberOfVerticalGridDescriptors",1400}, + {"numberOfVerticalGridDescriptors",1489}, {""}, {""}, {""}, - {"numberOfTimeIncrementsOfForecastsUsedInLocalTime",1388}, + {"numberOfTimeIncrementsOfForecastsUsedInLocalTime",1477}, {""}, {""}, - {"memberNumber",1160}, - {"parameterCategory",1577}, - {"iDirectionIncrementInDegrees",759}, - {"scaleValuesBy",1878}, + {"memberNumber",1294}, + {"parameterCategory",1659}, + {"iDirectionIncrementInDegrees",957}, + {"scaleValuesBy",1919}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"defaultFaModelName",403}, + {"defaultFaModelName",670}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"numberOfRadials",1374}, + {"numberOfRadials",1463}, {""}, {""}, - {"forecastPeriod",652}, - {"local_use",1020}, + {"forecastPeriod",874}, + {"local_use",1174}, {""}, - {"standardParallelInDegrees",2060}, - {"extraLocalSectionPresent",599}, + {"standardParallelInDegrees",2117}, + {"extraLocalSectionPresent",801}, {""}, - {"defaultParameter",407}, + {"defaultParameter",672}, {""}, {""}, {""}, {""}, {""}, - {"section_8",1972}, + {"section_8",2045}, {""}, {""}, {""}, {""}, - {"gts_header",718}, - {"SPD",2052}, - {"numberOfDistributionFunctionParameters",1324}, + {"gts_header",931}, + {"SPD",225}, + {"numberOfDistributionFunctionParameters",1413}, {""}, {""}, - {"setCalendarId",1996}, + {"setCalendarId",2058}, {""}, {""}, {""}, {""}, - {"CDF",118}, + {"CDF",21}, {""}, {""}, {""}, - {"monthOfModelVersion",1215}, + {"monthOfModelVersion",1332}, {""}, - {"secondOfModelVersion",1907}, - {"indexTemplateNumber",775}, + {"secondOfModelVersion",1962}, + {"indexTemplateNumber",972}, {""}, - {"minuteOfModelVersion",1178}, + {"minuteOfModelVersion",1307}, {""}, {""}, - {"targetCompressionRatio",2126}, - {"extractSubsetIntervalEnd",591}, - {"tiggeCentre",2146}, - {"cnmc_cmcc",279}, + {"targetCompressionRatio",2179}, + {"extractSubsetIntervalEnd",830}, + {"tiggeCentre",2196}, + {"cnmc_cmcc",550}, {""}, {""}, {""}, - {"Azi",46}, + {"Azi",15}, {""}, {""}, {""}, {""}, {""}, - {"numberOfOctetsExtraDescriptors",1353}, + {"numberOfOctetsExtraDescriptors",1442}, {""}, {""}, - {"is_chemical",813}, - {"angleOfRotationInDegrees",27}, - {"extractSubsetIntervalStart",592}, - {"neitherPresent",1244}, - {"verticalCoordinate",2338}, + {"is_chemical",1024}, + {"angleOfRotationInDegrees",309}, + {"extractSubsetIntervalStart",831}, + {"neitherPresent",1350}, + {"verticalCoordinate",2363}, {""}, - {"grib3divider",687}, - {"offsetAfterLocalSection",1425}, + {"grib3divider",907}, + {"offsetAfterLocalSection",1508}, {""}, - {"grib2divider",684}, - {"extraLocalSectionNumber",598}, + {"grib2divider",906}, + {"extraLocalSectionNumber",800}, {""}, {""}, {""}, - {"numberOfForecastsInEnsemble",1329}, - {"subCentre",2089}, - {"clusterMember10",267}, + {"numberOfForecastsInEnsemble",1418}, + {"subCentre",2146}, + {"clusterMember10",536}, {""}, {""}, {""}, - {"probPoint",1657}, + {"probPoint",1730}, {""}, {""}, - {"doExtractSubsets",449}, + {"doExtractSubsets",706}, {""}, - {"tablesVersionLatestOfficial",2123}, + {"tablesVersionLatestOfficial",2178}, {""}, - {"offsetSection10",1444}, + {"offsetSection10",1526}, {""}, {""}, {""}, {""}, - {"efas_model",480}, - {"XRInMetres",2408}, + {"efas_model",728}, + {"XRInMetres",269}, {""}, {""}, {""}, - {"tableCode",2116}, + {"tableCode",2171}, {""}, {""}, {""}, - {"coordinateIndexNumber",329}, - {"tigge_name",2150}, + {"coordinateIndexNumber",600}, + {"tigge_name",2202}, {""}, - {"is_localtime",825}, + {"is_localtime",1027}, {""}, - {"offsetAfterCentreLocalSection",1423}, - {"xDirectionGridLengthInMillimetres",2401}, - {"jdSelected",846}, - {"_TS",2204}, + {"offsetAfterCentreLocalSection",1506}, + {"xDirectionGridLengthInMillimetres",2419}, + {"jdSelected",1047}, + {"_TS",287}, {""}, {""}, - {"forecastPeriodTo",654}, + {"forecastPeriodTo",876}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"identificationNumber",752}, + {"identificationNumber",962}, {""}, {""}, {""}, {""}, {""}, {""}, - {"originalParameterNumber",1486}, + {"originalParameterNumber",1567}, {""}, {""}, {""}, - {"section_08",1923}, - {"constituentType",307}, + {"section_08",2034}, + {"constituentType",578}, {""}, {""}, {""}, - {"julianDay",852}, + {"julianDay",1048}, {""}, {""}, {""}, {""}, {""}, - {"_anoffset",30}, + {"_anoffset",288}, {""}, {""}, - {"significanceOfReferenceTime",2012}, + {"significanceOfReferenceTime",2071}, {""}, {""}, {""}, {""}, {""}, {""}, - {"numberOfLevelValues",1342}, + {"numberOfLevelValues",1431}, {""}, {""}, {""}, {""}, - {"missingValueManagement",1189}, - {"observationGeneratingProcessIdentifier",1413}, + {"missingValueManagement",1313}, + {"observationGeneratingProcessIdentifier",1496}, {""}, - {"inputDataPresentIndicator",783}, + {"inputDataPresentIndicator",985}, {""}, - {"epsStatisticsPoint",538}, - {"dataRepresentation",364}, - {"parameterNumber",1582}, - {"iterationNumber",836}, + {"epsStatisticsPoint",776}, + {"dataRepresentation",635}, + {"parameterNumber",1664}, + {"iterationNumber",1036}, {""}, {""}, - {"dimensionNumber",431}, + {"dimensionNumber",692}, {""}, {""}, {""}, - {"constituentTypeName",308}, + {"constituentTypeName",579}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"SecondOfModelVersion",1908}, + {"SecondOfModelVersion",227}, {""}, {""}, - {"partitionNumber",1592}, + {"partitionNumber",1669}, {""}, - {"truncateDegrees",2202}, - {"scaleFactorOfSecondFixedSurface",1872}, + {"truncateDegrees",2243}, + {"scaleFactorOfSecondFixedSurface",1913}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"modelVersionTime",1203}, + {"modelVersionTime",1325}, {""}, {""}, {""}, {""}, {""}, {""}, - {"directionNumber",434}, - {"functionCode",664}, + {"directionNumber",695}, + {"functionCode",887}, {""}, {""}, {""}, {""}, {""}, {""}, - {"grib1divider",683}, + {"grib1divider",903}, {""}, {""}, - {"referenceReflectivityForEchoTop",1735}, + {"referenceReflectivityForEchoTop",1804}, {""}, {""}, - {"coordinate3Flag",321}, + {"coordinate3Flag",592}, {""}, {""}, - {"treatmentOfMissingData",2199}, + {"treatmentOfMissingData",2240}, {""}, {""}, {""}, - {"numberOfAnalysis",1286}, + {"numberOfAnalysis",1375}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"forecastPeriodFrom",653}, + {"forecastPeriodFrom",875}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"isotopeIdentificationNumber",829}, - {"verticalDomainTemplateNumber",2341}, + {"isotopeIdentificationNumber",1034}, + {"verticalDomainTemplateNumber",2366}, {""}, {""}, - {"verticalCoordinateDefinition",2339}, + {"verticalCoordinateDefinition",2364}, {""}, - {"dataRepresentationType",367}, + {"dataRepresentationType",638}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"modelVersionDate",1202}, + {"modelVersionDate",1324}, {""}, - {"temperatureAndDewpointPresent",2129}, + {"temperatureAndDewpointPresent",2183}, {""}, {""}, {""}, {""}, {""}, - {"timeDomainTemplate",2158}, + {"timeDomainTemplate",2208}, {""}, {""}, {""}, - {"aerosolbinnumber",17}, + {"aerosolbinnumber",301}, {""}, - {"driverInformationBlockAddress",452}, - {"satelliteNumber",1831}, + {"driverInformationBlockAddress",709}, + {"satelliteNumber",1895}, {""}, {""}, {""}, {""}, {""}, - {"endOfFileAddress",505}, + {"endOfFileAddress",753}, {""}, - {"LoVInDegrees",1065}, + {"LoVInDegrees",129}, {""}, - {"originatingCentre",1489}, + {"originatingCentre",1570}, {""}, {""}, {""}, - {"climateDateTo",160}, + {"climateDateTo",432}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"extractAreaWestLongitude",567}, - {"typicalDateTime",2254}, + {"extractAreaWestLongitude",808}, + {"typicalDateTime",2283}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"groupLeafNodeK",709}, + {"groupLeafNodeK",922}, {""}, {""}, {""}, {""}, {""}, - {"isSatelliteType",832}, + {"isSatelliteType",1020}, {""}, {""}, {""}, - {"scaleFactorOfDistributionFunctionParameter",1859}, + {"scaleFactorOfDistributionFunctionParameter",1900}, {""}, {""}, {""}, - {"jdLocal",845}, - {"LoV",1064}, + {"jdLocal",1046}, + {"LoV",128}, {""}, {""}, {""}, {""}, {""}, - {"dataRepresentationTemplate",365}, + {"dataRepresentationTemplate",636}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"dateOfForecastRun",381}, + {"dateOfForecastRun",649}, {""}, {""}, {""}, {""}, - {"groupWidth",713}, + {"groupWidth",926}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"longitudeOfStretchingPoleInDegrees",1046}, + {"longitudeOfStretchingPoleInDegrees",1198}, {""}, {""}, - {"biFourierSubTruncationType",85}, + {"biFourierSubTruncationType",363}, {""}, - {"changeDecimalPrecision",146}, + {"changeDecimalPrecision",418}, {""}, {""}, {""}, {""}, {""}, {""}, - {"clusteringMethod",265}, + {"clusteringMethod",548}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"gridDefinitionTemplateNumber",703}, + {"gridDefinitionTemplateNumber",916}, {""}, {""}, {""}, {""}, - {"postProcessing",1620}, + {"postProcessing",1695}, {""}, {""}, {""}, {""}, - {"projString",1675}, + {"projString",1744}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"averagingPeriod",44}, - {"monthOfAnalysis",1211}, - {"LaR",874}, + {"averagingPeriod",324}, + {"monthOfAnalysis",1328}, + {"LaR",107}, {""}, {""}, {""}, - {"classOfAnalysis",158}, + {"classOfAnalysis",430}, {""}, - {"MonthOfModelVersion",1216}, - {"dataRepresentationTemplateNumber",366}, + {"MonthOfModelVersion",170}, + {"dataRepresentationTemplateNumber",637}, {""}, {""}, {""}, - {"MinuteOfModelVersion",1179}, + {"MinuteOfModelVersion",159}, {""}, {""}, {""}, - {"LoR",1059}, - {"dirty_statistics",437}, - {"directionScalingFactor",436}, + {"LoR",127}, + {"dirty_statistics",698}, + {"directionScalingFactor",697}, {""}, - {"Nx",1408}, + {"Nx",204}, {""}, - {"thisMarsClass",2136}, - {"typeOfCompressionUsed",2225}, + {"thisMarsClass",2189}, + {"typeOfCompressionUsed",2256}, {""}, {""}, {""}, {""}, {""}, - {"changingPrecision",151}, + {"changingPrecision",423}, {""}, {""}, {""}, - {"standardParallelInMicrodegrees",2061}, + {"standardParallelInMicrodegrees",2118}, {""}, {""}, {""}, - {"projectLocalTemplate",1672}, + {"projectLocalTemplate",1746}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"sfc_levtype",2000}, + {"sfc_levtype",2062}, {""}, {""}, {""}, {""}, {""}, - {"numberOfValues",1398}, + {"numberOfValues",1487}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"gts_ddhh00",717}, + {"gts_ddhh00",930}, {""}, {""}, {""}, - {"bitmapSectionPresent",91}, + {"bitmapSectionPresent",369}, {""}, {""}, {""}, {""}, {""}, - {"indicatorOfUnitForTimeRange",780}, + {"indicatorOfUnitForTimeRange",983}, {""}, {""}, {""}, - {"Ncx",1240}, + {"Ncx",193}, {""}, {""}, - {"offsetAfterBitmap",1422}, - {"numberOfReservedBytes",1378}, + {"offsetAfterBitmap",1505}, + {"numberOfReservedBytes",1467}, {""}, {""}, {""}, {""}, - {"XR",2407}, + {"XR",268}, {""}, - {"Nux",1405}, - {"centralClusterDefinition",125}, - {"endOfProduct",509}, + {"Nux",202}, + {"centralClusterDefinition",397}, + {"endOfProduct",757}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"expandedAbbreviations",540}, - {"orientationOfTheGrid",1480}, + {"expandedAbbreviations",778}, + {"orientationOfTheGrid",1563}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"predefined_grid",1625}, - {"groupWidths",714}, + {"predefined_grid",1701}, + {"groupWidths",927}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"julianForecastDay",853}, - {"consensusCount",303}, - {"centralLongitude",126}, + {"julianForecastDay",1049}, + {"consensusCount",574}, + {"centralLongitude",398}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"latitudeOfStretchingPoleInDegrees",906}, + {"latitudeOfStretchingPoleInDegrees",1085}, {""}, - {"is_chemical_distfn",814}, + {"is_chemical_distfn",1025}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"iScansNegatively",806}, + {"iScansNegatively",959}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"laplacianScalingFactor",872}, - {"originatingClass",1491}, + {"laplacianScalingFactor",1060}, + {"originatingClass",1572}, {""}, {""}, {""}, - {"dateOfAnalysis",379}, + {"dateOfAnalysis",647}, {""}, {""}, - {"yearOfAnalysis",2419}, + {"yearOfAnalysis",2430}, {""}, {""}, {""}, - {"cfVarName",143}, - {"isHindcast",824}, + {"cfVarName",415}, + {"isHindcast",1016}, {""}, - {"Lar2InDegrees",878}, - {"timeOfAnalysis",2162}, + {"Lar2InDegrees",112}, + {"timeOfAnalysis",2212}, {""}, {""}, {""}, - {"centreLatitudeInDegrees",134}, + {"centreLatitudeInDegrees",406}, {""}, {""}, - {"nameOfSecondFixedSurface",1231}, + {"nameOfSecondFixedSurface",1347}, {""}, {""}, - {"jIncrement",847}, + {"jIncrement",1042}, {""}, - {"N",1221}, + {"N",171}, {""}, - {"Lor2InDegrees",1063}, - {"crraLocalVersion",352}, + {"Lor2InDegrees",146}, + {"crraLocalVersion",623}, {""}, {""}, {""}, - {"typeOfAnalysis",2222}, + {"typeOfAnalysis",2253}, {""}, {""}, {""}, - {"northernLatitudeOfClusterDomain",1259}, + {"northernLatitudeOfClusterDomain",1363}, {""}, - {"orderOfSPD",1479}, - {"secondLatitudeInDegrees",1903}, - {"is_aerosol_optical",804}, + {"orderOfSPD",1561}, + {"secondLatitudeInDegrees",1958}, + {"is_aerosol_optical",1023}, {""}, - {"easternLongitudeOfDomain",472}, + {"easternLongitudeOfDomain",724}, {""}, {""}, {""}, {""}, - {"typeOfSecondFixedSurface",2242}, + {"typeOfSecondFixedSurface",2274}, {""}, {""}, {""}, {""}, - {"unitsBias",2273}, + {"unitsBias",2302}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"operationalForecastCluster",1472}, + {"operationalForecastCluster",1556}, {""}, - {"earthMajorAxis",467}, + {"earthMajorAxis",717}, {""}, {""}, {""}, {""}, {""}, {""}, - {"startingAzimuth",2062}, + {"startingAzimuth",2125}, {""}, - {"messageLength",1161}, - {"typicalCentury",2252}, + {"messageLength",1295}, + {"typicalCentury",2281}, {""}, {""}, {""}, {""}, - {"dataCategory",358}, + {"dataCategory",629}, {""}, - {"coordinate4Flag",324}, + {"coordinate4Flag",595}, {""}, {""}, {""}, - {"coordinate1Flag",316}, + {"coordinate1Flag",587}, {""}, {""}, - {"firstMonthUsedToBuildClimateMonth2",635}, - {"scaleFactorOfDistanceFromEnsembleMean",1858}, + {"firstMonthUsedToBuildClimateMonth2",860}, + {"scaleFactorOfDistanceFromEnsembleMean",1899}, {""}, - {"totalInitialConditions",2180}, - {"selectedFcIndex",1985}, + {"totalInitialConditions",2224}, + {"selectedFcIndex",2049}, {""}, - {"lsdate_bug",1070}, + {"lsdate_bug",1215}, {""}, {""}, {""}, {""}, - {"projectionCenterFlag",1670}, + {"projectionCenterFlag",1748}, {""}, - {"primaryBitmap",1651}, + {"primaryBitmap",1726}, {""}, {""}, {""}, - {"lstime_bug",1073}, + {"lstime_bug",1216}, {""}, - {"additionalFlagPresent",8}, + {"additionalFlagPresent",297}, {""}, - {"southernLatitudeOfClusterDomain",2035}, + {"southernLatitudeOfClusterDomain",2096}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"originatorLocalTemplate",1492}, + {"originatorLocalTemplate",1573}, {""}, - {"secondsOfReference",1914}, + {"secondsOfReference",1976}, {""}, - {"sampleSizeOfModelClimate",1828}, + {"sampleSizeOfModelClimate",1892}, {""}, {""}, {""}, - {"secondDimensionCoordinateValueDefinition",1899}, - {"identificationOfProject",754}, + {"secondDimensionCoordinateValueDefinition",1955}, + {"identificationOfProject",964}, {""}, {""}, {""}, {""}, - {"westernLongitudeOfDomain",2356}, + {"westernLongitudeOfDomain",2383}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"rectimeHour",1724}, + {"rectimeHour",1793}, {""}, {""}, - {"projectionCentreFlag",1671}, - {"epsContinous",535}, + {"projectionCentreFlag",1749}, + {"epsContinous",773}, {""}, {""}, {""}, {""}, {""}, - {"expandedCodes",541}, - {"centralLongitudeInDegrees",127}, - {"averaging2Flag",43}, + {"expandedCodes",779}, + {"centralLongitudeInDegrees",399}, + {"averaging2Flag",323}, {""}, {""}, {""}, - {"La2InDegrees",865}, - {"typeOfIntervalForFirstAndSecondSize",2233}, - {"param_value_min",1590}, + {"La2InDegrees",104}, + {"typeOfIntervalForFirstAndSecondSize",2264}, + {"param_value_min",1657}, {""}, - {"centuryOfReference",138}, + {"centuryOfReference",410}, {""}, {""}, {""}, {""}, {""}, {""}, - {"Lar1InDegrees",876}, - {"implementationDateOfModelCycle",765}, + {"Lar1InDegrees",110}, + {"implementationDateOfModelCycle",969}, {""}, {""}, - {"Lo2InDegrees",975}, + {"Lo2InDegrees",126}, {""}, {""}, {""}, {""}, {""}, {""}, - {"md5Data",1133}, - {"dayOfEndOfOverallTimeInterval",392}, - {"typeOfSizeInterval",2243}, + {"md5Data",1267}, + {"dayOfEndOfOverallTimeInterval",660}, + {"typeOfSizeInterval",2275}, {""}, - {"Lor1InDegrees",1061}, + {"Lor1InDegrees",144}, {""}, {""}, {""}, {""}, - {"numberOfDataValues",1313}, - {"hourOfAnalysis",739}, + {"numberOfDataValues",1402}, + {"hourOfAnalysis",945}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"matrixOfValues",1128}, - {"instrumentType",792}, + {"matrixOfValues",1263}, + {"instrumentType",994}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"isEPS",822}, + {"isEPS",1013}, {""}, {""}, - {"longitudeOfIcosahedronPole",1036}, + {"longitudeOfIcosahedronPole",1188}, {""}, {""}, - {"NAT",1234}, + {"NAT",174}, {""}, {""}, - {"localHour",989}, + {"localHour",1153}, {""}, - {"secondaryMissingValue",1896}, + {"secondaryMissingValue",1973}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"numberOfDistinctSection6s",1320}, + {"numberOfDistinctSection6s",1409}, {""}, {""}, {""}, {""}, - {"tableReference",2118}, - {"typeOfAuxiliaryInformation",2223}, - {"widthOfSPD",2361}, + {"tableReference",2173}, + {"typeOfAuxiliaryInformation",2254}, + {"widthOfSPD",2386}, {""}, {""}, - {"perturbationNumber",1606}, - {"southEastLatitudeOfVerficationArea",2032}, + {"perturbationNumber",1683}, + {"southEastLatitudeOfVerficationArea",2090}, {""}, {""}, - {"doExtractArea",447}, - {"typicalHour",2256}, - {"firstMonthUsedToBuildClimateMonth1",634}, + {"doExtractArea",704}, + {"typicalHour",2285}, + {"firstMonthUsedToBuildClimateMonth1",859}, {""}, {""}, - {"localDefNumberTwo",984}, + {"localDefNumberTwo",1146}, {""}, - {"numberOfDistinctSection3s",1317}, - {"numberOfChars",1297}, + {"numberOfDistinctSection3s",1406}, + {"numberOfChars",1386}, {""}, {""}, {""}, - {"maxLevelValue",1131}, + {"maxLevelValue",1265}, {""}, {""}, - {"attributeOfTile",39}, + {"attributeOfTile",319}, {""}, {""}, - {"numberOfPartitions",1358}, + {"numberOfPartitions",1447}, {""}, {""}, {""}, {""}, {""}, {""}, - {"md5Section9",1147}, - {"productDefinitionTemplateNumber",1664}, + {"md5Section9",1281}, + {"productDefinitionTemplateNumber",1738}, {""}, {""}, {""}, {""}, - {"typeOfIntervalForFirstAndSecondWavelength",2234}, + {"typeOfIntervalForFirstAndSecondWavelength",2265}, {""}, {""}, {""}, - {"secondaryBitmap",1890}, + {"secondaryBitmap",1968}, {""}, {""}, - {"dayOfReference",397}, + {"dayOfReference",664}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"quantileValue",1694}, + {"quantileValue",1763}, {""}, - {"kurt",860}, + {"kurt",1054}, {""}, {""}, {""}, {""}, {""}, - {"orientationOfTheGridInDegrees",1481}, + {"orientationOfTheGridInDegrees",1564}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"averaging1Flag",42}, + {"averaging1Flag",322}, {""}, {""}, {""}, - {"La1InDegrees",863}, + {"La1InDegrees",102}, {""}, {""}, {""}, {""}, {""}, {""}, - {"tigge_short_name",2152}, + {"tigge_short_name",2203}, {""}, {""}, - {"endOfMessage",508}, + {"endOfMessage",756}, {""}, {""}, {""}, {""}, - {"Lo1InDegrees",973}, + {"Lo1InDegrees",124}, {""}, {""}, - {"n3",1225}, - {"projectLocalTemplateNumber",1673}, - {"probContinous",1656}, + {"n3",1341}, + {"projectLocalTemplateNumber",1747}, + {"probContinous",1729}, {""}, {""}, - {"halfByte",721}, - {"n2",1223}, + {"halfByte",932}, + {"n2",1340}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"kurtosis",861}, - {"correction2Part",340}, - {"productDefinitionTemplateNumberInternal",1665}, + {"kurtosis",1055}, + {"correction2Part",611}, + {"productDefinitionTemplateNumberInternal",1739}, {""}, {""}, - {"skewness",2025}, + {"skewness",2084}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"WMO",2389}, + {"WMO",261}, {""}, {""}, {""}, - {"constantFieldHalfByte",306}, + {"constantFieldHalfByte",577}, {""}, {""}, - {"md5Section8",1146}, - {"sp3",2042}, + {"md5Section8",1280}, + {"sp3",2100}, {""}, {""}, {""}, {""}, {""}, - {"sp2",2041}, + {"sp2",2099}, {""}, {""}, {""}, {""}, - {"spare3",2048}, + {"spare3",2106}, {""}, {""}, {""}, - {"sphericalHarmonics",2057}, + {"sphericalHarmonics",2114}, {""}, - {"spare2",2047}, + {"spare2",2105}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"section6",1963}, + {"section6",2008}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"unknown",2282}, - {"keySat",857}, + {"unknown",2311}, + {"keySat",1052}, {""}, {""}, {""}, {""}, - {"keyData",855}, + {"keyData",1050}, {""}, {""}, - {"extraDimensionPresent",597}, - {"skew",2024}, + {"extraDimensionPresent",799}, + {"skew",2083}, {""}, - {"extremeClockwiseWindDirection",601}, + {"extremeClockwiseWindDirection",835}, {""}, {""}, {""}, {""}, {""}, {""}, - {"numberOfCharacters",1296}, + {"numberOfCharacters",1385}, {""}, {""}, - {"legBaseTime",931}, + {"legBaseTime",1102}, {""}, {""}, - {"dummy2",456}, + {"dummy2",712}, {""}, - {"isCorrection",817}, - {"secondsOfAnalysis",1913}, - {"biFourierCoefficients",78}, - {"secondaryBitmapPresent",1892}, + {"isCorrection",1012}, + {"secondsOfAnalysis",1975}, + {"biFourierCoefficients",356}, + {"secondaryBitmapPresent",1969}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"scanPosition",1887}, + {"scanPosition",1944}, {""}, {""}, {""}, - {"falseNorthing",619}, + {"falseNorthing",846}, {""}, {""}, - {"yearOfCentury",2420}, - {"qnhPresent",1688}, + {"yearOfCentury",2431}, + {"qnhPresent",1757}, {""}, {""}, {""}, {""}, {""}, {""}, - {"componentIndex",290}, + {"componentIndex",561}, {""}, - {"listMembersMissing",957}, - {"default_max_val",404}, + {"listMembersMissing",1126}, + {"default_max_val",677}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"complexPacking",289}, + {"complexPacking",560}, {""}, {""}, {""}, - {"centuryOfAnalysis",137}, + {"centuryOfAnalysis",409}, {""}, {""}, {""}, - {"missing_values",1191}, + {"missing_values",1316}, {""}, {""}, - {"extendedFlag",561}, + {"extendedFlag",797}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"correction3",341}, + {"correction3",612}, {""}, - {"marsType2",1116}, + {"marsType2",1250}, {""}, {""}, - {"legBaseDate",930}, - {"fileConsistencyFlags",626}, - {"numberOfRemaininChars",1376}, + {"legBaseDate",1101}, + {"fileConsistencyFlags",852}, + {"numberOfRemaininChars",1465}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"sectionLengthLimitForEnsembles",1980}, - {"scaledValueOfFirstSize",1841}, + {"sectionLengthLimitForEnsembles",2023}, + {"scaledValueOfFirstSize",1928}, {""}, {""}, {""}, - {"table2Version",2115}, + {"table2Version",2170}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"secondaryBitmaps",1893}, + {"secondaryBitmaps",1970}, {""}, {""}, - {"versionOfModelClimate",2337}, + {"versionOfModelClimate",2362}, {""}, - {"scaleFactorOfLowerLimit",1867}, - {"DjInMetres",446}, + {"scaleFactorOfLowerLimit",1908}, + {"DjInMetres",37}, {""}, {""}, - {"section9Pointer",1978}, + {"section9Pointer",2021}, {""}, {""}, {""}, {""}, - {"rdbtimeHour",1710}, + {"rdbtimeHour",1780}, {""}, - {"coordinate1Start",317}, + {"coordinate1Start",588}, {""}, {""}, - {"qfePresent",1684}, + {"qfePresent",1753}, {""}, - {"predefined_grid_values",1626}, + {"predefined_grid_values",1702}, {""}, - {"md5Structure",1148}, - {"formatVersionMajorNumber",658}, + {"md5Structure",1282}, + {"formatVersionMajorNumber",881}, {""}, {""}, {""}, {""}, {""}, - {"typeOfPostProcessing",2239}, - {"widthOfLengths",2360}, - {"lengthOfProjectLocalTemplate",941}, + {"typeOfPostProcessing",2270}, + {"widthOfLengths",2385}, + {"lengthOfProjectLocalTemplate",1112}, {""}, {""}, - {"numberOfCategories",1295}, + {"numberOfCategories",1384}, {""}, {""}, {""}, {""}, - {"scaledValueOfStandardDeviation",1853}, - {"selectStepTemplateInstant",1991}, + {"scaledValueOfStandardDeviation",1940}, + {"selectStepTemplateInstant",2046}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"numberOfRows",1379}, - {"scaledValueOfStandardDeviationInTheCluster",1854}, - {"iScansPositively",807}, + {"numberOfRows",1468}, + {"scaledValueOfStandardDeviationInTheCluster",1941}, + {"iScansPositively",960}, {""}, - {"gridCoordinate",699}, + {"gridCoordinate",912}, {""}, - {"longitudeOfFirstDiamondCentreLine",1031}, - {"longitudeOfFirstDiamondCenterLine",1030}, + {"longitudeOfFirstDiamondCentreLine",1183}, + {"longitudeOfFirstDiamondCenterLine",1182}, {""}, - {"expandedOriginalCodes",547}, + {"expandedOriginalCodes",785}, {""}, {""}, - {"expandedOriginalWidths",550}, + {"expandedOriginalWidths",788}, {""}, - {"southEastLatitudeOfLPOArea",2031}, + {"southEastLatitudeOfLPOArea",2089}, {""}, - {"secondaryBitmapsCount",1894}, + {"secondaryBitmapsCount",1971}, {""}, - {"centralLongitudeInMicrodegrees",128}, - {"md5DataSection",1134}, + {"centralLongitudeInMicrodegrees",400}, + {"md5DataSection",1268}, {""}, - {"longitudeOfFirstDiamondCentreLineInDegrees",1032}, - {"typeOfHorizontalLine",2232}, + {"longitudeOfFirstDiamondCentreLineInDegrees",1184}, + {"typeOfHorizontalLine",2263}, {""}, {""}, {""}, {""}, {""}, - {"DELETE",414}, + {"DELETE",24}, {""}, {""}, {""}, {""}, - {"nameECMF",1228}, + {"nameECMF",1344}, {""}, {""}, {""}, {""}, {""}, {""}, - {"BufrTemplate",105}, - {"numberOfForecastsInCluster",1328}, + {"BufrTemplate",19}, + {"numberOfForecastsInCluster",1417}, {""}, {""}, - {"reserved3",1750}, - {"timeRangeIndicator",2167}, + {"reserved3",1818}, + {"timeRangeIndicator",2217}, {""}, {""}, - {"extractDateTimeYearStart",587}, - {"scaledValueOfSecondSize",1851}, - {"reserved2",1749}, + {"extractDateTimeYearStart",828}, + {"scaledValueOfSecondSize",1938}, + {"reserved2",1817}, {""}, {""}, {""}, {""}, {""}, - {"section8Pointer",1975}, - {"angleOfRotationOfProjection",28}, - {"latitudeOfGridPoints",895}, + {"section8Pointer",2018}, + {"angleOfRotationOfProjection",310}, + {"latitudeOfGridPoints",1074}, {""}, {""}, {""}, {""}, {""}, {""}, - {"upperThreshold",2296}, - {"section0Pointer",1926}, + {"upperThreshold",2325}, + {"section0Pointer",1979}, {""}, {""}, {""}, - {"keyMore",856}, + {"keyMore",1051}, {""}, {""}, - {"localDefNumberOne",983}, + {"localDefNumberOne",1145}, {""}, {""}, {""}, {""}, - {"nosigPresent",1267}, - {"versionNumOfFilesFreeSpaceStorage",2334}, - {"thisExperimentVersionNumber",2135}, + {"nosigPresent",1365}, + {"versionNumOfFilesFreeSpaceStorage",2356}, + {"thisExperimentVersionNumber",2188}, {""}, - {"La2",864}, - {"expandedOriginalScales",549}, - {"Lar2",877}, - {"interpretationOfNumberOfPoints",800}, + {"La2",103}, + {"expandedOriginalScales",787}, + {"Lar2",111}, + {"interpretationOfNumberOfPoints",1002}, {""}, - {"secondaryBitMap",1891}, - {"numberOfDistinctSection7s",1321}, + {"secondaryBitMap",1967}, + {"numberOfDistinctSection7s",1410}, {""}, {""}, {""}, - {"numberOfDistinctSection4s",1318}, + {"numberOfDistinctSection4s",1407}, {""}, {""}, {""}, {""}, - {"Lo2",974}, + {"Lo2",125}, {""}, - {"Lor2",1062}, - {"Latin2",884}, + {"Lor2",145}, + {"Latin2",116}, {""}, {""}, {""}, {""}, {""}, {""}, - {"unitsECMF",2277}, + {"unitsECMF",2306}, {""}, {""}, - {"sp1",2040}, + {"sp1",2098}, {""}, {""}, - {"listOfContributingSpectralBands",965}, + {"listOfContributingSpectralBands",1134}, {""}, {""}, {""}, - {"listOfEnsembleForecastNumbers",967}, + {"listOfEnsembleForecastNumbers",1136}, {""}, - {"level_value_list",951}, + {"level_value_list",1121}, {""}, - {"spare1",2046}, + {"spare1",2104}, {""}, {""}, {""}, - {"lowerThreshold",1068}, + {"lowerThreshold",1212}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"timeCoordinateDefinition",2157}, + {"timeCoordinateDefinition",2207}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"DjInDegrees",445}, + {"DjInDegrees",36}, {""}, {""}, - {"dummy1",455}, + {"dummy1",711}, {""}, - {"X2",2395}, + {"X2",266}, {""}, {""}, - {"packingType",1503}, - {"shapeOfVerificationArea",2002}, + {"packingType",1580}, + {"shapeOfVerificationArea",2064}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"section1",1928}, + {"section1",1980}, {""}, {""}, {""}, - {"scaledValueOfFirstFixedSurface",1840}, + {"scaledValueOfFirstFixedSurface",1927}, {""}, {""}, {""}, {""}, - {"secondaryMissingValueSubstitute",1897}, - {"totalNumberOfdimensions",2188}, + {"secondaryMissingValueSubstitute",1974}, + {"totalNumberOfdimensions",2239}, {""}, {""}, {""}, {""}, - {"centreForTable2",132}, + {"centreForTable2",404}, {""}, - {"md5TimeDomainSection",1149}, - {"endDayTrend3",488}, + {"md5TimeDomainSection",1283}, + {"endDayTrend3",736}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"heightOrPressureOfLevel",727}, + {"heightOrPressureOfLevel",936}, {""}, - {"Model_Identifier",1199}, + {"Model_Identifier",168}, {""}, - {"decimalPrecision",399}, + {"decimalPrecision",666}, {""}, {""}, {""}, {""}, {""}, {""}, - {"offsetBSection9",1434}, + {"offsetBSection9",1513}, {""}, {""}, - {"marsType1",1115}, + {"marsType1",1249}, {""}, {""}, - {"expandBy",539}, + {"expandBy",777}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"startOfHeaders",2063}, + {"startOfHeaders",2119}, {""}, {""}, {""}, {""}, - {"bufrdcExpandedDescriptors",101}, + {"bufrdcExpandedDescriptors",380}, {""}, {""}, - {"cloudsTitle3",253}, + {"cloudsTitle3",524}, {""}, {""}, {""}, - {"qualityControl",1690}, + {"qualityControl",1759}, {""}, {""}, {""}, {""}, {""}, {""}, - {"numberOfForecastsInTheCluster",1330}, + {"numberOfForecastsInTheCluster",1419}, {""}, {""}, {""}, - {"ITN",839}, + {"ITN",92}, {""}, - {"latitudeOfCentralPointInClusterDomain",890}, + {"latitudeOfCentralPointInClusterDomain",1069}, {""}, - {"totalNumberOfTubes",2197}, + {"totalNumberOfTubes",2237}, {""}, {""}, {""}, {""}, {""}, - {"expandedOriginalReferences",548}, + {"expandedOriginalReferences",786}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"extractDateTimeHourStart",574}, - {"coordinate3OfLastGridPoint",323}, + {"extractDateTimeHourStart",815}, + {"coordinate3OfLastGridPoint",594}, {""}, {""}, - {"totalNumberOfQuantiles",2194}, + {"totalNumberOfQuantiles",2234}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"Yo",2429}, + {"Yo",281}, {""}, {""}, {""}, {""}, {""}, - {"epsStatisticsContinous",537}, - {"numberIncludedInAverage",1279}, + {"epsStatisticsContinous",775}, + {"numberIncludedInAverage",1373}, {""}, {""}, {""}, - {"stepRangeInHours",2078}, - {"sectionLengthLimitForProbability",1981}, + {"stepRangeInHours",2135}, + {"sectionLengthLimitForProbability",2024}, {""}, {""}, - {"referenceOfWidths",1734}, + {"referenceOfWidths",1803}, {""}, {""}, - {"Yp",2430}, + {"Yp",282}, {""}, {""}, - {"flagForAnyFurtherInformation",639}, + {"flagForAnyFurtherInformation",864}, {""}, - {"windSpeedTrend3",2377}, + {"windSpeedTrend3",2402}, {""}, - {"rangeBinSpacing",1703}, + {"rangeBinSpacing",1772}, {""}, {""}, {""}, - {"windSpeedTrend2",2376}, + {"windSpeedTrend2",2401}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"windVariableDirectionTrend3",2387}, + {"windVariableDirectionTrend3",2412}, {""}, - {"reserved1",1748}, - {"windVariableDirectionTrend2",2386}, + {"reserved1",1816}, + {"windVariableDirectionTrend2",2411}, {""}, {""}, {""}, - {"longitudeOfLastGridPoint",1037}, + {"longitudeOfLastGridPoint",1189}, {""}, - {"numberOfColumns",1304}, + {"numberOfColumns",1393}, {""}, - {"typeOfOriginalFieldValues",2237}, + {"typeOfOriginalFieldValues",2268}, {""}, - {"totalLength",2181}, + {"totalLength",2225}, {""}, - {"section10Length",1930}, + {"section10Length",1981}, {""}, - {"stepUnits",2082}, + {"stepUnits",2139}, {""}, {""}, - {"offsetBeforeData",1429}, + {"offsetBeforeData",1515}, {""}, {""}, - {"bitmapPresent",90}, + {"bitmapPresent",368}, {""}, - {"totalNumberOfDirections",2189}, + {"totalNumberOfDirections",2229}, {""}, - {"selectedHour",1986}, + {"selectedHour",2050}, {""}, - {"windDirectionTrend3",2366}, + {"windDirectionTrend3",2391}, {""}, - {"selectStepTemplateInterval",1992}, + {"selectStepTemplateInterval",2047}, {""}, {""}, - {"La1",862}, - {"windDirectionTrend2",2365}, - {"Lar1",875}, + {"La1",101}, + {"windDirectionTrend2",2390}, + {"Lar1",109}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"Lo1",972}, + {"Lo1",123}, {""}, - {"Lor1",1060}, - {"Latin1",882}, + {"Lor1",143}, + {"Latin1",114}, {""}, {""}, {""}, {""}, {""}, - {"totalNumberOfFrequencies",2191}, + {"totalNumberOfFrequencies",2231}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"flagForIrregularGridCoordinateList",640}, - {"spatialProcessing",2050}, + {"flagForIrregularGridCoordinateList",865}, + {"spatialProcessing",2108}, {""}, {""}, - {"boot_edition",94}, + {"boot_edition",372}, {""}, {""}, {""}, - {"timeRangeIndicatorFromStepRange",2168}, + {"timeRangeIndicatorFromStepRange",2218}, {""}, {""}, {""}, - {"windUnits",2379}, - {"centuryOfReferenceTimeOfData",139}, + {"windUnits",2404}, + {"centuryOfReferenceTimeOfData",411}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"clusterMember6",272}, + {"clusterMember6",541}, {""}, - {"typicalMonth",2258}, + {"typicalMonth",2287}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"offsetSection6",1450}, + {"offsetSection6",1532}, {""}, - {"stepInHours",2076}, + {"stepInHours",2133}, {""}, - {"bufrHeaderCentre",102}, + {"bufrHeaderCentre",377}, {""}, {""}, {""}, {""}, {""}, {""}, - {"accuracyMultipliedByFactor",5}, + {"accuracyMultipliedByFactor",294}, {""}, {""}, {""}, {""}, {""}, - {"X1",2393}, + {"X1",264}, {""}, {""}, {""}, {""}, {""}, {""}, - {"lengthOfHeaders",937}, + {"lengthOfHeaders",1108}, {""}, {""}, - {"localSectionPresent",1014}, - {"shapeOfTheEarth",2001}, - {"parametersVersion",1584}, + {"localSectionPresent",1165}, + {"shapeOfTheEarth",2063}, + {"parametersVersion",1667}, {""}, - {"clusterMember3",269}, - {"scaledValueOfSecondFixedSurface",1850}, + {"clusterMember3",538}, + {"scaledValueOfSecondFixedSurface",1937}, {""}, {""}, {""}, {""}, - {"clusterMember2",268}, + {"clusterMember2",537}, {""}, {""}, {""}, {""}, - {"offsetSection3",1447}, - {"selectedYear",1990}, + {"offsetSection3",1529}, + {"selectedYear",2054}, {""}, {""}, - {"scaleFactorOfRadiusOfSphericalEarth",1871}, + {"scaleFactorOfRadiusOfSphericalEarth",1912}, {""}, - {"offsetSection2",1446}, + {"offsetSection2",1528}, {""}, - {"correction1",337}, + {"correction1",608}, {""}, {""}, - {"endMinuteTrend3",499}, - {"gridDescriptionSectionPresent",704}, - {"windVariableDirectionTrend1",2385}, + {"endMinuteTrend3",747}, + {"gridDescriptionSectionPresent",917}, + {"windVariableDirectionTrend1",2410}, {""}, - {"localYear",1022}, + {"localYear",1172}, {""}, - {"endMinuteTrend2",498}, - {"reservedSection3",1754}, + {"endMinuteTrend2",746}, + {"reservedSection3",1822}, {""}, {""}, {""}, {""}, {""}, - {"southEastLongitudeOfVerficationArea",2034}, + {"southEastLongitudeOfVerficationArea",2092}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"typicalYear",2261}, + {"typicalYear",2290}, {""}, - {"marsStream1",1112}, + {"marsStream1",1246}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"modelErrorType",1197}, + {"modelErrorType",1321}, {""}, - {"runwaySideCodeState3",1821}, - {"numberOfLogicals",1344}, + {"runwaySideCodeState3",1889}, + {"numberOfLogicals",1433}, {""}, {""}, {""}, {""}, - {"runwaySideCodeState2",1820}, + {"runwaySideCodeState2",1888}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"versionNumberOfGribLocalTables",2332}, + {"versionNumberOfGribLocalTables",2360}, {""}, {""}, {""}, {""}, {""}, - {"groupInternalNodeK",708}, - {"probabilityType",1654}, + {"groupInternalNodeK",921}, + {"probabilityType",1732}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"pressureUnits",1650}, + {"pressureUnits",1725}, {""}, - {"local_padding",1011}, + {"local_padding",1173}, {""}, {""}, {""}, {""}, - {"percentileValue",1603}, - {"METARstr",1164}, + {"percentileValue",1680}, + {"METARstr",157}, {""}, {""}, {""}, - {"resolutionAndComponentFlags",1756}, + {"resolutionAndComponentFlags",1824}, {""}, {""}, {""}, {""}, - {"probabilityTypeName",1655}, + {"probabilityTypeName",1733}, {""}, {""}, - {"typeOfCalendar",2224}, + {"typeOfCalendar",2255}, {""}, {""}, {""}, - {"scaledValueOfDistributionFunctionParameter",1837}, + {"scaledValueOfDistributionFunctionParameter",1924}, {""}, {""}, {""}, - {"grib2LocalSectionPresent",686}, + {"grib2LocalSectionPresent",905}, {""}, - {"scaleFactorAtReferencePoint",1856}, + {"scaleFactorAtReferencePoint",1897}, {""}, {""}, {""}, - {"spare4",2049}, + {"spare4",2107}, {""}, {""}, {""}, {""}, {""}, - {"frequencyNumber",662}, - {"scaleFactorOfLengthOfSemiMinorAxis",1866}, + {"frequencyNumber",885}, + {"scaleFactorOfLengthOfSemiMinorAxis",1907}, {""}, - {"endOfHeadersMarker",506}, + {"endOfHeadersMarker",754}, {""}, {""}, {""}, {""}, {""}, - {"azimuthalWidth",47}, - {"windSpeedTrend1",2375}, + {"azimuthalWidth",326}, + {"windSpeedTrend1",2400}, {""}, {""}, - {"section9Length",1977}, + {"section9Length",2020}, {""}, {""}, {""}, {""}, - {"NV",1407}, - {"latitudeWhereDxAndDyAreSpecified",917}, + {"NV",190}, + {"latitudeWhereDxAndDyAreSpecified",1094}, {""}, {""}, {""}, {""}, - {"runwayDepositState3",1781}, + {"runwayDepositState3",1849}, {""}, {""}, - {"stepForClustering",2074}, + {"stepForClustering",2131}, {""}, {""}, - {"runwayDepositState2",1780}, + {"runwayDepositState2",1848}, {""}, {""}, {""}, - {"paleontologicalOffset",1574}, - {"latitudeWhereDxAndDyAreSpecifiedInDegrees",918}, + {"paleontologicalOffset",1651}, + {"latitudeWhereDxAndDyAreSpecifiedInDegrees",1095}, {""}, {""}, - {"numberInMixedCoordinateDefinition",1282}, + {"numberInMixedCoordinateDefinition",1370}, {""}, {""}, {""}, - {"section7",1968}, - {"jDirectionIncrement",841}, + {"section7",2012}, + {"jDirectionIncrement",1038}, {""}, - {"longitudeOfNorthWestCornerOfArea",1039}, + {"longitudeOfNorthWestCornerOfArea",1191}, {""}, {""}, - {"scanningMode6",1883}, - {"grib2LocalSectionNumber",685}, - {"section4",1952}, + {"scanningMode6",1948}, + {"grib2LocalSectionNumber",904}, + {"section4",1999}, {""}, {""}, {""}, - {"unitsConversionOffset",2274}, + {"unitsConversionOffset",2303}, {""}, - {"windDirectionTrend1",2364}, + {"windDirectionTrend1",2389}, {""}, {""}, {""}, {""}, - {"monthOfEndOfOverallTimeInterval",1212}, + {"monthOfEndOfOverallTimeInterval",1329}, {""}, - {"swapScanningLat",2107}, + {"swapScanningLat",2163}, {""}, - {"tiggeLAMName",2147}, - {"distinctLongitudes",442}, - {"yearOfEndOfOverallTimeInterval",2421}, - {"coordinate2Flag",319}, + {"tiggeLAMName",2197}, + {"distinctLongitudes",703}, + {"yearOfEndOfOverallTimeInterval",2432}, + {"coordinate2Flag",590}, {""}, {""}, {""}, - {"swapScanningLon",2108}, + {"swapScanningLon",2164}, {""}, {""}, {""}, {""}, - {"inputOriginatingCentre",786}, + {"inputOriginatingCentre",988}, {""}, - {"groupLengths",710}, + {"groupLengths",923}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"coordinate4OfLastGridPoint",326}, + {"coordinate4OfLastGridPoint",597}, {""}, {""}, - {"lengthOfOriginatorLocalTemplate",940}, + {"lengthOfOriginatorLocalTemplate",1111}, {""}, - {"rdbtimeMonth",1712}, + {"rdbtimeMonth",1782}, {""}, {""}, {""}, {""}, {""}, - {"productionStatusOfProcessedData",1668}, + {"productionStatusOfProcessedData",1742}, {""}, - {"NR",1271}, + {"NR",186}, {""}, {""}, {""}, {""}, - {"conceptsDir1",295}, + {"conceptsDir1",566}, {""}, {""}, - {"normAtFinalTime",1257}, - {"section8Length",1974}, + {"normAtFinalTime",1354}, + {"section8Length",2017}, {""}, {""}, {""}, {""}, {""}, - {"correction4",343}, + {"correction4",614}, {""}, {""}, - {"radiusOfCentralCluster",1699}, - {"section0Length",1925}, + {"radiusOfCentralCluster",1768}, + {"section0Length",1978}, {""}, - {"subDefinitions2",2092}, + {"subDefinitions2",2148}, {""}, {""}, - {"windVariableDirectionTrend4",2388}, + {"windVariableDirectionTrend4",2413}, {""}, {""}, {""}, - {"firstDimensionCoordinateValueDefinition",629}, + {"firstDimensionCoordinateValueDefinition",855}, {""}, {""}, - {"extractDateTimeYearEnd",585}, - {"totalNumberOfTileAttributePairs",2196}, - {"doSimpleThinning",451}, - {"latitudeOfFirstGridPoint",893}, + {"extractDateTimeYearEnd",826}, + {"totalNumberOfTileAttributePairs",2236}, + {"doSimpleThinning",707}, + {"latitudeOfFirstGridPoint",1072}, {""}, {""}, {""}, {""}, - {"unpackedError",2284}, + {"unpackedError",2313}, {""}, {""}, {""}, - {"endDayTrend1",486}, + {"endDayTrend1",734}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"unitsConversionScaleFactor",2275}, + {"unitsConversionScaleFactor",2304}, {""}, - {"clusterMember1",266}, + {"clusterMember1",535}, {""}, {""}, {""}, {""}, - {"nameLegacyECMF",1229}, + {"nameLegacyECMF",1345}, {""}, - {"numberOfRepresentativeMember",1377}, + {"numberOfRepresentativeMember",1466}, {""}, {""}, - {"directionOfVariation",435}, - {"offsetSection1",1443}, + {"directionOfVariation",696}, + {"offsetSection1",1525}, {""}, {""}, {""}, {""}, {""}, - {"resolutionAndComponentFlags8",1763}, + {"resolutionAndComponentFlags8",1831}, {""}, {""}, {""}, - {"diffInHours",426}, - {"endMinuteTrend1",497}, - {"coordinateFlag2",328}, + {"diffInHours",690}, + {"endMinuteTrend1",745}, + {"coordinateFlag2",599}, {""}, - {"numberOfBits",1287}, + {"numberOfBits",1376}, {""}, - {"rdbtimeYear",1715}, + {"rdbtimeYear",1785}, {""}, {""}, {""}, {""}, {""}, {""}, - {"minutesAfterReferenceTimeOfDataCutoff",1182}, + {"minutesAfterReferenceTimeOfDataCutoff",1310}, {""}, {""}, - {"section2Present",1943}, + {"section2Present",1992}, {""}, {""}, {""}, - {"cloudsTitle1",243}, + {"cloudsTitle1",514}, {""}, {""}, {""}, - {"numberOfOctectsForNumberOfPoints",1352}, - {"observationType",1414}, - {"gribDataQualityChecks",688}, + {"numberOfOctectsForNumberOfPoints",1441}, + {"observationType",1497}, + {"gribDataQualityChecks",908}, {""}, {""}, {""}, {""}, - {"frequencyScalingFactor",663}, + {"frequencyScalingFactor",886}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"runwaySideCodeState1",1819}, - {"latitudeLongitudeValues",889}, + {"runwaySideCodeState1",1887}, + {"latitudeLongitudeValues",1068}, {""}, {""}, {""}, - {"section10Pointer",1931}, + {"section10Pointer",1982}, {""}, {""}, {""}, - {"matchAerosolPacking",1123}, + {"matchAerosolPacking",1258}, {""}, {""}, {""}, - {"totalNumberOfForecastProbabilities",2190}, + {"totalNumberOfForecastProbabilities",2230}, {""}, {""}, {""}, {""}, - {"significanceOfReferenceDateAndTime",2011}, + {"significanceOfReferenceDateAndTime",2070}, {""}, {""}, {""}, {""}, - {"hourOfEndOfOverallTimeInterval",740}, + {"hourOfEndOfOverallTimeInterval",946}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"localExtensionPadding",986}, + {"localExtensionPadding",1150}, {""}, {""}, {""}, {""}, - {"masterTablesVersionNumber",1120}, - {"packingError",1502}, - {"startOfRange",2065}, - {"totalNumberOfDataValuesMissingInStatisticalProcess",2187}, - {"numberOfClusters",1300}, + {"masterTablesVersionNumber",1255}, + {"packingError",1579}, + {"startOfRange",2121}, + {"totalNumberOfDataValuesMissingInStatisticalProcess",2228}, + {"numberOfClusters",1389}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"P",1497}, + {"P",209}, {""}, {""}, {""}, {""}, - {"marsKeywords1",1098}, + {"marsKeywords1",1233}, {""}, {""}, - {"numberOfComponents",1305}, + {"numberOfComponents",1394}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"numberOfPoints",1359}, + {"numberOfPoints",1448}, {""}, {""}, {""}, - {"latitudeOfSouthernPole",903}, - {"g1conceptsMasterDir",667}, + {"latitudeOfSouthernPole",1082}, + {"g1conceptsMasterDir",890}, {""}, {""}, {""}, {""}, {""}, - {"scaledValueOfDistanceFromEnsembleMean",1836}, + {"scaledValueOfDistanceFromEnsembleMean",1923}, {""}, {""}, - {"mars_labeling",1099}, + {"mars_labeling",1251}, {""}, {""}, {""}, {""}, {""}, - {"section3Flags",1946}, - {"spaceUnitFlag",2043}, + {"section3Flags",1994}, + {"spaceUnitFlag",2101}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"totalNumberOfIterations",2193}, - {"runwayDepositState1",1779}, + {"totalNumberOfIterations",2233}, + {"runwayDepositState1",1847}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"reservedNeedNotBePresent",1751}, + {"reservedNeedNotBePresent",1819}, {""}, {""}, {""}, {""}, - {"section_10",1929}, + {"section_10",2037}, {""}, {""}, {""}, {""}, {""}, - {"deleteCalendarId",415}, + {"deleteCalendarId",681}, {""}, {""}, {""}, {""}, {""}, - {"timeDomainTemplateNumber",2159}, - {"backgroundProcess",49}, + {"timeDomainTemplateNumber",2209}, + {"backgroundProcess",328}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"extractDateTimeHourEnd",572}, + {"extractDateTimeHourEnd",813}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"variationOfVisibility",2314}, + {"variationOfVisibility",2339}, {""}, {""}, - {"endDayTrend4",489}, - {"ijDirectionIncrementGiven",764}, + {"endDayTrend4",737}, + {"ijDirectionIncrementGiven",968}, {""}, {""}, {""}, - {"Ensemble_Identifier",528}, + {"Ensemble_Identifier",51}, {""}, {""}, {""}, - {"secondOfEndOfOverallTimeInterval",1904}, + {"secondOfEndOfOverallTimeInterval",1959}, {""}, {""}, - {"minuteOfEndOfOverallTimeInterval",1175}, - {"latitudeOfIcosahedronPole",896}, + {"minuteOfEndOfOverallTimeInterval",1304}, + {"latitudeOfIcosahedronPole",1075}, {""}, {""}, {""}, {""}, {""}, {""}, - {"numberOfDataBinsAlongRadials",1309}, + {"numberOfDataBinsAlongRadials",1398}, {""}, {""}, - {"preBitmapValues",1622}, + {"preBitmapValues",1697}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"subDefinitions1",2091}, + {"subDefinitions1",2147}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"marsGrid",1095}, + {"marsGrid",1230}, {""}, {""}, - {"indicatorOfTypeOfLevel",777}, + {"indicatorOfTypeOfLevel",980}, {""}, {""}, {""}, {""}, - {"endStepInHours",513}, - {"twoOrdersOfSPD",2214}, - {"cloudsTitle4",258}, - {"subLocalDefinition2",2096}, + {"endStepInHours",760}, + {"twoOrdersOfSPD",2251}, + {"cloudsTitle4",529}, + {"subLocalDefinition2",2150}, {""}, - {"longitudeOfLastGridPointInDegrees",1038}, + {"longitudeOfLastGridPointInDegrees",1190}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"is_ocean3d_param",827}, + {"is_ocean3d_param",1029}, {""}, - {"variationOfVisibilityDirection",2315}, - {"is_ocean2d_param",826}, + {"variationOfVisibilityDirection",2340}, + {"is_ocean2d_param",1028}, {""}, {""}, {""}, - {"section1Flags",1935}, - {"variationOfVisibilityDirectionAngle",2316}, + {"section1Flags",1985}, + {"variationOfVisibilityDirectionAngle",2341}, {""}, {""}, {""}, {""}, - {"default_min_val",405}, + {"default_min_val",678}, {""}, - {"coordinateFlag1",327}, + {"coordinateFlag1",598}, {""}, {""}, {""}, {""}, - {"numberOfDataPoints",1311}, + {"numberOfDataPoints",1400}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"coordinate2Start",320}, - {"secondaryBitmapsSize",1895}, + {"coordinate2Start",591}, + {"secondaryBitmapsSize",1972}, {""}, {""}, {""}, {""}, {""}, {""}, - {"windSpeedTrend4",2378}, + {"windSpeedTrend4",2403}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"swapScanningX",2109}, + {"swapScanningX",2165}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"numberOfCoordinatesValues",1308}, + {"numberOfCoordinatesValues",1397}, {""}, {""}, {""}, {""}, {""}, - {"section3Padding",1948}, + {"section3Padding",1996}, {""}, {""}, - {"section2Padding",1941}, + {"section2Padding",1990}, {""}, {""}, {""}, {""}, - {"param_value_max",1589}, - {"compressedData",291}, + {"param_value_max",1656}, + {"compressedData",562}, {""}, {""}, {""}, {""}, {""}, - {"windDirectionTrend4",2367}, + {"windDirectionTrend4",2392}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"numberOfPackedValues",1355}, + {"numberOfPackedValues",1444}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"masterTablesVersionNumberLatest",1121}, + {"masterTablesVersionNumberLatest",1256}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"windGust",2368}, + {"windGust",2393}, {""}, {""}, - {"unitOfTimeRange",2271}, + {"unitOfTimeRange",2300}, {""}, {""}, - {"numberMissingFromAveragesOrAccumulations",1285}, + {"numberMissingFromAveragesOrAccumulations",1374}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"_numberOfValues",1397}, + {"_numberOfValues",291}, {""}, {""}, {""}, {""}, {""}, - {"PLPresent",1615}, - {"missingValuesPresent",1192}, + {"PLPresent",212}, + {"missingValuesPresent",1315}, {""}, {""}, - {"tiggeLocalVersion",2148}, - {"coordAveragingTims",314}, + {"tiggeLocalVersion",2198}, + {"coordAveragingTims",585}, {""}, - {"secondOrderOfDifferentWidth",1910}, + {"secondOrderOfDifferentWidth",1964}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"originatingCentreOfAnalysis",1490}, + {"originatingCentreOfAnalysis",1571}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"verticalVisibilityCoded",2343}, - {"numberOfDistinctSection5s",1319}, + {"verticalVisibilityCoded",2368}, + {"numberOfDistinctSection5s",1408}, {""}, {""}, {""}, - {"firstOrderValues",636}, + {"firstOrderValues",861}, {""}, - {"offsetICEFieldsUsed",1441}, + {"offsetICEFieldsUsed",1523}, {""}, {""}, - {"AA",2}, - {"indexedStorageInternalNodeK",768}, + {"AA",6}, + {"indexedStorageInternalNodeK",973}, {""}, {""}, {""}, {""}, - {"scaleFactorOfPrimeMeridianOffset",1870}, + {"scaleFactorOfPrimeMeridianOffset",1911}, {""}, - {"dateSSTFieldUsed",387}, + {"dateSSTFieldUsed",655}, {""}, {""}, {""}, - {"clusterMember7",273}, + {"clusterMember7",542}, {""}, {""}, {""}, {""}, - {"GTSstr",719}, + {"GTSstr",79}, {""}, - {"secondOrderValuesDifferentWidths",1911}, - {"clusterMember4",270}, - {"formatVersionMinorNumber",659}, + {"secondOrderValuesDifferentWidths",1965}, + {"clusterMember4",539}, + {"formatVersionMinorNumber",882}, {""}, - {"offsetSection7",1451}, + {"offsetSection7",1533}, {""}, {""}, - {"Model_Additional_Information",1196}, + {"Model_Additional_Information",167}, {""}, {""}, {""}, {""}, - {"offsetSection4",1448}, + {"offsetSection4",1530}, {""}, {""}, - {"coordAveraging0",310}, - {"localLatitude2",992}, + {"coordAveraging0",581}, + {"localLatitude2",1156}, {""}, {""}, {""}, {""}, {""}, - {"expandedUnits",552}, - {"endMinuteTrend4",500}, + {"expandedUnits",790}, + {"endMinuteTrend4",748}, {""}, {""}, {""}, {""}, - {"paramIdECMF",1587}, - {"runwayFrictionCoefficientState3",1817}, + {"paramIdECMF",1654}, + {"runwayFrictionCoefficientState3",1885}, {""}, {""}, - {"runwayFrictionCoefficientState2",1816}, - {"numberOfCodedValues",1301}, + {"runwayFrictionCoefficientState2",1884}, + {"numberOfCodedValues",1390}, {""}, {""}, {""}, {""}, {""}, - {"section1Padding",1937}, + {"section1Padding",1987}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"reservedSection4",1755}, + {"reservedSection4",1823}, {""}, {""}, - {"listMembersUsed3",963}, + {"listMembersUsed3",1132}, {""}, {""}, {""}, {""}, {""}, - {"experimentVersionNumber",555}, - {"bitsPerValue",92}, + {"experimentVersionNumber",791}, + {"bitsPerValue",370}, {""}, {""}, {""}, - {"reducedGrid",1727}, + {"reducedGrid",1796}, {""}, {""}, - {"extractDateTimeStart",584}, + {"extractDateTimeStart",825}, {""}, - {"dateOfModelVersion",384}, - {"runwaySideCodeState4",1822}, - {"localFlagLatestVersion",988}, - {"yearOfModelVersion",2424}, + {"dateOfModelVersion",652}, + {"runwaySideCodeState4",1890}, + {"localFlagLatestVersion",1152}, + {"yearOfModelVersion",2435}, {""}, {""}, - {"lengthOfTimeRange",942}, + {"lengthOfTimeRange",1113}, {""}, {""}, - {"scaledValueOfLowerLimit",1845}, - {"longitudeOfReferencePoint",1040}, - {"timeOfModelVersion",2165}, + {"scaledValueOfLowerLimit",1932}, + {"longitudeOfReferencePoint",1192}, + {"timeOfModelVersion",2215}, {""}, {""}, {""}, {""}, {""}, - {"extractDateTimeSecondEnd",581}, - {"inputProcessIdentifier",788}, + {"extractDateTimeSecondEnd",822}, + {"inputProcessIdentifier",990}, {""}, {""}, {""}, - {"falseEasting",618}, - {"subLocalDefinition1",2095}, + {"falseEasting",845}, + {"subLocalDefinition1",2149}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"dayOfTheYearDate",398}, - {"extractDateTimeSecondStart",583}, + {"dayOfTheYearDate",665}, + {"extractDateTimeSecondStart",824}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"offsetEndSection4",1437}, + {"offsetEndSection4",1519}, {""}, {""}, {""}, - {"originatorLocalTemplateNumber",1493}, + {"originatorLocalTemplateNumber",1574}, {""}, {""}, {""}, {""}, - {"localLongitude2",995}, - {"presentTrend3",1632}, + {"localLongitude2",1159}, + {"presentTrend3",1707}, {""}, {""}, {""}, {""}, {""}, - {"presentTrend2",1631}, + {"presentTrend2",1706}, {""}, {""}, {""}, {""}, - {"definitionFilesVersion",413}, + {"definitionFilesVersion",680}, {""}, {""}, - {"forecastProbabilityNumber",655}, + {"forecastProbabilityNumber",877}, {""}, - {"plusOneinOrdersOfSPD",1616}, - {"scaleFactorOfSecondWavelength",1874}, - {"gridPointPosition",706}, - {"alternativeRowScanning",21}, + {"plusOneinOrdersOfSPD",1691}, + {"scaleFactorOfSecondWavelength",1915}, + {"gridPointPosition",919}, + {"alternativeRowScanning",303}, {""}, {""}, {""}, - {"GTS",715}, + {"GTS",78}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"localTablesVersion",1015}, + {"localTablesVersion",1166}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"deletePV",418}, - {"dayOfModelVersion",395}, - {"Sub-Experiment_Identifier",2094}, + {"deletePV",684}, + {"dayOfModelVersion",663}, + {"Sub-Experiment_Identifier",231}, {""}, {""}, {""}, - {"section9UniqueIdentifier",1979}, - {"ZLMULT",2438}, + {"section9UniqueIdentifier",2022}, + {"ZLMULT",285}, {""}, {""}, {""}, {""}, {""}, {""}, - {"runwayDepositState4",1782}, + {"runwayDepositState4",1850}, {""}, - {"latitudeOfNorthWestCornerOfArea",899}, - {"DiGiven",427}, + {"latitudeOfNorthWestCornerOfArea",1078}, + {"DiGiven",31}, {""}, {""}, {""}, - {"runwayFrictionCoefficientState1",1815}, + {"runwayFrictionCoefficientState1",1883}, {""}, - {"northWestLatitudeOfVerficationArea",1264}, + {"northWestLatitudeOfVerficationArea",1360}, {""}, {""}, {""}, {""}, {""}, {""}, - {"longitudeOfSubSatellitePoint",1047}, + {"longitudeOfSubSatellitePoint",1199}, {""}, {""}, - {"heightPressureEtcOfLevels",728}, + {"heightPressureEtcOfLevels",937}, {""}, {""}, - {"latitudeOfFirstGridPointInDegrees",894}, + {"latitudeOfFirstGridPointInDegrees",1073}, {""}, {""}, {""}, {""}, {""}, {""}, - {"longitudeOfSubSatellitePointInDegrees",1048}, + {"longitudeOfSubSatellitePointInDegrees",1200}, {""}, {""}, {""}, {""}, {""}, {""}, - {"baseTimeEPS",54}, - {"subLocalDefinitionLength2",2098}, + {"baseTimeEPS",333}, + {"subLocalDefinitionLength2",2152}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"numberOfTimeRange",1389}, + {"numberOfTimeRange",1478}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"correction2",339}, + {"correction2",610}, {""}, {""}, {""}, {""}, - {"scanningMode7",1884}, + {"scanningMode7",1949}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"scanningMode4",1881}, + {"scanningMode4",1946}, {""}, {""}, - {"extractedAreaNumberOfSubsets",588}, - {"N2",1224}, + {"extractedAreaNumberOfSubsets",833}, + {"N2",173}, {""}, - {"hourOfModelVersion",743}, + {"hourOfModelVersion",949}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"upperThresholdValue",2297}, - {"earthMajorAxisInMetres",468}, + {"upperThresholdValue",2326}, + {"earthMajorAxisInMetres",718}, {""}, {""}, {""}, {""}, {""}, - {"marsStream2",1113}, + {"marsStream2",1247}, {""}, {""}, - {"section8UniqueIdentifier",1976}, + {"section8UniqueIdentifier",2019}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"stepHumanReadable",2075}, + {"stepHumanReadable",2132}, {""}, - {"baseDateEPS",52}, + {"baseDateEPS",331}, {""}, {""}, {""}, {""}, {""}, - {"Dj",443}, + {"Dj",34}, {""}, {""}, {""}, {""}, {""}, {""}, - {"localNumberOfObservations",1010}, - {"section4Padding",1954}, + {"localNumberOfObservations",1162}, + {"section4Padding",2001}, {""}, {""}, - {"jDirectionIncrementInDegrees",844}, + {"jDirectionIncrementInDegrees",1041}, {""}, {""}, {""}, {""}, {""}, {""}, - {"scaleFactorOfFirstWavelength",1864}, + {"scaleFactorOfFirstWavelength",1905}, {""}, {""}, - {"md5Section6",1144}, + {"md5Section6",1278}, {""}, {""}, {""}, {""}, {""}, {""}, - {"mBasicAngle",1132}, + {"mBasicAngle",1219}, {""}, {""}, {""}, - {"lowerThresholdValue",1069}, + {"lowerThresholdValue",1213}, {""}, {""}, - {"localLatitude1",991}, + {"localLatitude1",1155}, {""}, - {"DayOfModelVersion",396}, + {"DayOfModelVersion",29}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"typeOfGrid",2231}, + {"typeOfGrid",2262}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"originalParameterTableNumber",1487}, + {"originalParameterTableNumber",1568}, {""}, - {"numberOfCoefficientsOrValuesUsedToSpecifyFirstDimensionCoordinateFunction",1302}, - {"numberOfCoefficientsOrValuesUsedToSpecifySecondDimensionCoordinateFunction",1303}, + {"numberOfCoefficientsOrValuesUsedToSpecifyFirstDimensionCoordinateFunction",1391}, + {"numberOfCoefficientsOrValuesUsedToSpecifySecondDimensionCoordinateFunction",1392}, {""}, {""}, - {"updateSequenceNumber",2293}, + {"updateSequenceNumber",2322}, {""}, - {"cloudsTitle3Trend3",256}, + {"cloudsTitle3Trend3",527}, {""}, {""}, - {"cloudsTitle3Trend2",255}, + {"cloudsTitle3Trend2",526}, {""}, {""}, - {"totalNumberOfRepetitions",2195}, + {"totalNumberOfRepetitions",2235}, {""}, {""}, {""}, {""}, - {"numberOfDaysInClimateSamplingWindow",1314}, + {"numberOfDaysInClimateSamplingWindow",1403}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"biFourierResolutionParameterM",81}, + {"biFourierResolutionParameterM",359}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"gribTablesVersionNo",697}, + {"gribTablesVersionNo",910}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"localLongitude1",994}, + {"localLongitude1",1158}, {""}, {""}, {""}, {""}, {""}, {""}, - {"presentTrend1",1630}, + {"presentTrend1",1705}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"runwayFrictionCoefficientState4",1818}, + {"runwayFrictionCoefficientState4",1886}, {""}, {""}, - {"shortNameECMF",2005}, + {"shortNameECMF",2066}, {""}, {""}, {""}, {""}, {""}, {""}, - {"packedValues",1501}, + {"packedValues",1578}, {""}, - {"offsetFromReferenceOfFirstTime",1440}, + {"offsetFromReferenceOfFirstTime",1522}, {""}, {""}, {""}, {""}, {""}, - {"tsectionNumber3",2207}, + {"tsectionNumber3",2245}, {""}, {""}, {""}, - {"qnhAPresent",1687}, + {"qnhAPresent",1756}, {""}, - {"isectionNumber3",819}, + {"isectionNumber3",1032}, {""}, {""}, {""}, - {"qnhUnits",1689}, + {"qnhUnits",1758}, {""}, - {"isectionNumber2",818}, + {"isectionNumber2",1031}, {""}, - {"conceptsDir2",296}, + {"conceptsDir2",567}, {""}, {""}, {""}, {""}, - {"rootTablesDir",1767}, + {"rootTablesDir",1835}, {""}, {""}, - {"parameterUnits",1585}, + {"parameterUnits",1665}, {""}, {""}, {""}, {""}, {""}, - {"flagShowingPostAuxiliaryArrayInUse",643}, + {"flagShowingPostAuxiliaryArrayInUse",867}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"unstructuredGrid",2288}, + {"unstructuredGrid",2317}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"coordinate1End",315}, + {"coordinate1End",586}, {""}, - {"endDayTrend2",487}, - {"offsetValuesBy",1456}, + {"endDayTrend2",735}, + {"offsetValuesBy",1537}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"subLocalDefinitionLength1",2097}, + {"subLocalDefinitionLength1",2151}, {""}, {""}, {""}, - {"endMonthTrend3",503}, + {"endMonthTrend3",751}, {""}, {""}, {""}, {""}, - {"northWestLatitudeOfLPOArea",1263}, - {"endMonthTrend2",502}, - {"cloudsTitle3Trend1",254}, + {"northWestLatitudeOfLPOArea",1359}, + {"endMonthTrend2",750}, + {"cloudsTitle3Trend1",525}, {""}, - {"latitudeOfSouthernPoleInDegrees",904}, - {"templatesMasterDir",2131}, - {"unstructuredGridType",2290}, + {"latitudeOfSouthernPoleInDegrees",1083}, + {"templatesMasterDir",2185}, + {"unstructuredGridType",2319}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"countOfICEFieldsUsed",347}, + {"countOfICEFieldsUsed",618}, {""}, - {"N1",1222}, - {"spatialSmoothingOfProduct",2051}, + {"N1",172}, + {"spatialSmoothingOfProduct",2109}, {""}, - {"qfeUnits",1685}, + {"qfeUnits",1754}, {""}, - {"mixedCoordinateFieldFlag",1194}, - {"section6Pointer",1965}, + {"mixedCoordinateFieldFlag",1318}, + {"section6Pointer",2010}, {""}, - {"patch_precip_fp",1599}, - {"default_step_units",410}, + {"patch_precip_fp",1676}, + {"default_step_units",679}, {""}, - {"cloudsTitle2",248}, + {"cloudsTitle2",519}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"timeIncrementBetweenSuccessiveFields",2161}, - {"section3Pointer",1949}, + {"timeIncrementBetweenSuccessiveFields",2211}, + {"section3Pointer",1997}, {""}, {""}, - {"section2Pointer",1942}, + {"section2Pointer",1991}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"matchAerosolBinNumber",1122}, - {"Latin2InDegrees",885}, + {"matchAerosolBinNumber",1257}, + {"Latin2InDegrees",117}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"scaledValueOfRadiusOfSphericalEarth",1849}, + {"scaledValueOfRadiusOfSphericalEarth",1936}, {""}, {""}, {""}, {""}, - {"rootGroupObjectHeaderAddress",1765}, + {"rootGroupObjectHeaderAddress",1833}, {""}, - {"yCoordinateOfOriginOfSectorImage",2413}, + {"yCoordinateOfOriginOfSectorImage",2422}, {""}, {""}, {""}, {""}, - {"changeIndicatorTrend3",149}, - {"pentagonalResolutionParameterK",1601}, + {"changeIndicatorTrend3",421}, + {"pentagonalResolutionParameterK",1678}, {""}, - {"changeIndicatorTrend2",148}, + {"changeIndicatorTrend2",420}, {""}, {""}, {""}, - {"versionNumOfRootGroupSymbolTableEntry",2335}, + {"versionNumOfRootGroupSymbolTableEntry",2357}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"dateOfSSTFieldUsed",386}, + {"dateOfSSTFieldUsed",654}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"typeOfSSTFieldUsed",2244}, + {"typeOfSSTFieldUsed",2273}, {""}, {""}, {""}, - {"dayOfForecastUsedInLocalTime",394}, + {"dayOfForecastUsedInLocalTime",662}, {""}, {""}, {""}, {""}, {""}, - {"tablesLocalDir",2119}, + {"tablesLocalDir",2174}, {""}, {""}, - {"FMULTM",647}, + {"FMULTM",66}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"biFourierResolutionSubSetParameterM",83}, + {"biFourierResolutionSubSetParameterM",361}, {""}, {""}, {""}, {""}, - {"dataSubCategory",371}, + {"dataSubCategory",641}, {""}, {""}, - {"beginMinuteTrend3",68}, + {"beginMinuteTrend3",346}, {""}, {""}, - {"beginMinuteTrend2",67}, + {"beginMinuteTrend2",345}, {""}, {""}, {""}, {""}, {""}, - {"md5Section7",1145}, + {"md5Section7",1279}, {""}, {""}, {""}, {""}, {""}, - {"section1Pointer",1938}, + {"section1Pointer",1988}, {""}, {""}, - {"numberOfUnexpandedDescriptors",1391}, + {"numberOfUnexpandedDescriptors",1480}, {""}, {""}, {""}, {""}, {""}, {""}, - {"easternLongitudeOfClusterDomain",471}, + {"easternLongitudeOfClusterDomain",723}, {""}, {""}, {""}, {""}, {""}, - {"Latin1InDegrees",883}, - {"numberOfUsedTileAttributes",1394}, + {"Latin1InDegrees",115}, + {"numberOfUsedTileAttributes",1483}, {""}, {""}, {""}, {""}, {""}, {""}, - {"scaledValueOfLengthOfSemiMinorAxis",1844}, + {"scaledValueOfLengthOfSemiMinorAxis",1931}, {""}, {""}, {""}, {""}, - {"numberOfBytesInLocalDefinition",1292}, - {"cfNameECMF",141}, + {"numberOfBytesInLocalDefinition",1381}, + {"cfNameECMF",413}, {""}, - {"pentagonalResolutionParameterM",1602}, + {"pentagonalResolutionParameterM",1679}, {""}, - {"totalAerosolBinsNumbers",2179}, - {"scaleFactorOfEarthMajorAxis",1860}, + {"totalAerosolBinsNumbers",2223}, + {"scaleFactorOfEarthMajorAxis",1901}, {""}, - {"_leg_number",932}, + {"_leg_number",290}, {""}, {""}, - {"scaleFactorOfEarthMinorAxis",1861}, + {"scaleFactorOfEarthMinorAxis",1902}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"cloudsTitle3Trend4",257}, + {"cloudsTitle3Trend4",528}, {""}, {""}, - {"changeIndicatorTrend1",147}, - {"numberOfStepsUsedForClustering",1385}, + {"changeIndicatorTrend1",419}, + {"numberOfStepsUsedForClustering",1474}, {""}, {""}, - {"md5Product",1137}, - {"satelliteID",1829}, + {"md5Product",1271}, + {"satelliteID",1893}, {""}, {""}, {""}, {""}, {""}, {""}, - {"latitudinalDirectionGridLength",919}, + {"latitudinalDirectionGridLength",1098}, {""}, - {"cloudsTitle4Trend3",261}, + {"cloudsTitle4Trend3",532}, {""}, {""}, - {"cloudsTitle4Trend2",260}, - {"cloudsTitle1Trend3",246}, + {"cloudsTitle4Trend2",531}, + {"cloudsTitle1Trend3",517}, {""}, - {"beginDayTrend3",60}, - {"cloudsTitle1Trend2",245}, + {"beginDayTrend3",338}, + {"cloudsTitle1Trend2",516}, {""}, {""}, {""}, - {"METAR",1163}, - {"beginDayTrend2",59}, + {"METAR",156}, + {"beginDayTrend2",337}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"sizeOfLength",2020}, - {"reservedSection2",1753}, - {"cavokOrVisibility",111}, + {"sizeOfLength",2079}, + {"reservedSection2",1821}, + {"cavokOrVisibility",386}, {""}, {""}, - {"tiggeSuiteID",2153}, - {"westernLongitudeOfClusterDomain",2355}, + {"tiggeSuiteID",2201}, + {"westernLongitudeOfClusterDomain",2382}, {""}, - {"endMonthTrend1",501}, + {"endMonthTrend1",749}, {""}, {""}, - {"identificationOfOriginatingGeneratingCentre",753}, + {"identificationOfOriginatingGeneratingCentre",963}, {""}, {""}, {""}, {""}, {""}, {""}, - {"numberOfUsedSpatialTiles",1393}, + {"numberOfUsedSpatialTiles",1482}, {""}, {""}, - {"unpackedValues",2286}, + {"unpackedValues",2315}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"produceLargeConstantFields",1660}, + {"produceLargeConstantFields",1735}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"beginMinuteTrend1",66}, + {"beginMinuteTrend1",344}, {""}, {""}, {""}, {""}, - {"jScansNegatively",850}, + {"jScansNegatively",1044}, {""}, {""}, {""}, {""}, {""}, {""}, - {"listMembersUsed4",964}, + {"listMembersUsed4",1133}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"longitudeOfSouthEastCornerOfArea",1042}, + {"longitudeOfSouthEastCornerOfArea",1194}, {""}, - {"ls_labeling",1071}, + {"ls_labeling",1214}, {""}, {""}, {""}, {""}, - {"forecastOrSingularVectorNumber",650}, + {"forecastOrSingularVectorNumber",873}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"typeOfTimeIncrementBetweenSuccessiveFieldsUsedInTheStatisticalProcessing",2248}, + {"typeOfTimeIncrementBetweenSuccessiveFieldsUsedInTheStatisticalProcessing",2279}, {""}, {""}, {""}, {""}, {""}, {""}, - {"crraSuiteID",354}, + {"crraSuiteID",625}, {""}, - {"oceanAtmosphereCoupling",1417}, + {"oceanAtmosphereCoupling",1500}, {""}, {""}, {""}, {""}, - {"expandedCrex_scales",542}, + {"expandedCrex_scales",780}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"unexpandedDescriptors",2266}, + {"unexpandedDescriptors",2295}, {""}, {""}, - {"presentTrend4",1633}, - {"NUT",1404}, + {"presentTrend4",1708}, + {"NUT",189}, {""}, {""}, - {"verificationYear",2328}, + {"verificationYear",2353}, {""}, - {"monthlyVerificationYear",1210}, + {"monthlyVerificationYear",1337}, {""}, - {"longitudeOfTangencyPoint",1049}, + {"longitudeOfTangencyPoint",1201}, {""}, {""}, {""}, {""}, {""}, {""}, - {"unstructuredGridSubtype",2289}, - {"latitudeOfSubSatellitePoint",907}, + {"unstructuredGridSubtype",2318}, + {"latitudeOfSubSatellitePoint",1086}, {""}, - {"cloudsTitle4Trend1",259}, + {"cloudsTitle4Trend1",530}, {""}, {""}, {""}, - {"cloudsTitle1Trend1",244}, - {"longitudeOfReferencePointInDegrees",1041}, + {"cloudsTitle1Trend1",515}, + {"longitudeOfReferencePointInDegrees",1193}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"P2",1499}, + {"P2",211}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"typeOfPreProcessing",2240}, + {"typeOfPreProcessing",2271}, {""}, {""}, {""}, {""}, {""}, - {"section7Pointer",1970}, + {"section7Pointer",2014}, {""}, {""}, {""}, - {"section4Pointer",1955}, + {"section4Pointer",2002}, {""}, - {"expandedCrex_units",543}, + {"expandedCrex_units",781}, {""}, {""}, {""}, {""}, {""}, - {"qualityControlIndicator",1691}, + {"qualityControlIndicator",1760}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"numberOfBytesOfFreeFormatData",1293}, + {"numberOfBytesOfFreeFormatData",1382}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"unexpandedDescriptorsEncoded",2267}, + {"unexpandedDescriptorsEncoded",2296}, {""}, {""}, {""}, {""}, {""}, - {"dateOfIceFieldUsed",383}, + {"dateOfIceFieldUsed",651}, {""}, {""}, {""}, {""}, - {"physicalMeaningOfVerticalCoordinate",1611}, + {"physicalMeaningOfVerticalCoordinate",1688}, {""}, {""}, {""}, {""}, {""}, - {"listOfParametersUsedForClustering",969}, + {"listOfParametersUsedForClustering",1138}, {""}, {""}, - {"northWestLongitudeOfVerficationArea",1266}, + {"northWestLongitudeOfVerficationArea",1362}, {""}, {""}, - {"section11Length",1933}, + {"section11Length",1983}, {""}, {""}, {""}, {""}, {""}, - {"changeIndicatorTrend4",150}, + {"changeIndicatorTrend4",422}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"backgroundGeneratingProcessIdentifier",48}, + {"backgroundGeneratingProcessIdentifier",327}, {""}, {""}, {""}, {""}, {""}, {""}, - {"versionNumberOfExperimentalSuite",2331}, + {"versionNumberOfExperimentalSuite",2359}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"gribMasterTablesVersionNumber",696}, + {"gribMasterTablesVersionNumber",909}, {""}, {""}, {""}, - {"marsClass2",1088}, + {"marsClass2",1223}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"referenceForGroupWidths",1732}, - {"runwayDesignatorState3",1797}, + {"referenceForGroupWidths",1801}, + {"runwayDesignatorState3",1865}, {""}, - {"southEastLongitudeOfLPOArea",2033}, - {"runwayDesignatorState2",1796}, + {"southEastLongitudeOfLPOArea",2091}, + {"runwayDesignatorState2",1864}, {""}, {""}, {""}, {""}, {""}, - {"numberOfControlForecastTube",1307}, + {"numberOfControlForecastTube",1396}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"extractAreaNorthLatitude",565}, - {"beginDayTrend1",58}, + {"extractAreaNorthLatitude",806}, + {"beginDayTrend1",336}, {""}, {""}, {""}, {""}, {""}, - {"PVPresent",1682}, + {"PVPresent",214}, {""}, {""}, {""}, {""}, - {"beginMinuteTrend4",69}, + {"beginMinuteTrend4",347}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"latitudeFirstInDegrees",887}, - {"expandedCrex_widths",544}, + {"latitudeFirstInDegrees",1066}, + {"expandedCrex_widths",782}, {""}, {""}, {""}, - {"integerPointValues",793}, - {"totalNumberOfValuesInUnpackedSubset",2198}, - {"extractDateTimeMinuteEnd",575}, + {"integerPointValues",995}, + {"totalNumberOfValuesInUnpackedSubset",2238}, + {"extractDateTimeMinuteEnd",816}, {""}, {""}, {""}, {""}, {""}, {""}, - {"sourceOfGridDefinition",2029}, + {"sourceOfGridDefinition",2087}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"extractDateTimeMinuteStart",577}, + {"extractDateTimeMinuteStart",818}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"dateOfForecastUsedInLocalTime",382}, + {"dateOfForecastUsedInLocalTime",650}, {""}, {""}, - {"yearOfForecastUsedInLocalTime",2423}, + {"yearOfForecastUsedInLocalTime",2434}, {""}, {""}, {""}, {""}, {""}, - {"section_6",1962}, + {"section_6",2043}, {""}, - {"timeOfForecastUsedInLocalTime",2164}, + {"timeOfForecastUsedInLocalTime",2214}, {""}, {""}, {""}, - {"extractDateTimeMonthEnd",578}, - {"cloudsCode3",233}, + {"extractDateTimeMonthEnd",819}, + {"cloudsCode3",504}, {""}, - {"originOfPostProcessing",1494}, + {"originOfPostProcessing",1566}, {""}, {""}, - {"pentagonalResolutionParameterJ",1600}, + {"pentagonalResolutionParameterJ",1677}, {""}, - {"referenceForGroupLengths",1731}, + {"referenceForGroupLengths",1800}, {""}, {""}, {""}, {""}, {""}, - {"extractDateTimeMonthStart",580}, + {"extractDateTimeMonthStart",821}, {""}, {""}, {""}, - {"cloudsTitle4Trend4",262}, + {"cloudsTitle4Trend4",533}, {""}, {""}, {""}, - {"cloudsTitle1Trend4",247}, + {"cloudsTitle1Trend4",518}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"section_3",1945}, + {"section_3",2040}, {""}, {""}, {""}, - {"numberOfContributingSpectralBands",1306}, + {"numberOfContributingSpectralBands",1395}, {""}, - {"section_2",1939}, + {"section_2",2039}, {""}, {""}, {""}, {""}, {""}, {""}, - {"numberOfMissingValues",1349}, + {"numberOfMissingValues",1438}, {""}, {""}, {""}, {""}, {""}, {""}, - {"section6Length",1964}, + {"section6Length",2009}, {""}, - {"gts_TTAAii",720}, + {"gts_TTAAii",929}, {""}, {""}, {""}, - {"runwayDesignatorState1",1795}, + {"runwayDesignatorState1",1863}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"section3Length",1947}, + {"section3Length",1995}, {""}, {""}, - {"section2Length",1940}, + {"section2Length",1989}, {""}, - {"P1",1498}, - {"tsectionNumber4",2208}, + {"P1",210}, + {"tsectionNumber4",2246}, {""}, {""}, {""}, {""}, {""}, - {"isectionNumber4",820}, + {"isectionNumber4",1033}, {""}, {""}, {""}, - {"scaleFactorOfMajorAxisOfOblateSpheroidEarth",1868}, + {"scaleFactorOfMajorAxisOfOblateSpheroidEarth",1909}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"extractAreaEastLongitude",562}, + {"extractAreaEastLongitude",803}, {""}, - {"section_06",1921}, + {"section_06",2032}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"runwayFrictionCodeValueState3",1809}, + {"runwayFrictionCodeValueState3",1877}, {""}, {""}, - {"runwayFrictionCodeValueState2",1808}, + {"runwayFrictionCodeValueState2",1876}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"NrInRadiusOfEarthScaled",1273}, - {"longitudeOfTheSouthernPoleOfProjection",1053}, - {"recentWeather",1720}, - {"reflectivityCalibrationConstant",1740}, - {"section2Used",1944}, + {"NrInRadiusOfEarthScaled",200}, + {"longitudeOfTheSouthernPoleOfProjection",1205}, + {"recentWeather",1789}, + {"reflectivityCalibrationConstant",1809}, + {"section2Used",1993}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"endMonthTrend4",504}, + {"endMonthTrend4",752}, {""}, {""}, - {"section_03",1918}, + {"section_03",2029}, {""}, {""}, {""}, {""}, {""}, - {"section_02",1917}, + {"section_02",2028}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"hourOfForecastUsedInLocalTime",742}, + {"hourOfForecastUsedInLocalTime",948}, {""}, {""}, {""}, - {"NrInRadiusOfEarth",1272}, + {"NrInRadiusOfEarth",199}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"visibilityInKilometresTrend3",2347}, + {"visibilityInKilometresTrend3",2372}, {""}, {""}, {""}, - {"numberOfClusterLowResolution",1299}, - {"NC",1237}, - {"visibilityInKilometresTrend2",2346}, - {"NP",1269}, + {"numberOfClusterLowResolution",1388}, + {"NC",176}, + {"visibilityInKilometresTrend2",2371}, + {"NP",185}, {""}, {""}, {""}, - {"marsClass1",1087}, + {"marsClass1",1222}, {""}, {""}, {""}, {""}, - {"numberOfBitsForScaledGroupLengths",1289}, + {"numberOfBitsForScaledGroupLengths",1378}, {""}, {""}, {""}, {""}, - {"longitudeLastInDegrees",1026}, + {"longitudeLastInDegrees",1178}, {""}, {""}, {""}, {""}, - {"scaledValueOfPrimeMeridianOffset",1848}, + {"scaledValueOfPrimeMeridianOffset",1935}, {""}, - {"longitudeOfCentralPointInClusterDomain",1027}, + {"longitudeOfCentralPointInClusterDomain",1179}, {""}, - {"numberOfClusterHighResolution",1298}, + {"numberOfClusterHighResolution",1387}, {""}, - {"preProcessingParameter",1628}, + {"preProcessingParameter",1698}, {""}, {""}, {""}, {""}, {""}, {""}, - {"xCoordinateOfOriginOfSectorImage",2397}, + {"xCoordinateOfOriginOfSectorImage",2415}, {""}, - {"section1Length",1936}, + {"section1Length",1986}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"jScansPositively",851}, + {"jScansPositively",1045}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"isRotatedGrid",830}, + {"isRotatedGrid",1018}, {""}, {""}, - {"runwayFrictionCodeValueState1",1807}, + {"runwayFrictionCodeValueState1",1875}, {""}, {""}, {""}, {""}, {""}, - {"rdb_key",1705}, + {"rdb_key",1776}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"ECMWF",475}, + {"ECMWF",45}, {""}, - {"addEmptySection2",6}, + {"addEmptySection2",295}, {""}, {""}, {""}, - {"clusteringDomain",264}, + {"clusteringDomain",547}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"runwayDesignatorState4",1798}, + {"runwayDesignatorState4",1866}, {""}, {""}, {""}, {""}, - {"PUnset",1679}, + {"PUnset",213}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"unstructuredGridUUID",2291}, - {"section11Pointer",1934}, + {"unstructuredGridUUID",2320}, + {"section11Pointer",1984}, {""}, {""}, {""}, {""}, {""}, - {"section_1",1927}, + {"section_1",2036}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"scaleFactorOfUpperLimit",1877}, + {"scaleFactorOfUpperLimit",1918}, {""}, - {"generalExtended2ordr",671}, + {"generalExtended2ordr",894}, {""}, - {"endGridDefinition",491}, + {"endGridDefinition",739}, {""}, {""}, {""}, {""}, {""}, {""}, - {"scaledValueOfSecondWavelength",1852}, + {"scaledValueOfSecondWavelength",1939}, {""}, - {"oneMinuteMeanMaximumRVR3",1463}, - {"longitudeOfThePoleOfStretching",1050}, + {"oneMinuteMeanMaximumRVR3",1546}, + {"longitudeOfThePoleOfStretching",1202}, {""}, {""}, {""}, {""}, - {"oneMinuteMeanMaximumRVR2",1462}, + {"oneMinuteMeanMaximumRVR2",1545}, {""}, {""}, {""}, {""}, {""}, - {"matrixBitmapsPresent",1127}, + {"matrixBitmapsPresent",1262}, {""}, {""}, {""}, {""}, {""}, {""}, - {"cloudsAbbreviation3",173}, + {"cloudsAbbreviation3",444}, {""}, - {"numberOfDataPointsExpected",1312}, + {"numberOfDataPointsExpected",1401}, {""}, {""}, {""}, - {"cloudsAbbreviation2",168}, + {"cloudsAbbreviation2",439}, {""}, {""}, - {"offsetSection11",1445}, + {"offsetSection11",1527}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"md5Headers",1136}, + {"md5Headers",1270}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"unpackedSubsetPrecision",2285}, + {"unpackedSubsetPrecision",2314}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"inputOverriddenReferenceValues",787}, - {"beginDayTrend4",61}, + {"inputOverriddenReferenceValues",989}, + {"beginDayTrend4",339}, {""}, - {"YRInMetres",2433}, + {"YRInMetres",278}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"subLocalDefinitionNumber2",2100}, + {"subLocalDefinitionNumber2",2154}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"section_01",1916}, + {"section_01",2027}, {""}, {""}, {""}, {""}, - {"variationOfVisibilityTrend3",2323}, + {"variationOfVisibilityTrend3",2348}, {""}, {""}, - {"variationOfVisibilityTrend2",2322}, + {"variationOfVisibilityTrend2",2347}, {""}, - {"listMembersUsed2",962}, + {"listMembersUsed2",1131}, {""}, {""}, {""}, {""}, {""}, - {"numberOfGroups",1336}, + {"numberOfGroups",1425}, {""}, - {"numberOfSingularVectorsEvolved",1383}, + {"numberOfSingularVectorsEvolved",1472}, {""}, - {"section7Length",1969}, + {"section7Length",2013}, {""}, {""}, {""}, - {"section4Length",1953}, - {"latitudeOfSubSatellitePointInDegrees",908}, + {"section4Length",2000}, + {"latitudeOfSubSatellitePointInDegrees",1087}, {""}, - {"INBITS",766}, + {"INBITS",89}, {""}, {""}, {""}, {""}, {""}, - {"coordinate2End",318}, + {"coordinate2End",589}, {""}, {""}, {""}, {""}, {""}, - {"visibilityInKilometresTrend1",2345}, - {"numberOfPointsInDomain",1370}, + {"visibilityInKilometresTrend1",2370}, + {"numberOfPointsInDomain",1459}, {""}, {""}, {""}, {""}, {""}, {""}, - {"wrongPadding",2392}, + {"wrongPadding",2414}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"FMULTE",646}, + {"FMULTE",65}, {""}, {""}, {""}, - {"runwayFrictionCodeValueState4",1810}, + {"runwayFrictionCodeValueState4",1878}, {""}, {""}, {""}, {""}, - {"scaledValueOfFirstWavelength",1842}, + {"scaledValueOfFirstWavelength",1929}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"realPartOf00",1718}, + {"realPartOf00",1787}, {""}, {""}, {""}, {""}, - {"variationOfVisibilityDirectionTrend3",2319}, + {"variationOfVisibilityDirectionTrend3",2344}, {""}, {""}, - {"variationOfVisibilityDirectionTrend2",2318}, + {"variationOfVisibilityDirectionTrend2",2343}, {""}, {""}, - {"section5",1958}, + {"section5",2004}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"iDirectionIncrementGiven",757}, + {"iDirectionIncrementGiven",955}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"physicalFlag2",1610}, + {"physicalFlag2",1687}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"cloudsCode1",223}, + {"cloudsCode1",494}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"biFourierResolutionParameterN",82}, + {"biFourierResolutionParameterN",360}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"yCoordinateOfSubSatellitePoint",2414}, + {"yCoordinateOfSubSatellitePoint",2423}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"deleteLocalDefinition",417}, - {"variationOfVisibilityTrend1",2321}, + {"deleteLocalDefinition",683}, + {"variationOfVisibilityTrend1",2346}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"NEAREST",1243}, + {"NEAREST",179}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"basicAngleOfTheInitialProductionDomain",56}, + {"basicAngleOfTheInitialProductionDomain",335}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"oneMinuteMeanMaximumRVR1",1461}, + {"oneMinuteMeanMaximumRVR1",1544}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"postAuxiliaryArrayPresent",1619}, + {"postAuxiliaryArrayPresent",1694}, {""}, {""}, {""}, - {"cloudsAbbreviation1",163}, + {"cloudsAbbreviation1",434}, {""}, {""}, {""}, {""}, {""}, - {"variationOfVisibilityDirectionTrend1",2317}, + {"variationOfVisibilityDirectionTrend1",2342}, {""}, - {"HDF5str",724}, + {"HDF5str",81}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"Nj",1252}, - {"runwayDepositCodeState3",1777}, + {"Nj",197}, + {"runwayDepositCodeState3",1845}, {""}, {""}, {""}, {""}, {""}, - {"runwayDepositCodeState2",1776}, + {"runwayDepositCodeState2",1844}, {""}, {""}, - {"tempPressureUnits",2132}, + {"tempPressureUnits",2181}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"subLocalDefinitionNumber1",2099}, + {"subLocalDefinitionNumber1",2153}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"numberOfBytesPerInteger",1294}, + {"numberOfBytesPerInteger",1383}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"codedNumberOfFirstOrderPackedValues",281}, + {"codedNumberOfFirstOrderPackedValues",554}, {""}, {""}, - {"ceilingAndVisibilityOK",120}, + {"ceilingAndVisibilityOK",392}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"cloudsTitle2Trend3",251}, + {"cloudsTitle2Trend3",522}, {""}, - {"weightAppliedToClimateMonth1",2354}, - {"cloudsTitle2Trend2",250}, + {"weightAppliedToClimateMonth1",2379}, + {"cloudsTitle2Trend2",521}, {""}, - {"SOH",2027}, + {"SOH",224}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"extractDateTimeEnd",571}, + {"extractDateTimeEnd",812}, {""}, {""}, {""}, {""}, {""}, {""}, - {"localTablesVersionNumber",1016}, + {"localTablesVersionNumber",1167}, {""}, {""}, {""}, {""}, - {"firstLatitudeInDegrees",633}, - {"offsetBeforePL",1430}, - {"md5Section5",1143}, + {"firstLatitudeInDegrees",858}, + {"offsetBeforePL",1516}, + {"md5Section5",1277}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"YR",2432}, + {"YR",277}, {""}, {""}, {""}, {""}, - {"cloudsCode4",238}, + {"cloudsCode4",509}, {""}, - {"widthOfWidths",2362}, + {"widthOfWidths",2387}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"section_7",1967}, - {"cfVarNameECMF",144}, + {"section_7",2044}, + {"cfVarNameECMF",416}, {""}, {""}, {""}, {""}, {""}, {""}, - {"section_4",1951}, + {"section_4",2041}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"numberOfPointsAlongXAxis",1366}, + {"numberOfPointsAlongXAxis",1455}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"offsetBBitmap",1427}, + {"offsetBBitmap",1510}, {""}, {""}, - {"numberOfRadarSitesUsed",1373}, - {"variationOfVisibilityTrend4",2324}, - {"section6UniqueIdentifier",1966}, + {"numberOfRadarSitesUsed",1462}, + {"variationOfVisibilityTrend4",2349}, + {"section6UniqueIdentifier",2011}, {""}, - {"commonBlock",288}, + {"commonBlock",559}, {""}, - {"physicalFlag1",1609}, + {"physicalFlag1",1686}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"inputShortDelayedDescriptorReplicationFactor",789}, + {"inputShortDelayedDescriptorReplicationFactor",991}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"section3UniqueIdentifier",1950}, + {"section3UniqueIdentifier",1998}, {""}, {""}, {""}, {""}, - {"scaleFactorOfLengthOfSemiMajorAxis",1865}, + {"scaleFactorOfLengthOfSemiMajorAxis",1906}, {""}, {""}, - {"getNumberOfValues",677}, + {"getNumberOfValues",899}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"biFourierResolutionSubSetParameterN",84}, + {"biFourierResolutionSubSetParameterN",362}, {""}, {""}, {""}, - {"mask",1117}, + {"mask",1252}, {""}, - {"localUsePresent",1021}, + {"localUsePresent",1171}, {""}, {""}, {""}, - {"uuidOfVGrid",2309}, - {"missingValueManagementUsed",1190}, + {"uuidOfVGrid",2334}, + {"missingValueManagementUsed",1314}, {""}, {""}, {""}, - {"ZLBASE",2437}, + {"ZLBASE",284}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"visibilityTrend3",2351}, + {"visibilityTrend3",2376}, {""}, {""}, - {"paramIdLegacyECMF",1588}, + {"paramIdLegacyECMF",1655}, {""}, {""}, {""}, {""}, - {"cloudsTitle2Trend1",249}, + {"cloudsTitle2Trend1",520}, {""}, {""}, - {"cloudsBase3",193}, + {"cloudsBase3",464}, {""}, {""}, {""}, {""}, {""}, - {"variationOfVisibilityDirectionTrend4",2320}, + {"variationOfVisibilityDirectionTrend4",2345}, {""}, {""}, {""}, {""}, - {"section_07",1922}, + {"section_07",2033}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"section_04",1919}, + {"section_04",2030}, {""}, {""}, {""}, {""}, {""}, - {"section5Pointer",1960}, + {"section5Pointer",2006}, {""}, {""}, - {"latitudeOfTangencyPoint",909}, + {"latitudeOfTangencyPoint",1088}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"pack",1500}, + {"pack",1577}, {""}, {""}, {""}, {""}, {""}, - {"gaussianGridName",669}, + {"gaussianGridName",892}, {""}, - {"iDirectionIncrementGridLength",758}, - {"Date_E3",377}, + {"iDirectionIncrementGridLength",956}, + {"Date_E3",27}, {""}, - {"scaledValueOfEarthMajorAxis",1838}, + {"scaledValueOfEarthMajorAxis",1925}, {""}, {""}, {""}, - {"Date_E2",376}, - {"scaledValueOfEarthMinorAxis",1839}, - {"totalNumberOfClusters",2186}, + {"Date_E2",26}, + {"scaledValueOfEarthMinorAxis",1926}, + {"totalNumberOfClusters",2227}, {""}, {""}, {""}, {""}, - {"visibilityInKilometresTrend4",2348}, + {"visibilityInKilometresTrend4",2373}, {""}, {""}, {""}, {""}, {""}, {""}, - {"numberOfGroupsOfDataValues",1337}, + {"numberOfGroupsOfDataValues",1426}, {""}, {""}, {""}, {""}, - {"timeUnitFlag",2176}, + {"timeUnitFlag",2219}, {""}, {""}, {""}, - {"runwayDepositCodeState1",1775}, + {"runwayDepositCodeState1",1843}, {""}, {""}, - {"recentWeatherTry",1721}, + {"recentWeatherTry",1790}, {""}, {""}, {""}, {""}, {""}, {""}, - {"md5Section3",1141}, + {"md5Section3",1275}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"projTargetString",1676}, - {"Ensemble_Combination_Number",522}, + {"projTargetString",1745}, + {"Ensemble_Combination_Number",50}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"firstDimensionPhysicalSignificance",630}, + {"firstDimensionPhysicalSignificance",856}, {""}, {""}, - {"unpack",2283}, + {"unpack",2312}, {""}, {""}, {""}, - {"offsetAfterData",1424}, + {"offsetAfterData",1507}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"projSourceString",1674}, + {"projSourceString",1743}, {""}, {""}, {""}, - {"listMembersMissing3",959}, + {"listMembersMissing3",1128}, {""}, {""}, {""}, {""}, {""}, - {"listMembersMissing2",958}, + {"listMembersMissing2",1127}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"checkInternalVersion",156}, + {"checkInternalVersion",428}, {""}, {""}, {""}, {""}, - {"southPoleOnProjectionPlane",2039}, + {"southPoleOnProjectionPlane",2095}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"constantAntennaElevationAngle",305}, + {"constantAntennaElevationAngle",576}, {""}, {""}, {""}, {""}, {""}, {""}, - {"cloudsBaseCoded3",213}, + {"cloudsBaseCoded3",484}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"cloudsBaseCoded3Trend3",216}, + {"cloudsBaseCoded3Trend3",487}, {""}, {""}, - {"cloudsBaseCoded3Trend2",215}, + {"cloudsBaseCoded3Trend2",486}, {""}, {""}, {""}, {""}, {""}, - {"remarkPresent",1741}, + {"remarkPresent",1810}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"theHindcastMarsStream",2133}, + {"theHindcastMarsStream",2186}, {""}, - {"lengthOf4DvarWindow",936}, + {"lengthOf4DvarWindow",1107}, {""}, {""}, {""}, {""}, - {"clusterMember5",271}, + {"clusterMember5",540}, {""}, {""}, - {"Product_Identifier",1667}, + {"Product_Identifier",218}, {""}, {""}, - {"jPointsAreConsecutive",848}, - {"runwayFrictionCoefficientCodeState3",1813}, + {"jPointsAreConsecutive",1043}, + {"runwayFrictionCoefficientCodeState3",1881}, {""}, {""}, - {"runwayFrictionCoefficientCodeState2",1812}, - {"offsetSection5",1449}, + {"runwayFrictionCoefficientCodeState2",1880}, + {"offsetSection5",1531}, {""}, {""}, {""}, {""}, - {"oneMinuteMeanMaximumRVR4",1464}, + {"oneMinuteMeanMaximumRVR4",1547}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"cloudsTitle2Trend4",252}, + {"cloudsTitle2Trend4",523}, {""}, {""}, - {"cloudsAbbreviation4",178}, + {"cloudsAbbreviation4",449}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"experimentVersionNumberOfAnalysis",558}, + {"experimentVersionNumberOfAnalysis",794}, {""}, {""}, {""}, - {"offsetBeforeBitmap",1428}, + {"offsetBeforeBitmap",1514}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"typeOfLevelECMF",2236}, - {"beginMonthTrend3",72}, + {"typeOfLevelECMF",2267}, + {"beginMonthTrend3",350}, {""}, {""}, {""}, - {"kindOfProduct",858}, + {"kindOfProduct",1053}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"legacyGaussSubarea",929}, + {"legacyGaussSubarea",1104}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"typeOfWavelengthInterval",2249}, + {"typeOfWavelengthInterval",2280}, {""}, - {"cloudsBaseCoded3Trend1",214}, + {"cloudsBaseCoded3Trend1",485}, {""}, {""}, - {"Minute_E3",1172}, + {"Minute_E3",161}, {""}, - {"endMark",496}, + {"endMark",744}, {""}, {""}, {""}, - {"Minute_E2",1171}, + {"Minute_E2",160}, {""}, {""}, {""}, - {"section7UniqueIdentifier",1971}, + {"section7UniqueIdentifier",2015}, {""}, {""}, {""}, - {"section4UniqueIdentifier",1956}, + {"section4UniqueIdentifier",2003}, {""}, - {"versionNumOfSharedHeaderMessageFormat",2336}, + {"versionNumOfSharedHeaderMessageFormat",2358}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"runwayFrictionCoefficientCodeState1",1811}, + {"runwayFrictionCoefficientCodeState1",1879}, {""}, {""}, {""}, {""}, - {"intervalBetweenTimes",801}, + {"intervalBetweenTimes",1003}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"laplacianScalingFactorUnset",873}, + {"laplacianScalingFactorUnset",1061}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"GDSPresent",670}, + {"GDSPresent",68}, {""}, {""}, {""}, {""}, {""}, {""}, - {"horizontalDomainTemplate",733}, + {"horizontalDomainTemplate",942}, {""}, - {"P_INST",1612}, - {"xCoordinateOfSubSatellitePoint",2398}, + {"P_INST",215}, + {"xCoordinateOfSubSatellitePoint",2416}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"scanningMode5",1882}, + {"scanningMode5",1947}, {""}, {""}, {""}, {""}, {""}, - {"************_EXPERIMENT_************",553}, + {"************_EXPERIMENT_************",2}, {""}, {""}, {""}, - {"scaleFactorOfMinorAxisOfOblateSpheroidEarth",1869}, + {"scaleFactorOfMinorAxisOfOblateSpheroidEarth",1910}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"extractAreaSouthLatitude",566}, + {"extractAreaSouthLatitude",807}, {""}, {""}, {""}, {""}, - {"offsetFromOriginToInnerBound",1439}, + {"offsetFromOriginToInnerBound",1521}, {""}, {""}, {""}, {""}, {""}, {""}, - {"hoursAfterReferenceTimeOfDataCutoff",747}, + {"hoursAfterReferenceTimeOfDataCutoff",952}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"latitudeOfReferencePoint",900}, + {"latitudeOfReferencePoint",1079}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"sizeOfPostAuxiliaryArray",2022}, + {"sizeOfPostAuxiliaryArray",2081}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"unitsLegacyECMF",2279}, + {"unitsLegacyECMF",2308}, {""}, {""}, {""}, - {"scaledValueOfMajorAxisOfOblateSpheroidEarth",1846}, + {"scaledValueOfMajorAxisOfOblateSpheroidEarth",1933}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"visibilityTrend1",2349}, + {"visibilityTrend1",2374}, {""}, - {"offsetBSection6",1433}, + {"offsetBSection6",1512}, {""}, - {"swapScanningAlternativeRows",2106}, + {"swapScanningAlternativeRows",2162}, {""}, {""}, {""}, - {"runwayDepositCodeState4",1778}, + {"runwayDepositCodeState4",1846}, {""}, {""}, - {"cloudsBase1",183}, + {"cloudsBase1",454}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"cloudsBaseCoded3Trend4",217}, + {"cloudsBaseCoded3Trend4",488}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"runwayDepthOfDepositCodeState3",1785}, + {"runwayDepthOfDepositCodeState3",1853}, {""}, {""}, - {"runwayDepthOfDepositCodeState2",1784}, - {"NC2",1239}, + {"runwayDepthOfDepositCodeState2",1852}, + {"NC2",178}, {""}, {""}, - {"northLatitudeOfDomainOfTubing",1262}, - {"cloudsBaseCoded4Trend3",221}, + {"northLatitudeOfDomainOfTubing",1358}, + {"cloudsBaseCoded4Trend3",492}, {""}, {""}, - {"cloudsBaseCoded4Trend2",220}, - {"cloudsBaseCoded1Trend3",206}, + {"cloudsBaseCoded4Trend2",491}, + {"cloudsBaseCoded1Trend3",477}, {""}, {""}, - {"cloudsBaseCoded1Trend2",205}, + {"cloudsBaseCoded1Trend2",476}, {""}, {""}, {""}, - {"RENAME",1742}, + {"RENAME",219}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"md5Section10",1139}, + {"md5Section10",1273}, {""}, {""}, {""}, {""}, - {"runwayFrictionCoefficientCodeState4",1814}, + {"runwayFrictionCoefficientCodeState4",1882}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"numberOfReforecastYearsInModelClimate",1375}, - {"oneMinuteMeanMinimumRVR3",1467}, + {"numberOfReforecastYearsInModelClimate",1464}, + {"oneMinuteMeanMinimumRVR3",1550}, {""}, {""}, {""}, {""}, {""}, - {"oneMinuteMeanMinimumRVR2",1466}, + {"oneMinuteMeanMinimumRVR2",1549}, {""}, {""}, {""}, - {"numberOfPointsAlongXAxisInCouplingArea",1367}, + {"numberOfPointsAlongXAxisInCouplingArea",1456}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"cloudsCode2",228}, + {"cloudsCode2",499}, {""}, {""}, - {"cfNameLegacyECMF",142}, + {"cfNameLegacyECMF",414}, {""}, {""}, - {"md5Section1",1138}, - {"LSTCUM",1072}, + {"md5Section1",1272}, + {"LSTCUM",100}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"southLatitudeOfDomainOfTubing",2038}, + {"southLatitudeOfDomainOfTubing",2094}, {""}, {""}, {""}, {""}, - {"eastLongitudeOfDomainOfTubing",474}, + {"eastLongitudeOfDomainOfTubing",722}, {""}, {""}, {""}, - {"numberOfParallelsBetweenAPoleAndTheEquator",1356}, - {"Y2",2411}, + {"numberOfParallelsBetweenAPoleAndTheEquator",1445}, + {"Y2",275}, {""}, {""}, {""}, {""}, - {"numberOfSingularVectorsComputed",1382}, + {"numberOfSingularVectorsComputed",1471}, {""}, {""}, {""}, {""}, - {"padding_local40_1",1566}, + {"padding_local40_1",1642}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"section5Length",1959}, + {"section5Length",2005}, {""}, {""}, - {"radiusOfTheEarth",1701}, + {"radiusOfTheEarth",1770}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"baseTimeOfThisLeg",55}, + {"baseTimeOfThisLeg",334}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"beginHourTrend3",64}, + {"beginHourTrend3",342}, {""}, {""}, {""}, {""}, {""}, - {"beginHourTrend2",63}, + {"beginHourTrend2",341}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"runwayDepthOfDepositCodeState1",1783}, + {"runwayDepthOfDepositCodeState1",1851}, {""}, {""}, - {"cloudsBaseCoded1",203}, + {"cloudsBaseCoded1",474}, {""}, {""}, {""}, {""}, - {"cloudsBaseCoded4Trend1",219}, + {"cloudsBaseCoded4Trend1",490}, {""}, {""}, {""}, - {"cloudsBaseCoded1Trend1",204}, + {"cloudsBaseCoded1Trend1",475}, {""}, - {"northWestLongitudeOfLPOArea",1265}, - {"westLongitudeOfDomainOfTubing",2358}, + {"northWestLongitudeOfLPOArea",1361}, + {"westLongitudeOfDomainOfTubing",2381}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"DjGiven",444}, + {"DjGiven",35}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"baseDateOfThisLeg",53}, + {"baseDateOfThisLeg",332}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"visibilityTrend4",2352}, - {"scaledValueOfUpperLimit",1855}, + {"visibilityTrend4",2377}, + {"scaledValueOfUpperLimit",1942}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"cloudsBase4",198}, + {"cloudsBase4",469}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"subdivisionsOfBasicAngle",2093}, + {"subdivisionsOfBasicAngle",2159}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"Date_E4",378}, + {"Date_E4",28}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"meanRVR3",1153}, + {"meanRVR3",1286}, {""}, {""}, {""}, {""}, {""}, - {"meanRVR2",1152}, + {"meanRVR2",1285}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"Total_Number_Members_Used",2185}, + {"Total_Number_Members_Used",256}, {""}, {""}, - {"beginMonthTrend1",70}, + {"beginMonthTrend1",348}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"padding_sec1_loc",1568}, + {"padding_sec1_loc",1645}, {""}, - {"NC1",1238}, + {"NC1",177}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"md5Section4",1142}, + {"md5Section4",1276}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"listMembersMissing4",960}, + {"listMembersMissing4",1129}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"oneMinuteMeanMinimumRVR1",1465}, + {"oneMinuteMeanMinimumRVR1",1548}, {""}, {""}, {""}, {""}, {""}, {""}, - {"disableGrib1LocalSection",438}, + {"disableGrib1LocalSection",699}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"resolutionAndComponentFlags6",1761}, + {"resolutionAndComponentFlags6",1829}, {""}, - {"ITERATOR",837}, + {"ITERATOR",91}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"runwayExtentOfContaminationState3",1805}, + {"runwayExtentOfContaminationState3",1873}, {""}, {""}, - {"runwayExtentOfContaminationState2",1804}, + {"runwayExtentOfContaminationState2",1872}, {""}, {""}, {""}, - {"Y1",2409}, + {"Y1",273}, {""}, {""}, {""}, - {"numberOfHorizontalPoints",1338}, + {"numberOfHorizontalPoints",1427}, {""}, {""}, {""}, {""}, {""}, - {"Total_Number_Members_Possible",2184}, + {"Total_Number_Members_Possible",255}, {""}, {""}, {""}, {""}, {""}, - {"cloudsBaseCoded4",218}, - {"runwayDepthOfDepositCodeState4",1786}, - {"resolutionAndComponentFlags3",1759}, + {"cloudsBaseCoded4",489}, + {"runwayDepthOfDepositCodeState4",1854}, + {"resolutionAndComponentFlags3",1827}, {""}, {""}, {""}, {""}, {""}, - {"resolutionAndComponentFlags2",1758}, - {"cloudsBaseCoded4Trend4",222}, + {"resolutionAndComponentFlags2",1826}, + {"cloudsBaseCoded4Trend4",493}, {""}, {""}, {""}, - {"cloudsBaseCoded1Trend4",207}, + {"cloudsBaseCoded1Trend4",478}, {""}, {""}, {""}, {""}, {""}, {""}, - {"longitudeOfSouthernPole",1043}, + {"longitudeOfSouthernPole",1195}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"beginHourTrend1",62}, + {"beginHourTrend1",340}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"ccsdsCompressionOptionsMask",115}, + {"ccsdsCompressionOptionsMask",389}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"skipExtraKeyAttributes",2026}, + {"skipExtraKeyAttributes",2085}, {""}, {""}, - {"WRAPstr",2391}, + {"WRAPstr",263}, {""}, {""}, - {"numberOfBitsContainingEachPackedValue",1288}, + {"numberOfBitsContainingEachPackedValue",1377}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"setToMissingIfOutOfRange",1999}, + {"setToMissingIfOutOfRange",2061}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"windUnitsTrend3",2382}, + {"windUnitsTrend3",2407}, {""}, - {"NH",1248}, + {"NH",181}, {""}, {""}, {""}, - {"windUnitsTrend2",2381}, + {"windUnitsTrend2",2406}, {""}, {""}, - {"LLCOSP",971}, + {"LLCOSP",99}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"scaleFactorOfCentralWaveNumber",1857}, + {"scaleFactorOfCentralWaveNumber",1898}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"longitudeOfThePolePoint",1051}, + {"longitudeOfThePolePoint",1203}, {""}, {""}, {""}, {""}, {""}, - {"typeOfPacking",2238}, + {"typeOfPacking",2269}, {""}, {""}, {""}, - {"runwayExtentOfContaminationState1",1803}, + {"runwayExtentOfContaminationState1",1871}, {""}, {""}, {""}, - {"beginMonthTrend4",73}, - {"typeOfGeneratingProcess",2230}, + {"beginMonthTrend4",351}, + {"typeOfGeneratingProcess",2261}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"ICPLSIZE",750}, + {"ICPLSIZE",87}, {""}, {""}, - {"Minute_E4",1173}, - {"NB",1236}, + {"Minute_E4",162}, + {"NB",175}, {""}, {""}, {""}, - {"numberInHorizontalCoordinates",1281}, - {"Local_Number_Members_Used",1006}, + {"numberInHorizontalCoordinates",1369}, + {"Local_Number_Members_Used",138}, {""}, {""}, {""}, {""}, {""}, - {"typeOfProcessedData",2241}, + {"typeOfProcessedData",2272}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"meanRVR1",1151}, + {"meanRVR1",1284}, {""}, - {"qualityValueAssociatedWithParameter",1692}, + {"qualityValueAssociatedWithParameter",1761}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -6432,112 +6432,112 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"latitudeOfReferencePointInDegrees",901}, + {"latitudeOfReferencePointInDegrees",1080}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"presentWeather3Present",1644}, + {"presentWeather3Present",1719}, {""}, - {"lastMonthUsedToBuildClimateMonth2",880}, - {"presentWeather2Present",1639}, + {"lastMonthUsedToBuildClimateMonth2",1063}, + {"presentWeather2Present",1714}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"unusedBitsInBitmap",2292}, + {"unusedBitsInBitmap",2321}, {""}, {""}, {""}, - {"Local_Number_Members_Possible",1002}, + {"Local_Number_Members_Possible",134}, {""}, {""}, - {"Total_Number_Members_Missing",2183}, + {"Total_Number_Members_Missing",254}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"NRj",1274}, + {"NRj",187}, {""}, {""}, {""}, - {"numberOfGridInReference",1334}, + {"numberOfGridInReference",1423}, {""}, {""}, {""}, {""}, {""}, {""}, - {"latitudeOfLastGridPoint",897}, + {"latitudeOfLastGridPoint",1076}, {""}, {""}, {""}, {""}, - {"observationDiagnostic",1412}, - {"offsetToEndOf4DvarWindow",1455}, - {"numberOfPointsAlongAMeridian",1360}, + {"observationDiagnostic",1495}, + {"offsetToEndOf4DvarWindow",1536}, + {"numberOfPointsAlongAMeridian",1449}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"resolutionAndComponentFlags1",1757}, + {"resolutionAndComponentFlags1",1825}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"scaledValueOfLengthOfSemiMajorAxis",1843}, + {"scaledValueOfLengthOfSemiMajorAxis",1930}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"CLNOMA",162}, + {"CLNOMA",23}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"runwayExtentOfContaminationState4",1806}, + {"runwayExtentOfContaminationState4",1874}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"lastMonthUsedToBuildClimateMonth1",879}, - {"presentWeather1Present",1634}, - {"windUnitsTrend1",2380}, + {"lastMonthUsedToBuildClimateMonth1",1062}, + {"presentWeather1Present",1709}, + {"windUnitsTrend1",2405}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"shortNameLegacyECMF",2006}, + {"shortNameLegacyECMF",2067}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"HourOfModelVersion",744}, + {"HourOfModelVersion",82}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"endHourTrend3",494}, + {"endHourTrend3",742}, {""}, {""}, {""}, {""}, {""}, - {"endHourTrend2",493}, - {"cloudsAbbreviation3Trend3",176}, + {"endHourTrend2",741}, + {"cloudsAbbreviation3Trend3",447}, {""}, {""}, - {"cloudsAbbreviation2Trend3",171}, + {"cloudsAbbreviation2Trend3",442}, {""}, {""}, - {"cloudsAbbreviation3Trend2",175}, - {"oneMinuteMeanMinimumRVR4",1468}, + {"cloudsAbbreviation3Trend2",446}, + {"oneMinuteMeanMinimumRVR4",1551}, {""}, - {"cloudsAbbreviation2Trend2",170}, + {"cloudsAbbreviation2Trend2",441}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"section_11",1932}, + {"section_11",2038}, {""}, - {"numberOfPressureLevelsUsedForClustering",1372}, + {"numberOfPressureLevelsUsedForClustering",1461}, {""}, {""}, {""}, {""}, - {"numberOfPointsAlongSecondAxis",1363}, + {"numberOfPointsAlongSecondAxis",1452}, {""}, {""}, {""}, {""}, {""}, {""}, - {"tsectionNumber5",2209}, + {"tsectionNumber5",2247}, {""}, {""}, {""}, {""}, - {"coordAveraging3",313}, + {"coordAveraging3",584}, {""}, {""}, {""}, {""}, {""}, - {"coordAveraging2",312}, + {"coordAveraging2",583}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"section5UniqueIdentifier",1961}, + {"section5UniqueIdentifier",2007}, {""}, {""}, {""}, {""}, {""}, - {"md5GridSection",1135}, + {"md5GridSection",1269}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"Local_Number_Members_Missing",998}, + {"Local_Number_Members_Missing",130}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"beginHourTrend4",65}, + {"beginHourTrend4",343}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"numberOfPointsAlongAParallel",1361}, + {"numberOfPointsAlongAParallel",1450}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"ICEFieldsUsed",749}, + {"ICEFieldsUsed",86}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"beginYearTrend3",76}, + {"beginYearTrend3",354}, {""}, - {"visibilityTrend2",2350}, + {"visibilityTrend2",2375}, {""}, {""}, {""}, - {"beginYearTrend2",75}, + {"beginYearTrend2",353}, {""}, {""}, {""}, {""}, - {"cloudsAbbreviation1Trend3",166}, + {"cloudsAbbreviation1Trend3",437}, {""}, - {"cloudsBase2",188}, + {"cloudsBase2",459}, {""}, {""}, {""}, - {"cloudsAbbreviation1Trend2",165}, + {"cloudsAbbreviation1Trend2",436}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -6546,204 +6546,204 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"spacingOfBinsAlongRadials",2044}, + {"spacingOfBinsAlongRadials",2102}, {""}, {""}, {""}, {""}, {""}, - {"meanRVR4",1154}, + {"meanRVR4",1287}, {""}, {""}, {""}, {""}, - {"md5Section2",1140}, + {"md5Section2",1274}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"Extra_Data_FreeFormat_0_none",595}, + {"Extra_Data_FreeFormat_0_none",56}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"extractDateTimeDayStart",570}, + {"extractDateTimeDayStart",811}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"endHourTrend1",492}, + {"endHourTrend1",740}, {""}, {""}, {""}, {""}, {""}, {""}, - {"cloudsAbbreviation3Trend1",174}, + {"cloudsAbbreviation3Trend1",445}, {""}, {""}, - {"cloudsAbbreviation2Trend1",169}, + {"cloudsAbbreviation2Trend1",440}, {""}, {""}, {""}, {""}, - {"experimentVersionNumber2",557}, + {"experimentVersionNumber2",793}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"codedNumberOfGroups",282}, + {"codedNumberOfGroups",555}, {""}, {""}, - {"cloudsBaseCoded2",208}, + {"cloudsBaseCoded2",479}, {""}, {""}, {""}, {""}, {""}, - {"cloudsBaseCoded2Trend3",211}, + {"cloudsBaseCoded2Trend3",482}, {""}, {""}, - {"cloudsBaseCoded2Trend2",210}, + {"cloudsBaseCoded2Trend2",481}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"coordAveraging1",311}, + {"coordAveraging1",582}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"resolutionAndComponentFlags7",1762}, + {"resolutionAndComponentFlags7",1830}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"resolutionAndComponentFlags4",1760}, + {"resolutionAndComponentFlags4",1828}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"ECMWF_s",476}, + {"ECMWF_s",46}, {""}, - {"cloudsAbbreviation4Trend3",181}, + {"cloudsAbbreviation4Trend3",452}, {""}, {""}, {""}, {""}, {""}, - {"cloudsAbbreviation4Trend2",180}, + {"cloudsAbbreviation4Trend2",451}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"scaledValueOfMinorAxisOfOblateSpheroidEarth",1847}, + {"scaledValueOfMinorAxisOfOblateSpheroidEarth",1934}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"beginYearTrend1",74}, + {"beginYearTrend1",352}, {""}, - {"radiusOfClusterDomain",1700}, + {"radiusOfClusterDomain",1769}, {""}, {""}, - {"totalNumberOfGridPoints",2192}, + {"totalNumberOfGridPoints",2232}, {""}, {""}, {""}, - {"windUnitsTrend4",2383}, - {"uuidOfHGrid",2308}, - {"cloudsAbbreviation1Trend1",164}, + {"windUnitsTrend4",2408}, + {"uuidOfHGrid",2333}, + {"cloudsAbbreviation1Trend1",435}, {""}, {""}, - {"beginMonthTrend2",71}, + {"beginMonthTrend2",349}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"cloudsBaseCoded2Trend1",209}, + {"cloudsBaseCoded2Trend1",480}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"horizontalDimensionProcessed",732}, + {"horizontalDimensionProcessed",941}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"pastTendencyRVR3",1597}, + {"pastTendencyRVR3",1674}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"cloudsCode3Trend3",236}, + {"cloudsCode3Trend3",507}, {""}, {""}, - {"cloudsCode3Trend2",235}, + {"cloudsCode3Trend2",506}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"Original_Parameter_Identifier",1485}, + {"Original_Parameter_Identifier",208}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"experimentVersionNumber1",556}, + {"experimentVersionNumber1",792}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"longitudeOfSouthernPoleInDegrees",1044}, + {"longitudeOfSouthernPoleInDegrees",1196}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"numberOfPointsUsed",1371}, + {"numberOfPointsUsed",1460}, {""}, {""}, - {"numberOfUsefulPointsAlongXAxis",1395}, + {"numberOfUsefulPointsAlongXAxis",1484}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"numberOfSecondOrderPackedValues",1380}, + {"numberOfSecondOrderPackedValues",1469}, {""}, {""}, {""}, - {"rootGroupSymbolTableEntry",1766}, + {"rootGroupSymbolTableEntry",1834}, {""}, {""}, - {"padding_loc9_2",1561}, + {"padding_loc9_2",1638}, {""}, - {"cloudsCode3Trend1",234}, + {"cloudsCode3Trend1",505}, {""}, - {"cloudsAbbreviation4Trend1",179}, + {"cloudsAbbreviation4Trend1",450}, {""}, {""}, {""}, {""}, {""}, - {"Ensemble_Identifier_E3",530}, + {"Ensemble_Identifier_E3",53}, {""}, {""}, - {"Ensemble_Identifier_E2",529}, + {"Ensemble_Identifier_E2",52}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"longitudeOfThePolePointInDegrees",1052}, + {"longitudeOfThePolePointInDegrees",1204}, {""}, {""}, {""}, {""}, {""}, - {"cloudsBaseCoded2Trend4",212}, + {"cloudsBaseCoded2Trend4",483}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"offsetBeforePV",1431}, + {"offsetBeforePV",1517}, {""}, {""}, {""}, {""}, {""}, - {"countOfGroupLengths",346}, + {"countOfGroupLengths",617}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"section_5",1957}, + {"section_5",2042}, {""}, {""}, {""}, - {"endHourTrend4",495}, + {"endHourTrend4",743}, {""}, {""}, {""}, {""}, {""}, {""}, - {"cloudsAbbreviation3Trend4",177}, + {"cloudsAbbreviation3Trend4",448}, {""}, {""}, - {"cloudsAbbreviation2Trend4",172}, - {"numberOfPointsAlongFirstAxis",1362}, + {"cloudsAbbreviation2Trend4",443}, + {"numberOfPointsAlongFirstAxis",1451}, {""}, {""}, {""}, {""}, {""}, - {"YearOfModelVersion",2425}, + {"YearOfModelVersion",280}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"latitudeOfThePolePoint",911}, + {"latitudeOfThePolePoint",1090}, {""}, {""}, {""}, {""}, {""}, - {"endYearTrend3",517}, + {"endYearTrend3",764}, {""}, {""}, {""}, {""}, {""}, - {"endYearTrend2",516}, + {"endYearTrend2",763}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"numberOfBitsUsedForTheScaledGroupLengths",1291}, + {"numberOfBitsUsedForTheScaledGroupLengths",1380}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"runwayDepthOfDepositState3",1789}, - {"latitudeOfLastGridPointInDegrees",898}, + {"runwayDepthOfDepositState3",1857}, + {"latitudeOfLastGridPointInDegrees",1077}, {""}, - {"jDirectionIncrementGiven",842}, - {"flagForNormalOrStaggeredGrid",641}, + {"jDirectionIncrementGiven",1039}, + {"flagForNormalOrStaggeredGrid",866}, {""}, - {"runwayDepthOfDepositState2",1788}, + {"runwayDepthOfDepositState2",1856}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"section_05",1920}, + {"section_05",2031}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"runwayDesignatorRVR3",1793}, + {"runwayDesignatorRVR3",1861}, {""}, {""}, {""}, {""}, {""}, - {"runwayDesignatorRVR2",1792}, + {"runwayDesignatorRVR2",1860}, {""}, {""}, - {"probProductDefinition",1658}, + {"probProductDefinition",1731}, {""}, {""}, {""}, {""}, {""}, {""}, - {"padding_local11_1",1563}, + {"padding_local11_1",1639}, {""}, {""}, {""}, {""}, - {"beginYearTrend4",77}, + {"beginYearTrend4",355}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"cloudsCode3Trend4",237}, + {"cloudsCode3Trend4",508}, {""}, - {"cloudsAbbreviation1Trend4",167}, + {"cloudsAbbreviation1Trend4",438}, {""}, {""}, {""}, {""}, {""}, - {"mixedCoordinateDefinition",1193}, + {"mixedCoordinateDefinition",1317}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"cloudsCode4Trend3",241}, + {"cloudsCode4Trend3",512}, {""}, {""}, - {"cloudsCode4Trend2",240}, - {"cloudsCode1Trend3",226}, + {"cloudsCode4Trend2",511}, + {"cloudsCode1Trend3",497}, {""}, - {"extractDateTimeDayEnd",568}, - {"cloudsCode1Trend2",225}, + {"extractDateTimeDayEnd",809}, + {"cloudsCode1Trend2",496}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"g1conceptsLocalDirAll",666}, + {"g1conceptsLocalDirAll",889}, {""}, {""}, {""}, {""}, - {"padding_loc9_1",1560}, - {"padding_loc7_1",1559}, + {"padding_loc9_1",1637}, + {"padding_loc7_1",1636}, {""}, {""}, {""}, {""}, - {"padding_loc6_1",1558}, + {"padding_loc6_1",1635}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -6751,83 +6751,83 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"typicalYear2",2262}, + {"typicalYear2",2291}, {""}, {""}, {""}, - {"superblockExtensionAddress",2105}, + {"superblockExtensionAddress",2161}, {""}, - {"scaledValueOfCentralWaveNumber",1835}, + {"scaledValueOfCentralWaveNumber",1922}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"pastTendencyRVR1",1595}, + {"pastTendencyRVR1",1672}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"padding_loc5_1",1557}, + {"padding_loc5_1",1634}, {""}, {""}, {""}, {""}, - {"numberOfPointsAlongTheXAxis",1364}, + {"numberOfPointsAlongTheXAxis",1453}, {""}, {""}, {""}, {""}, {""}, - {"Ensemble_Identifier_E4",531}, + {"Ensemble_Identifier_E4",54}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"cloudsCode4Trend1",239}, + {"cloudsCode4Trend1",510}, {""}, {""}, {""}, - {"cloudsCode1Trend1",224}, + {"cloudsCode1Trend1",495}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"endYearTrend1",515}, + {"endYearTrend1",762}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"typicalYearOfCentury",2263}, + {"typicalYearOfCentury",2292}, {""}, {""}, {""}, {""}, - {"runwayDepthOfDepositState1",1787}, + {"runwayDepthOfDepositState1",1855}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"cloudsAbbreviation4Trend4",182}, + {"cloudsAbbreviation4Trend4",453}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"altitudeOfTheCameraFromTheEarthsCentreMeasuredInUnitsOfTheEarthsRadius",22}, + {"altitudeOfTheCameraFromTheEarthsCentreMeasuredInUnitsOfTheEarthsRadius",304}, {""}, - {"padding_loc50_1",1556}, + {"padding_loc50_1",1633}, {""}, {""}, {""}, {""}, {""}, - {"ccsdsBlockSize",114}, + {"ccsdsBlockSize",388}, {""}, {""}, {""}, {""}, {""}, - {"runwayDesignatorRVR1",1791}, + {"runwayDesignatorRVR1",1859}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"horizontalDomainTemplateNumber",734}, + {"horizontalDomainTemplateNumber",943}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"isCavok",808}, + {"isCavok",1006}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"uvRelativeToGrid",2310}, + {"uvRelativeToGrid",2335}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"jDirectionIncrementGridLength",843}, + {"jDirectionIncrementGridLength",1040}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"pastTendencyRVR4",1598}, + {"pastTendencyRVR4",1675}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"cloudsCode4Trend4",242}, + {"cloudsCode4Trend4",513}, {""}, {""}, {""}, - {"cloudsCode1Trend4",227}, + {"cloudsCode1Trend4",498}, {""}, {""}, {""}, - {"Missing_Model_LBC",1184}, + {"Missing_Model_LBC",163}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"lBB",921}, + {"lBB",1056}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -6835,20 +6835,20 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"cloudsBase3Trend3",196}, + {"cloudsBase3Trend3",467}, {""}, - {"latitudeOfSouthEastCornerOfArea",902}, - {"cloudsBase3Trend2",195}, + {"latitudeOfSouthEastCornerOfArea",1081}, + {"cloudsBase3Trend2",466}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"latitudeOfThePoleOfStretching",910}, + {"latitudeOfThePoleOfStretching",1089}, {""}, - {"setBitsPerValue",1995}, + {"setBitsPerValue",2057}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"padding_grid90_1",1511}, + {"padding_grid90_1",1588}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"cfVarNameLegacyECMF",145}, + {"cfVarNameLegacyECMF",417}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -6859,195 +6859,195 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"************_ENSEMBLE_**************",521}, + {"************_ENSEMBLE_**************",1}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"sizeOfPostAuxiliaryArrayPlusOne",2023}, + {"sizeOfPostAuxiliaryArrayPlusOne",2082}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"cloudsBase3Trend1",194}, - {"endYearTrend4",518}, + {"cloudsBase3Trend1",465}, + {"endYearTrend4",765}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"windGustTrend3",2371}, + {"windGustTrend3",2396}, {""}, {""}, {""}, {""}, {""}, - {"windGustTrend2",2370}, + {"windGustTrend2",2395}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"runwayDepthOfDepositState4",1790}, + {"runwayDepthOfDepositState4",1858}, {""}, - {"Original_CodeTable_2_Version_Number",1483}, + {"Original_CodeTable_2_Version_Number",206}, {""}, {""}, {""}, - {"latitudeOfThePolePointInDegrees",912}, - {"bufrHeaderSubCentre",103}, + {"latitudeOfThePolePointInDegrees",1091}, + {"bufrHeaderSubCentre",378}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"Local_Number_Members_Possible_E3",1004}, + {"Local_Number_Members_Possible_E3",136}, {""}, {""}, - {"Local_Number_Members_Possible_E2",1003}, + {"Local_Number_Members_Possible_E2",135}, {""}, {""}, {""}, {""}, {""}, {""}, - {"runwayDesignatorRVR4",1794}, + {"runwayDesignatorRVR4",1862}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"padding_local_7_1",1567}, + {"padding_local_7_1",1644}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"HDF5",723}, + {"HDF5",80}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"extractAreaLongitudeRank",564}, + {"extractAreaLongitudeRank",805}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"XpInGridLengths",2406}, + {"XpInGridLengths",272}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"Local_Number_Members_Missing_E3",1000}, + {"Local_Number_Members_Missing_E3",132}, {""}, {""}, - {"Local_Number_Members_Missing_E2",999}, + {"Local_Number_Members_Missing_E2",131}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"************_PRODUCT_***************",1662}, + {"************_PRODUCT_***************",3}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"runwayExtentOfContaminationCodeState3",1801}, + {"runwayExtentOfContaminationCodeState3",1869}, {""}, {""}, - {"runwayExtentOfContaminationCodeState2",1800}, + {"runwayExtentOfContaminationCodeState2",1868}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"cloudsBase3Trend4",197}, + {"cloudsBase3Trend4",468}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"Threshold_Or_Distribution_Units",2144}, + {"Threshold_Or_Distribution_Units",247}, {""}, {""}, {""}, - {"Hour_E3",737}, + {"Hour_E3",84}, {""}, {""}, {""}, - {"cloudsBase4Trend3",201}, + {"cloudsBase4Trend3",472}, {""}, - {"Hour_E2",736}, - {"cloudsBase4Trend2",200}, - {"cloudsBase1Trend3",186}, + {"Hour_E2",83}, + {"cloudsBase4Trend2",471}, + {"cloudsBase1Trend3",457}, {""}, {""}, - {"cloudsBase1Trend2",185}, + {"cloudsBase1Trend2",456}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"sourceSinkChemicalPhysicalProcess",2030}, + {"sourceSinkChemicalPhysicalProcess",2088}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"TYPE_FF",2219}, + {"TYPE_FF",241}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"windGustTrend1",2369}, + {"windGustTrend1",2394}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"runwayExtentOfContaminationCodeState1",1799}, + {"runwayExtentOfContaminationCodeState1",1867}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"numberOfGridUsed",1335}, + {"numberOfGridUsed",1424}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"BUFR",99}, + {"BUFR",18}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"ceilingAndVisibilityOKTrend3",123}, + {"ceilingAndVisibilityOKTrend3",395}, {""}, {""}, {""}, {""}, {""}, - {"ceilingAndVisibilityOKTrend2",122}, + {"ceilingAndVisibilityOKTrend2",394}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"cloudsBase4Trend1",199}, + {"cloudsBase4Trend1",470}, {""}, {""}, {""}, - {"cloudsBase1Trend1",184}, + {"cloudsBase1Trend1",455}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"WRAP",2390}, + {"WRAP",262}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"numberOfParametersUsedForClustering",1357}, + {"numberOfParametersUsedForClustering",1446}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"pastTendencyRVR2",1596}, + {"pastTendencyRVR2",1673}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"Local_Number_Members_Possible_E4",1005}, + {"Local_Number_Members_Possible_E4",137}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"cloudsCode2Trend3",231}, + {"cloudsCode2Trend3",502}, {""}, {""}, - {"cloudsCode2Trend2",230}, + {"cloudsCode2Trend2",501}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"TYPE_OF",2221}, - {"is_chemical_srcsink",815}, + {"TYPE_OF",243}, + {"is_chemical_srcsink",1026}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"latitudeOfTheSouthernPoleOfProjection",913}, + {"latitudeOfTheSouthernPoleOfProjection",1092}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"hoursAfterDataCutoff",746}, + {"hoursAfterDataCutoff",951}, {""}, {""}, {""}, {""}, - {"Local_Number_Members_Missing_E4",1001}, + {"Local_Number_Members_Missing_E4",133}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"runwayExtentOfContaminationCodeState4",1802}, + {"runwayExtentOfContaminationCodeState4",1870}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"cloudsCode2Trend1",229}, + {"cloudsCode2Trend1",500}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"offsetBSection5",1432}, + {"offsetBSection5",1511}, {""}, {""}, {""}, {""}, {""}, {""}, - {"cloudsBase4Trend4",202}, + {"cloudsBase4Trend4",473}, {""}, {""}, {""}, - {"cloudsBase1Trend4",187}, + {"cloudsBase1Trend4",458}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"ceilingAndVisibilityOKTrend1",121}, + {"ceilingAndVisibilityOKTrend1",393}, {""}, {""}, - {"indexingTimeHHMM",772}, + {"indexingTimeHHMM",977}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"numberOfPointsAlongYAxis",1368}, + {"numberOfPointsAlongYAxis",1457}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"TYPE_FX",2220}, + {"TYPE_FX",242}, {""}, - {"padding_local_35",1565}, + {"padding_local_35",1643}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"windGustTrend4",2372}, + {"windGustTrend4",2397}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"indexingTimeHH",771}, + {"indexingTimeHH",976}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"cloudsCode2Trend4",232}, + {"cloudsCode2Trend4",503}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -7058,22 +7058,22 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"7777",1}, + {"7777",5}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"coordinate3OfFirstGridPoint",322}, + {"coordinate3OfFirstGridPoint",593}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"padding_loc30_2",1550}, + {"padding_loc30_2",1627}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"Hour_E4",738}, + {"Hour_E4",85}, {""}, {""}, {""}, {""}, {""}, {""}, - {"Number_Combination_Ensembles_1_none",1278}, + {"Number_Combination_Ensembles_1_none",201}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -7084,24 +7084,24 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"padding_sec3_1",1572}, + {"padding_sec3_1",1649}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"*********_EXTRA_DATA_***************",594}, + {"*********_EXTRA_DATA_***************",4}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"versionNumberOfSuperblock",2333}, - {"ceilingAndVisibilityOKTrend4",124}, + {"versionNumberOfSuperblock",2361}, + {"ceilingAndVisibilityOKTrend4",396}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"padding_loc3_1",1551}, + {"padding_loc3_1",1631}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"padding_grid1_2",1506}, + {"padding_grid1_2",1583}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -7109,46 +7109,46 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"padding_local1_31",1564}, + {"padding_local1_31",1641}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"isCavokTrend3",811}, + {"isCavokTrend3",1009}, {""}, {""}, {""}, {""}, {""}, - {"isCavokTrend2",810}, + {"isCavokTrend2",1008}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"padding_loc38_1",1554}, + {"padding_loc38_1",1630}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"padding_loc30_1",1549}, - {"NG",1247}, + {"padding_loc30_1",1626}, + {"NG",180}, {""}, {""}, {""}, {""}, - {"padding_loc4_2",1555}, + {"padding_loc4_2",1632}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"padding_loc19_2",1530}, + {"padding_loc19_2",1608}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"padding_grid3_1",1507}, + {"padding_grid3_1",1584}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"coordinate4OfFirstGridPoint",325}, + {"coordinate4OfFirstGridPoint",596}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"cloudsBase2Trend3",191}, + {"cloudsBase2Trend3",462}, {""}, {""}, - {"cloudsBase2Trend2",190}, + {"cloudsBase2Trend2",461}, {""}, {""}, {""}, - {"numberOfTensOfThousandsOfYearsOfOffset",1387}, + {"numberOfTensOfThousandsOfYearsOfOffset",1476}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"padding_loc18_2",1525}, + {"padding_loc18_2",1602}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"numberOfPointsAlongYAxisInCouplingArea",1369}, + {"numberOfPointsAlongYAxisInCouplingArea",1458}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"extractAreaLatitudeRank",563}, + {"extractAreaLatitudeRank",804}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -7157,23 +7157,23 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"padding_grid1_1",1505}, + {"padding_grid1_1",1582}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"padding_sec4_1",1573}, + {"padding_sec4_1",1650}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"cloudsBase2Trend1",189}, + {"cloudsBase2Trend1",460}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"isCavokTrend1",809}, + {"isCavokTrend1",1007}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"numberOfVGridUsed",1402}, + {"numberOfVGridUsed",1486}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -7184,30 +7184,30 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"padding_local1_1",1562}, + {"padding_local1_1",1640}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"padding_loc18_1",1524}, + {"padding_loc18_1",1601}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"padding_loc10_1",1512}, + {"padding_loc10_1",1589}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"padding_grid4_1",1508}, + {"padding_grid4_1",1585}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"CCCC",112}, + {"CCCC",20}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"cloudsBase2Trend4",192}, + {"cloudsBase2Trend4",463}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"biFourierPackingModeForAxes",80}, + {"biFourierPackingModeForAxes",358}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -7216,14 +7216,14 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"extremeValuesRVR3",611}, + {"extremeValuesRVR3",839}, {""}, {""}, - {"extremeValuesRVR2",609}, + {"extremeValuesRVR2",838}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"Missing_Model_LBC_E3",1186}, + {"Missing_Model_LBC_E3",165}, {""}, {""}, {""}, {""}, {""}, - {"Missing_Model_LBC_E2",1185}, + {"Missing_Model_LBC_E2",164}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -7232,58 +7232,58 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"X2InGridLengths",2396}, + {"X2InGridLengths",267}, {""}, - {"padding_loc190_1",1526}, + {"padding_loc190_1",1603}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"presentWeather3PresentTrend3",1647}, + {"presentWeather3PresentTrend3",1722}, {""}, {""}, - {"presentWeather2PresentTrend3",1642}, + {"presentWeather2PresentTrend3",1717}, {""}, {""}, - {"presentWeather3PresentTrend2",1646}, + {"presentWeather3PresentTrend2",1721}, {""}, {""}, - {"presentWeather2PresentTrend2",1641}, + {"presentWeather2PresentTrend2",1716}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"octetAtWichPackedDataBegins",1420}, + {"octetAtWichPackedDataBegins",1503}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"extremeValuesRVR1",607}, + {"extremeValuesRVR1",837}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"isCavokTrend4",812}, + {"isCavokTrend4",1010}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"X1InGridLengths",2394}, + {"X1InGridLengths",265}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"LBC_Initial_Conditions",922}, + {"LBC_Initial_Conditions",97}, {""}, - {"presentWeather1PresentTrend3",1637}, + {"presentWeather1PresentTrend3",1712}, {""}, {""}, {""}, {""}, {""}, - {"presentWeather1PresentTrend2",1636}, + {"presentWeather1PresentTrend2",1711}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"DIAG",422}, + {"DIAG",25}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"extractDateTimeSecondRank",582}, + {"extractDateTimeSecondRank",823}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"extractDateTimeYearRank",586}, + {"extractDateTimeYearRank",827}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -7291,25 +7291,25 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"extremeValuesRVR4",613}, + {"extremeValuesRVR4",840}, {""}, {""}, {""}, {""}, {""}, {""}, - {"presentWeather3PresentTrend1",1645}, + {"presentWeather3PresentTrend1",1720}, {""}, {""}, - {"presentWeather2PresentTrend1",1640}, + {"presentWeather2PresentTrend1",1715}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"YY",2434}, + {"YY",279}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"padding_sec2_3",1571}, + {"padding_sec2_3",1648}, {""}, {""}, {""}, {""}, {""}, - {"padding_sec2_2",1570}, + {"padding_sec2_2",1647}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -7317,18 +7317,18 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"swapScanningY",2110}, + {"swapScanningY",2166}, {""}, {""}, {""}, - {"presentWeather1PresentTrend1",1635}, + {"presentWeather1PresentTrend1",1710}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"padding_loc2_2",1535}, + {"padding_loc2_2",1625}, {""}, - {"padding_loc29_3",1548}, - {"extractDateTimeHourRank",573}, + {"padding_loc29_3",1623}, + {"extractDateTimeHourRank",814}, {""}, {""}, {""}, {""}, - {"padding_loc29_2",1547}, + {"padding_loc29_2",1622}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -7336,16 +7336,16 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"RVR3_1",1826}, + {"RVR3_1",222}, {""}, {""}, - {"RVR2_1",1825}, + {"RVR2_1",221}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"TYPE_CF",2217}, - {"TYPE_PF",2251}, + {"TYPE_CF",239}, + {"TYPE_PF",245}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -7358,11 +7358,11 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"RVR1_1",1824}, - {"padding_sec2_1",1569}, + {"RVR1_1",220}, + {"padding_sec2_1",1646}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"Missing_Model_LBC_E4",1187}, + {"Missing_Model_LBC_E4",166}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -7370,61 +7370,61 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"ExtremeValuesRVR3",612}, + {"ExtremeValuesRVR3",63}, {""}, {""}, - {"ExtremeValuesRVR2",610}, + {"ExtremeValuesRVR2",62}, {""}, {""}, {""}, - {"padding_loc2_1",1533}, + {"padding_loc2_1",1624}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"padding_loc29_1",1546}, + {"padding_loc29_1",1621}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"presentWeather3PresentTrend4",1648}, + {"presentWeather3PresentTrend4",1723}, {""}, {""}, - {"presentWeather2PresentTrend4",1643}, + {"presentWeather2PresentTrend4",1718}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"Less_Than_Or_To_Overall_Distribution",943}, + {"Less_Than_Or_To_Overall_Distribution",122}, {""}, {""}, - {"Threshold_Or_Distribution_0_no_1_yes",2143}, + {"Threshold_Or_Distribution_0_no_1_yes",246}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"precisionOfTheUnpackedSubset",1624}, + {"precisionOfTheUnpackedSubset",1700}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"padding_loc28_1",1545}, + {"padding_loc28_1",1620}, {""}, {""}, {""}, - {"numberOfUsefulPointsAlongYAxis",1396}, + {"numberOfUsefulPointsAlongYAxis",1485}, {""}, {""}, {""}, {""}, {""}, - {"padding_loc20_1",1532}, + {"padding_loc20_1",1609}, {""}, {""}, {""}, {""}, {""}, - {"Ensemble_Combinat_Number_0_none_E3",524}, + {"Ensemble_Combinat_Number_0_none_E3",48}, {""}, {""}, - {"Ensemble_Combinat_Number_0_none_E2",523}, + {"Ensemble_Combinat_Number_0_none_E2",47}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"padding_grid5_1",1510}, + {"padding_grid5_1",1587}, {""}, - {"ExtremeValuesRVR1",608}, + {"ExtremeValuesRVR1",61}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"RVR4_1",1827}, + {"RVR4_1",223}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"presentWeather1PresentTrend4",1638}, + {"presentWeather1PresentTrend4",1713}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"GRIBEditionNumber",690}, + {"GRIBEditionNumber",74}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -7433,7 +7433,7 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"BBB",57}, + {"BBB",16}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -7444,17 +7444,17 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"TYPE_OR",2250}, + {"TYPE_OR",244}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"ExtremeValuesRVR4",614}, + {"ExtremeValuesRVR4",64}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"padding_loc37_2",1553}, + {"padding_loc37_2",1629}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"padding_loc13_3",1516}, + {"padding_loc13_3",1593}, {""}, {""}, {""}, {""}, {""}, - {"padding_loc13_2",1515}, + {"padding_loc13_2",1592}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -7462,22 +7462,22 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"extractDateTimeMinuteRank",576}, + {"extractDateTimeMinuteRank",817}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"padding_grid50_1",1509}, + {"padding_grid50_1",1586}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"Ensemble_Combinat_Number_0_none_E4",525}, + {"Ensemble_Combinat_Number_0_none_E4",49}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"extractDateTimeMonthRank",579}, + {"extractDateTimeMonthRank",820}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"numberOfPointsAlongTheYAxis",1365}, + {"numberOfPointsAlongTheYAxis",1454}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"padding_loc191_3",1529}, + {"padding_loc191_3",1606}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -7485,9 +7485,9 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"extremeCounterClockwiseWindDirection",602}, + {"extremeCounterClockwiseWindDirection",836}, {""}, {""}, - {"genVertHeightCoords",676}, + {"genVertHeightCoords",893}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -7497,17 +7497,17 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"padding_loc37_1",1552}, + {"padding_loc37_1",1628}, {""}, {""}, {""}, - {"padding_loc16_1",1522}, + {"padding_loc16_1",1599}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"padding_loc13_1",1514}, + {"padding_loc13_1",1591}, {""}, {""}, - {"padding_loc12_1",1513}, + {"padding_loc12_1",1590}, {""}, {""}, {""}, {""}, {""}, - {"GRIB",682}, + {"GRIB",70}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -7517,12 +7517,12 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"extractDateTimeDayRank",569}, + {"extractDateTimeDayRank",810}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"padding_loc17_2",1523}, + {"padding_loc17_2",1600}, {""}, {""}, {""}, - {"padding_loc14_2",1520}, + {"padding_loc14_2",1597}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -7534,9 +7534,9 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"Time_Range_One_E3",2170}, + {"Time_Range_One_E3",249}, {""}, {""}, - {"Time_Range_One_E2",2169}, + {"Time_Range_One_E2",248}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -7544,14 +7544,14 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"padding_loc192_1",1531}, + {"padding_loc192_1",1607}, {""}, {""}, - {"P_TACC",1677}, + {"P_TACC",216}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"numberOfUnusedBitsAtEndOfSection3",1392}, + {"numberOfUnusedBitsAtEndOfSection3",1481}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -7564,9 +7564,9 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"padding_loc14_1",1519}, + {"padding_loc14_1",1596}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"padding_loc191_1",1527}, + {"padding_loc191_1",1604}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -7577,9 +7577,9 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"padding_loc13_4",1517}, + {"padding_loc13_4",1594}, {""}, {""}, {""}, {""}, {""}, - {"YpInGridLengths",2431}, + {"YpInGridLengths",283}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -7591,16 +7591,16 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"Time_Range_One_E4",2171}, + {"Time_Range_One_E4",250}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"runwayBrakingActionState3",1773}, + {"runwayBrakingActionState3",1841}, {""}, {""}, {""}, {""}, {""}, - {"runwayBrakingActionState2",1772}, + {"runwayBrakingActionState2",1840}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -7631,13 +7631,13 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"Local_Number_Members_Used_E3",1008}, + {"Local_Number_Members_Used_E3",140}, {""}, {""}, {""}, {""}, {""}, - {"Local_Number_Members_Used_E2",1007}, + {"Local_Number_Members_Used_E2",139}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"runwayBrakingActionState1",1771}, + {"runwayBrakingActionState1",1839}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -7650,25 +7650,25 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"gts_CCCC",716}, + {"gts_CCCC",928}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"GG",679}, + {"GG",69}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"bitsPerValueAndRepack",93}, + {"bitsPerValueAndRepack",371}, {""}, {""}, - {"padding_loc26_1",1542}, + {"padding_loc26_1",1617}, {""}, - {"Model_LBC_Member_Identifier",1200}, + {"Model_LBC_Member_Identifier",169}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"padding_loc23_1",1536}, + {"padding_loc23_1",1611}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -7681,14 +7681,14 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"padding_loc27_2",1544}, + {"padding_loc27_2",1619}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"padding_loc21_1",1534}, + {"padding_loc21_1",1610}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -7696,45 +7696,45 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"TYPE_FC",2218}, + {"TYPE_FC",240}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"padding_loc191_2",1528}, + {"padding_loc191_2",1605}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"runwayBrakingActionState4",1774}, + {"runwayBrakingActionState4",1842}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"meanValueRVR3",1158}, + {"meanValueRVR3",1291}, {""}, {""}, {""}, {""}, {""}, - {"meanValueRVR2",1157}, + {"meanValueRVR2",1290}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"ExtremeValuesInMaximumRVR3",605}, + {"ExtremeValuesInMaximumRVR3",59}, {""}, {""}, {""}, {""}, {""}, - {"ExtremeValuesInMaximumRVR2",604}, + {"ExtremeValuesInMaximumRVR2",58}, {""}, - {"Time_Range_Two_E3",2173}, + {"Time_Range_Two_E3",252}, {""}, {""}, - {"Time_Range_Two_E2",2172}, + {"Time_Range_Two_E2",251}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"TYPE_AN",2216}, + {"TYPE_AN",238}, {""}, {""}, - {"padding_loc27_1",1543}, + {"padding_loc27_1",1618}, {""}, {""}, {""}, - {"padding_loc15_1",1521}, + {"padding_loc15_1",1598}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -7754,21 +7754,21 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"Local_Number_Members_Used_E4",1009}, + {"Local_Number_Members_Used_E4",141}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"meanValueRVR1",1156}, + {"meanValueRVR1",1289}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"ExtremeValuesInMaximumRVR1",603}, + {"ExtremeValuesInMaximumRVR1",57}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -7781,7 +7781,7 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"Time_Range_Two_E4",2174}, + {"Time_Range_Two_E4",253}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -7809,7 +7809,7 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"Original_Parameter_Iden_CodeTable2",1484}, + {"Original_Parameter_Iden_CodeTable2",207}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -7822,20 +7822,20 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"meanValueRVR4",1159}, + {"meanValueRVR4",1292}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"ExtremeValuesInMaximumRVR4",606}, + {"ExtremeValuesInMaximumRVR4",60}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"Y2InGridLengths",2412}, + {"Y2InGridLengths",276}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -7846,17 +7846,17 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"INGRIB",782}, + {"INGRIB",90}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"Used_Model_LBC",2298}, + {"Used_Model_LBC",257}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"Y1InGridLengths",2410}, + {"Y1InGridLengths",274}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -7891,9 +7891,9 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"padding_loc13_5",1518}, + {"padding_loc13_5",1595}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"GRIBEXSection1Problem",692}, + {"GRIBEXSection1Problem",71}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -7942,7 +7942,7 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"numberOfBitsUsedForTheGroupWidths",1290}, + {"numberOfBitsUsedForTheGroupWidths",1379}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -7976,7 +7976,7 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"padding_loc244_3",1539}, + {"padding_loc244_3",1614}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -8020,7 +8020,7 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"BUDG",98}, + {"BUDG",17}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -8044,7 +8044,7 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"padding_loc244_1",1537}, + {"padding_loc244_1",1612}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -8081,7 +8081,7 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"P_TAVG",1678}, + {"P_TAVG",217}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -8103,7 +8103,7 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"GRIBEXShBugPresent",693}, + {"GRIBEXShBugPresent",72}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -8162,21 +8162,21 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"padding_loc244_2",1538}, + {"padding_loc244_2",1613}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"GRIBEX_boustrophedonic",691}, + {"GRIBEX_boustrophedonic",73}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"Show_Combination_Ensem_E3_0_no_1_yes",2008}, + {"Show_Combination_Ensem_E3_0_no_1_yes",229}, {""}, {""}, - {"Show_Combination_Ensem_E2_0_no_1_yes",2007}, + {"Show_Combination_Ensem_E2_0_no_1_yes",228}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -8185,7 +8185,7 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"padding_loc245_1",1540}, + {"padding_loc245_1",1615}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -8224,7 +8224,7 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"Show_Combination_Ensem_E4_0_no_1_yes",2009}, + {"Show_Combination_Ensem_E4_0_no_1_yes",230}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -8275,11 +8275,11 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"At_least__Or_Distribut_Proportion_Of",37}, + {"At_least__Or_Distribut_Proportion_Of",14}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"NINT_RITZ_EXP",1251}, + {"NINT_RITZ_EXP",183}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -8303,9 +8303,9 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"NINT_LOG10_RITZ",1250}, + {"NINT_LOG10_RITZ",182}, {""}, {""}, {""}, {""}, - {"padding_loc245_2",1541}, + {"padding_loc245_2",1616}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -8490,9 +8490,9 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"Used_Model_LBC_E3",2300}, + {"Used_Model_LBC_E3",259}, {""}, {""}, - {"Used_Model_LBC_E2",2299}, + {"Used_Model_LBC_E2",258}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -8538,7 +8538,7 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"Used_Model_LBC_E4",2301}, + {"Used_Model_LBC_E4",260}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -8656,7 +8656,7 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"GRIB_LATITUDE",694}, + {"GRIB_LATITUDE",76}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -8680,7 +8680,7 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"GRIB_DEPTH",689}, + {"GRIB_DEPTH",75}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -8706,7 +8706,7 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"AEC_PAD_RSI_OPTION_MASK",15}, + {"AEC_PAD_RSI_OPTION_MASK",11}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -8779,7 +8779,7 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"AEC_RESTRICTED_OPTION_MASK",16}, + {"AEC_RESTRICTED_OPTION_MASK",12}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -8791,7 +8791,7 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"AEC_DATA_SIGNED_OPTION_MASK",14}, + {"AEC_DATA_SIGNED_OPTION_MASK",10}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -8936,7 +8936,7 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"AEC_DATA_3BYTE_OPTION_MASK",11}, + {"AEC_DATA_3BYTE_OPTION_MASK",7}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -9010,7 +9010,7 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"GRIB_LONGITUDE",695}, + {"GRIB_LONGITUDE",77}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -9412,7 +9412,7 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"AEC_DATA_MSB_OPTION_MASK",12}, + {"AEC_DATA_MSB_OPTION_MASK",8}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -9980,7 +9980,7 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"AEC_DATA_PREPROCESS_OPTION_MASK",13} + {"AEC_DATA_PREPROCESS_OPTION_MASK",9} }; const struct grib_keys_hash * @@ -9992,12 +9992,12 @@ grib_keys_hash_get (const char *str, size_t len) if (key <= MAX_HASH_VALUE) if (len == lengthtable[key]) - { + { const char *s = wordlist[key].name; if (*str == *s && !memcmp (str + 1, s + 1, len - 1)) return &wordlist[key]; - } + } } return 0; } @@ -10011,10 +10011,6 @@ grib_keys_hash_get (const char *str, size_t len) * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. */ -/************************************** - * Enrico Fucile - **************************************/ - static const int mapping[] = { 0, /* 00 */ 0, /* 01 */ diff --git a/src/grib_itrie_keys.cc b/src/grib_itrie_keys.cc index 64995dfa4..a0a154427 100644 --- a/src/grib_itrie_keys.cc +++ b/src/grib_itrie_keys.cc @@ -8,10 +8,6 @@ * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. */ -/************************************** - * Enrico Fucile - **************************************/ - static const int mapping[] = { 0, /* 00 */ 0, /* 01 */ diff --git a/tests/keys b/tests/keys index 75f167195..6f911d9a1 100644 --- a/tests/keys +++ b/tests/keys @@ -3,2441 +3,2441 @@ %} struct grib_keys_hash { char* name; int id;}; %% -7777,1 -AA,2 -accumulationInterval,3 -accuracy,4 -accuracyMultipliedByFactor,5 -addEmptySection2,6 -addExtraLocalSection,7 -additionalFlagPresent,8 -addressOfFileFreeSpaceInfo,9 -Adelta,10 -AEC_DATA_3BYTE_OPTION_MASK,11 -AEC_DATA_MSB_OPTION_MASK,12 -AEC_DATA_PREPROCESS_OPTION_MASK,13 -AEC_DATA_SIGNED_OPTION_MASK,14 -AEC_PAD_RSI_OPTION_MASK,15 -AEC_RESTRICTED_OPTION_MASK,16 -aerosolbinnumber,17 -aerosolpacking,18 -aerosolType,19 -aerosolTypeName,20 -alternativeRowScanning,21 -altitudeOfTheCameraFromTheEarthsCentreMeasuredInUnitsOfTheEarthsRadius,22 -analysisOffsets,23 -angleDivisor,24 -angleMultiplier,25 -angleOfRotation,26 -angleOfRotationInDegrees,27 -angleOfRotationOfProjection,28 -angleSubdivisions,29 -_anoffset,30 -anoffset,31 -anoffsetFirst,32 -anoffsetFrequency,33 -anoffsetLast,34 -applicationIdentifier,35 -assertion,36 -At_least__Or_Distribut_Proportion_Of,37 -atmosphericChemicalOrPhysicalConstituentType,38 -attributeOfTile,39 -auxiliary,40 -average,41 -averaging1Flag,42 -averaging2Flag,43 -averagingPeriod,44 -avg,45 -Azi,46 -azimuthalWidth,47 -backgroundGeneratingProcessIdentifier,48 -backgroundProcess,49 -band,50 -baseAddress,51 -baseDateEPS,52 -baseDateOfThisLeg,53 -baseTimeEPS,54 -baseTimeOfThisLeg,55 -basicAngleOfTheInitialProductionDomain,56 -BBB,57 -beginDayTrend1,58 -beginDayTrend2,59 -beginDayTrend3,60 -beginDayTrend4,61 -beginHourTrend1,62 -beginHourTrend2,63 -beginHourTrend3,64 -beginHourTrend4,65 -beginMinuteTrend1,66 -beginMinuteTrend2,67 -beginMinuteTrend3,68 -beginMinuteTrend4,69 -beginMonthTrend1,70 -beginMonthTrend2,71 -beginMonthTrend3,72 -beginMonthTrend4,73 -beginYearTrend1,74 -beginYearTrend2,75 -beginYearTrend3,76 -beginYearTrend4,77 -biFourierCoefficients,78 -biFourierMakeTemplate,79 -biFourierPackingModeForAxes,80 -biFourierResolutionParameterM,81 -biFourierResolutionParameterN,82 -biFourierResolutionSubSetParameterM,83 -biFourierResolutionSubSetParameterN,84 -biFourierSubTruncationType,85 -biFourierTruncationType,86 -binaryScaleFactor,87 -bitmap,88 -bitMapIndicator,89 -bitmapPresent,90 -bitmapSectionPresent,91 -bitsPerValue,92 -bitsPerValueAndRepack,93 -boot_edition,94 -bottomLevel,95 -boustrophedonic,96 -boustrophedonicOrdering,97 -BUDG,98 -BUFR,99 -bufrDataEncoded,100 -bufrdcExpandedDescriptors,101 -bufrHeaderCentre,102 -bufrHeaderSubCentre,103 -bufrTemplate,104 -BufrTemplate,105 -calendarIdentification,106 -calendarIdentificationTemplateNumber,107 -calendarIdPresent,108 -categories,109 -categoryType,110 -cavokOrVisibility,111 -CCCC,112 -ccccIdentifiers,113 -ccsdsBlockSize,114 -ccsdsCompressionOptionsMask,115 -ccsdsFlags,116 -ccsdsRsi,117 -CDF,118 -CDFstr,119 -ceilingAndVisibilityOK,120 -ceilingAndVisibilityOKTrend1,121 -ceilingAndVisibilityOKTrend2,122 -ceilingAndVisibilityOKTrend3,123 -ceilingAndVisibilityOKTrend4,124 -centralClusterDefinition,125 -centralLongitude,126 -centralLongitudeInDegrees,127 -centralLongitudeInMicrodegrees,128 -centre,129 -centreDescription,130 -centreForLocal,131 -centreForTable2,132 -centreLatitude,133 -centreLatitudeInDegrees,134 -centreLongitude,135 -centreLongitudeInDegrees,136 -centuryOfAnalysis,137 -centuryOfReference,138 -centuryOfReferenceTimeOfData,139 -cfName,140 -cfNameECMF,141 -cfNameLegacyECMF,142 -cfVarName,143 -cfVarNameECMF,144 -cfVarNameLegacyECMF,145 -changeDecimalPrecision,146 -changeIndicatorTrend1,147 -changeIndicatorTrend2,148 -changeIndicatorTrend3,149 -changeIndicatorTrend4,150 -changingPrecision,151 -channel,152 -channelNumber,153 -char,154 -charValues,155 -checkInternalVersion,156 -class,157 -classOfAnalysis,158 -climateDateFrom,159 -climateDateTo,160 -climatologicalRegime,161 -CLNOMA,162 -cloudsAbbreviation1,163 -cloudsAbbreviation1Trend1,164 -cloudsAbbreviation1Trend2,165 -cloudsAbbreviation1Trend3,166 -cloudsAbbreviation1Trend4,167 -cloudsAbbreviation2,168 -cloudsAbbreviation2Trend1,169 -cloudsAbbreviation2Trend2,170 -cloudsAbbreviation2Trend3,171 -cloudsAbbreviation2Trend4,172 -cloudsAbbreviation3,173 -cloudsAbbreviation3Trend1,174 -cloudsAbbreviation3Trend2,175 -cloudsAbbreviation3Trend3,176 -cloudsAbbreviation3Trend4,177 -cloudsAbbreviation4,178 -cloudsAbbreviation4Trend1,179 -cloudsAbbreviation4Trend2,180 -cloudsAbbreviation4Trend3,181 -cloudsAbbreviation4Trend4,182 -cloudsBase1,183 -cloudsBase1Trend1,184 -cloudsBase1Trend2,185 -cloudsBase1Trend3,186 -cloudsBase1Trend4,187 -cloudsBase2,188 -cloudsBase2Trend1,189 -cloudsBase2Trend2,190 -cloudsBase2Trend3,191 -cloudsBase2Trend4,192 -cloudsBase3,193 -cloudsBase3Trend1,194 -cloudsBase3Trend2,195 -cloudsBase3Trend3,196 -cloudsBase3Trend4,197 -cloudsBase4,198 -cloudsBase4Trend1,199 -cloudsBase4Trend2,200 -cloudsBase4Trend3,201 -cloudsBase4Trend4,202 -cloudsBaseCoded1,203 -cloudsBaseCoded1Trend1,204 -cloudsBaseCoded1Trend2,205 -cloudsBaseCoded1Trend3,206 -cloudsBaseCoded1Trend4,207 -cloudsBaseCoded2,208 -cloudsBaseCoded2Trend1,209 -cloudsBaseCoded2Trend2,210 -cloudsBaseCoded2Trend3,211 -cloudsBaseCoded2Trend4,212 -cloudsBaseCoded3,213 -cloudsBaseCoded3Trend1,214 -cloudsBaseCoded3Trend2,215 -cloudsBaseCoded3Trend3,216 -cloudsBaseCoded3Trend4,217 -cloudsBaseCoded4,218 -cloudsBaseCoded4Trend1,219 -cloudsBaseCoded4Trend2,220 -cloudsBaseCoded4Trend3,221 -cloudsBaseCoded4Trend4,222 -cloudsCode1,223 -cloudsCode1Trend1,224 -cloudsCode1Trend2,225 -cloudsCode1Trend3,226 -cloudsCode1Trend4,227 -cloudsCode2,228 -cloudsCode2Trend1,229 -cloudsCode2Trend2,230 -cloudsCode2Trend3,231 -cloudsCode2Trend4,232 -cloudsCode3,233 -cloudsCode3Trend1,234 -cloudsCode3Trend2,235 -cloudsCode3Trend3,236 -cloudsCode3Trend4,237 -cloudsCode4,238 -cloudsCode4Trend1,239 -cloudsCode4Trend2,240 -cloudsCode4Trend3,241 -cloudsCode4Trend4,242 -cloudsTitle1,243 -cloudsTitle1Trend1,244 -cloudsTitle1Trend2,245 -cloudsTitle1Trend3,246 -cloudsTitle1Trend4,247 -cloudsTitle2,248 -cloudsTitle2Trend1,249 -cloudsTitle2Trend2,250 -cloudsTitle2Trend3,251 -cloudsTitle2Trend4,252 -cloudsTitle3,253 -cloudsTitle3Trend1,254 -cloudsTitle3Trend2,255 -cloudsTitle3Trend3,256 -cloudsTitle3Trend4,257 -cloudsTitle4,258 -cloudsTitle4Trend1,259 -cloudsTitle4Trend2,260 -cloudsTitle4Trend3,261 -cloudsTitle4Trend4,262 -clusterIdentifier,263 -clusteringDomain,264 -clusteringMethod,265 -clusterMember1,266 -clusterMember10,267 -clusterMember2,268 -clusterMember3,269 -clusterMember4,270 -clusterMember5,271 -clusterMember6,272 -clusterMember7,273 -clusterMember8,274 -clusterMember9,275 -clusterNumber,276 -clusterSize,277 -clutterFilterIndicator,278 -cnmc_cmcc,279 -cnmc_isac,280 -codedNumberOfFirstOrderPackedValues,281 -codedNumberOfGroups,282 -codedValues,283 -codeFigure,284 -codeType,285 -coefsFirst,286 -coefsSecond,287 -commonBlock,288 -complexPacking,289 -componentIndex,290 -compressedData,291 -computeLaplacianOperator,292 -computeStatistics,293 -conceptDir,294 -conceptsDir1,295 -conceptsDir2,296 -conceptsLocalDirAll,297 -conceptsLocalDirECMF,298 -conceptsLocalMarsDirAll,299 -conceptsMasterDir,300 -conceptsMasterMarsDir,301 -consensus,302 -consensusCount,303 -const,304 -constantAntennaElevationAngle,305 -constantFieldHalfByte,306 -constituentType,307 -constituentTypeName,308 -controlForecastCluster,309 -coordAveraging0,310 -coordAveraging1,311 -coordAveraging2,312 -coordAveraging3,313 -coordAveragingTims,314 -coordinate1End,315 -coordinate1Flag,316 -coordinate1Start,317 -coordinate2End,318 -coordinate2Flag,319 -coordinate2Start,320 -coordinate3Flag,321 -coordinate3OfFirstGridPoint,322 -coordinate3OfLastGridPoint,323 -coordinate4Flag,324 -coordinate4OfFirstGridPoint,325 -coordinate4OfLastGridPoint,326 -coordinateFlag1,327 -coordinateFlag2,328 -coordinateIndexNumber,329 -coordinatesPresent,330 -core,331 -corr1Data,332 -corr2Data,333 -corr3Data,334 -corr4Data,335 -correction,336 -correction1,337 -correction1Part,338 -correction2,339 -correction2Part,340 -correction3,341 -correction3Part,342 -correction4,343 -correction4Part,344 -count,345 -countOfGroupLengths,346 -countOfICEFieldsUsed,347 -country,348 -countTotal,349 -crcrlf,350 -createNewData,351 -crraLocalVersion,352 -crraSection,353 -crraSuiteID,354 -daLoop,355 -data,356 -dataAccessors,357 -dataCategory,358 -dataDate,359 -dataFlag,360 -dataKeys,361 -dataLength,362 -dataOrigin,363 -dataRepresentation,364 -dataRepresentationTemplate,365 -dataRepresentationTemplateNumber,366 -dataRepresentationType,367 -dataSelection,368 -datasetForLocal,369 -dataStream,370 -dataSubCategory,371 -dataTime,372 -dataType,373 -dataValues,374 -date,375 -Date_E2,376 -Date_E3,377 -Date_E4,378 -dateOfAnalysis,379 -dateOfForecast,380 -dateOfForecastRun,381 -dateOfForecastUsedInLocalTime,382 -dateOfIceFieldUsed,383 -dateOfModelVersion,384 -dateOfReference,385 -dateOfSSTFieldUsed,386 -dateSSTFieldUsed,387 -dateTime,388 -datumSize,389 -day,390 -dayOfAnalysis,391 -dayOfEndOfOverallTimeInterval,392 -dayOfForecast,393 -dayOfForecastUsedInLocalTime,394 -dayOfModelVersion,395 -DayOfModelVersion,396 -dayOfReference,397 -dayOfTheYearDate,398 -decimalPrecision,399 -decimalScaleFactor,400 -defaultFaFieldName,401 -defaultFaLevelName,402 -defaultFaModelName,403 -default_max_val,404 -default_min_val,405 -defaultName,406 -defaultParameter,407 -defaultSequence,408 -defaultShortName,409 -default_step_units,410 -defaultStepUnits,411 -defaultTypeOfLevel,412 -definitionFilesVersion,413 -DELETE,414 -deleteCalendarId,415 -deleteExtraLocalSection,416 -deleteLocalDefinition,417 -deletePV,418 -derivedForecast,419 -dewPointTemperature,420 -Di,421 -DIAG,422 -diagnostic,423 -diagnosticNumber,424 -diffInDays,425 -diffInHours,426 -DiGiven,427 -DiInDegrees,428 -DiInMetres,429 -dimension,430 -dimensionNumber,431 -dimensionType,432 -direction,433 -directionNumber,434 -directionOfVariation,435 -directionScalingFactor,436 -dirty_statistics,437 -disableGrib1LocalSection,438 -discipline,439 -distanceFromTubeToEnsembleMean,440 -distinctLatitudes,441 -distinctLongitudes,442 -Dj,443 -DjGiven,444 -DjInDegrees,445 -DjInMetres,446 -doExtractArea,447 -doExtractDateTime,448 -doExtractSubsets,449 -domain,450 -doSimpleThinning,451 -driverInformationBlockAddress,452 -Dstart,453 -dummy,454 -dummy1,455 -dummy2,456 -dummyc,457 -dx,458 -Dx,459 -DxInDegrees,460 -DxInMetres,461 -dy,462 -Dy,463 -DyInDegrees,464 -DyInMetres,465 -earthIsOblate,466 -earthMajorAxis,467 -earthMajorAxisInMetres,468 -earthMinorAxis,469 -earthMinorAxisInMetres,470 -easternLongitudeOfClusterDomain,471 -easternLongitudeOfDomain,472 -eastLongitudeOfCluster,473 -eastLongitudeOfDomainOfTubing,474 -ECMWF,475 -ECMWF_s,476 -ed,477 -edition,478 -editionNumber,479 -efas_model,480 -efiOrder,481 -eight,482 -elementsTable,483 -elevation,484 -eleven,485 -endDayTrend1,486 -endDayTrend2,487 -endDayTrend3,488 -endDayTrend4,489 -endDescriptors,490 -endGridDefinition,491 -endHourTrend1,492 -endHourTrend2,493 -endHourTrend3,494 -endHourTrend4,495 -endMark,496 -endMinuteTrend1,497 -endMinuteTrend2,498 -endMinuteTrend3,499 -endMinuteTrend4,500 -endMonthTrend1,501 -endMonthTrend2,502 -endMonthTrend3,503 -endMonthTrend4,504 -endOfFileAddress,505 -endOfHeadersMarker,506 -endOfInterval,507 -endOfMessage,508 -endOfProduct,509 -endOfRange,510 -_endStep,511 -endStep,512 -endStepInHours,513 -endTimeStep,514 -endYearTrend1,515 -endYearTrend2,516 -endYearTrend3,517 -endYearTrend4,518 -energyNorm,519 -enorm,520 -************_ENSEMBLE_**************,521 -Ensemble_Combination_Number,522 -Ensemble_Combinat_Number_0_none_E2,523 -Ensemble_Combinat_Number_0_none_E3,524 -Ensemble_Combinat_Number_0_none_E4,525 -ensembleForecastNumbers,526 -ensembleForecastNumbersList,527 -Ensemble_Identifier,528 -Ensemble_Identifier_E2,529 -Ensemble_Identifier_E3,530 -Ensemble_Identifier_E4,531 -ensembleSize,532 -ensembleStandardDeviation,533 -eps,534 -epsContinous,535 -epsPoint,536 -epsStatisticsContinous,537 -epsStatisticsPoint,538 -expandBy,539 -expandedAbbreviations,540 -expandedCodes,541 -expandedCrex_scales,542 -expandedCrex_units,543 -expandedCrex_widths,544 -expandedDescriptors,545 -expandedNames,546 -expandedOriginalCodes,547 -expandedOriginalReferences,548 -expandedOriginalScales,549 -expandedOriginalWidths,550 -expandedTypes,551 -expandedUnits,552 -************_EXPERIMENT_************,553 -Experiment_Identifier,554 -experimentVersionNumber,555 -experimentVersionNumber1,556 -experimentVersionNumber2,557 -experimentVersionNumberOfAnalysis,558 -expoffset,559 -expver,560 -extendedFlag,561 -extractAreaEastLongitude,562 -extractAreaLatitudeRank,563 -extractAreaLongitudeRank,564 -extractAreaNorthLatitude,565 -extractAreaSouthLatitude,566 -extractAreaWestLongitude,567 -extractDateTimeDayEnd,568 -extractDateTimeDayRank,569 -extractDateTimeDayStart,570 -extractDateTimeEnd,571 -extractDateTimeHourEnd,572 -extractDateTimeHourRank,573 -extractDateTimeHourStart,574 -extractDateTimeMinuteEnd,575 -extractDateTimeMinuteRank,576 -extractDateTimeMinuteStart,577 -extractDateTimeMonthEnd,578 -extractDateTimeMonthRank,579 -extractDateTimeMonthStart,580 -extractDateTimeSecondEnd,581 -extractDateTimeSecondRank,582 -extractDateTimeSecondStart,583 -extractDateTimeStart,584 -extractDateTimeYearEnd,585 -extractDateTimeYearRank,586 -extractDateTimeYearStart,587 -extractedAreaNumberOfSubsets,588 -extractedDateTimeNumberOfSubsets,589 -extractSubset,590 -extractSubsetIntervalEnd,591 -extractSubsetIntervalStart,592 -extractSubsetList,593 -*********_EXTRA_DATA_***************,594 -Extra_Data_FreeFormat_0_none,595 -extraDim,596 -extraDimensionPresent,597 -extraLocalSectionNumber,598 -extraLocalSectionPresent,599 -extraValues,600 -extremeClockwiseWindDirection,601 -extremeCounterClockwiseWindDirection,602 -ExtremeValuesInMaximumRVR1,603 -ExtremeValuesInMaximumRVR2,604 -ExtremeValuesInMaximumRVR3,605 -ExtremeValuesInMaximumRVR4,606 -extremeValuesRVR1,607 -ExtremeValuesRVR1,608 -extremeValuesRVR2,609 -ExtremeValuesRVR2,610 -extremeValuesRVR3,611 -ExtremeValuesRVR3,612 -extremeValuesRVR4,613 -ExtremeValuesRVR4,614 -faFieldName,615 -faLevelName,616 -false,617 -falseEasting,618 -falseNorthing,619 -faModelName,620 -fcmonth,621 -fcperiod,622 -fgDate,623 -fgTime,624 -file,625 -fileConsistencyFlags,626 -fireTemplate,627 -firstDimension,628 -firstDimensionCoordinateValueDefinition,629 -firstDimensionPhysicalSignificance,630 -firstLatitude,631 -FirstLatitude,632 -firstLatitudeInDegrees,633 -firstMonthUsedToBuildClimateMonth1,634 -firstMonthUsedToBuildClimateMonth2,635 -firstOrderValues,636 -firstSize,637 -flag,638 -flagForAnyFurtherInformation,639 -flagForIrregularGridCoordinateList,640 -flagForNormalOrStaggeredGrid,641 -flags,642 -flagShowingPostAuxiliaryArrayInUse,643 -floatVal,644 -floatValues,645 -FMULTE,646 -FMULTM,647 -forecastLeadTime,648 -forecastMonth,649 -forecastOrSingularVectorNumber,650 -forecastperiod,651 -forecastPeriod,652 -forecastPeriodFrom,653 -forecastPeriodTo,654 -forecastProbabilityNumber,655 -forecastSteps,656 -forecastTime,657 -formatVersionMajorNumber,658 -formatVersionMinorNumber,659 -freeFormData,660 -frequency,661 -frequencyNumber,662 -frequencyScalingFactor,663 -functionCode,664 -g,665 -g1conceptsLocalDirAll,666 -g1conceptsMasterDir,667 -g2grid,668 -gaussianGridName,669 -GDSPresent,670 -generalExtended2ordr,671 -generatingProcessIdentificationNumber,672 -generatingProcessIdentifier,673 -generatingProcessTemplate,674 -generatingProcessTemplateNumber,675 -genVertHeightCoords,676 -getNumberOfValues,677 -gg,678 -GG,679 -global,680 -globalDomain,681 -GRIB,682 -grib1divider,683 -grib2divider,684 -grib2LocalSectionNumber,685 -grib2LocalSectionPresent,686 -grib3divider,687 -gribDataQualityChecks,688 -GRIB_DEPTH,689 -GRIBEditionNumber,690 -GRIBEX_boustrophedonic,691 -GRIBEXSection1Problem,692 -GRIBEXShBugPresent,693 -GRIB_LATITUDE,694 -GRIB_LONGITUDE,695 -gribMasterTablesVersionNumber,696 -gribTablesVersionNo,697 -grid,698 -gridCoordinate,699 -gridDefinition,700 -gridDefinitionDescription,701 -gridDefinitionSection,702 -gridDefinitionTemplateNumber,703 -gridDescriptionSectionPresent,704 -gridName,705 -gridPointPosition,706 -gridType,707 -groupInternalNodeK,708 -groupLeafNodeK,709 -groupLengths,710 -groupSplitting,711 -groupSplittingMethodUsed,712 -groupWidth,713 -groupWidths,714 -GTS,715 -gts_CCCC,716 -gts_ddhh00,717 -gts_header,718 -GTSstr,719 -gts_TTAAii,720 -halfByte,721 -hdate,722 -HDF5,723 -HDF5str,724 -headersOnly,725 -heightLevelName,726 -heightOrPressureOfLevel,727 -heightPressureEtcOfLevels,728 -hideThis,729 -horizontalCoordinateDefinition,730 -horizontalCoordinateSupplement,731 -horizontalDimensionProcessed,732 -horizontalDomainTemplate,733 -horizontalDomainTemplateNumber,734 -hour,735 -Hour_E2,736 -Hour_E3,737 -Hour_E4,738 -hourOfAnalysis,739 -hourOfEndOfOverallTimeInterval,740 -hourOfForecast,741 -hourOfForecastUsedInLocalTime,742 -hourOfModelVersion,743 -HourOfModelVersion,744 -hourOfReference,745 -hoursAfterDataCutoff,746 -hoursAfterReferenceTimeOfDataCutoff,747 -hundred,748 -ICEFieldsUsed,749 -ICPLSIZE,750 -ident,751 -identificationNumber,752 -identificationOfOriginatingGeneratingCentre,753 -identificationOfProject,754 -identifier,755 -iDirectionIncrement,756 -iDirectionIncrementGiven,757 -iDirectionIncrementGridLength,758 -iDirectionIncrementInDegrees,759 -ieeeFloats,760 -ifsParam,761 -II,762 -iIncrement,763 -ijDirectionIncrementGiven,764 -implementationDateOfModelCycle,765 -INBITS,766 -incrementOfLengths,767 -indexedStorageInternalNodeK,768 -indexingDate,769 -indexingTime,770 -indexingTimeHH,771 -indexingTimeHHMM,772 -indexingTimeMM,773 -indexTemplate,774 -indexTemplateNumber,775 -indicatorOfParameter,776 -indicatorOfTypeOfLevel,777 -indicatorOfUnitForForecastTime,778 -indicatorOfUnitForTimeIncrement,779 -indicatorOfUnitForTimeRange,780 -indicatorOfUnitOfTimeRange,781 -INGRIB,782 -inputDataPresentIndicator,783 -inputDelayedDescriptorReplicationFactor,784 -inputExtendedDelayedDescriptorReplicationFactor,785 -inputOriginatingCentre,786 -inputOverriddenReferenceValues,787 -inputProcessIdentifier,788 -inputShortDelayedDescriptorReplicationFactor,789 -instrument,790 -instrumentIdentifier,791 -instrumentType,792 -integerPointValues,793 -integerScaleFactor,794 -integerScalingFactorAppliedToDirections,795 -integerScalingFactorAppliedToFrequencies,796 -integerValues,797 -internalVersion,798 -internationalDataSubCategory,799 -interpretationOfNumberOfPoints,800 -intervalBetweenTimes,801 -isAccumulation,802 -is_aerosol,803 -is_aerosol_optical,804 -isAuto,805 -iScansNegatively,806 -iScansPositively,807 -isCavok,808 -isCavokTrend1,809 -isCavokTrend2,810 -isCavokTrend3,811 -isCavokTrend4,812 -is_chemical,813 -is_chemical_distfn,814 -is_chemical_srcsink,815 -isConstant,816 -isCorrection,817 -isectionNumber2,818 -isectionNumber3,819 -isectionNumber4,820 -isEps,821 -isEPS,822 -isFillup,823 -isHindcast,824 -is_localtime,825 -is_ocean2d_param,826 -is_ocean3d_param,827 -isOctahedral,828 -isotopeIdentificationNumber,829 -isRotatedGrid,830 -isSatellite,831 -isSatelliteType,832 -isSens,833 -is_uerra,834 -iteration,835 -iterationNumber,836 -ITERATOR,837 -iteratorDisableUnrotate,838 -ITN,839 -J,840 -jDirectionIncrement,841 -jDirectionIncrementGiven,842 -jDirectionIncrementGridLength,843 -jDirectionIncrementInDegrees,844 -jdLocal,845 -jdSelected,846 -jIncrement,847 -jPointsAreConsecutive,848 -JS,849 -jScansNegatively,850 -jScansPositively,851 -julianDay,852 -julianForecastDay,853 -K,854 -keyData,855 -keyMore,856 -keySat,857 -kindOfProduct,858 -KS,859 -kurt,860 -kurtosis,861 -La1,862 -La1InDegrees,863 -La2,864 -La2InDegrees,865 -LaD,866 -LaDInDegrees,867 -landtype,868 -Lap,869 -laplacianOperator,870 -laplacianOperatorIsSet,871 -laplacianScalingFactor,872 -laplacianScalingFactorUnset,873 -LaR,874 -Lar1,875 -Lar1InDegrees,876 -Lar2,877 -Lar2InDegrees,878 -lastMonthUsedToBuildClimateMonth1,879 -lastMonthUsedToBuildClimateMonth2,880 -Latin,881 -Latin1,882 -Latin1InDegrees,883 -Latin2,884 -Latin2InDegrees,885 -latitude,886 -latitudeFirstInDegrees,887 -latitudeLastInDegrees,888 -latitudeLongitudeValues,889 -latitudeOfCentralPointInClusterDomain,890 -latitudeOfCentrePoint,891 -latitudeOfCentrePointInDegrees,892 -latitudeOfFirstGridPoint,893 -latitudeOfFirstGridPointInDegrees,894 -latitudeOfGridPoints,895 -latitudeOfIcosahedronPole,896 -latitudeOfLastGridPoint,897 -latitudeOfLastGridPointInDegrees,898 -latitudeOfNorthWestCornerOfArea,899 -latitudeOfReferencePoint,900 -latitudeOfReferencePointInDegrees,901 -latitudeOfSouthEastCornerOfArea,902 -latitudeOfSouthernPole,903 -latitudeOfSouthernPoleInDegrees,904 -latitudeOfStretchingPole,905 -latitudeOfStretchingPoleInDegrees,906 -latitudeOfSubSatellitePoint,907 -latitudeOfSubSatellitePointInDegrees,908 -latitudeOfTangencyPoint,909 -latitudeOfThePoleOfStretching,910 -latitudeOfThePolePoint,911 -latitudeOfThePolePointInDegrees,912 -latitudeOfTheSouthernPoleOfProjection,913 -latitudes,914 -latitudeSexagesimal,915 -latitudesList,916 -latitudeWhereDxAndDyAreSpecified,917 -latitudeWhereDxAndDyAreSpecifiedInDegrees,918 -latitudinalDirectionGridLength,919 -latLonValues,920 -lBB,921 -LBC_Initial_Conditions,922 -lcwfvSuiteName,923 -Lcx,924 -LcxInMetres,925 -Lcy,926 -LcyInMetres,927 -leadtime,928 -legacyGaussSubarea,929 -legBaseDate,930 -legBaseTime,931 -_leg_number,932 -legNumber,933 -lengthDescriptors,934 -lengthIncrementForTheGroupLengths,935 -lengthOf4DvarWindow,936 -lengthOfHeaders,937 -lengthOfIndexTemplate,938 -lengthOfMessage,939 -lengthOfOriginatorLocalTemplate,940 -lengthOfProjectLocalTemplate,941 -lengthOfTimeRange,942 -Less_Than_Or_To_Overall_Distribution,943 -lev,944 -level,945 -levelFactor,946 -levelIndicator,947 -levelist,948 -levels,949 -levelType,950 -level_value_list,951 -levelValues,952 -levtype,953 -levTypeName,954 -libraryVersion,955 -LIMITS,956 -listMembersMissing,957 -listMembersMissing2,958 -listMembersMissing3,959 -listMembersMissing4,960 -listMembersUsed,961 -listMembersUsed2,962 -listMembersUsed3,963 -listMembersUsed4,964 -listOfContributingSpectralBands,965 -listOfDistributionFunctionParameter,966 -listOfEnsembleForecastNumbers,967 -listOfModelIdentifiers,968 -listOfParametersUsedForClustering,969 -listOfScaledFrequencies,970 -LLCOSP,971 -Lo1,972 -Lo1InDegrees,973 -Lo2,974 -Lo2InDegrees,975 -local,976 -localDate,977 -localDateTime,978 -localDay,979 -localDecimalScaleFactor,980 -localDefinition,981 -localDefinitionNumber,982 -localDefNumberOne,983 -localDefNumberTwo,984 -localDir,985 -localExtensionPadding,986 -localFlag,987 -localFlagLatestVersion,988 -localHour,989 -localLatitude,990 -localLatitude1,991 -localLatitude2,992 -localLongitude,993 -localLongitude1,994 -localLongitude2,995 -localMinute,996 -localMonth,997 -Local_Number_Members_Missing,998 -Local_Number_Members_Missing_E2,999 -Local_Number_Members_Missing_E3,1000 -Local_Number_Members_Missing_E4,1001 -Local_Number_Members_Possible,1002 -Local_Number_Members_Possible_E2,1003 -Local_Number_Members_Possible_E3,1004 -Local_Number_Members_Possible_E4,1005 -Local_Number_Members_Used,1006 -Local_Number_Members_Used_E2,1007 -Local_Number_Members_Used_E3,1008 -Local_Number_Members_Used_E4,1009 -localNumberOfObservations,1010 -local_padding,1011 -localSecond,1012 -localSection,1013 -localSectionPresent,1014 -localTablesVersion,1015 -localTablesVersionNumber,1016 -localTime,1017 -localTimeForecastList,1018 -localTimeMethod,1019 -local_use,1020 -localUsePresent,1021 -localYear,1022 -logTransform,1023 -longitude,1024 -longitudeFirstInDegrees,1025 -longitudeLastInDegrees,1026 -longitudeOfCentralPointInClusterDomain,1027 -longitudeOfCentrePoint,1028 -longitudeOfCentrePointInDegrees,1029 -longitudeOfFirstDiamondCenterLine,1030 -longitudeOfFirstDiamondCentreLine,1031 -longitudeOfFirstDiamondCentreLineInDegrees,1032 -longitudeOfFirstGridPoint,1033 -longitudeOfFirstGridPointInDegrees,1034 -longitudeOfGridPoints,1035 -longitudeOfIcosahedronPole,1036 -longitudeOfLastGridPoint,1037 -longitudeOfLastGridPointInDegrees,1038 -longitudeOfNorthWestCornerOfArea,1039 -longitudeOfReferencePoint,1040 -longitudeOfReferencePointInDegrees,1041 -longitudeOfSouthEastCornerOfArea,1042 -longitudeOfSouthernPole,1043 -longitudeOfSouthernPoleInDegrees,1044 -longitudeOfStretchingPole,1045 -longitudeOfStretchingPoleInDegrees,1046 -longitudeOfSubSatellitePoint,1047 -longitudeOfSubSatellitePointInDegrees,1048 -longitudeOfTangencyPoint,1049 -longitudeOfThePoleOfStretching,1050 -longitudeOfThePolePoint,1051 -longitudeOfThePolePointInDegrees,1052 -longitudeOfTheSouthernPoleOfProjection,1053 -longitudes,1054 -longitudeSexagesimal,1055 -longitudesList,1056 -longitudinalDirectionGridLength,1057 -Lop,1058 -LoR,1059 -Lor1,1060 -Lor1InDegrees,1061 -Lor2,1062 -Lor2InDegrees,1063 -LoV,1064 -LoVInDegrees,1065 -lowerLimit,1066 -lowerRange,1067 -lowerThreshold,1068 -lowerThresholdValue,1069 -lsdate_bug,1070 -ls_labeling,1071 -LSTCUM,1072 -lstime_bug,1073 -Lux,1074 -LuxInMetres,1075 -Luy,1076 -LuyInMetres,1077 -Lx,1078 -LxInMetres,1079 -Ly,1080 -LyInMetres,1081 -m,1082 -M,1083 -mAngleMultiplier,1084 -mars,1085 -marsClass,1086 -marsClass1,1087 -marsClass2,1088 -marsDir,1089 -marsDomain,1090 -marsEndStep,1091 -marsExperimentOffset,1092 -marsExpver,1093 -marsForecastMonth,1094 -marsGrid,1095 -marsIdent,1096 -marsKeywords,1097 -marsKeywords1,1098 -mars_labeling,1099 -marsLamModel,1100 -marsLatitude,1101 -marsLevel,1102 -marsLevelist,1103 -marsLongitude,1104 -marsModel,1105 -marsParam,1106 -marsQuantile,1107 -marsRange,1108 -marsStartStep,1109 -marsStep,1110 -marsStream,1111 -marsStream1,1112 -marsStream2,1113 -marsType,1114 -marsType1,1115 -marsType2,1116 -mask,1117 -masterDir,1118 -masterTableNumber,1119 -masterTablesVersionNumber,1120 -masterTablesVersionNumberLatest,1121 -matchAerosolBinNumber,1122 -matchAerosolPacking,1123 -matchLandType,1124 -matchSort,1125 -matchTimeRepres,1126 -matrixBitmapsPresent,1127 -matrixOfValues,1128 -max,1129 -maximum,1130 -maxLevelValue,1131 -mBasicAngle,1132 -md5Data,1133 -md5DataSection,1134 -md5GridSection,1135 -md5Headers,1136 -md5Product,1137 -md5Section1,1138 -md5Section10,1139 -md5Section2,1140 -md5Section3,1141 -md5Section4,1142 -md5Section5,1143 -md5Section6,1144 -md5Section7,1145 -md5Section8,1146 -md5Section9,1147 -md5Structure,1148 -md5TimeDomainSection,1149 -meaningOfVerticalCoordinate,1150 -meanRVR1,1151 -meanRVR2,1152 -meanRVR3,1153 -meanRVR4,1154 -meanSize,1155 -meanValueRVR1,1156 -meanValueRVR2,1157 -meanValueRVR3,1158 -meanValueRVR4,1159 -memberNumber,1160 -messageLength,1161 -metadata,1162 -METAR,1163 -METARstr,1164 -method,1165 -methodNumber,1166 -million,1167 -min,1168 -minimum,1169 -minute,1170 -Minute_E2,1171 -Minute_E3,1172 -Minute_E4,1173 -minuteOfAnalysis,1174 -minuteOfEndOfOverallTimeInterval,1175 -minuteOfForecast,1176 -minuteOfForecastUsedInLocalTime,1177 -minuteOfModelVersion,1178 -MinuteOfModelVersion,1179 -minuteOfReference,1180 -minutesAfterDataCutoff,1181 -minutesAfterReferenceTimeOfDataCutoff,1182 -missingDataFlag,1183 -Missing_Model_LBC,1184 -Missing_Model_LBC_E2,1185 -Missing_Model_LBC_E3,1186 -Missing_Model_LBC_E4,1187 -missingValue,1188 -missingValueManagement,1189 -missingValueManagementUsed,1190 -missing_values,1191 -missingValuesPresent,1192 -mixedCoordinateDefinition,1193 -mixedCoordinateFieldFlag,1194 -model,1195 -Model_Additional_Information,1196 -modelErrorType,1197 -modelIdentifier,1198 -Model_Identifier,1199 -Model_LBC_Member_Identifier,1200 -modelName,1201 -modelVersionDate,1202 -modelVersionTime,1203 -modeNumber,1204 -molarMass,1205 -month,1206 -monthlyVerificationDate,1207 -monthlyVerificationMonth,1208 -monthlyVerificationTime,1209 -monthlyVerificationYear,1210 -monthOfAnalysis,1211 -monthOfEndOfOverallTimeInterval,1212 -monthOfForecast,1213 -monthOfForecastUsedInLocalTime,1214 -monthOfModelVersion,1215 -MonthOfModelVersion,1216 -monthOfReference,1217 -MS,1218 -multiplicationFactorForLatLong,1219 -n,1220 -N,1221 -N1,1222 -n2,1223 -N2,1224 -n3,1225 -na,1226 -name,1227 -nameECMF,1228 -nameLegacyECMF,1229 -nameOfFirstFixedSurface,1230 -nameOfSecondFixedSurface,1231 -names,1232 -Nassigned,1233 -NAT,1234 -Nb,1235 -NB,1236 -NC,1237 -NC1,1238 -NC2,1239 -Ncx,1240 -Ncy,1241 -nd,1242 -NEAREST,1243 -neitherPresent,1244 -newSubtype,1245 -Nf,1246 -NG,1247 -NH,1248 -Ni,1249 -NINT_LOG10_RITZ,1250 -NINT_RITZ_EXP,1251 -Nj,1252 -NL,1253 -nlev,1254 -nnn,1255 -normal,1256 -normAtFinalTime,1257 -normAtInitialTime,1258 -northernLatitudeOfClusterDomain,1259 -northernLatitudeOfDomain,1260 -northLatitudeOfCluster,1261 -northLatitudeOfDomainOfTubing,1262 -northWestLatitudeOfLPOArea,1263 -northWestLatitudeOfVerficationArea,1264 -northWestLongitudeOfLPOArea,1265 -northWestLongitudeOfVerficationArea,1266 -nosigPresent,1267 -notDecoded,1268 -NP,1269 -Nr,1270 -NR,1271 -NrInRadiusOfEarth,1272 -NrInRadiusOfEarthScaled,1273 -NRj,1274 -nt,1275 -NT,1276 -number,1277 -Number_Combination_Ensembles_1_none,1278 -numberIncludedInAverage,1279 -numberingOrderOfDiamonds,1280 -numberInHorizontalCoordinates,1281 -numberInMixedCoordinateDefinition,1282 -numberInTheAuxiliaryArray,1283 -numberInTheGridCoordinateList,1284 -numberMissingFromAveragesOrAccumulations,1285 -numberOfAnalysis,1286 -numberOfBits,1287 -numberOfBitsContainingEachPackedValue,1288 -numberOfBitsForScaledGroupLengths,1289 -numberOfBitsUsedForTheGroupWidths,1290 -numberOfBitsUsedForTheScaledGroupLengths,1291 -numberOfBytesInLocalDefinition,1292 -numberOfBytesOfFreeFormatData,1293 -numberOfBytesPerInteger,1294 -numberOfCategories,1295 -numberOfCharacters,1296 -numberOfChars,1297 -numberOfClusterHighResolution,1298 -numberOfClusterLowResolution,1299 -numberOfClusters,1300 -numberOfCodedValues,1301 -numberOfCoefficientsOrValuesUsedToSpecifyFirstDimensionCoordinateFunction,1302 -numberOfCoefficientsOrValuesUsedToSpecifySecondDimensionCoordinateFunction,1303 -numberOfColumns,1304 -numberOfComponents,1305 -numberOfContributingSpectralBands,1306 -numberOfControlForecastTube,1307 -numberOfCoordinatesValues,1308 -numberOfDataBinsAlongRadials,1309 -numberOfDataMatrices,1310 -numberOfDataPoints,1311 -numberOfDataPointsExpected,1312 -numberOfDataValues,1313 -numberOfDaysInClimateSamplingWindow,1314 -numberOfDiamonds,1315 -numberOfDirections,1316 -numberOfDistinctSection3s,1317 -numberOfDistinctSection4s,1318 -numberOfDistinctSection5s,1319 -numberOfDistinctSection6s,1320 -numberOfDistinctSection7s,1321 -numberOfDistinctSection8s,1322 -numberOfDistinctSection9s,1323 -numberOfDistributionFunctionParameters,1324 -numberOfEffectiveValues,1325 -numberOfFloats,1326 -numberOfForcasts,1327 -numberOfForecastsInCluster,1328 -numberOfForecastsInEnsemble,1329 -numberOfForecastsInTheCluster,1330 -numberOfForecastsInTube,1331 -numberOfForecastsUsedInLocalTime,1332 -numberOfFrequencies,1333 -numberOfGridInReference,1334 -numberOfGridUsed,1335 -numberOfGroups,1336 -numberOfGroupsOfDataValues,1337 -numberOfHorizontalPoints,1338 -numberOfIntegers,1339 -numberOfInts,1340 -numberOfIterations,1341 -numberOfLevelValues,1342 -numberOfLocalDefinitions,1343 -numberOfLogicals,1344 -numberOfMembersInCluster,1345 -numberOfMembersInEnsemble,1346 -numberOfMissing,1347 -numberOfMissingInStatisticalProcess,1348 -numberOfMissingValues,1349 -numberOfModels,1350 -numberOfModeOfDistribution,1351 -numberOfOctectsForNumberOfPoints,1352 -numberOfOctetsExtraDescriptors,1353 -numberOfOperationalForecastTube,1354 -numberOfPackedValues,1355 -numberOfParallelsBetweenAPoleAndTheEquator,1356 -numberOfParametersUsedForClustering,1357 -numberOfPartitions,1358 -numberOfPoints,1359 -numberOfPointsAlongAMeridian,1360 -numberOfPointsAlongAParallel,1361 -numberOfPointsAlongFirstAxis,1362 -numberOfPointsAlongSecondAxis,1363 -numberOfPointsAlongTheXAxis,1364 -numberOfPointsAlongTheYAxis,1365 -numberOfPointsAlongXAxis,1366 -numberOfPointsAlongXAxisInCouplingArea,1367 -numberOfPointsAlongYAxis,1368 -numberOfPointsAlongYAxisInCouplingArea,1369 -numberOfPointsInDomain,1370 -numberOfPointsUsed,1371 -numberOfPressureLevelsUsedForClustering,1372 -numberOfRadarSitesUsed,1373 -numberOfRadials,1374 -numberOfReforecastYearsInModelClimate,1375 -numberOfRemaininChars,1376 -numberOfRepresentativeMember,1377 -numberOfReservedBytes,1378 -numberOfRows,1379 -numberOfSecondOrderPackedValues,1380 -numberOfSection,1381 -numberOfSingularVectorsComputed,1382 -numberOfSingularVectorsEvolved,1383 -numberOfStatisticallyProcessedFieldsForLocalTime,1384 -numberOfStepsUsedForClustering,1385 -numberOfSubsets,1386 -numberOfTensOfThousandsOfYearsOfOffset,1387 -numberOfTimeIncrementsOfForecastsUsedInLocalTime,1388 -numberOfTimeRange,1389 -numberOfTimeSteps,1390 -numberOfUnexpandedDescriptors,1391 -numberOfUnusedBitsAtEndOfSection3,1392 -numberOfUsedSpatialTiles,1393 -numberOfUsedTileAttributes,1394 -numberOfUsefulPointsAlongXAxis,1395 -numberOfUsefulPointsAlongYAxis,1396 -_numberOfValues,1397 -numberOfValues,1398 -numberOfVerticalCoordinateValues,1399 -numberOfVerticalGridDescriptors,1400 -numberOfVerticalPoints,1401 -numberOfVGridUsed,1402 -numericValues,1403 -NUT,1404 -Nux,1405 -Nuy,1406 -NV,1407 -Nx,1408 -Ny,1409 -observablePropertyTemplate,1410 -observablePropertyTemplateNumber,1411 -observationDiagnostic,1412 -observationGeneratingProcessIdentifier,1413 -observationType,1414 -observedData,1415 -obstype,1416 -oceanAtmosphereCoupling,1417 -oceanLevName,1418 -oceanStream,1419 -octetAtWichPackedDataBegins,1420 -offset,1421 -offsetAfterBitmap,1422 -offsetAfterCentreLocalSection,1423 -offsetAfterData,1424 -offsetAfterLocalSection,1425 -offsetAfterPadding,1426 -offsetBBitmap,1427 -offsetBeforeBitmap,1428 -offsetBeforeData,1429 -offsetBeforePL,1430 -offsetBeforePV,1431 -offsetBSection5,1432 -offsetBSection6,1433 -offsetBSection9,1434 -offsetdate,1435 -offsetDescriptors,1436 -offsetEndSection4,1437 -offsetFreeFormData,1438 -offsetFromOriginToInnerBound,1439 -offsetFromReferenceOfFirstTime,1440 -offsetICEFieldsUsed,1441 -offsetSection0,1442 -offsetSection1,1443 -offsetSection10,1444 -offsetSection11,1445 -offsetSection2,1446 -offsetSection3,1447 -offsetSection4,1448 -offsetSection5,1449 -offsetSection6,1450 -offsetSection7,1451 -offsetSection8,1452 -offsetSection9,1453 -offsettime,1454 -offsetToEndOf4DvarWindow,1455 -offsetValuesBy,1456 -oldSubtype,1457 -one,1458 -oneConstant,1459 -oneMillionConstant,1460 -oneMinuteMeanMaximumRVR1,1461 -oneMinuteMeanMaximumRVR2,1462 -oneMinuteMeanMaximumRVR3,1463 -oneMinuteMeanMaximumRVR4,1464 -oneMinuteMeanMinimumRVR1,1465 -oneMinuteMeanMinimumRVR2,1466 -oneMinuteMeanMinimumRVR3,1467 -oneMinuteMeanMinimumRVR4,1468 -oneThousand,1469 -oper,1470 -operatingMode,1471 -operationalForecastCluster,1472 -operStream,1473 -optimisationTime,1474 -optimizeScaleFactor,1475 -optionalData,1476 -opttime,1477 -orderOfSpatialDifferencing,1478 -orderOfSPD,1479 -orientationOfTheGrid,1480 -orientationOfTheGridInDegrees,1481 -origin,1482 -Original_CodeTable_2_Version_Number,1483 -Original_Parameter_Iden_CodeTable2,1484 -Original_Parameter_Identifier,1485 -originalParameterNumber,1486 -originalParameterTableNumber,1487 -originalSubCentreIdentifier,1488 -originatingCentre,1489 -originatingCentreOfAnalysis,1490 -originatingClass,1491 -originatorLocalTemplate,1492 -originatorLocalTemplateNumber,1493 -originOfPostProcessing,1494 -overlayTemplate,1495 -overlayTemplateNumber,1496 -P,1497 -P1,1498 -P2,1499 -pack,1500 -packedValues,1501 -packingError,1502 -packingType,1503 -padding,1504 -padding_grid1_1,1505 -padding_grid1_2,1506 -padding_grid3_1,1507 -padding_grid4_1,1508 -padding_grid50_1,1509 -padding_grid5_1,1510 -padding_grid90_1,1511 -padding_loc10_1,1512 -padding_loc12_1,1513 -padding_loc13_1,1514 -padding_loc13_2,1515 -padding_loc13_3,1516 -padding_loc13_4,1517 -padding_loc13_5,1518 -padding_loc14_1,1519 -padding_loc14_2,1520 -padding_loc15_1,1521 -padding_loc16_1,1522 -padding_loc17_2,1523 -padding_loc18_1,1524 -padding_loc18_2,1525 -padding_loc190_1,1526 -padding_loc191_1,1527 -padding_loc191_2,1528 -padding_loc191_3,1529 -padding_loc19_2,1530 -padding_loc192_1,1531 -padding_loc20_1,1532 -padding_loc2_1,1533 -padding_loc21_1,1534 -padding_loc2_2,1535 -padding_loc23_1,1536 -padding_loc244_1,1537 -padding_loc244_2,1538 -padding_loc244_3,1539 -padding_loc245_1,1540 -padding_loc245_2,1541 -padding_loc26_1,1542 -padding_loc27_1,1543 -padding_loc27_2,1544 -padding_loc28_1,1545 -padding_loc29_1,1546 -padding_loc29_2,1547 -padding_loc29_3,1548 -padding_loc30_1,1549 -padding_loc30_2,1550 -padding_loc3_1,1551 -padding_loc37_1,1552 -padding_loc37_2,1553 -padding_loc38_1,1554 -padding_loc4_2,1555 -padding_loc50_1,1556 -padding_loc5_1,1557 -padding_loc6_1,1558 -padding_loc7_1,1559 -padding_loc9_1,1560 -padding_loc9_2,1561 -padding_local1_1,1562 -padding_local11_1,1563 -padding_local1_31,1564 -padding_local_35,1565 -padding_local40_1,1566 -padding_local_7_1,1567 -padding_sec1_loc,1568 -padding_sec2_1,1569 -padding_sec2_2,1570 -padding_sec2_3,1571 -padding_sec3_1,1572 -padding_sec4_1,1573 -paleontologicalOffset,1574 -param,1575 -parameter,1576 -parameterCategory,1577 -parameterCode,1578 -parameterDiscipline,1579 -parameterIndicator,1580 -parameterName,1581 -parameterNumber,1582 -parameters,1583 -parametersVersion,1584 -parameterUnits,1585 -paramId,1586 -paramIdECMF,1587 -paramIdLegacyECMF,1588 -param_value_max,1589 -param_value_min,1590 -partitionItems,1591 -partitionNumber,1592 -partitions,1593 -partitionTable,1594 -pastTendencyRVR1,1595 -pastTendencyRVR2,1596 -pastTendencyRVR3,1597 -pastTendencyRVR4,1598 -patch_precip_fp,1599 -pentagonalResolutionParameterJ,1600 -pentagonalResolutionParameterK,1601 -pentagonalResolutionParameterM,1602 -percentileValue,1603 -periodOfTime,1604 -periodOfTimeIntervals,1605 -perturbationNumber,1606 -perturbedType,1607 -phase,1608 -physicalFlag1,1609 -physicalFlag2,1610 -physicalMeaningOfVerticalCoordinate,1611 -P_INST,1612 -pl,1613 -platform,1614 -PLPresent,1615 -plusOneinOrdersOfSPD,1616 -points,1617 -postAuxiliary,1618 -postAuxiliaryArrayPresent,1619 -postProcessing,1620 -powerOfTenUsedToScaleClimateWeight,1621 -preBitmapValues,1622 -precision,1623 -precisionOfTheUnpackedSubset,1624 -predefined_grid,1625 -predefined_grid_values,1626 -preferLocalConcepts,1627 -preProcessingParameter,1628 -present,1629 -presentTrend1,1630 -presentTrend2,1631 -presentTrend3,1632 -presentTrend4,1633 -presentWeather1Present,1634 -presentWeather1PresentTrend1,1635 -presentWeather1PresentTrend2,1636 -presentWeather1PresentTrend3,1637 -presentWeather1PresentTrend4,1638 -presentWeather2Present,1639 -presentWeather2PresentTrend1,1640 -presentWeather2PresentTrend2,1641 -presentWeather2PresentTrend3,1642 -presentWeather2PresentTrend4,1643 -presentWeather3Present,1644 -presentWeather3PresentTrend1,1645 -presentWeather3PresentTrend2,1646 -presentWeather3PresentTrend3,1647 -presentWeather3PresentTrend4,1648 -pressureLevel,1649 -pressureUnits,1650 -primaryBitmap,1651 -primaryMissingValue,1652 -primaryMissingValueSubstitute,1653 -probabilityType,1654 -probabilityTypeName,1655 -probContinous,1656 -probPoint,1657 -probProductDefinition,1658 -process,1659 -produceLargeConstantFields,1660 -product,1661 -************_PRODUCT_***************,1662 -productDefinition,1663 -productDefinitionTemplateNumber,1664 -productDefinitionTemplateNumberInternal,1665 -productIdentifier,1666 -Product_Identifier,1667 -productionStatusOfProcessedData,1668 -productType,1669 -projectionCenterFlag,1670 -projectionCentreFlag,1671 -projectLocalTemplate,1672 -projectLocalTemplateNumber,1673 -projSourceString,1674 -projString,1675 -projTargetString,1676 -P_TACC,1677 -P_TAVG,1678 -PUnset,1679 -pv,1680 -pvlLocation,1681 -PVPresent,1682 -qfe,1683 -qfePresent,1684 -qfeUnits,1685 -qnh,1686 -qnhAPresent,1687 -qnhPresent,1688 -qnhUnits,1689 -qualityControl,1690 -qualityControlIndicator,1691 -qualityValueAssociatedWithParameter,1692 -quantile,1693 -quantileValue,1694 -radialAngularSpacing,1695 -radials,1696 -radius,1697 -radiusInMetres,1698 -radiusOfCentralCluster,1699 -radiusOfClusterDomain,1700 -radiusOfTheEarth,1701 -range,1702 -rangeBinSpacing,1703 -rdbDateTime,1704 -rdb_key,1705 -rdbSubtype,1706 -rdbtime,1707 -rdbtimeDate,1708 -rdbtimeDay,1709 -rdbtimeHour,1710 -rdbtimeMinute,1711 -rdbtimeMonth,1712 -rdbtimeSecond,1713 -rdbtimeTime,1714 -rdbtimeYear,1715 -rdbType,1716 -realPart,1717 -realPartOf00,1718 -recDateTime,1719 -recentWeather,1720 -recentWeatherTry,1721 -rectime,1722 -rectimeDay,1723 -rectimeHour,1724 -rectimeMinute,1725 -rectimeSecond,1726 -reducedGrid,1727 -refdate,1728 -reference,1729 -referenceDate,1730 -referenceForGroupLengths,1731 -referenceForGroupWidths,1732 -referenceOfLengths,1733 -referenceOfWidths,1734 -referenceReflectivityForEchoTop,1735 -referenceSampleInterval,1736 -referenceStep,1737 -referenceValue,1738 -referenceValueError,1739 -reflectivityCalibrationConstant,1740 -remarkPresent,1741 -RENAME,1742 -reportType,1743 -representationMode,1744 -representationType,1745 -representativeMember,1746 -reserved,1747 -reserved1,1748 -reserved2,1749 -reserved3,1750 -reservedNeedNotBePresent,1751 -reservedOctet,1752 -reservedSection2,1753 -reservedSection3,1754 -reservedSection4,1755 -resolutionAndComponentFlags,1756 -resolutionAndComponentFlags1,1757 -resolutionAndComponentFlags2,1758 -resolutionAndComponentFlags3,1759 -resolutionAndComponentFlags4,1760 -resolutionAndComponentFlags6,1761 -resolutionAndComponentFlags7,1762 -resolutionAndComponentFlags8,1763 -restricted,1764 -rootGroupObjectHeaderAddress,1765 -rootGroupSymbolTableEntry,1766 -rootTablesDir,1767 -roundedMarsLatitude,1768 -roundedMarsLevelist,1769 -roundedMarsLongitude,1770 -runwayBrakingActionState1,1771 -runwayBrakingActionState2,1772 -runwayBrakingActionState3,1773 -runwayBrakingActionState4,1774 -runwayDepositCodeState1,1775 -runwayDepositCodeState2,1776 -runwayDepositCodeState3,1777 -runwayDepositCodeState4,1778 -runwayDepositState1,1779 -runwayDepositState2,1780 -runwayDepositState3,1781 -runwayDepositState4,1782 -runwayDepthOfDepositCodeState1,1783 -runwayDepthOfDepositCodeState2,1784 -runwayDepthOfDepositCodeState3,1785 -runwayDepthOfDepositCodeState4,1786 -runwayDepthOfDepositState1,1787 -runwayDepthOfDepositState2,1788 -runwayDepthOfDepositState3,1789 -runwayDepthOfDepositState4,1790 -runwayDesignatorRVR1,1791 -runwayDesignatorRVR2,1792 -runwayDesignatorRVR3,1793 -runwayDesignatorRVR4,1794 -runwayDesignatorState1,1795 -runwayDesignatorState2,1796 -runwayDesignatorState3,1797 -runwayDesignatorState4,1798 -runwayExtentOfContaminationCodeState1,1799 -runwayExtentOfContaminationCodeState2,1800 -runwayExtentOfContaminationCodeState3,1801 -runwayExtentOfContaminationCodeState4,1802 -runwayExtentOfContaminationState1,1803 -runwayExtentOfContaminationState2,1804 -runwayExtentOfContaminationState3,1805 -runwayExtentOfContaminationState4,1806 -runwayFrictionCodeValueState1,1807 -runwayFrictionCodeValueState2,1808 -runwayFrictionCodeValueState3,1809 -runwayFrictionCodeValueState4,1810 -runwayFrictionCoefficientCodeState1,1811 -runwayFrictionCoefficientCodeState2,1812 -runwayFrictionCoefficientCodeState3,1813 -runwayFrictionCoefficientCodeState4,1814 -runwayFrictionCoefficientState1,1815 -runwayFrictionCoefficientState2,1816 -runwayFrictionCoefficientState3,1817 -runwayFrictionCoefficientState4,1818 -runwaySideCodeState1,1819 -runwaySideCodeState2,1820 -runwaySideCodeState3,1821 -runwaySideCodeState4,1822 -runwayState,1823 -RVR1_1,1824 -RVR2_1,1825 -RVR3_1,1826 -RVR4_1,1827 -sampleSizeOfModelClimate,1828 -satelliteID,1829 -satelliteIdentifier,1830 -satelliteNumber,1831 -satelliteSeries,1832 -scaledDirections,1833 -scaledFrequencies,1834 -scaledValueOfCentralWaveNumber,1835 -scaledValueOfDistanceFromEnsembleMean,1836 -scaledValueOfDistributionFunctionParameter,1837 -scaledValueOfEarthMajorAxis,1838 -scaledValueOfEarthMinorAxis,1839 -scaledValueOfFirstFixedSurface,1840 -scaledValueOfFirstSize,1841 -scaledValueOfFirstWavelength,1842 -scaledValueOfLengthOfSemiMajorAxis,1843 -scaledValueOfLengthOfSemiMinorAxis,1844 -scaledValueOfLowerLimit,1845 -scaledValueOfMajorAxisOfOblateSpheroidEarth,1846 -scaledValueOfMinorAxisOfOblateSpheroidEarth,1847 -scaledValueOfPrimeMeridianOffset,1848 -scaledValueOfRadiusOfSphericalEarth,1849 -scaledValueOfSecondFixedSurface,1850 -scaledValueOfSecondSize,1851 -scaledValueOfSecondWavelength,1852 -scaledValueOfStandardDeviation,1853 -scaledValueOfStandardDeviationInTheCluster,1854 -scaledValueOfUpperLimit,1855 -scaleFactorAtReferencePoint,1856 -scaleFactorOfCentralWaveNumber,1857 -scaleFactorOfDistanceFromEnsembleMean,1858 -scaleFactorOfDistributionFunctionParameter,1859 -scaleFactorOfEarthMajorAxis,1860 -scaleFactorOfEarthMinorAxis,1861 -scaleFactorOfFirstFixedSurface,1862 -scaleFactorOfFirstSize,1863 -scaleFactorOfFirstWavelength,1864 -scaleFactorOfLengthOfSemiMajorAxis,1865 -scaleFactorOfLengthOfSemiMinorAxis,1866 -scaleFactorOfLowerLimit,1867 -scaleFactorOfMajorAxisOfOblateSpheroidEarth,1868 -scaleFactorOfMinorAxisOfOblateSpheroidEarth,1869 -scaleFactorOfPrimeMeridianOffset,1870 -scaleFactorOfRadiusOfSphericalEarth,1871 -scaleFactorOfSecondFixedSurface,1872 -scaleFactorOfSecondSize,1873 -scaleFactorOfSecondWavelength,1874 -scaleFactorOfStandardDeviation,1875 -scaleFactorOfStandardDeviationInTheCluster,1876 -scaleFactorOfUpperLimit,1877 -scaleValuesBy,1878 -scalingFactorForFrequencies,1879 -scanningMode,1880 -scanningMode4,1881 -scanningMode5,1882 -scanningMode6,1883 -scanningMode7,1884 -scanningMode8,1885 -scanningModeForOneDiamond,1886 -scanPosition,1887 -sd,1888 -second,1889 -secondaryBitmap,1890 -secondaryBitMap,1891 -secondaryBitmapPresent,1892 -secondaryBitmaps,1893 -secondaryBitmapsCount,1894 -secondaryBitmapsSize,1895 -secondaryMissingValue,1896 -secondaryMissingValueSubstitute,1897 -secondDimension,1898 -secondDimensionCoordinateValueDefinition,1899 -secondDimensionPhysicalSignificance,1900 -secondLatitude,1901 -SecondLatitude,1902 -secondLatitudeInDegrees,1903 -secondOfEndOfOverallTimeInterval,1904 -secondOfForecast,1905 -secondOfForecastUsedInLocalTime,1906 -secondOfModelVersion,1907 -SecondOfModelVersion,1908 -secondOrderFlags,1909 -secondOrderOfDifferentWidth,1910 -secondOrderValuesDifferentWidths,1911 -secondSize,1912 -secondsOfAnalysis,1913 -secondsOfReference,1914 -section,1915 -section_01,1916 -section_02,1917 -section_03,1918 -section_04,1919 -section_05,1920 -section_06,1921 -section_07,1922 -section_08,1923 -section_09,1924 -section0Length,1925 -section0Pointer,1926 -section_1,1927 -section1,1928 -section_10,1929 -section10Length,1930 -section10Pointer,1931 -section_11,1932 -section11Length,1933 -section11Pointer,1934 -section1Flags,1935 -section1Length,1936 -section1Padding,1937 -section1Pointer,1938 -section_2,1939 -section2Length,1940 -section2Padding,1941 -section2Pointer,1942 -section2Present,1943 -section2Used,1944 -section_3,1945 -section3Flags,1946 -section3Length,1947 -section3Padding,1948 -section3Pointer,1949 -section3UniqueIdentifier,1950 -section_4,1951 -section4,1952 -section4Length,1953 -section4Padding,1954 -section4Pointer,1955 -section4UniqueIdentifier,1956 -section_5,1957 -section5,1958 -section5Length,1959 -section5Pointer,1960 -section5UniqueIdentifier,1961 -section_6,1962 -section6,1963 -section6Length,1964 -section6Pointer,1965 -section6UniqueIdentifier,1966 -section_7,1967 -section7,1968 -section7Length,1969 -section7Pointer,1970 -section7UniqueIdentifier,1971 -section_8,1972 -section8,1973 -section8Length,1974 -section8Pointer,1975 -section8UniqueIdentifier,1976 -section9Length,1977 -section9Pointer,1978 -section9UniqueIdentifier,1979 -sectionLengthLimitForEnsembles,1980 -sectionLengthLimitForProbability,1981 -sectionNumber,1982 -sectionPosition,1983 -selectedDay,1984 -selectedFcIndex,1985 -selectedHour,1986 -selectedMinute,1987 -selectedMonth,1988 -selectedSecond,1989 -selectedYear,1990 -selectStepTemplateInstant,1991 -selectStepTemplateInterval,1992 -sensitiveAreaDomain,1993 -sequences,1994 -setBitsPerValue,1995 -setCalendarId,1996 -setDecimalPrecision,1997 -setLocalDefinition,1998 -setToMissingIfOutOfRange,1999 -sfc_levtype,2000 -shapeOfTheEarth,2001 -shapeOfVerificationArea,2002 -short_name,2003 -shortName,2004 -shortNameECMF,2005 -shortNameLegacyECMF,2006 -Show_Combination_Ensem_E2_0_no_1_yes,2007 -Show_Combination_Ensem_E3_0_no_1_yes,2008 -Show_Combination_Ensem_E4_0_no_1_yes,2009 -signature,2010 -significanceOfReferenceDateAndTime,2011 -significanceOfReferenceTime,2012 -simpleThinningMissingRadius,2013 -simpleThinningSkip,2014 -simpleThinningStart,2015 -siteElevation,2016 -siteId,2017 -siteLatitude,2018 -siteLongitude,2019 -sizeOfLength,2020 -sizeOfOffsets,2021 -sizeOfPostAuxiliaryArray,2022 -sizeOfPostAuxiliaryArrayPlusOne,2023 -skew,2024 -skewness,2025 -skipExtraKeyAttributes,2026 -SOH,2027 -sort,2028 -sourceOfGridDefinition,2029 -sourceSinkChemicalPhysicalProcess,2030 -southEastLatitudeOfLPOArea,2031 -southEastLatitudeOfVerficationArea,2032 -southEastLongitudeOfLPOArea,2033 -southEastLongitudeOfVerficationArea,2034 -southernLatitudeOfClusterDomain,2035 -southernLatitudeOfDomain,2036 -southLatitudeOfCluster,2037 -southLatitudeOfDomainOfTubing,2038 -southPoleOnProjectionPlane,2039 -sp1,2040 -sp2,2041 -sp3,2042 -spaceUnitFlag,2043 -spacingOfBinsAlongRadials,2044 -spare,2045 -spare1,2046 -spare2,2047 -spare3,2048 -spare4,2049 -spatialProcessing,2050 -spatialSmoothingOfProduct,2051 -SPD,2052 -spectralDataRepresentationMode,2053 -spectralDataRepresentationType,2054 -spectralMode,2055 -spectralType,2056 -sphericalHarmonics,2057 -standardDeviation,2058 -standardParallel,2059 -standardParallelInDegrees,2060 -standardParallelInMicrodegrees,2061 -startingAzimuth,2062 -startOfHeaders,2063 -startOfMessage,2064 -startOfRange,2065 -startStep,2066 -startStepInHours,2067 -startTimeStep,2068 -statisticalProcess,2069 -statisticalProcessesList,2070 -statistics,2071 -status,2072 -step,2073 -stepForClustering,2074 -stepHumanReadable,2075 -stepInHours,2076 -stepRange,2077 -stepRangeInHours,2078 -stepType,2079 -stepTypeForConversion,2080 -stepTypeInternal,2081 -stepUnits,2082 -stepZero,2083 -stream,2084 -streamOfAnalysis,2085 -stretchingFactor,2086 -stretchingFactorScaled,2087 -stringValues,2088 -subCentre,2089 -subcentreOfAnalysis,2090 -subDefinitions1,2091 -subDefinitions2,2092 -subdivisionsOfBasicAngle,2093 -Sub-Experiment_Identifier,2094 -subLocalDefinition1,2095 -subLocalDefinition2,2096 -subLocalDefinitionLength1,2097 -subLocalDefinitionLength2,2098 -subLocalDefinitionNumber1,2099 -subLocalDefinitionNumber2,2100 -subSetJ,2101 -subSetK,2102 -subSetM,2103 -suiteName,2104 -superblockExtensionAddress,2105 -swapScanningAlternativeRows,2106 -swapScanningLat,2107 -swapScanningLon,2108 -swapScanningX,2109 -swapScanningY,2110 -system,2111 -systemNumber,2112 -t,2113 -_T,2114 -table2Version,2115 -tableCode,2116 -tableNumber,2117 -tableReference,2118 -tablesLocalDir,2119 -tablesMasterDir,2120 -tablesVersion,2121 -tablesVersionLatest,2122 -tablesVersionLatestOfficial,2123 -TAF,2124 -TAFstr,2125 -targetCompressionRatio,2126 -td,2127 -temperature,2128 -temperatureAndDewpointPresent,2129 -templatesLocalDir,2130 -templatesMasterDir,2131 -tempPressureUnits,2132 -theHindcastMarsStream,2133 -theMessage,2134 -thisExperimentVersionNumber,2135 -thisMarsClass,2136 -thisMarsStream,2137 -thisMarsType,2138 -thousand,2139 -three,2140 -threshold,2141 -thresholdIndicator,2142 -Threshold_Or_Distribution_0_no_1_yes,2143 -Threshold_Or_Distribution_Units,2144 -TIDE,2145 -tiggeCentre,2146 -tiggeLAMName,2147 -tiggeLocalVersion,2148 -tiggeModel,2149 -tigge_name,2150 -tiggeSection,2151 -tigge_short_name,2152 -tiggeSuiteID,2153 -tileClassification,2154 -tileIndex,2155 -time,2156 -timeCoordinateDefinition,2157 -timeDomainTemplate,2158 -timeDomainTemplateNumber,2159 -timeIncrement,2160 -timeIncrementBetweenSuccessiveFields,2161 -timeOfAnalysis,2162 -timeOfForecast,2163 -timeOfForecastUsedInLocalTime,2164 -timeOfModelVersion,2165 -timeOfReference,2166 -timeRangeIndicator,2167 -timeRangeIndicatorFromStepRange,2168 -Time_Range_One_E2,2169 -Time_Range_One_E3,2170 -Time_Range_One_E4,2171 -Time_Range_Two_E2,2172 -Time_Range_Two_E3,2173 -Time_Range_Two_E4,2174 -timerepres,2175 -timeUnitFlag,2176 -topLevel,2177 -total,2178 -totalAerosolBinsNumbers,2179 -totalInitialConditions,2180 -totalLength,2181 -totalNumber,2182 -Total_Number_Members_Missing,2183 -Total_Number_Members_Possible,2184 -Total_Number_Members_Used,2185 -totalNumberOfClusters,2186 -totalNumberOfDataValuesMissingInStatisticalProcess,2187 -totalNumberOfdimensions,2188 -totalNumberOfDirections,2189 -totalNumberOfForecastProbabilities,2190 -totalNumberOfFrequencies,2191 -totalNumberOfGridPoints,2192 -totalNumberOfIterations,2193 -totalNumberOfQuantiles,2194 -totalNumberOfRepetitions,2195 -totalNumberOfTileAttributePairs,2196 -totalNumberOfTubes,2197 -totalNumberOfValuesInUnpackedSubset,2198 -treatmentOfMissingData,2199 -true,2200 -trueLengthOfLastGroup,2201 -truncateDegrees,2202 -truncateLaplacian,2203 -_TS,2204 -TS,2205 -TScalc,2206 -tsectionNumber3,2207 -tsectionNumber4,2208 -tsectionNumber5,2209 -TT,2210 -tubeDomain,2211 -tubeNumber,2212 -two,2213 -twoOrdersOfSPD,2214 -type,2215 -TYPE_AN,2216 -TYPE_CF,2217 -TYPE_FC,2218 -TYPE_FF,2219 -TYPE_FX,2220 -TYPE_OF,2221 -typeOfAnalysis,2222 -typeOfAuxiliaryInformation,2223 -typeOfCalendar,2224 -typeOfCompressionUsed,2225 -typeOfDistributionFunction,2226 -typeOfEnsembleForecast,2227 -typeOfEnsembleMember,2228 -typeOfFirstFixedSurface,2229 -typeOfGeneratingProcess,2230 -typeOfGrid,2231 -typeOfHorizontalLine,2232 -typeOfIntervalForFirstAndSecondSize,2233 -typeOfIntervalForFirstAndSecondWavelength,2234 -typeOfLevel,2235 -typeOfLevelECMF,2236 -typeOfOriginalFieldValues,2237 -typeOfPacking,2238 -typeOfPostProcessing,2239 -typeOfPreProcessing,2240 -typeOfProcessedData,2241 -typeOfSecondFixedSurface,2242 -typeOfSizeInterval,2243 -typeOfSSTFieldUsed,2244 -typeOfStatisticalPostProcessingOfEnsembleMembers,2245 -typeOfStatisticalProcessing,2246 -typeOfTimeIncrement,2247 -typeOfTimeIncrementBetweenSuccessiveFieldsUsedInTheStatisticalProcessing,2248 -typeOfWavelengthInterval,2249 -TYPE_OR,2250 -TYPE_PF,2251 -typicalCentury,2252 -typicalDate,2253 -typicalDateTime,2254 -typicalDay,2255 -typicalHour,2256 -typicalMinute,2257 -typicalMonth,2258 -typicalSecond,2259 -typicalTime,2260 -typicalYear,2261 -typicalYear2,2262 -typicalYearOfCentury,2263 -uco,2264 -ucs,2265 -unexpandedDescriptors,2266 -unexpandedDescriptorsEncoded,2267 -unitOfOffsetFromReferenceTime,2268 -unitOfTime,2269 -unitOfTimeIncrement,2270 -unitOfTimeRange,2271 -units,2272 -unitsBias,2273 -unitsConversionOffset,2274 -unitsConversionScaleFactor,2275 -unitsDecimalScaleFactor,2276 -unitsECMF,2277 -unitsFactor,2278 -unitsLegacyECMF,2279 -unitsOfFirstFixedSurface,2280 -unitsOfSecondFixedSurface,2281 -unknown,2282 -unpack,2283 -unpackedError,2284 -unpackedSubsetPrecision,2285 -unpackedValues,2286 -unsignedIntegers,2287 -unstructuredGrid,2288 -unstructuredGridSubtype,2289 -unstructuredGridType,2290 -unstructuredGridUUID,2291 -unusedBitsInBitmap,2292 -updateSequenceNumber,2293 -upperLimit,2294 -upperRange,2295 -upperThreshold,2296 -upperThresholdValue,2297 -Used_Model_LBC,2298 -Used_Model_LBC_E2,2299 -Used_Model_LBC_E3,2300 -Used_Model_LBC_E4,2301 -userDateEnd,2302 -userDateStart,2303 -userDateTimeEnd,2304 -userDateTimeStart,2305 -userTimeEnd,2306 -userTimeStart,2307 -uuidOfHGrid,2308 -uuidOfVGrid,2309 -uvRelativeToGrid,2310 -validityDate,2311 -validityTime,2312 -values,2313 -variationOfVisibility,2314 -variationOfVisibilityDirection,2315 -variationOfVisibilityDirectionAngle,2316 -variationOfVisibilityDirectionTrend1,2317 -variationOfVisibilityDirectionTrend2,2318 -variationOfVisibilityDirectionTrend3,2319 -variationOfVisibilityDirectionTrend4,2320 -variationOfVisibilityTrend1,2321 -variationOfVisibilityTrend2,2322 -variationOfVisibilityTrend3,2323 -variationOfVisibilityTrend4,2324 -varno,2325 -verificationDate,2326 -verificationMonth,2327 -verificationYear,2328 -verifyingMonth,2329 -version,2330 -versionNumberOfExperimentalSuite,2331 -versionNumberOfGribLocalTables,2332 -versionNumberOfSuperblock,2333 -versionNumOfFilesFreeSpaceStorage,2334 -versionNumOfRootGroupSymbolTableEntry,2335 -versionNumOfSharedHeaderMessageFormat,2336 -versionOfModelClimate,2337 -verticalCoordinate,2338 -verticalCoordinateDefinition,2339 -verticalDomainTemplate,2340 -verticalDomainTemplateNumber,2341 -verticalVisibility,2342 -verticalVisibilityCoded,2343 -visibility,2344 -visibilityInKilometresTrend1,2345 -visibilityInKilometresTrend2,2346 -visibilityInKilometresTrend3,2347 -visibilityInKilometresTrend4,2348 -visibilityTrend1,2349 -visibilityTrend2,2350 -visibilityTrend3,2351 -visibilityTrend4,2352 -waveDomain,2353 -weightAppliedToClimateMonth1,2354 -westernLongitudeOfClusterDomain,2355 -westernLongitudeOfDomain,2356 -westLongitudeOfCluster,2357 -westLongitudeOfDomainOfTubing,2358 -widthOfFirstOrderValues,2359 -widthOfLengths,2360 -widthOfSPD,2361 -widthOfWidths,2362 -windDirection,2363 -windDirectionTrend1,2364 -windDirectionTrend2,2365 -windDirectionTrend3,2366 -windDirectionTrend4,2367 -windGust,2368 -windGustTrend1,2369 -windGustTrend2,2370 -windGustTrend3,2371 -windGustTrend4,2372 -windPresent,2373 -windSpeed,2374 -windSpeedTrend1,2375 -windSpeedTrend2,2376 -windSpeedTrend3,2377 -windSpeedTrend4,2378 -windUnits,2379 -windUnitsTrend1,2380 -windUnitsTrend2,2381 -windUnitsTrend3,2382 -windUnitsTrend4,2383 -windVariableDirection,2384 -windVariableDirectionTrend1,2385 -windVariableDirectionTrend2,2386 -windVariableDirectionTrend3,2387 -windVariableDirectionTrend4,2388 -WMO,2389 -WRAP,2390 -WRAPstr,2391 -wrongPadding,2392 -X1,2393 -X1InGridLengths,2394 -X2,2395 -X2InGridLengths,2396 -xCoordinateOfOriginOfSectorImage,2397 -xCoordinateOfSubSatellitePoint,2398 -xDirectionGridLength,2399 -xDirectionGridLengthInMetres,2400 -xDirectionGridLengthInMillimetres,2401 -xFirst,2402 -xLast,2403 -Xo,2404 -Xp,2405 -XpInGridLengths,2406 -XR,2407 -XRInMetres,2408 -Y1,2409 -Y1InGridLengths,2410 -Y2,2411 -Y2InGridLengths,2412 -yCoordinateOfOriginOfSectorImage,2413 -yCoordinateOfSubSatellitePoint,2414 -yDirectionGridLength,2415 -yDirectionGridLengthInMetres,2416 -yDirectionGridLengthInMillimetres,2417 -year,2418 -yearOfAnalysis,2419 -yearOfCentury,2420 -yearOfEndOfOverallTimeInterval,2421 -yearOfForecast,2422 -yearOfForecastUsedInLocalTime,2423 -yearOfModelVersion,2424 -YearOfModelVersion,2425 -yearOfReference,2426 +************_ENSEMBLE_**************,1 +************_EXPERIMENT_************,2 +************_PRODUCT_***************,3 +*********_EXTRA_DATA_***************,4 +7777,5 +AA,6 +AEC_DATA_3BYTE_OPTION_MASK,7 +AEC_DATA_MSB_OPTION_MASK,8 +AEC_DATA_PREPROCESS_OPTION_MASK,9 +AEC_DATA_SIGNED_OPTION_MASK,10 +AEC_PAD_RSI_OPTION_MASK,11 +AEC_RESTRICTED_OPTION_MASK,12 +Adelta,13 +At_least__Or_Distribut_Proportion_Of,14 +Azi,15 +BBB,16 +BUDG,17 +BUFR,18 +BufrTemplate,19 +CCCC,20 +CDF,21 +CDFstr,22 +CLNOMA,23 +DELETE,24 +DIAG,25 +Date_E2,26 +Date_E3,27 +Date_E4,28 +DayOfModelVersion,29 +Di,30 +DiGiven,31 +DiInDegrees,32 +DiInMetres,33 +Dj,34 +DjGiven,35 +DjInDegrees,36 +DjInMetres,37 +Dstart,38 +Dx,39 +DxInDegrees,40 +DxInMetres,41 +Dy,42 +DyInDegrees,43 +DyInMetres,44 +ECMWF,45 +ECMWF_s,46 +Ensemble_Combinat_Number_0_none_E2,47 +Ensemble_Combinat_Number_0_none_E3,48 +Ensemble_Combinat_Number_0_none_E4,49 +Ensemble_Combination_Number,50 +Ensemble_Identifier,51 +Ensemble_Identifier_E2,52 +Ensemble_Identifier_E3,53 +Ensemble_Identifier_E4,54 +Experiment_Identifier,55 +Extra_Data_FreeFormat_0_none,56 +ExtremeValuesInMaximumRVR1,57 +ExtremeValuesInMaximumRVR2,58 +ExtremeValuesInMaximumRVR3,59 +ExtremeValuesInMaximumRVR4,60 +ExtremeValuesRVR1,61 +ExtremeValuesRVR2,62 +ExtremeValuesRVR3,63 +ExtremeValuesRVR4,64 +FMULTE,65 +FMULTM,66 +FirstLatitude,67 +GDSPresent,68 +GG,69 +GRIB,70 +GRIBEXSection1Problem,71 +GRIBEXShBugPresent,72 +GRIBEX_boustrophedonic,73 +GRIBEditionNumber,74 +GRIB_DEPTH,75 +GRIB_LATITUDE,76 +GRIB_LONGITUDE,77 +GTS,78 +GTSstr,79 +HDF5,80 +HDF5str,81 +HourOfModelVersion,82 +Hour_E2,83 +Hour_E3,84 +Hour_E4,85 +ICEFieldsUsed,86 +ICPLSIZE,87 +II,88 +INBITS,89 +INGRIB,90 +ITERATOR,91 +ITN,92 +J,93 +JS,94 +K,95 +KS,96 +LBC_Initial_Conditions,97 +LIMITS,98 +LLCOSP,99 +LSTCUM,100 +La1,101 +La1InDegrees,102 +La2,103 +La2InDegrees,104 +LaD,105 +LaDInDegrees,106 +LaR,107 +Lap,108 +Lar1,109 +Lar1InDegrees,110 +Lar2,111 +Lar2InDegrees,112 +Latin,113 +Latin1,114 +Latin1InDegrees,115 +Latin2,116 +Latin2InDegrees,117 +Lcx,118 +LcxInMetres,119 +Lcy,120 +LcyInMetres,121 +Less_Than_Or_To_Overall_Distribution,122 +Lo1,123 +Lo1InDegrees,124 +Lo2,125 +Lo2InDegrees,126 +LoR,127 +LoV,128 +LoVInDegrees,129 +Local_Number_Members_Missing,130 +Local_Number_Members_Missing_E2,131 +Local_Number_Members_Missing_E3,132 +Local_Number_Members_Missing_E4,133 +Local_Number_Members_Possible,134 +Local_Number_Members_Possible_E2,135 +Local_Number_Members_Possible_E3,136 +Local_Number_Members_Possible_E4,137 +Local_Number_Members_Used,138 +Local_Number_Members_Used_E2,139 +Local_Number_Members_Used_E3,140 +Local_Number_Members_Used_E4,141 +Lop,142 +Lor1,143 +Lor1InDegrees,144 +Lor2,145 +Lor2InDegrees,146 +Lux,147 +LuxInMetres,148 +Luy,149 +LuyInMetres,150 +Lx,151 +LxInMetres,152 +Ly,153 +LyInMetres,154 +M,155 +METAR,156 +METARstr,157 +MS,158 +MinuteOfModelVersion,159 +Minute_E2,160 +Minute_E3,161 +Minute_E4,162 +Missing_Model_LBC,163 +Missing_Model_LBC_E2,164 +Missing_Model_LBC_E3,165 +Missing_Model_LBC_E4,166 +Model_Additional_Information,167 +Model_Identifier,168 +Model_LBC_Member_Identifier,169 +MonthOfModelVersion,170 +N,171 +N1,172 +N2,173 +NAT,174 +NB,175 +NC,176 +NC1,177 +NC2,178 +NEAREST,179 +NG,180 +NH,181 +NINT_LOG10_RITZ,182 +NINT_RITZ_EXP,183 +NL,184 +NP,185 +NR,186 +NRj,187 +NT,188 +NUT,189 +NV,190 +Nassigned,191 +Nb,192 +Ncx,193 +Ncy,194 +Nf,195 +Ni,196 +Nj,197 +Nr,198 +NrInRadiusOfEarth,199 +NrInRadiusOfEarthScaled,200 +Number_Combination_Ensembles_1_none,201 +Nux,202 +Nuy,203 +Nx,204 +Ny,205 +Original_CodeTable_2_Version_Number,206 +Original_Parameter_Iden_CodeTable2,207 +Original_Parameter_Identifier,208 +P,209 +P1,210 +P2,211 +PLPresent,212 +PUnset,213 +PVPresent,214 +P_INST,215 +P_TACC,216 +P_TAVG,217 +Product_Identifier,218 +RENAME,219 +RVR1_1,220 +RVR2_1,221 +RVR3_1,222 +RVR4_1,223 +SOH,224 +SPD,225 +SecondLatitude,226 +SecondOfModelVersion,227 +Show_Combination_Ensem_E2_0_no_1_yes,228 +Show_Combination_Ensem_E3_0_no_1_yes,229 +Show_Combination_Ensem_E4_0_no_1_yes,230 +Sub-Experiment_Identifier,231 +TAF,232 +TAFstr,233 +TIDE,234 +TS,235 +TScalc,236 +TT,237 +TYPE_AN,238 +TYPE_CF,239 +TYPE_FC,240 +TYPE_FF,241 +TYPE_FX,242 +TYPE_OF,243 +TYPE_OR,244 +TYPE_PF,245 +Threshold_Or_Distribution_0_no_1_yes,246 +Threshold_Or_Distribution_Units,247 +Time_Range_One_E2,248 +Time_Range_One_E3,249 +Time_Range_One_E4,250 +Time_Range_Two_E2,251 +Time_Range_Two_E3,252 +Time_Range_Two_E4,253 +Total_Number_Members_Missing,254 +Total_Number_Members_Possible,255 +Total_Number_Members_Used,256 +Used_Model_LBC,257 +Used_Model_LBC_E2,258 +Used_Model_LBC_E3,259 +Used_Model_LBC_E4,260 +WMO,261 +WRAP,262 +WRAPstr,263 +X1,264 +X1InGridLengths,265 +X2,266 +X2InGridLengths,267 +XR,268 +XRInMetres,269 +Xo,270 +Xp,271 +XpInGridLengths,272 +Y1,273 +Y1InGridLengths,274 +Y2,275 +Y2InGridLengths,276 +YR,277 +YRInMetres,278 +YY,279 +YearOfModelVersion,280 +Yo,281 +Yp,282 +YpInGridLengths,283 +ZLBASE,284 +ZLMULT,285 +_T,286 +_TS,287 +_anoffset,288 +_endStep,289 +_leg_number,290 +_numberOfValues,291 +accumulationInterval,292 +accuracy,293 +accuracyMultipliedByFactor,294 +addEmptySection2,295 +addExtraLocalSection,296 +additionalFlagPresent,297 +addressOfFileFreeSpaceInfo,298 +aerosolType,299 +aerosolTypeName,300 +aerosolbinnumber,301 +aerosolpacking,302 +alternativeRowScanning,303 +altitudeOfTheCameraFromTheEarthsCentreMeasuredInUnitsOfTheEarthsRadius,304 +analysisOffsets,305 +angleDivisor,306 +angleMultiplier,307 +angleOfRotation,308 +angleOfRotationInDegrees,309 +angleOfRotationOfProjection,310 +angleSubdivisions,311 +anoffset,312 +anoffsetFirst,313 +anoffsetFrequency,314 +anoffsetLast,315 +applicationIdentifier,316 +assertion,317 +atmosphericChemicalOrPhysicalConstituentType,318 +attributeOfTile,319 +auxiliary,320 +average,321 +averaging1Flag,322 +averaging2Flag,323 +averagingPeriod,324 +avg,325 +azimuthalWidth,326 +backgroundGeneratingProcessIdentifier,327 +backgroundProcess,328 +band,329 +baseAddress,330 +baseDateEPS,331 +baseDateOfThisLeg,332 +baseTimeEPS,333 +baseTimeOfThisLeg,334 +basicAngleOfTheInitialProductionDomain,335 +beginDayTrend1,336 +beginDayTrend2,337 +beginDayTrend3,338 +beginDayTrend4,339 +beginHourTrend1,340 +beginHourTrend2,341 +beginHourTrend3,342 +beginHourTrend4,343 +beginMinuteTrend1,344 +beginMinuteTrend2,345 +beginMinuteTrend3,346 +beginMinuteTrend4,347 +beginMonthTrend1,348 +beginMonthTrend2,349 +beginMonthTrend3,350 +beginMonthTrend4,351 +beginYearTrend1,352 +beginYearTrend2,353 +beginYearTrend3,354 +beginYearTrend4,355 +biFourierCoefficients,356 +biFourierMakeTemplate,357 +biFourierPackingModeForAxes,358 +biFourierResolutionParameterM,359 +biFourierResolutionParameterN,360 +biFourierResolutionSubSetParameterM,361 +biFourierResolutionSubSetParameterN,362 +biFourierSubTruncationType,363 +biFourierTruncationType,364 +binaryScaleFactor,365 +bitMapIndicator,366 +bitmap,367 +bitmapPresent,368 +bitmapSectionPresent,369 +bitsPerValue,370 +bitsPerValueAndRepack,371 +boot_edition,372 +bottomLevel,373 +boustrophedonic,374 +boustrophedonicOrdering,375 +bufrDataEncoded,376 +bufrHeaderCentre,377 +bufrHeaderSubCentre,378 +bufrTemplate,379 +bufrdcExpandedDescriptors,380 +calendarIdPresent,381 +calendarIdentification,382 +calendarIdentificationTemplateNumber,383 +categories,384 +categoryType,385 +cavokOrVisibility,386 +ccccIdentifiers,387 +ccsdsBlockSize,388 +ccsdsCompressionOptionsMask,389 +ccsdsFlags,390 +ccsdsRsi,391 +ceilingAndVisibilityOK,392 +ceilingAndVisibilityOKTrend1,393 +ceilingAndVisibilityOKTrend2,394 +ceilingAndVisibilityOKTrend3,395 +ceilingAndVisibilityOKTrend4,396 +centralClusterDefinition,397 +centralLongitude,398 +centralLongitudeInDegrees,399 +centralLongitudeInMicrodegrees,400 +centre,401 +centreDescription,402 +centreForLocal,403 +centreForTable2,404 +centreLatitude,405 +centreLatitudeInDegrees,406 +centreLongitude,407 +centreLongitudeInDegrees,408 +centuryOfAnalysis,409 +centuryOfReference,410 +centuryOfReferenceTimeOfData,411 +cfName,412 +cfNameECMF,413 +cfNameLegacyECMF,414 +cfVarName,415 +cfVarNameECMF,416 +cfVarNameLegacyECMF,417 +changeDecimalPrecision,418 +changeIndicatorTrend1,419 +changeIndicatorTrend2,420 +changeIndicatorTrend3,421 +changeIndicatorTrend4,422 +changingPrecision,423 +channel,424 +channelNumber,425 +char,426 +charValues,427 +checkInternalVersion,428 +class,429 +classOfAnalysis,430 +climateDateFrom,431 +climateDateTo,432 +climatologicalRegime,433 +cloudsAbbreviation1,434 +cloudsAbbreviation1Trend1,435 +cloudsAbbreviation1Trend2,436 +cloudsAbbreviation1Trend3,437 +cloudsAbbreviation1Trend4,438 +cloudsAbbreviation2,439 +cloudsAbbreviation2Trend1,440 +cloudsAbbreviation2Trend2,441 +cloudsAbbreviation2Trend3,442 +cloudsAbbreviation2Trend4,443 +cloudsAbbreviation3,444 +cloudsAbbreviation3Trend1,445 +cloudsAbbreviation3Trend2,446 +cloudsAbbreviation3Trend3,447 +cloudsAbbreviation3Trend4,448 +cloudsAbbreviation4,449 +cloudsAbbreviation4Trend1,450 +cloudsAbbreviation4Trend2,451 +cloudsAbbreviation4Trend3,452 +cloudsAbbreviation4Trend4,453 +cloudsBase1,454 +cloudsBase1Trend1,455 +cloudsBase1Trend2,456 +cloudsBase1Trend3,457 +cloudsBase1Trend4,458 +cloudsBase2,459 +cloudsBase2Trend1,460 +cloudsBase2Trend2,461 +cloudsBase2Trend3,462 +cloudsBase2Trend4,463 +cloudsBase3,464 +cloudsBase3Trend1,465 +cloudsBase3Trend2,466 +cloudsBase3Trend3,467 +cloudsBase3Trend4,468 +cloudsBase4,469 +cloudsBase4Trend1,470 +cloudsBase4Trend2,471 +cloudsBase4Trend3,472 +cloudsBase4Trend4,473 +cloudsBaseCoded1,474 +cloudsBaseCoded1Trend1,475 +cloudsBaseCoded1Trend2,476 +cloudsBaseCoded1Trend3,477 +cloudsBaseCoded1Trend4,478 +cloudsBaseCoded2,479 +cloudsBaseCoded2Trend1,480 +cloudsBaseCoded2Trend2,481 +cloudsBaseCoded2Trend3,482 +cloudsBaseCoded2Trend4,483 +cloudsBaseCoded3,484 +cloudsBaseCoded3Trend1,485 +cloudsBaseCoded3Trend2,486 +cloudsBaseCoded3Trend3,487 +cloudsBaseCoded3Trend4,488 +cloudsBaseCoded4,489 +cloudsBaseCoded4Trend1,490 +cloudsBaseCoded4Trend2,491 +cloudsBaseCoded4Trend3,492 +cloudsBaseCoded4Trend4,493 +cloudsCode1,494 +cloudsCode1Trend1,495 +cloudsCode1Trend2,496 +cloudsCode1Trend3,497 +cloudsCode1Trend4,498 +cloudsCode2,499 +cloudsCode2Trend1,500 +cloudsCode2Trend2,501 +cloudsCode2Trend3,502 +cloudsCode2Trend4,503 +cloudsCode3,504 +cloudsCode3Trend1,505 +cloudsCode3Trend2,506 +cloudsCode3Trend3,507 +cloudsCode3Trend4,508 +cloudsCode4,509 +cloudsCode4Trend1,510 +cloudsCode4Trend2,511 +cloudsCode4Trend3,512 +cloudsCode4Trend4,513 +cloudsTitle1,514 +cloudsTitle1Trend1,515 +cloudsTitle1Trend2,516 +cloudsTitle1Trend3,517 +cloudsTitle1Trend4,518 +cloudsTitle2,519 +cloudsTitle2Trend1,520 +cloudsTitle2Trend2,521 +cloudsTitle2Trend3,522 +cloudsTitle2Trend4,523 +cloudsTitle3,524 +cloudsTitle3Trend1,525 +cloudsTitle3Trend2,526 +cloudsTitle3Trend3,527 +cloudsTitle3Trend4,528 +cloudsTitle4,529 +cloudsTitle4Trend1,530 +cloudsTitle4Trend2,531 +cloudsTitle4Trend3,532 +cloudsTitle4Trend4,533 +clusterIdentifier,534 +clusterMember1,535 +clusterMember10,536 +clusterMember2,537 +clusterMember3,538 +clusterMember4,539 +clusterMember5,540 +clusterMember6,541 +clusterMember7,542 +clusterMember8,543 +clusterMember9,544 +clusterNumber,545 +clusterSize,546 +clusteringDomain,547 +clusteringMethod,548 +clutterFilterIndicator,549 +cnmc_cmcc,550 +cnmc_isac,551 +codeFigure,552 +codeType,553 +codedNumberOfFirstOrderPackedValues,554 +codedNumberOfGroups,555 +codedValues,556 +coefsFirst,557 +coefsSecond,558 +commonBlock,559 +complexPacking,560 +componentIndex,561 +compressedData,562 +computeLaplacianOperator,563 +computeStatistics,564 +conceptDir,565 +conceptsDir1,566 +conceptsDir2,567 +conceptsLocalDirAll,568 +conceptsLocalDirECMF,569 +conceptsLocalMarsDirAll,570 +conceptsMasterDir,571 +conceptsMasterMarsDir,572 +consensus,573 +consensusCount,574 +const,575 +constantAntennaElevationAngle,576 +constantFieldHalfByte,577 +constituentType,578 +constituentTypeName,579 +controlForecastCluster,580 +coordAveraging0,581 +coordAveraging1,582 +coordAveraging2,583 +coordAveraging3,584 +coordAveragingTims,585 +coordinate1End,586 +coordinate1Flag,587 +coordinate1Start,588 +coordinate2End,589 +coordinate2Flag,590 +coordinate2Start,591 +coordinate3Flag,592 +coordinate3OfFirstGridPoint,593 +coordinate3OfLastGridPoint,594 +coordinate4Flag,595 +coordinate4OfFirstGridPoint,596 +coordinate4OfLastGridPoint,597 +coordinateFlag1,598 +coordinateFlag2,599 +coordinateIndexNumber,600 +coordinatesPresent,601 +core,602 +corr1Data,603 +corr2Data,604 +corr3Data,605 +corr4Data,606 +correction,607 +correction1,608 +correction1Part,609 +correction2,610 +correction2Part,611 +correction3,612 +correction3Part,613 +correction4,614 +correction4Part,615 +count,616 +countOfGroupLengths,617 +countOfICEFieldsUsed,618 +countTotal,619 +country,620 +crcrlf,621 +createNewData,622 +crraLocalVersion,623 +crraSection,624 +crraSuiteID,625 +daLoop,626 +data,627 +dataAccessors,628 +dataCategory,629 +dataDate,630 +dataFlag,631 +dataKeys,632 +dataLength,633 +dataOrigin,634 +dataRepresentation,635 +dataRepresentationTemplate,636 +dataRepresentationTemplateNumber,637 +dataRepresentationType,638 +dataSelection,639 +dataStream,640 +dataSubCategory,641 +dataTime,642 +dataType,643 +dataValues,644 +datasetForLocal,645 +date,646 +dateOfAnalysis,647 +dateOfForecast,648 +dateOfForecastRun,649 +dateOfForecastUsedInLocalTime,650 +dateOfIceFieldUsed,651 +dateOfModelVersion,652 +dateOfReference,653 +dateOfSSTFieldUsed,654 +dateSSTFieldUsed,655 +dateTime,656 +datumSize,657 +day,658 +dayOfAnalysis,659 +dayOfEndOfOverallTimeInterval,660 +dayOfForecast,661 +dayOfForecastUsedInLocalTime,662 +dayOfModelVersion,663 +dayOfReference,664 +dayOfTheYearDate,665 +decimalPrecision,666 +decimalScaleFactor,667 +defaultFaFieldName,668 +defaultFaLevelName,669 +defaultFaModelName,670 +defaultName,671 +defaultParameter,672 +defaultSequence,673 +defaultShortName,674 +defaultStepUnits,675 +defaultTypeOfLevel,676 +default_max_val,677 +default_min_val,678 +default_step_units,679 +definitionFilesVersion,680 +deleteCalendarId,681 +deleteExtraLocalSection,682 +deleteLocalDefinition,683 +deletePV,684 +derivedForecast,685 +dewPointTemperature,686 +diagnostic,687 +diagnosticNumber,688 +diffInDays,689 +diffInHours,690 +dimension,691 +dimensionNumber,692 +dimensionType,693 +direction,694 +directionNumber,695 +directionOfVariation,696 +directionScalingFactor,697 +dirty_statistics,698 +disableGrib1LocalSection,699 +discipline,700 +distanceFromTubeToEnsembleMean,701 +distinctLatitudes,702 +distinctLongitudes,703 +doExtractArea,704 +doExtractDateTime,705 +doExtractSubsets,706 +doSimpleThinning,707 +domain,708 +driverInformationBlockAddress,709 +dummy,710 +dummy1,711 +dummy2,712 +dummyc,713 +dx,714 +dy,715 +earthIsOblate,716 +earthMajorAxis,717 +earthMajorAxisInMetres,718 +earthMinorAxis,719 +earthMinorAxisInMetres,720 +eastLongitudeOfCluster,721 +eastLongitudeOfDomainOfTubing,722 +easternLongitudeOfClusterDomain,723 +easternLongitudeOfDomain,724 +ed,725 +edition,726 +editionNumber,727 +efas_model,728 +efiOrder,729 +eight,730 +elementsTable,731 +elevation,732 +eleven,733 +endDayTrend1,734 +endDayTrend2,735 +endDayTrend3,736 +endDayTrend4,737 +endDescriptors,738 +endGridDefinition,739 +endHourTrend1,740 +endHourTrend2,741 +endHourTrend3,742 +endHourTrend4,743 +endMark,744 +endMinuteTrend1,745 +endMinuteTrend2,746 +endMinuteTrend3,747 +endMinuteTrend4,748 +endMonthTrend1,749 +endMonthTrend2,750 +endMonthTrend3,751 +endMonthTrend4,752 +endOfFileAddress,753 +endOfHeadersMarker,754 +endOfInterval,755 +endOfMessage,756 +endOfProduct,757 +endOfRange,758 +endStep,759 +endStepInHours,760 +endTimeStep,761 +endYearTrend1,762 +endYearTrend2,763 +endYearTrend3,764 +endYearTrend4,765 +energyNorm,766 +enorm,767 +ensembleForecastNumbers,768 +ensembleForecastNumbersList,769 +ensembleSize,770 +ensembleStandardDeviation,771 +eps,772 +epsContinous,773 +epsPoint,774 +epsStatisticsContinous,775 +epsStatisticsPoint,776 +expandBy,777 +expandedAbbreviations,778 +expandedCodes,779 +expandedCrex_scales,780 +expandedCrex_units,781 +expandedCrex_widths,782 +expandedDescriptors,783 +expandedNames,784 +expandedOriginalCodes,785 +expandedOriginalReferences,786 +expandedOriginalScales,787 +expandedOriginalWidths,788 +expandedTypes,789 +expandedUnits,790 +experimentVersionNumber,791 +experimentVersionNumber1,792 +experimentVersionNumber2,793 +experimentVersionNumberOfAnalysis,794 +expoffset,795 +expver,796 +extendedFlag,797 +extraDim,798 +extraDimensionPresent,799 +extraLocalSectionNumber,800 +extraLocalSectionPresent,801 +extraValues,802 +extractAreaEastLongitude,803 +extractAreaLatitudeRank,804 +extractAreaLongitudeRank,805 +extractAreaNorthLatitude,806 +extractAreaSouthLatitude,807 +extractAreaWestLongitude,808 +extractDateTimeDayEnd,809 +extractDateTimeDayRank,810 +extractDateTimeDayStart,811 +extractDateTimeEnd,812 +extractDateTimeHourEnd,813 +extractDateTimeHourRank,814 +extractDateTimeHourStart,815 +extractDateTimeMinuteEnd,816 +extractDateTimeMinuteRank,817 +extractDateTimeMinuteStart,818 +extractDateTimeMonthEnd,819 +extractDateTimeMonthRank,820 +extractDateTimeMonthStart,821 +extractDateTimeSecondEnd,822 +extractDateTimeSecondRank,823 +extractDateTimeSecondStart,824 +extractDateTimeStart,825 +extractDateTimeYearEnd,826 +extractDateTimeYearRank,827 +extractDateTimeYearStart,828 +extractSubset,829 +extractSubsetIntervalEnd,830 +extractSubsetIntervalStart,831 +extractSubsetList,832 +extractedAreaNumberOfSubsets,833 +extractedDateTimeNumberOfSubsets,834 +extremeClockwiseWindDirection,835 +extremeCounterClockwiseWindDirection,836 +extremeValuesRVR1,837 +extremeValuesRVR2,838 +extremeValuesRVR3,839 +extremeValuesRVR4,840 +faFieldName,841 +faLevelName,842 +faModelName,843 +false,844 +falseEasting,845 +falseNorthing,846 +fcmonth,847 +fcperiod,848 +fgDate,849 +fgTime,850 +file,851 +fileConsistencyFlags,852 +fireTemplate,853 +firstDimension,854 +firstDimensionCoordinateValueDefinition,855 +firstDimensionPhysicalSignificance,856 +firstLatitude,857 +firstLatitudeInDegrees,858 +firstMonthUsedToBuildClimateMonth1,859 +firstMonthUsedToBuildClimateMonth2,860 +firstOrderValues,861 +firstSize,862 +flag,863 +flagForAnyFurtherInformation,864 +flagForIrregularGridCoordinateList,865 +flagForNormalOrStaggeredGrid,866 +flagShowingPostAuxiliaryArrayInUse,867 +flags,868 +floatVal,869 +floatValues,870 +forecastLeadTime,871 +forecastMonth,872 +forecastOrSingularVectorNumber,873 +forecastPeriod,874 +forecastPeriodFrom,875 +forecastPeriodTo,876 +forecastProbabilityNumber,877 +forecastSteps,878 +forecastTime,879 +forecastperiod,880 +formatVersionMajorNumber,881 +formatVersionMinorNumber,882 +freeFormData,883 +frequency,884 +frequencyNumber,885 +frequencyScalingFactor,886 +functionCode,887 +g,888 +g1conceptsLocalDirAll,889 +g1conceptsMasterDir,890 +g2grid,891 +gaussianGridName,892 +genVertHeightCoords,893 +generalExtended2ordr,894 +generatingProcessIdentificationNumber,895 +generatingProcessIdentifier,896 +generatingProcessTemplate,897 +generatingProcessTemplateNumber,898 +getNumberOfValues,899 +gg,900 +global,901 +globalDomain,902 +grib1divider,903 +grib2LocalSectionNumber,904 +grib2LocalSectionPresent,905 +grib2divider,906 +grib3divider,907 +gribDataQualityChecks,908 +gribMasterTablesVersionNumber,909 +gribTablesVersionNo,910 +grid,911 +gridCoordinate,912 +gridDefinition,913 +gridDefinitionDescription,914 +gridDefinitionSection,915 +gridDefinitionTemplateNumber,916 +gridDescriptionSectionPresent,917 +gridName,918 +gridPointPosition,919 +gridType,920 +groupInternalNodeK,921 +groupLeafNodeK,922 +groupLengths,923 +groupSplitting,924 +groupSplittingMethodUsed,925 +groupWidth,926 +groupWidths,927 +gts_CCCC,928 +gts_TTAAii,929 +gts_ddhh00,930 +gts_header,931 +halfByte,932 +hdate,933 +headersOnly,934 +heightLevelName,935 +heightOrPressureOfLevel,936 +heightPressureEtcOfLevels,937 +hideThis,938 +horizontalCoordinateDefinition,939 +horizontalCoordinateSupplement,940 +horizontalDimensionProcessed,941 +horizontalDomainTemplate,942 +horizontalDomainTemplateNumber,943 +hour,944 +hourOfAnalysis,945 +hourOfEndOfOverallTimeInterval,946 +hourOfForecast,947 +hourOfForecastUsedInLocalTime,948 +hourOfModelVersion,949 +hourOfReference,950 +hoursAfterDataCutoff,951 +hoursAfterReferenceTimeOfDataCutoff,952 +hundred,953 +iDirectionIncrement,954 +iDirectionIncrementGiven,955 +iDirectionIncrementGridLength,956 +iDirectionIncrementInDegrees,957 +iIncrement,958 +iScansNegatively,959 +iScansPositively,960 +ident,961 +identificationNumber,962 +identificationOfOriginatingGeneratingCentre,963 +identificationOfProject,964 +identifier,965 +ieeeFloats,966 +ifsParam,967 +ijDirectionIncrementGiven,968 +implementationDateOfModelCycle,969 +incrementOfLengths,970 +indexTemplate,971 +indexTemplateNumber,972 +indexedStorageInternalNodeK,973 +indexingDate,974 +indexingTime,975 +indexingTimeHH,976 +indexingTimeHHMM,977 +indexingTimeMM,978 +indicatorOfParameter,979 +indicatorOfTypeOfLevel,980 +indicatorOfUnitForForecastTime,981 +indicatorOfUnitForTimeIncrement,982 +indicatorOfUnitForTimeRange,983 +indicatorOfUnitOfTimeRange,984 +inputDataPresentIndicator,985 +inputDelayedDescriptorReplicationFactor,986 +inputExtendedDelayedDescriptorReplicationFactor,987 +inputOriginatingCentre,988 +inputOverriddenReferenceValues,989 +inputProcessIdentifier,990 +inputShortDelayedDescriptorReplicationFactor,991 +instrument,992 +instrumentIdentifier,993 +instrumentType,994 +integerPointValues,995 +integerScaleFactor,996 +integerScalingFactorAppliedToDirections,997 +integerScalingFactorAppliedToFrequencies,998 +integerValues,999 +internalVersion,1000 +internationalDataSubCategory,1001 +interpretationOfNumberOfPoints,1002 +intervalBetweenTimes,1003 +isAccumulation,1004 +isAuto,1005 +isCavok,1006 +isCavokTrend1,1007 +isCavokTrend2,1008 +isCavokTrend3,1009 +isCavokTrend4,1010 +isConstant,1011 +isCorrection,1012 +isEPS,1013 +isEps,1014 +isFillup,1015 +isHindcast,1016 +isOctahedral,1017 +isRotatedGrid,1018 +isSatellite,1019 +isSatelliteType,1020 +isSens,1021 +is_aerosol,1022 +is_aerosol_optical,1023 +is_chemical,1024 +is_chemical_distfn,1025 +is_chemical_srcsink,1026 +is_localtime,1027 +is_ocean2d_param,1028 +is_ocean3d_param,1029 +is_uerra,1030 +isectionNumber2,1031 +isectionNumber3,1032 +isectionNumber4,1033 +isotopeIdentificationNumber,1034 +iteration,1035 +iterationNumber,1036 +iteratorDisableUnrotate,1037 +jDirectionIncrement,1038 +jDirectionIncrementGiven,1039 +jDirectionIncrementGridLength,1040 +jDirectionIncrementInDegrees,1041 +jIncrement,1042 +jPointsAreConsecutive,1043 +jScansNegatively,1044 +jScansPositively,1045 +jdLocal,1046 +jdSelected,1047 +julianDay,1048 +julianForecastDay,1049 +keyData,1050 +keyMore,1051 +keySat,1052 +kindOfProduct,1053 +kurt,1054 +kurtosis,1055 +lBB,1056 +landtype,1057 +laplacianOperator,1058 +laplacianOperatorIsSet,1059 +laplacianScalingFactor,1060 +laplacianScalingFactorUnset,1061 +lastMonthUsedToBuildClimateMonth1,1062 +lastMonthUsedToBuildClimateMonth2,1063 +latLonValues,1064 +latitude,1065 +latitudeFirstInDegrees,1066 +latitudeLastInDegrees,1067 +latitudeLongitudeValues,1068 +latitudeOfCentralPointInClusterDomain,1069 +latitudeOfCentrePoint,1070 +latitudeOfCentrePointInDegrees,1071 +latitudeOfFirstGridPoint,1072 +latitudeOfFirstGridPointInDegrees,1073 +latitudeOfGridPoints,1074 +latitudeOfIcosahedronPole,1075 +latitudeOfLastGridPoint,1076 +latitudeOfLastGridPointInDegrees,1077 +latitudeOfNorthWestCornerOfArea,1078 +latitudeOfReferencePoint,1079 +latitudeOfReferencePointInDegrees,1080 +latitudeOfSouthEastCornerOfArea,1081 +latitudeOfSouthernPole,1082 +latitudeOfSouthernPoleInDegrees,1083 +latitudeOfStretchingPole,1084 +latitudeOfStretchingPoleInDegrees,1085 +latitudeOfSubSatellitePoint,1086 +latitudeOfSubSatellitePointInDegrees,1087 +latitudeOfTangencyPoint,1088 +latitudeOfThePoleOfStretching,1089 +latitudeOfThePolePoint,1090 +latitudeOfThePolePointInDegrees,1091 +latitudeOfTheSouthernPoleOfProjection,1092 +latitudeSexagesimal,1093 +latitudeWhereDxAndDyAreSpecified,1094 +latitudeWhereDxAndDyAreSpecifiedInDegrees,1095 +latitudes,1096 +latitudesList,1097 +latitudinalDirectionGridLength,1098 +lcwfvSuiteName,1099 +leadtime,1100 +legBaseDate,1101 +legBaseTime,1102 +legNumber,1103 +legacyGaussSubarea,1104 +lengthDescriptors,1105 +lengthIncrementForTheGroupLengths,1106 +lengthOf4DvarWindow,1107 +lengthOfHeaders,1108 +lengthOfIndexTemplate,1109 +lengthOfMessage,1110 +lengthOfOriginatorLocalTemplate,1111 +lengthOfProjectLocalTemplate,1112 +lengthOfTimeRange,1113 +lev,1114 +levTypeName,1115 +level,1116 +levelFactor,1117 +levelIndicator,1118 +levelType,1119 +levelValues,1120 +level_value_list,1121 +levelist,1122 +levels,1123 +levtype,1124 +libraryVersion,1125 +listMembersMissing,1126 +listMembersMissing2,1127 +listMembersMissing3,1128 +listMembersMissing4,1129 +listMembersUsed,1130 +listMembersUsed2,1131 +listMembersUsed3,1132 +listMembersUsed4,1133 +listOfContributingSpectralBands,1134 +listOfDistributionFunctionParameter,1135 +listOfEnsembleForecastNumbers,1136 +listOfModelIdentifiers,1137 +listOfParametersUsedForClustering,1138 +listOfScaledFrequencies,1139 +local,1140 +localDate,1141 +localDateTime,1142 +localDay,1143 +localDecimalScaleFactor,1144 +localDefNumberOne,1145 +localDefNumberTwo,1146 +localDefinition,1147 +localDefinitionNumber,1148 +localDir,1149 +localExtensionPadding,1150 +localFlag,1151 +localFlagLatestVersion,1152 +localHour,1153 +localLatitude,1154 +localLatitude1,1155 +localLatitude2,1156 +localLongitude,1157 +localLongitude1,1158 +localLongitude2,1159 +localMinute,1160 +localMonth,1161 +localNumberOfObservations,1162 +localSecond,1163 +localSection,1164 +localSectionPresent,1165 +localTablesVersion,1166 +localTablesVersionNumber,1167 +localTime,1168 +localTimeForecastList,1169 +localTimeMethod,1170 +localUsePresent,1171 +localYear,1172 +local_padding,1173 +local_use,1174 +logTransform,1175 +longitude,1176 +longitudeFirstInDegrees,1177 +longitudeLastInDegrees,1178 +longitudeOfCentralPointInClusterDomain,1179 +longitudeOfCentrePoint,1180 +longitudeOfCentrePointInDegrees,1181 +longitudeOfFirstDiamondCenterLine,1182 +longitudeOfFirstDiamondCentreLine,1183 +longitudeOfFirstDiamondCentreLineInDegrees,1184 +longitudeOfFirstGridPoint,1185 +longitudeOfFirstGridPointInDegrees,1186 +longitudeOfGridPoints,1187 +longitudeOfIcosahedronPole,1188 +longitudeOfLastGridPoint,1189 +longitudeOfLastGridPointInDegrees,1190 +longitudeOfNorthWestCornerOfArea,1191 +longitudeOfReferencePoint,1192 +longitudeOfReferencePointInDegrees,1193 +longitudeOfSouthEastCornerOfArea,1194 +longitudeOfSouthernPole,1195 +longitudeOfSouthernPoleInDegrees,1196 +longitudeOfStretchingPole,1197 +longitudeOfStretchingPoleInDegrees,1198 +longitudeOfSubSatellitePoint,1199 +longitudeOfSubSatellitePointInDegrees,1200 +longitudeOfTangencyPoint,1201 +longitudeOfThePoleOfStretching,1202 +longitudeOfThePolePoint,1203 +longitudeOfThePolePointInDegrees,1204 +longitudeOfTheSouthernPoleOfProjection,1205 +longitudeSexagesimal,1206 +longitudes,1207 +longitudesList,1208 +longitudinalDirectionGridLength,1209 +lowerLimit,1210 +lowerRange,1211 +lowerThreshold,1212 +lowerThresholdValue,1213 +ls_labeling,1214 +lsdate_bug,1215 +lstime_bug,1216 +m,1217 +mAngleMultiplier,1218 +mBasicAngle,1219 +mars,1220 +marsClass,1221 +marsClass1,1222 +marsClass2,1223 +marsDir,1224 +marsDomain,1225 +marsEndStep,1226 +marsExperimentOffset,1227 +marsExpver,1228 +marsForecastMonth,1229 +marsGrid,1230 +marsIdent,1231 +marsKeywords,1232 +marsKeywords1,1233 +marsLamModel,1234 +marsLatitude,1235 +marsLevel,1236 +marsLevelist,1237 +marsLongitude,1238 +marsModel,1239 +marsParam,1240 +marsQuantile,1241 +marsRange,1242 +marsStartStep,1243 +marsStep,1244 +marsStream,1245 +marsStream1,1246 +marsStream2,1247 +marsType,1248 +marsType1,1249 +marsType2,1250 +mars_labeling,1251 +mask,1252 +masterDir,1253 +masterTableNumber,1254 +masterTablesVersionNumber,1255 +masterTablesVersionNumberLatest,1256 +matchAerosolBinNumber,1257 +matchAerosolPacking,1258 +matchLandType,1259 +matchSort,1260 +matchTimeRepres,1261 +matrixBitmapsPresent,1262 +matrixOfValues,1263 +max,1264 +maxLevelValue,1265 +maximum,1266 +md5Data,1267 +md5DataSection,1268 +md5GridSection,1269 +md5Headers,1270 +md5Product,1271 +md5Section1,1272 +md5Section10,1273 +md5Section2,1274 +md5Section3,1275 +md5Section4,1276 +md5Section5,1277 +md5Section6,1278 +md5Section7,1279 +md5Section8,1280 +md5Section9,1281 +md5Structure,1282 +md5TimeDomainSection,1283 +meanRVR1,1284 +meanRVR2,1285 +meanRVR3,1286 +meanRVR4,1287 +meanSize,1288 +meanValueRVR1,1289 +meanValueRVR2,1290 +meanValueRVR3,1291 +meanValueRVR4,1292 +meaningOfVerticalCoordinate,1293 +memberNumber,1294 +messageLength,1295 +metadata,1296 +method,1297 +methodNumber,1298 +million,1299 +min,1300 +minimum,1301 +minute,1302 +minuteOfAnalysis,1303 +minuteOfEndOfOverallTimeInterval,1304 +minuteOfForecast,1305 +minuteOfForecastUsedInLocalTime,1306 +minuteOfModelVersion,1307 +minuteOfReference,1308 +minutesAfterDataCutoff,1309 +minutesAfterReferenceTimeOfDataCutoff,1310 +missingDataFlag,1311 +missingValue,1312 +missingValueManagement,1313 +missingValueManagementUsed,1314 +missingValuesPresent,1315 +missing_values,1316 +mixedCoordinateDefinition,1317 +mixedCoordinateFieldFlag,1318 +modeNumber,1319 +model,1320 +modelErrorType,1321 +modelIdentifier,1322 +modelName,1323 +modelVersionDate,1324 +modelVersionTime,1325 +molarMass,1326 +month,1327 +monthOfAnalysis,1328 +monthOfEndOfOverallTimeInterval,1329 +monthOfForecast,1330 +monthOfForecastUsedInLocalTime,1331 +monthOfModelVersion,1332 +monthOfReference,1333 +monthlyVerificationDate,1334 +monthlyVerificationMonth,1335 +monthlyVerificationTime,1336 +monthlyVerificationYear,1337 +multiplicationFactorForLatLong,1338 +n,1339 +n2,1340 +n3,1341 +na,1342 +name,1343 +nameECMF,1344 +nameLegacyECMF,1345 +nameOfFirstFixedSurface,1346 +nameOfSecondFixedSurface,1347 +names,1348 +nd,1349 +neitherPresent,1350 +newSubtype,1351 +nlev,1352 +nnn,1353 +normAtFinalTime,1354 +normAtInitialTime,1355 +normal,1356 +northLatitudeOfCluster,1357 +northLatitudeOfDomainOfTubing,1358 +northWestLatitudeOfLPOArea,1359 +northWestLatitudeOfVerficationArea,1360 +northWestLongitudeOfLPOArea,1361 +northWestLongitudeOfVerficationArea,1362 +northernLatitudeOfClusterDomain,1363 +northernLatitudeOfDomain,1364 +nosigPresent,1365 +notDecoded,1366 +nt,1367 +number,1368 +numberInHorizontalCoordinates,1369 +numberInMixedCoordinateDefinition,1370 +numberInTheAuxiliaryArray,1371 +numberInTheGridCoordinateList,1372 +numberIncludedInAverage,1373 +numberMissingFromAveragesOrAccumulations,1374 +numberOfAnalysis,1375 +numberOfBits,1376 +numberOfBitsContainingEachPackedValue,1377 +numberOfBitsForScaledGroupLengths,1378 +numberOfBitsUsedForTheGroupWidths,1379 +numberOfBitsUsedForTheScaledGroupLengths,1380 +numberOfBytesInLocalDefinition,1381 +numberOfBytesOfFreeFormatData,1382 +numberOfBytesPerInteger,1383 +numberOfCategories,1384 +numberOfCharacters,1385 +numberOfChars,1386 +numberOfClusterHighResolution,1387 +numberOfClusterLowResolution,1388 +numberOfClusters,1389 +numberOfCodedValues,1390 +numberOfCoefficientsOrValuesUsedToSpecifyFirstDimensionCoordinateFunction,1391 +numberOfCoefficientsOrValuesUsedToSpecifySecondDimensionCoordinateFunction,1392 +numberOfColumns,1393 +numberOfComponents,1394 +numberOfContributingSpectralBands,1395 +numberOfControlForecastTube,1396 +numberOfCoordinatesValues,1397 +numberOfDataBinsAlongRadials,1398 +numberOfDataMatrices,1399 +numberOfDataPoints,1400 +numberOfDataPointsExpected,1401 +numberOfDataValues,1402 +numberOfDaysInClimateSamplingWindow,1403 +numberOfDiamonds,1404 +numberOfDirections,1405 +numberOfDistinctSection3s,1406 +numberOfDistinctSection4s,1407 +numberOfDistinctSection5s,1408 +numberOfDistinctSection6s,1409 +numberOfDistinctSection7s,1410 +numberOfDistinctSection8s,1411 +numberOfDistinctSection9s,1412 +numberOfDistributionFunctionParameters,1413 +numberOfEffectiveValues,1414 +numberOfFloats,1415 +numberOfForcasts,1416 +numberOfForecastsInCluster,1417 +numberOfForecastsInEnsemble,1418 +numberOfForecastsInTheCluster,1419 +numberOfForecastsInTube,1420 +numberOfForecastsUsedInLocalTime,1421 +numberOfFrequencies,1422 +numberOfGridInReference,1423 +numberOfGridUsed,1424 +numberOfGroups,1425 +numberOfGroupsOfDataValues,1426 +numberOfHorizontalPoints,1427 +numberOfIntegers,1428 +numberOfInts,1429 +numberOfIterations,1430 +numberOfLevelValues,1431 +numberOfLocalDefinitions,1432 +numberOfLogicals,1433 +numberOfMembersInCluster,1434 +numberOfMembersInEnsemble,1435 +numberOfMissing,1436 +numberOfMissingInStatisticalProcess,1437 +numberOfMissingValues,1438 +numberOfModeOfDistribution,1439 +numberOfModels,1440 +numberOfOctectsForNumberOfPoints,1441 +numberOfOctetsExtraDescriptors,1442 +numberOfOperationalForecastTube,1443 +numberOfPackedValues,1444 +numberOfParallelsBetweenAPoleAndTheEquator,1445 +numberOfParametersUsedForClustering,1446 +numberOfPartitions,1447 +numberOfPoints,1448 +numberOfPointsAlongAMeridian,1449 +numberOfPointsAlongAParallel,1450 +numberOfPointsAlongFirstAxis,1451 +numberOfPointsAlongSecondAxis,1452 +numberOfPointsAlongTheXAxis,1453 +numberOfPointsAlongTheYAxis,1454 +numberOfPointsAlongXAxis,1455 +numberOfPointsAlongXAxisInCouplingArea,1456 +numberOfPointsAlongYAxis,1457 +numberOfPointsAlongYAxisInCouplingArea,1458 +numberOfPointsInDomain,1459 +numberOfPointsUsed,1460 +numberOfPressureLevelsUsedForClustering,1461 +numberOfRadarSitesUsed,1462 +numberOfRadials,1463 +numberOfReforecastYearsInModelClimate,1464 +numberOfRemaininChars,1465 +numberOfRepresentativeMember,1466 +numberOfReservedBytes,1467 +numberOfRows,1468 +numberOfSecondOrderPackedValues,1469 +numberOfSection,1470 +numberOfSingularVectorsComputed,1471 +numberOfSingularVectorsEvolved,1472 +numberOfStatisticallyProcessedFieldsForLocalTime,1473 +numberOfStepsUsedForClustering,1474 +numberOfSubsets,1475 +numberOfTensOfThousandsOfYearsOfOffset,1476 +numberOfTimeIncrementsOfForecastsUsedInLocalTime,1477 +numberOfTimeRange,1478 +numberOfTimeSteps,1479 +numberOfUnexpandedDescriptors,1480 +numberOfUnusedBitsAtEndOfSection3,1481 +numberOfUsedSpatialTiles,1482 +numberOfUsedTileAttributes,1483 +numberOfUsefulPointsAlongXAxis,1484 +numberOfUsefulPointsAlongYAxis,1485 +numberOfVGridUsed,1486 +numberOfValues,1487 +numberOfVerticalCoordinateValues,1488 +numberOfVerticalGridDescriptors,1489 +numberOfVerticalPoints,1490 +numberingOrderOfDiamonds,1491 +numericValues,1492 +observablePropertyTemplate,1493 +observablePropertyTemplateNumber,1494 +observationDiagnostic,1495 +observationGeneratingProcessIdentifier,1496 +observationType,1497 +observedData,1498 +obstype,1499 +oceanAtmosphereCoupling,1500 +oceanLevName,1501 +oceanStream,1502 +octetAtWichPackedDataBegins,1503 +offset,1504 +offsetAfterBitmap,1505 +offsetAfterCentreLocalSection,1506 +offsetAfterData,1507 +offsetAfterLocalSection,1508 +offsetAfterPadding,1509 +offsetBBitmap,1510 +offsetBSection5,1511 +offsetBSection6,1512 +offsetBSection9,1513 +offsetBeforeBitmap,1514 +offsetBeforeData,1515 +offsetBeforePL,1516 +offsetBeforePV,1517 +offsetDescriptors,1518 +offsetEndSection4,1519 +offsetFreeFormData,1520 +offsetFromOriginToInnerBound,1521 +offsetFromReferenceOfFirstTime,1522 +offsetICEFieldsUsed,1523 +offsetSection0,1524 +offsetSection1,1525 +offsetSection10,1526 +offsetSection11,1527 +offsetSection2,1528 +offsetSection3,1529 +offsetSection4,1530 +offsetSection5,1531 +offsetSection6,1532 +offsetSection7,1533 +offsetSection8,1534 +offsetSection9,1535 +offsetToEndOf4DvarWindow,1536 +offsetValuesBy,1537 +offsetdate,1538 +offsettime,1539 +oldSubtype,1540 +one,1541 +oneConstant,1542 +oneMillionConstant,1543 +oneMinuteMeanMaximumRVR1,1544 +oneMinuteMeanMaximumRVR2,1545 +oneMinuteMeanMaximumRVR3,1546 +oneMinuteMeanMaximumRVR4,1547 +oneMinuteMeanMinimumRVR1,1548 +oneMinuteMeanMinimumRVR2,1549 +oneMinuteMeanMinimumRVR3,1550 +oneMinuteMeanMinimumRVR4,1551 +oneThousand,1552 +oper,1553 +operStream,1554 +operatingMode,1555 +operationalForecastCluster,1556 +optimisationTime,1557 +optimizeScaleFactor,1558 +optionalData,1559 +opttime,1560 +orderOfSPD,1561 +orderOfSpatialDifferencing,1562 +orientationOfTheGrid,1563 +orientationOfTheGridInDegrees,1564 +origin,1565 +originOfPostProcessing,1566 +originalParameterNumber,1567 +originalParameterTableNumber,1568 +originalSubCentreIdentifier,1569 +originatingCentre,1570 +originatingCentreOfAnalysis,1571 +originatingClass,1572 +originatorLocalTemplate,1573 +originatorLocalTemplateNumber,1574 +overlayTemplate,1575 +overlayTemplateNumber,1576 +pack,1577 +packedValues,1578 +packingError,1579 +packingType,1580 +padding,1581 +padding_grid1_1,1582 +padding_grid1_2,1583 +padding_grid3_1,1584 +padding_grid4_1,1585 +padding_grid50_1,1586 +padding_grid5_1,1587 +padding_grid90_1,1588 +padding_loc10_1,1589 +padding_loc12_1,1590 +padding_loc13_1,1591 +padding_loc13_2,1592 +padding_loc13_3,1593 +padding_loc13_4,1594 +padding_loc13_5,1595 +padding_loc14_1,1596 +padding_loc14_2,1597 +padding_loc15_1,1598 +padding_loc16_1,1599 +padding_loc17_2,1600 +padding_loc18_1,1601 +padding_loc18_2,1602 +padding_loc190_1,1603 +padding_loc191_1,1604 +padding_loc191_2,1605 +padding_loc191_3,1606 +padding_loc192_1,1607 +padding_loc19_2,1608 +padding_loc20_1,1609 +padding_loc21_1,1610 +padding_loc23_1,1611 +padding_loc244_1,1612 +padding_loc244_2,1613 +padding_loc244_3,1614 +padding_loc245_1,1615 +padding_loc245_2,1616 +padding_loc26_1,1617 +padding_loc27_1,1618 +padding_loc27_2,1619 +padding_loc28_1,1620 +padding_loc29_1,1621 +padding_loc29_2,1622 +padding_loc29_3,1623 +padding_loc2_1,1624 +padding_loc2_2,1625 +padding_loc30_1,1626 +padding_loc30_2,1627 +padding_loc37_1,1628 +padding_loc37_2,1629 +padding_loc38_1,1630 +padding_loc3_1,1631 +padding_loc4_2,1632 +padding_loc50_1,1633 +padding_loc5_1,1634 +padding_loc6_1,1635 +padding_loc7_1,1636 +padding_loc9_1,1637 +padding_loc9_2,1638 +padding_local11_1,1639 +padding_local1_1,1640 +padding_local1_31,1641 +padding_local40_1,1642 +padding_local_35,1643 +padding_local_7_1,1644 +padding_sec1_loc,1645 +padding_sec2_1,1646 +padding_sec2_2,1647 +padding_sec2_3,1648 +padding_sec3_1,1649 +padding_sec4_1,1650 +paleontologicalOffset,1651 +param,1652 +paramId,1653 +paramIdECMF,1654 +paramIdLegacyECMF,1655 +param_value_max,1656 +param_value_min,1657 +parameter,1658 +parameterCategory,1659 +parameterCode,1660 +parameterDiscipline,1661 +parameterIndicator,1662 +parameterName,1663 +parameterNumber,1664 +parameterUnits,1665 +parameters,1666 +parametersVersion,1667 +partitionItems,1668 +partitionNumber,1669 +partitionTable,1670 +partitions,1671 +pastTendencyRVR1,1672 +pastTendencyRVR2,1673 +pastTendencyRVR3,1674 +pastTendencyRVR4,1675 +patch_precip_fp,1676 +pentagonalResolutionParameterJ,1677 +pentagonalResolutionParameterK,1678 +pentagonalResolutionParameterM,1679 +percentileValue,1680 +periodOfTime,1681 +periodOfTimeIntervals,1682 +perturbationNumber,1683 +perturbedType,1684 +phase,1685 +physicalFlag1,1686 +physicalFlag2,1687 +physicalMeaningOfVerticalCoordinate,1688 +pl,1689 +platform,1690 +plusOneinOrdersOfSPD,1691 +points,1692 +postAuxiliary,1693 +postAuxiliaryArrayPresent,1694 +postProcessing,1695 +powerOfTenUsedToScaleClimateWeight,1696 +preBitmapValues,1697 +preProcessingParameter,1698 +precision,1699 +precisionOfTheUnpackedSubset,1700 +predefined_grid,1701 +predefined_grid_values,1702 +preferLocalConcepts,1703 +present,1704 +presentTrend1,1705 +presentTrend2,1706 +presentTrend3,1707 +presentTrend4,1708 +presentWeather1Present,1709 +presentWeather1PresentTrend1,1710 +presentWeather1PresentTrend2,1711 +presentWeather1PresentTrend3,1712 +presentWeather1PresentTrend4,1713 +presentWeather2Present,1714 +presentWeather2PresentTrend1,1715 +presentWeather2PresentTrend2,1716 +presentWeather2PresentTrend3,1717 +presentWeather2PresentTrend4,1718 +presentWeather3Present,1719 +presentWeather3PresentTrend1,1720 +presentWeather3PresentTrend2,1721 +presentWeather3PresentTrend3,1722 +presentWeather3PresentTrend4,1723 +pressureLevel,1724 +pressureUnits,1725 +primaryBitmap,1726 +primaryMissingValue,1727 +primaryMissingValueSubstitute,1728 +probContinous,1729 +probPoint,1730 +probProductDefinition,1731 +probabilityType,1732 +probabilityTypeName,1733 +process,1734 +produceLargeConstantFields,1735 +product,1736 +productDefinition,1737 +productDefinitionTemplateNumber,1738 +productDefinitionTemplateNumberInternal,1739 +productIdentifier,1740 +productType,1741 +productionStatusOfProcessedData,1742 +projSourceString,1743 +projString,1744 +projTargetString,1745 +projectLocalTemplate,1746 +projectLocalTemplateNumber,1747 +projectionCenterFlag,1748 +projectionCentreFlag,1749 +pv,1750 +pvlLocation,1751 +qfe,1752 +qfePresent,1753 +qfeUnits,1754 +qnh,1755 +qnhAPresent,1756 +qnhPresent,1757 +qnhUnits,1758 +qualityControl,1759 +qualityControlIndicator,1760 +qualityValueAssociatedWithParameter,1761 +quantile,1762 +quantileValue,1763 +radialAngularSpacing,1764 +radials,1765 +radius,1766 +radiusInMetres,1767 +radiusOfCentralCluster,1768 +radiusOfClusterDomain,1769 +radiusOfTheEarth,1770 +range,1771 +rangeBinSpacing,1772 +rdbDateTime,1773 +rdbSubtype,1774 +rdbType,1775 +rdb_key,1776 +rdbtime,1777 +rdbtimeDate,1778 +rdbtimeDay,1779 +rdbtimeHour,1780 +rdbtimeMinute,1781 +rdbtimeMonth,1782 +rdbtimeSecond,1783 +rdbtimeTime,1784 +rdbtimeYear,1785 +realPart,1786 +realPartOf00,1787 +recDateTime,1788 +recentWeather,1789 +recentWeatherTry,1790 +rectime,1791 +rectimeDay,1792 +rectimeHour,1793 +rectimeMinute,1794 +rectimeSecond,1795 +reducedGrid,1796 +refdate,1797 +reference,1798 +referenceDate,1799 +referenceForGroupLengths,1800 +referenceForGroupWidths,1801 +referenceOfLengths,1802 +referenceOfWidths,1803 +referenceReflectivityForEchoTop,1804 +referenceSampleInterval,1805 +referenceStep,1806 +referenceValue,1807 +referenceValueError,1808 +reflectivityCalibrationConstant,1809 +remarkPresent,1810 +reportType,1811 +representationMode,1812 +representationType,1813 +representativeMember,1814 +reserved,1815 +reserved1,1816 +reserved2,1817 +reserved3,1818 +reservedNeedNotBePresent,1819 +reservedOctet,1820 +reservedSection2,1821 +reservedSection3,1822 +reservedSection4,1823 +resolutionAndComponentFlags,1824 +resolutionAndComponentFlags1,1825 +resolutionAndComponentFlags2,1826 +resolutionAndComponentFlags3,1827 +resolutionAndComponentFlags4,1828 +resolutionAndComponentFlags6,1829 +resolutionAndComponentFlags7,1830 +resolutionAndComponentFlags8,1831 +restricted,1832 +rootGroupObjectHeaderAddress,1833 +rootGroupSymbolTableEntry,1834 +rootTablesDir,1835 +roundedMarsLatitude,1836 +roundedMarsLevelist,1837 +roundedMarsLongitude,1838 +runwayBrakingActionState1,1839 +runwayBrakingActionState2,1840 +runwayBrakingActionState3,1841 +runwayBrakingActionState4,1842 +runwayDepositCodeState1,1843 +runwayDepositCodeState2,1844 +runwayDepositCodeState3,1845 +runwayDepositCodeState4,1846 +runwayDepositState1,1847 +runwayDepositState2,1848 +runwayDepositState3,1849 +runwayDepositState4,1850 +runwayDepthOfDepositCodeState1,1851 +runwayDepthOfDepositCodeState2,1852 +runwayDepthOfDepositCodeState3,1853 +runwayDepthOfDepositCodeState4,1854 +runwayDepthOfDepositState1,1855 +runwayDepthOfDepositState2,1856 +runwayDepthOfDepositState3,1857 +runwayDepthOfDepositState4,1858 +runwayDesignatorRVR1,1859 +runwayDesignatorRVR2,1860 +runwayDesignatorRVR3,1861 +runwayDesignatorRVR4,1862 +runwayDesignatorState1,1863 +runwayDesignatorState2,1864 +runwayDesignatorState3,1865 +runwayDesignatorState4,1866 +runwayExtentOfContaminationCodeState1,1867 +runwayExtentOfContaminationCodeState2,1868 +runwayExtentOfContaminationCodeState3,1869 +runwayExtentOfContaminationCodeState4,1870 +runwayExtentOfContaminationState1,1871 +runwayExtentOfContaminationState2,1872 +runwayExtentOfContaminationState3,1873 +runwayExtentOfContaminationState4,1874 +runwayFrictionCodeValueState1,1875 +runwayFrictionCodeValueState2,1876 +runwayFrictionCodeValueState3,1877 +runwayFrictionCodeValueState4,1878 +runwayFrictionCoefficientCodeState1,1879 +runwayFrictionCoefficientCodeState2,1880 +runwayFrictionCoefficientCodeState3,1881 +runwayFrictionCoefficientCodeState4,1882 +runwayFrictionCoefficientState1,1883 +runwayFrictionCoefficientState2,1884 +runwayFrictionCoefficientState3,1885 +runwayFrictionCoefficientState4,1886 +runwaySideCodeState1,1887 +runwaySideCodeState2,1888 +runwaySideCodeState3,1889 +runwaySideCodeState4,1890 +runwayState,1891 +sampleSizeOfModelClimate,1892 +satelliteID,1893 +satelliteIdentifier,1894 +satelliteNumber,1895 +satelliteSeries,1896 +scaleFactorAtReferencePoint,1897 +scaleFactorOfCentralWaveNumber,1898 +scaleFactorOfDistanceFromEnsembleMean,1899 +scaleFactorOfDistributionFunctionParameter,1900 +scaleFactorOfEarthMajorAxis,1901 +scaleFactorOfEarthMinorAxis,1902 +scaleFactorOfFirstFixedSurface,1903 +scaleFactorOfFirstSize,1904 +scaleFactorOfFirstWavelength,1905 +scaleFactorOfLengthOfSemiMajorAxis,1906 +scaleFactorOfLengthOfSemiMinorAxis,1907 +scaleFactorOfLowerLimit,1908 +scaleFactorOfMajorAxisOfOblateSpheroidEarth,1909 +scaleFactorOfMinorAxisOfOblateSpheroidEarth,1910 +scaleFactorOfPrimeMeridianOffset,1911 +scaleFactorOfRadiusOfSphericalEarth,1912 +scaleFactorOfSecondFixedSurface,1913 +scaleFactorOfSecondSize,1914 +scaleFactorOfSecondWavelength,1915 +scaleFactorOfStandardDeviation,1916 +scaleFactorOfStandardDeviationInTheCluster,1917 +scaleFactorOfUpperLimit,1918 +scaleValuesBy,1919 +scaledDirections,1920 +scaledFrequencies,1921 +scaledValueOfCentralWaveNumber,1922 +scaledValueOfDistanceFromEnsembleMean,1923 +scaledValueOfDistributionFunctionParameter,1924 +scaledValueOfEarthMajorAxis,1925 +scaledValueOfEarthMinorAxis,1926 +scaledValueOfFirstFixedSurface,1927 +scaledValueOfFirstSize,1928 +scaledValueOfFirstWavelength,1929 +scaledValueOfLengthOfSemiMajorAxis,1930 +scaledValueOfLengthOfSemiMinorAxis,1931 +scaledValueOfLowerLimit,1932 +scaledValueOfMajorAxisOfOblateSpheroidEarth,1933 +scaledValueOfMinorAxisOfOblateSpheroidEarth,1934 +scaledValueOfPrimeMeridianOffset,1935 +scaledValueOfRadiusOfSphericalEarth,1936 +scaledValueOfSecondFixedSurface,1937 +scaledValueOfSecondSize,1938 +scaledValueOfSecondWavelength,1939 +scaledValueOfStandardDeviation,1940 +scaledValueOfStandardDeviationInTheCluster,1941 +scaledValueOfUpperLimit,1942 +scalingFactorForFrequencies,1943 +scanPosition,1944 +scanningMode,1945 +scanningMode4,1946 +scanningMode5,1947 +scanningMode6,1948 +scanningMode7,1949 +scanningMode8,1950 +scanningModeForOneDiamond,1951 +sd,1952 +second,1953 +secondDimension,1954 +secondDimensionCoordinateValueDefinition,1955 +secondDimensionPhysicalSignificance,1956 +secondLatitude,1957 +secondLatitudeInDegrees,1958 +secondOfEndOfOverallTimeInterval,1959 +secondOfForecast,1960 +secondOfForecastUsedInLocalTime,1961 +secondOfModelVersion,1962 +secondOrderFlags,1963 +secondOrderOfDifferentWidth,1964 +secondOrderValuesDifferentWidths,1965 +secondSize,1966 +secondaryBitMap,1967 +secondaryBitmap,1968 +secondaryBitmapPresent,1969 +secondaryBitmaps,1970 +secondaryBitmapsCount,1971 +secondaryBitmapsSize,1972 +secondaryMissingValue,1973 +secondaryMissingValueSubstitute,1974 +secondsOfAnalysis,1975 +secondsOfReference,1976 +section,1977 +section0Length,1978 +section0Pointer,1979 +section1,1980 +section10Length,1981 +section10Pointer,1982 +section11Length,1983 +section11Pointer,1984 +section1Flags,1985 +section1Length,1986 +section1Padding,1987 +section1Pointer,1988 +section2Length,1989 +section2Padding,1990 +section2Pointer,1991 +section2Present,1992 +section2Used,1993 +section3Flags,1994 +section3Length,1995 +section3Padding,1996 +section3Pointer,1997 +section3UniqueIdentifier,1998 +section4,1999 +section4Length,2000 +section4Padding,2001 +section4Pointer,2002 +section4UniqueIdentifier,2003 +section5,2004 +section5Length,2005 +section5Pointer,2006 +section5UniqueIdentifier,2007 +section6,2008 +section6Length,2009 +section6Pointer,2010 +section6UniqueIdentifier,2011 +section7,2012 +section7Length,2013 +section7Pointer,2014 +section7UniqueIdentifier,2015 +section8,2016 +section8Length,2017 +section8Pointer,2018 +section8UniqueIdentifier,2019 +section9Length,2020 +section9Pointer,2021 +section9UniqueIdentifier,2022 +sectionLengthLimitForEnsembles,2023 +sectionLengthLimitForProbability,2024 +sectionNumber,2025 +sectionPosition,2026 +section_01,2027 +section_02,2028 +section_03,2029 +section_04,2030 +section_05,2031 +section_06,2032 +section_07,2033 +section_08,2034 +section_09,2035 +section_1,2036 +section_10,2037 +section_11,2038 +section_2,2039 +section_3,2040 +section_4,2041 +section_5,2042 +section_6,2043 +section_7,2044 +section_8,2045 +selectStepTemplateInstant,2046 +selectStepTemplateInterval,2047 +selectedDay,2048 +selectedFcIndex,2049 +selectedHour,2050 +selectedMinute,2051 +selectedMonth,2052 +selectedSecond,2053 +selectedYear,2054 +sensitiveAreaDomain,2055 +sequences,2056 +setBitsPerValue,2057 +setCalendarId,2058 +setDecimalPrecision,2059 +setLocalDefinition,2060 +setToMissingIfOutOfRange,2061 +sfc_levtype,2062 +shapeOfTheEarth,2063 +shapeOfVerificationArea,2064 +shortName,2065 +shortNameECMF,2066 +shortNameLegacyECMF,2067 +short_name,2068 +signature,2069 +significanceOfReferenceDateAndTime,2070 +significanceOfReferenceTime,2071 +simpleThinningMissingRadius,2072 +simpleThinningSkip,2073 +simpleThinningStart,2074 +siteElevation,2075 +siteId,2076 +siteLatitude,2077 +siteLongitude,2078 +sizeOfLength,2079 +sizeOfOffsets,2080 +sizeOfPostAuxiliaryArray,2081 +sizeOfPostAuxiliaryArrayPlusOne,2082 +skew,2083 +skewness,2084 +skipExtraKeyAttributes,2085 +sort,2086 +sourceOfGridDefinition,2087 +sourceSinkChemicalPhysicalProcess,2088 +southEastLatitudeOfLPOArea,2089 +southEastLatitudeOfVerficationArea,2090 +southEastLongitudeOfLPOArea,2091 +southEastLongitudeOfVerficationArea,2092 +southLatitudeOfCluster,2093 +southLatitudeOfDomainOfTubing,2094 +southPoleOnProjectionPlane,2095 +southernLatitudeOfClusterDomain,2096 +southernLatitudeOfDomain,2097 +sp1,2098 +sp2,2099 +sp3,2100 +spaceUnitFlag,2101 +spacingOfBinsAlongRadials,2102 +spare,2103 +spare1,2104 +spare2,2105 +spare3,2106 +spare4,2107 +spatialProcessing,2108 +spatialSmoothingOfProduct,2109 +spectralDataRepresentationMode,2110 +spectralDataRepresentationType,2111 +spectralMode,2112 +spectralType,2113 +sphericalHarmonics,2114 +standardDeviation,2115 +standardParallel,2116 +standardParallelInDegrees,2117 +standardParallelInMicrodegrees,2118 +startOfHeaders,2119 +startOfMessage,2120 +startOfRange,2121 +startStep,2122 +startStepInHours,2123 +startTimeStep,2124 +startingAzimuth,2125 +statisticalProcess,2126 +statisticalProcessesList,2127 +statistics,2128 +status,2129 +step,2130 +stepForClustering,2131 +stepHumanReadable,2132 +stepInHours,2133 +stepRange,2134 +stepRangeInHours,2135 +stepType,2136 +stepTypeForConversion,2137 +stepTypeInternal,2138 +stepUnits,2139 +stepZero,2140 +stream,2141 +streamOfAnalysis,2142 +stretchingFactor,2143 +stretchingFactorScaled,2144 +stringValues,2145 +subCentre,2146 +subDefinitions1,2147 +subDefinitions2,2148 +subLocalDefinition1,2149 +subLocalDefinition2,2150 +subLocalDefinitionLength1,2151 +subLocalDefinitionLength2,2152 +subLocalDefinitionNumber1,2153 +subLocalDefinitionNumber2,2154 +subSetJ,2155 +subSetK,2156 +subSetM,2157 +subcentreOfAnalysis,2158 +subdivisionsOfBasicAngle,2159 +suiteName,2160 +superblockExtensionAddress,2161 +swapScanningAlternativeRows,2162 +swapScanningLat,2163 +swapScanningLon,2164 +swapScanningX,2165 +swapScanningY,2166 +system,2167 +systemNumber,2168 +t,2169 +table2Version,2170 +tableCode,2171 +tableNumber,2172 +tableReference,2173 +tablesLocalDir,2174 +tablesMasterDir,2175 +tablesVersion,2176 +tablesVersionLatest,2177 +tablesVersionLatestOfficial,2178 +targetCompressionRatio,2179 +td,2180 +tempPressureUnits,2181 +temperature,2182 +temperatureAndDewpointPresent,2183 +templatesLocalDir,2184 +templatesMasterDir,2185 +theHindcastMarsStream,2186 +theMessage,2187 +thisExperimentVersionNumber,2188 +thisMarsClass,2189 +thisMarsStream,2190 +thisMarsType,2191 +thousand,2192 +three,2193 +threshold,2194 +thresholdIndicator,2195 +tiggeCentre,2196 +tiggeLAMName,2197 +tiggeLocalVersion,2198 +tiggeModel,2199 +tiggeSection,2200 +tiggeSuiteID,2201 +tigge_name,2202 +tigge_short_name,2203 +tileClassification,2204 +tileIndex,2205 +time,2206 +timeCoordinateDefinition,2207 +timeDomainTemplate,2208 +timeDomainTemplateNumber,2209 +timeIncrement,2210 +timeIncrementBetweenSuccessiveFields,2211 +timeOfAnalysis,2212 +timeOfForecast,2213 +timeOfForecastUsedInLocalTime,2214 +timeOfModelVersion,2215 +timeOfReference,2216 +timeRangeIndicator,2217 +timeRangeIndicatorFromStepRange,2218 +timeUnitFlag,2219 +timerepres,2220 +topLevel,2221 +total,2222 +totalAerosolBinsNumbers,2223 +totalInitialConditions,2224 +totalLength,2225 +totalNumber,2226 +totalNumberOfClusters,2227 +totalNumberOfDataValuesMissingInStatisticalProcess,2228 +totalNumberOfDirections,2229 +totalNumberOfForecastProbabilities,2230 +totalNumberOfFrequencies,2231 +totalNumberOfGridPoints,2232 +totalNumberOfIterations,2233 +totalNumberOfQuantiles,2234 +totalNumberOfRepetitions,2235 +totalNumberOfTileAttributePairs,2236 +totalNumberOfTubes,2237 +totalNumberOfValuesInUnpackedSubset,2238 +totalNumberOfdimensions,2239 +treatmentOfMissingData,2240 +true,2241 +trueLengthOfLastGroup,2242 +truncateDegrees,2243 +truncateLaplacian,2244 +tsectionNumber3,2245 +tsectionNumber4,2246 +tsectionNumber5,2247 +tubeDomain,2248 +tubeNumber,2249 +two,2250 +twoOrdersOfSPD,2251 +type,2252 +typeOfAnalysis,2253 +typeOfAuxiliaryInformation,2254 +typeOfCalendar,2255 +typeOfCompressionUsed,2256 +typeOfDistributionFunction,2257 +typeOfEnsembleForecast,2258 +typeOfEnsembleMember,2259 +typeOfFirstFixedSurface,2260 +typeOfGeneratingProcess,2261 +typeOfGrid,2262 +typeOfHorizontalLine,2263 +typeOfIntervalForFirstAndSecondSize,2264 +typeOfIntervalForFirstAndSecondWavelength,2265 +typeOfLevel,2266 +typeOfLevelECMF,2267 +typeOfOriginalFieldValues,2268 +typeOfPacking,2269 +typeOfPostProcessing,2270 +typeOfPreProcessing,2271 +typeOfProcessedData,2272 +typeOfSSTFieldUsed,2273 +typeOfSecondFixedSurface,2274 +typeOfSizeInterval,2275 +typeOfStatisticalPostProcessingOfEnsembleMembers,2276 +typeOfStatisticalProcessing,2277 +typeOfTimeIncrement,2278 +typeOfTimeIncrementBetweenSuccessiveFieldsUsedInTheStatisticalProcessing,2279 +typeOfWavelengthInterval,2280 +typicalCentury,2281 +typicalDate,2282 +typicalDateTime,2283 +typicalDay,2284 +typicalHour,2285 +typicalMinute,2286 +typicalMonth,2287 +typicalSecond,2288 +typicalTime,2289 +typicalYear,2290 +typicalYear2,2291 +typicalYearOfCentury,2292 +uco,2293 +ucs,2294 +unexpandedDescriptors,2295 +unexpandedDescriptorsEncoded,2296 +unitOfOffsetFromReferenceTime,2297 +unitOfTime,2298 +unitOfTimeIncrement,2299 +unitOfTimeRange,2300 +units,2301 +unitsBias,2302 +unitsConversionOffset,2303 +unitsConversionScaleFactor,2304 +unitsDecimalScaleFactor,2305 +unitsECMF,2306 +unitsFactor,2307 +unitsLegacyECMF,2308 +unitsOfFirstFixedSurface,2309 +unitsOfSecondFixedSurface,2310 +unknown,2311 +unpack,2312 +unpackedError,2313 +unpackedSubsetPrecision,2314 +unpackedValues,2315 +unsignedIntegers,2316 +unstructuredGrid,2317 +unstructuredGridSubtype,2318 +unstructuredGridType,2319 +unstructuredGridUUID,2320 +unusedBitsInBitmap,2321 +updateSequenceNumber,2322 +upperLimit,2323 +upperRange,2324 +upperThreshold,2325 +upperThresholdValue,2326 +userDateEnd,2327 +userDateStart,2328 +userDateTimeEnd,2329 +userDateTimeStart,2330 +userTimeEnd,2331 +userTimeStart,2332 +uuidOfHGrid,2333 +uuidOfVGrid,2334 +uvRelativeToGrid,2335 +validityDate,2336 +validityTime,2337 +values,2338 +variationOfVisibility,2339 +variationOfVisibilityDirection,2340 +variationOfVisibilityDirectionAngle,2341 +variationOfVisibilityDirectionTrend1,2342 +variationOfVisibilityDirectionTrend2,2343 +variationOfVisibilityDirectionTrend3,2344 +variationOfVisibilityDirectionTrend4,2345 +variationOfVisibilityTrend1,2346 +variationOfVisibilityTrend2,2347 +variationOfVisibilityTrend3,2348 +variationOfVisibilityTrend4,2349 +varno,2350 +verificationDate,2351 +verificationMonth,2352 +verificationYear,2353 +verifyingMonth,2354 +version,2355 +versionNumOfFilesFreeSpaceStorage,2356 +versionNumOfRootGroupSymbolTableEntry,2357 +versionNumOfSharedHeaderMessageFormat,2358 +versionNumberOfExperimentalSuite,2359 +versionNumberOfGribLocalTables,2360 +versionNumberOfSuperblock,2361 +versionOfModelClimate,2362 +verticalCoordinate,2363 +verticalCoordinateDefinition,2364 +verticalDomainTemplate,2365 +verticalDomainTemplateNumber,2366 +verticalVisibility,2367 +verticalVisibilityCoded,2368 +visibility,2369 +visibilityInKilometresTrend1,2370 +visibilityInKilometresTrend2,2371 +visibilityInKilometresTrend3,2372 +visibilityInKilometresTrend4,2373 +visibilityTrend1,2374 +visibilityTrend2,2375 +visibilityTrend3,2376 +visibilityTrend4,2377 +waveDomain,2378 +weightAppliedToClimateMonth1,2379 +westLongitudeOfCluster,2380 +westLongitudeOfDomainOfTubing,2381 +westernLongitudeOfClusterDomain,2382 +westernLongitudeOfDomain,2383 +widthOfFirstOrderValues,2384 +widthOfLengths,2385 +widthOfSPD,2386 +widthOfWidths,2387 +windDirection,2388 +windDirectionTrend1,2389 +windDirectionTrend2,2390 +windDirectionTrend3,2391 +windDirectionTrend4,2392 +windGust,2393 +windGustTrend1,2394 +windGustTrend2,2395 +windGustTrend3,2396 +windGustTrend4,2397 +windPresent,2398 +windSpeed,2399 +windSpeedTrend1,2400 +windSpeedTrend2,2401 +windSpeedTrend3,2402 +windSpeedTrend4,2403 +windUnits,2404 +windUnitsTrend1,2405 +windUnitsTrend2,2406 +windUnitsTrend3,2407 +windUnitsTrend4,2408 +windVariableDirection,2409 +windVariableDirectionTrend1,2410 +windVariableDirectionTrend2,2411 +windVariableDirectionTrend3,2412 +windVariableDirectionTrend4,2413 +wrongPadding,2414 +xCoordinateOfOriginOfSectorImage,2415 +xCoordinateOfSubSatellitePoint,2416 +xDirectionGridLength,2417 +xDirectionGridLengthInMetres,2418 +xDirectionGridLengthInMillimetres,2419 +xFirst,2420 +xLast,2421 +yCoordinateOfOriginOfSectorImage,2422 +yCoordinateOfSubSatellitePoint,2423 +yDirectionGridLength,2424 +yDirectionGridLengthInMetres,2425 +yDirectionGridLengthInMillimetres,2426 yFirst,2427 yLast,2428 -Yo,2429 -Yp,2430 -YpInGridLengths,2431 -YR,2432 -YRInMetres,2433 -YY,2434 -zero,2435 -zeros,2436 -ZLBASE,2437 -ZLMULT,2438 +year,2429 +yearOfAnalysis,2430 +yearOfCentury,2431 +yearOfEndOfOverallTimeInterval,2432 +yearOfForecast,2433 +yearOfForecastUsedInLocalTime,2434 +yearOfModelVersion,2435 +yearOfReference,2436 +zero,2437 +zeros,2438 From 90cb23afd0e93912d993830c19891fd8f3cabf87 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 12 Apr 2023 22:09:51 +0100 Subject: [PATCH 054/378] Cleanup --- src/grib_accessor_class_proj_string.cc | 8 +++----- src/grib_value.cc | 3 --- src/string_util.cc | 7 ++++--- 3 files changed, 7 insertions(+), 11 deletions(-) diff --git a/src/grib_accessor_class_proj_string.cc b/src/grib_accessor_class_proj_string.cc index bfbc3cca6..a334444a8 100644 --- a/src/grib_accessor_class_proj_string.cc +++ b/src/grib_accessor_class_proj_string.cc @@ -168,7 +168,6 @@ struct proj_mapping }; typedef struct proj_mapping proj_mapping; - // This should only be called for GRID POINT data (not spherical harmonics etc) static int get_major_minor_axes(grib_handle* h, double* pMajor, double* pMinor) { @@ -221,6 +220,7 @@ static int proj_space_view(grib_handle* h, char* result) return err; #endif } + static int proj_albers(grib_handle* h, char* result) { return GRIB_NOT_IMPLEMENTED; @@ -294,21 +294,19 @@ static int proj_polar_stereographic(grib_handle* h, char* result) return err; } - // ECC-1552: This is for regular_ll, regular_gg, reduced_ll, reduced_gg +// These are not 'projected' grids! static int proj_unprojected(grib_handle* h, char* result) { int err = 0; //char shape[64] = {0,}; - //if ((err = get_earth_shape(h, shape)) != GRIB_SUCCESS) - // return err; + //if ((err = get_earth_shape(h, shape)) != GRIB_SUCCESS) return err; //snprintf(result, 1024, "+proj=longlat %s", shape); snprintf(result, 1024, "+proj=longlat +datum=WGS84 +no_defs +type=crs"); return err; } - static int proj_mercator(grib_handle* h, char* result) { int err = 0; diff --git a/src/grib_value.cc b/src/grib_value.cc index b2c67c9a9..fc01822ef 100644 --- a/src/grib_value.cc +++ b/src/grib_value.cc @@ -9,13 +9,10 @@ */ /*************************************************************************** * Jean Baptiste Filippi - 01.11.2005 - * Enrico Fucile * ***************************************************************************/ #include "grib_api_internal_cpp.h" #include - - /* Note: A fast cut-down version of strcmp which does NOT return -1 */ /* 0 means input strings are equal and 1 means not equal */ GRIB_INLINE static int grib_inline_strcmp(const char* a, const char* b) diff --git a/src/string_util.cc b/src/string_util.cc index 9ba818b97..4bdf7546f 100644 --- a/src/string_util.cc +++ b/src/string_util.cc @@ -166,7 +166,7 @@ int string_count_char(const char* str, char c) { int i = 0, count = 0; DebugAssert(str); - for(i=0; str[i]; i++) { + for (i=0; str[i]; i++) { if (str[i] == c) count++; } return count; @@ -213,7 +213,7 @@ const char* grib_get_type_name(int type) /* Replace all occurrences of character in string. * Returns pointer to the NUL byte at the end of 's' */ -char *string_replace_char(char *s, char oldc, char newc) +char* string_replace_char(char *s, char oldc, char newc) { for (; *s; ++s) if (*s == oldc) @@ -222,9 +222,10 @@ char *string_replace_char(char *s, char oldc, char newc) } /* Remove all instances of character 'c' from 'str' */ -void string_remove_char(char * str, char c) +void string_remove_char(char* str, char c) { size_t i, j; + DebugAssert(str); size_t len = strlen(str); for(i=0; i Date: Thu, 13 Apr 2023 11:06:32 +0100 Subject: [PATCH 055/378] Updated C++ version from C++11 to C++17 --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index f7085bcae..a6008481f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -22,7 +22,7 @@ find_package( ecbuild 3.7 REQUIRED HINTS ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CUR # Initialise project project( eccodes VERSION 2.30.0 LANGUAGES CXX ) -set(CMAKE_CXX_STANDARD 11) +set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) From 0db3a3768ea08bc01e50fbc1e502f7408e2f57be Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 30 Mar 2023 17:44:42 +0100 Subject: [PATCH 056/378] Add accuracy key to spectral_ieee --- definitions/grib2/template.5.50000.def | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/definitions/grib2/template.5.50000.def b/definitions/grib2/template.5.50000.def index 84e5cd545..74b79897d 100644 --- a/definitions/grib2/template.5.50000.def +++ b/definitions/grib2/template.5.50000.def @@ -33,3 +33,8 @@ meta _TS spectral_truncation(J,K,M,TS) : read_only,hidden; codetable[1] unpackedSubsetPrecision ('5.7.table',masterDir,localDir) = 2 : dump; alias precisionOfTheUnpackedSubset=unpackedSubsetPrecision; +concept accuracy(zero) { + 32 = { unpackedSubsetPrecision = 1; } + 64 = { unpackedSubsetPrecision = 2; } + 128 = { unpackedSubsetPrecision = 3; } +} : long_type, no_copy; From 8ee991f35e9b0c1298213f9552ad6e4019c1e58b Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 13 Apr 2023 22:26:50 +0100 Subject: [PATCH 057/378] Better error message when paramId being set to a non-integer --- src/grib_accessor_class_concept.cc | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/grib_accessor_class_concept.cc b/src/grib_accessor_class_concept.cc index f89072177..e3f794395 100644 --- a/src/grib_accessor_class_concept.cc +++ b/src/grib_accessor_class_concept.cc @@ -410,9 +410,16 @@ static int grib_concept_apply(grib_accessor* a, const char* name) grib_get_string(h, "centre", centre_s, ¢re_len) == GRIB_SUCCESS) { grib_context_log(h->context, GRIB_LOG_ERROR, "concept: input handle edition=%ld, centre=%s", editionNumber, centre_s); } - if (strcmp(act->name, "paramId") == 0 && string_to_long(name, &dummy) == GRIB_SUCCESS) { - grib_context_log(h->context, GRIB_LOG_ERROR, + if (strcmp(act->name, "paramId") == 0) { + if (string_to_long(name, &dummy) == GRIB_SUCCESS) { + // The paramId value is an integer. Show them the param DB + grib_context_log(h->context, GRIB_LOG_ERROR, "Please check the Parameter Database 'https://codes.ecmwf.int/grib/param-db/?id=%s'", name); + } else { + // paramId being set to a non-integer + grib_context_log(h->context, GRIB_LOG_ERROR, + "The paramId value should be an integer. Are you trying to set the shortName?"); + } } if (strcmp(act->name, "shortName") == 0) { grib_context_log(h->context, GRIB_LOG_ERROR, From 2c271cfc1ac6213807b997a2ba2a35087ebfdd92 Mon Sep 17 00:00:00 2001 From: Eugen Betke Date: Fri, 14 Apr 2023 08:40:46 +0000 Subject: [PATCH 058/378] ECC-1472: Remove global variables + Special case: ndef == 0 --- ...ib_accessor_class_data_g22order_packing.cc | 132 ++++++++++-------- 1 file changed, 72 insertions(+), 60 deletions(-) diff --git a/src/grib_accessor_class_data_g22order_packing.cc b/src/grib_accessor_class_data_g22order_packing.cc index 986578193..86ddff351 100644 --- a/src/grib_accessor_class_data_g22order_packing.cc +++ b/src/grib_accessor_class_data_g22order_packing.cc @@ -235,25 +235,29 @@ static void init(grib_accessor* a, const long v, grib_arguments* args) #define DEFINED_VAL(x) ((x) < UNDEFINED_LOW || (x) > UNDEFINED_HIGH) #define UNDEFINED_ANGLE 999.0 -static unsigned char* bitstream; -static int rbits, reg, n_bitstream; +struct complex_context { + unsigned char* bitstream; + int rbits; + int reg; + int n_bitstream; +}; -static void init_bitstream(unsigned char* new_bitstream) +static void init_bitstream(complex_context *ctx, unsigned char* new_bitstream) { - bitstream = new_bitstream; - n_bitstream = reg = rbits = 0; + ctx->bitstream = new_bitstream; + ctx->n_bitstream = ctx->reg = ctx->rbits = 0; } -static void finish_bitstream(void) +static void finish_bitstream(complex_context *ctx) { - if (rbits) { - n_bitstream++; - *bitstream++ = (reg << (8 - rbits)) & 255; - rbits = 0; + if (ctx->rbits) { + ctx->n_bitstream++; + *ctx->bitstream++ = (ctx->reg << (8 - ctx->rbits)) & 255; + ctx->rbits = 0; } } -static void add_many_bitstream(grib_accessor* a, int* t, int n, int n_bits) +static void add_many_bitstream(complex_context *ctx, grib_accessor* a, int* t, int n, int n_bits) { unsigned int jmask; int i; @@ -266,35 +270,35 @@ static void add_many_bitstream(grib_accessor* a, int* t, int n, int n_bits) for (i = 0; i < n; i++) { unsigned int tt = (unsigned int)*t++; - rbits += n_bits; - reg = (reg << n_bits) | (tt & jmask); + ctx->rbits += n_bits; + ctx->reg = (ctx->reg << n_bits) | (tt & jmask); - while (rbits >= 8) { - rbits -= 8; - *bitstream++ = (reg >> rbits) & 255; - n_bitstream++; + while (ctx->rbits >= 8) { + ctx->rbits -= 8; + *ctx->bitstream++ = (ctx->reg >> ctx->rbits) & 255; + ctx->n_bitstream++; } } } -static void add_bitstream(grib_accessor* a, int t, int n_bits) +static void add_bitstream(complex_context *ctx, grib_accessor* a, int t, int n_bits) { unsigned int jmask; const int max_numbits = 25; if (n_bits > 16) { - add_bitstream(a, t >> 16, n_bits - 16); + add_bitstream(ctx, a, t >> 16, n_bits - 16); n_bits = 16; } if (n_bits > max_numbits) { grib_context_log(a->context, GRIB_LOG_FATAL, "grid_complex packing: n_bits=%d exceeds the maximum=%d", n_bits, max_numbits); } jmask = (1 << n_bits) - 1; - rbits += n_bits; - reg = (reg << n_bits) | (t & jmask); - while (rbits >= 8) { - *bitstream++ = (reg >> (rbits = rbits - 8)) & 255; - n_bitstream++; + ctx->rbits += n_bits; + ctx->reg = (ctx->reg << n_bits) | (t & jmask); + while (ctx->rbits >= 8) { + *ctx->bitstream++ = (ctx->reg >> (ctx->rbits = ctx->rbits - 8)) & 255; + ctx->n_bitstream++; } return; } @@ -1320,39 +1324,49 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) } if (ndef == 0) { // Special case: All undefined values - if ((err = grib_set_double_internal(gh, self->reference_value, grib_ieee_to_long(0.0))) != GRIB_SUCCESS) + // Section 5 + const char* packing_type = "grid_complex"; + size_t packing_type_len = strlen(packing_type); + grib_set_string_internal(gh, "packingType", packing_type, &packing_type_len); + + + if ((err = grib_set_double_internal(gh, self->reference_value, grib_ieee_to_long(0.0))) != GRIB_SUCCESS) /* 12-15 */ + return err; + if ((err = grib_set_long_internal(gh, self->binary_scale_factor, 0)) != GRIB_SUCCESS) /* 16-17 */ return err; - if ((err = grib_set_long_internal(gh, self->binary_scale_factor, 0)) != GRIB_SUCCESS) + if ((err = grib_set_long_internal(gh, self->decimal_scale_factor, 0)) != GRIB_SUCCESS) /* 18-19 */ return err; - if ((err = grib_set_long_internal(gh, self->decimal_scale_factor, 0)) != GRIB_SUCCESS) + if ((err = grib_set_long_internal(gh, self->bits_per_value, 8)) != GRIB_SUCCESS) /* 20 */ return err; - if ((err = grib_set_long_internal(gh, self->bits_per_value, 8)) != GRIB_SUCCESS) + if ((err = grib_set_long_internal(gh, self->typeOfOriginalFieldValues, 0)) != GRIB_SUCCESS) /* 21 */ return err; - if ((err = grib_set_long_internal(gh, self->typeOfOriginalFieldValues, 0)) != GRIB_SUCCESS) + if ((err = grib_set_long_internal(gh, self->groupSplittingMethodUsed, 1)) != GRIB_SUCCESS) /* 22 */ return err; - if ((err = grib_set_long_internal(gh, self->groupSplittingMethodUsed, 1)) != GRIB_SUCCESS) + if ((err = grib_set_long_internal(gh, self->missingValueManagementUsed, 1)) != GRIB_SUCCESS) /* 23 */ return err; - if ((err = grib_set_long_internal(gh, self->missingValueManagementUsed, 1)) != GRIB_SUCCESS) + if ((err = grib_set_long_internal(gh, self->primaryMissingValueSubstitute, grib_ieee_to_long(static_cast(9.999e20)))) != GRIB_SUCCESS) /* 24-27 */ return err; - if ((err = grib_set_long_internal(gh, self->primaryMissingValueSubstitute, grib_ieee_to_long(static_cast(9.999e20)))) != GRIB_SUCCESS) + if ((err = grib_set_long_internal(gh, self->secondaryMissingValueSubstitute, 0xFFFFFFFF)) != GRIB_SUCCESS) /* 28-31 */ return err; - // if ((err = grib_set_long_internal(gh, self->secondaryMissingValueSubstitute, 0xFFFFFFFF)) != GRIB_SUCCESS) - // return err; - if ((err = grib_set_long_internal(gh, self->numberOfGroupsOfDataValues, 1)) != GRIB_SUCCESS) + if ((err = grib_set_long_internal(gh, self->numberOfGroupsOfDataValues, 1)) != GRIB_SUCCESS) /* 32-35 */ return err; - if ((err = grib_set_long_internal(gh, self->referenceForGroupWidths, 0)) != GRIB_SUCCESS) + if ((err = grib_set_long_internal(gh, self->referenceForGroupWidths, grib_ieee_to_long(0.0))) != GRIB_SUCCESS) /* 36 */ return err; - if ((err = grib_set_long_internal(gh, self->numberOfBitsUsedForTheGroupWidths, 8)) != GRIB_SUCCESS) + if ((err = grib_set_long_internal(gh, self->numberOfBitsUsedForTheGroupWidths, 8)) != GRIB_SUCCESS) /* 37 */ return err; - if ((err = grib_set_long_internal(gh, self->referenceForGroupLengths, *len)) != GRIB_SUCCESS) + if ((err = grib_set_long_internal(gh, self->referenceForGroupLengths, *len)) != GRIB_SUCCESS) /* 38-41 */ return err; - if ((err = grib_set_long_internal(gh, self->lengthIncrementForTheGroupLengths, 1)) != GRIB_SUCCESS) + if ((err = grib_set_long_internal(gh, self->lengthIncrementForTheGroupLengths, 1)) != GRIB_SUCCESS) /* 42 */ return err; - if ((err = grib_set_long_internal(gh, self->trueLengthOfLastGroup, *len)) != GRIB_SUCCESS) + if ((err = grib_set_long_internal(gh, self->trueLengthOfLastGroup, *len)) != GRIB_SUCCESS) /* 43-46 */ return err; - if ((err = grib_set_long_internal(gh, self->numberOfBitsUsedForTheScaledGroupLengths, 8)) != GRIB_SUCCESS) + if ((err = grib_set_long_internal(gh, self->numberOfBitsUsedForTheScaledGroupLengths, 8)) != GRIB_SUCCESS) /* 47 */ return err; + // Section 6 + if ((err = grib_set_long_internal(gh, "bitmapPresent", 0)) != GRIB_SUCCESS) return err; + + // Section 7 constexpr size_t sec7_size = 3; unsigned char empty_sec7[sec7_size] = {255, 0, 0}; // group reference, group width, group length grib_buffer_replace(a, empty_sec7, sec7_size, 1, 1); @@ -1769,9 +1783,6 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) } } - //bits_per_value = find_nbits(grefmx + has_undef); - //numberOfBitsUsedForTheGroupWidths = find_nbits(gwidmx - gwidmn + has_undef); - bits_per_value = find_nbits(grefmx + has_undef); numberOfBitsUsedForTheGroupWidths = find_nbits(gwidmx - gwidmn + has_undef); @@ -1857,34 +1868,35 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) // pack the values into a bitstream - init_bitstream(sec7); - add_bitstream(a, size_sec7 >> 16, 16); - add_bitstream(a, size_sec7, 16); - add_bitstream(a, 7, 8); + complex_context ctx; + init_bitstream(&ctx, sec7); + add_bitstream(&ctx, a, size_sec7 >> 16, 16); + add_bitstream(&ctx, a, size_sec7, 16); + add_bitstream(&ctx, a, 7, 8); // write extra octets if (orderOfSpatialDifferencing == 1 || orderOfSpatialDifferencing == 2) { - add_bitstream(a, extra_0, 8 * numberOfOctetsExtraDescriptors); - if (orderOfSpatialDifferencing == 2) add_bitstream(a, extra_1, 8 * numberOfOctetsExtraDescriptors); + add_bitstream(&ctx, a, extra_0, 8 * numberOfOctetsExtraDescriptors); + if (orderOfSpatialDifferencing == 2) add_bitstream(&ctx, a, extra_1, 8 * numberOfOctetsExtraDescriptors); k = vmn; if (k < 0) { k = -vmn | (1 << (8 * numberOfOctetsExtraDescriptors - 1)); } - add_bitstream(a, k, 8 * numberOfOctetsExtraDescriptors); - finish_bitstream(); + add_bitstream(&ctx, a, k, 8 * numberOfOctetsExtraDescriptors); + finish_bitstream(&ctx); } // write the group reference values - add_many_bitstream(a, refs, ngroups, bits_per_value); - finish_bitstream(); + add_many_bitstream(&ctx, a, refs, ngroups, bits_per_value); + finish_bitstream(&ctx); // write the group widths - add_many_bitstream(a, itmp, ngroups, numberOfBitsUsedForTheGroupWidths); - finish_bitstream(); + add_many_bitstream(&ctx, a, itmp, ngroups, numberOfBitsUsedForTheGroupWidths); + finish_bitstream(&ctx); // write the group lengths - add_many_bitstream(a, itmp2, ngroups, numberOfBitsUsedForTheScaledGroupLengths); - finish_bitstream(); + add_many_bitstream(&ctx, a, itmp2, ngroups, numberOfBitsUsedForTheScaledGroupLengths); + finish_bitstream(&ctx); s = start.tail; for (i = 0; i < ngroups; i++, s = s->tail) { @@ -1903,11 +1915,11 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) } for (i = 0; i < ngroups; i++) { if (widths[i]) { - add_many_bitstream(a, v + itmp[i], lens[i], widths[i]); + add_many_bitstream(&ctx, a, v + itmp[i], lens[i], widths[i]); } } - finish_bitstream(); + finish_bitstream(&ctx); grib_buffer_replace(a, sec7 + 5, size_sec7 - 5, 1, 1); From 07a4ba5500a2e7993b01eca827e429b07756ba27 Mon Sep 17 00:00:00 2001 From: Eugen Betke Date: Fri, 14 Apr 2023 09:40:25 +0000 Subject: [PATCH 059/378] ECC-1472: Minor change --- src/grib_accessor_class_data_g22order_packing.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/grib_accessor_class_data_g22order_packing.cc b/src/grib_accessor_class_data_g22order_packing.cc index 86ddff351..704c2c432 100644 --- a/src/grib_accessor_class_data_g22order_packing.cc +++ b/src/grib_accessor_class_data_g22order_packing.cc @@ -9,7 +9,7 @@ */ -#include "./grib_api_internal.h" +#include "grib_api_internal.h" #include /* From 2e434e5d4c2b8ee6f9603237526c762e5d10ae7c Mon Sep 17 00:00:00 2001 From: Eugen Betke Date: Fri, 14 Apr 2023 09:42:34 +0000 Subject: [PATCH 060/378] ECC-1472: complex_context -> bitstream_context --- src/grib_accessor_class_data_g22order_packing.cc | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/grib_accessor_class_data_g22order_packing.cc b/src/grib_accessor_class_data_g22order_packing.cc index 704c2c432..c04e34afd 100644 --- a/src/grib_accessor_class_data_g22order_packing.cc +++ b/src/grib_accessor_class_data_g22order_packing.cc @@ -235,20 +235,20 @@ static void init(grib_accessor* a, const long v, grib_arguments* args) #define DEFINED_VAL(x) ((x) < UNDEFINED_LOW || (x) > UNDEFINED_HIGH) #define UNDEFINED_ANGLE 999.0 -struct complex_context { +struct bitstream_context { unsigned char* bitstream; int rbits; int reg; int n_bitstream; }; -static void init_bitstream(complex_context *ctx, unsigned char* new_bitstream) +static void init_bitstream(bitstream_context *ctx, unsigned char* new_bitstream) { ctx->bitstream = new_bitstream; ctx->n_bitstream = ctx->reg = ctx->rbits = 0; } -static void finish_bitstream(complex_context *ctx) +static void finish_bitstream(bitstream_context *ctx) { if (ctx->rbits) { ctx->n_bitstream++; @@ -257,7 +257,7 @@ static void finish_bitstream(complex_context *ctx) } } -static void add_many_bitstream(complex_context *ctx, grib_accessor* a, int* t, int n, int n_bits) +static void add_many_bitstream(bitstream_context *ctx, grib_accessor* a, int* t, int n, int n_bits) { unsigned int jmask; int i; @@ -281,7 +281,7 @@ static void add_many_bitstream(complex_context *ctx, grib_accessor* a, int* t, i } } -static void add_bitstream(complex_context *ctx, grib_accessor* a, int t, int n_bits) +static void add_bitstream(bitstream_context *ctx, grib_accessor* a, int t, int n_bits) { unsigned int jmask; const int max_numbits = 25; @@ -1868,7 +1868,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) // pack the values into a bitstream - complex_context ctx; + bitstream_context ctx; init_bitstream(&ctx, sec7); add_bitstream(&ctx, a, size_sec7 >> 16, 16); add_bitstream(&ctx, a, size_sec7, 16); From 3f9a7f13ce8daa710a89b0ea985e398d01cebf67 Mon Sep 17 00:00:00 2001 From: Eugen Betke Date: Fri, 14 Apr 2023 12:28:40 +0000 Subject: [PATCH 061/378] ECC-1472: Bugfix: re-initialization --- src/grib_accessor_class_data_g22order_packing.cc | 1 - 1 file changed, 1 deletion(-) diff --git a/src/grib_accessor_class_data_g22order_packing.cc b/src/grib_accessor_class_data_g22order_packing.cc index c04e34afd..b0ba5f31f 100644 --- a/src/grib_accessor_class_data_g22order_packing.cc +++ b/src/grib_accessor_class_data_g22order_packing.cc @@ -1383,7 +1383,6 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) dec_scale = -decimal_scale_factor; bin_scale = binary_scale_factor; - ndef = 0; /* compute bitmap section */ /*if (use_bitmap == 0 || ndef == ndata) {*/ From 93d788529048229f0233a0ee8fb2935b7a70b294 Mon Sep 17 00:00:00 2001 From: Eugen Betke Date: Fri, 14 Apr 2023 12:42:04 +0000 Subject: [PATCH 062/378] ECC-1472: Fix bit number in grib_bitmap.sh test --- tests/grib_bitmap.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/grib_bitmap.sh b/tests/grib_bitmap.sh index b80f83da5..df9422502 100755 --- a/tests/grib_bitmap.sh +++ b/tests/grib_bitmap.sh @@ -121,7 +121,7 @@ stats=`${tools_dir}/grib_get -F%.2f -p max,min,avg $tempSimple` # Repack ${tools_dir}/grib_copy -r $infile $temp2 ${tools_dir}/grib_compare -c data:n $infile $temp2 -grib_check_key_equals $temp2 bitsPerValue 8 # Note: The input file has bpv=9 +grib_check_key_equals $temp2 bitsPerValue 9 # Note: The input file has bpv=9 # Simple to grid_complex From 932d83eb5c1034921d5c6c11ef509e50ad1cb44e Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sat, 15 Apr 2023 20:28:35 +0100 Subject: [PATCH 063/378] Bump up version --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index a6008481f..e7da7eead 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.30.0 LANGUAGES CXX ) +project( eccodes VERSION 2.31.0 LANGUAGES CXX ) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) From 3b65fa475580abbf973703875a8ae1e0daeeba16 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sat, 15 Apr 2023 20:37:49 +0100 Subject: [PATCH 064/378] Enable EXTRA_TOOLS --- .github/.cmake-options | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/.cmake-options b/.github/.cmake-options index 213b78382..ffc099d3c 100644 --- a/.github/.cmake-options +++ b/.github/.cmake-options @@ -1 +1,2 @@ -DENABLE_EXTRA_TESTS=1 +-DECCODES_INSTALL_EXTRA_TOOLS=1 From 7813fd122395e0bddf655e6cc87617333e480d23 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sun, 16 Apr 2023 14:11:05 +0100 Subject: [PATCH 065/378] EXTRA_TOOLS: retry enabling --- .github/.cmake-options | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/.cmake-options b/.github/.cmake-options index ffc099d3c..05fc1f6c2 100644 --- a/.github/.cmake-options +++ b/.github/.cmake-options @@ -1,2 +1 @@ --DENABLE_EXTRA_TESTS=1 --DECCODES_INSTALL_EXTRA_TOOLS=1 +-DENABLE_EXTRA_TESTS=1 -DECCODES_INSTALL_EXTRA_TOOLS=1 From 25c72ac62274bbc0cb239d117dc938731b9820f6 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sun, 16 Apr 2023 16:28:46 +0100 Subject: [PATCH 066/378] Testing: Add test for switch statement on string key --- tests/grib_filter.sh | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/tests/grib_filter.sh b/tests/grib_filter.sh index c6c0a48f7..ff5f81b83 100755 --- a/tests/grib_filter.sh +++ b/tests/grib_filter.sh @@ -199,11 +199,20 @@ cat >$tempFilt <$tempFilt < Date: Mon, 17 Apr 2023 13:16:29 +0000 Subject: [PATCH 067/378] ECC-1081: 'level' is not edition-independent for potential vorticity levels (part 01) --- definitions/grib1/section.1.def | 2 +- src/grib_accessor_class_g2level.cc | 14 +++++++++++++- tests/grib_level.sh | 2 +- 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/definitions/grib1/section.1.def b/definitions/grib1/section.1.def index 7604b56df..9e577a33f 100644 --- a/definitions/grib1/section.1.def +++ b/definitions/grib1/section.1.def @@ -114,7 +114,7 @@ if( indicatorOfTypeOfLevel == 109 || } if (indicatorOfTypeOfLevel == 117) { # See ECC-1081 - constant levelFactor = 6; + constant levelFactor = 9; } unsigned[1] yearOfCentury : edition_specific; diff --git a/src/grib_accessor_class_g2level.cc b/src/grib_accessor_class_g2level.cc index d0ae0571c..f148fca4a 100644 --- a/src/grib_accessor_class_g2level.cc +++ b/src/grib_accessor_class_g2level.cc @@ -176,6 +176,8 @@ static int unpack_double(grib_accessor* a, double* val, size_t* len) long value_first = 0; char pressure_units[10] = {0,}; size_t pressure_units_len = 10; + long productionStatusOfProcessedData = 0; + bool is_tigge = false; double v; @@ -187,6 +189,10 @@ static int unpack_double(grib_accessor* a, double* val, size_t* len) return ret; if ((ret = grib_get_string_internal(hand, self->pressure_units, pressure_units, &pressure_units_len)) != GRIB_SUCCESS) return ret; + + if ((ret = grib_get_long(hand, "productionStatusOfProcessedData", &productionStatusOfProcessedData)) != GRIB_SUCCESS) + return ret; + if (productionStatusOfProcessedData==4 || productionStatusOfProcessedData==5) is_tigge=true; if (value_first == GRIB_MISSING_LONG) { *val = 0; @@ -202,7 +208,7 @@ static int unpack_double(grib_accessor* a, double* val, size_t* len) if (scale_first != GRIB_MISSING_LONG) { // GRIB-637 Potential vorticity surface if (type_first == 109) { - scale_first -= 6; + scale_first -= 9; } while (scale_first < 0 && v != 0) { @@ -231,6 +237,12 @@ static int unpack_double(grib_accessor* a, double* val, size_t* len) } } break; + case 109: + if (is_tigge) { // all tigge data on PV are like this? + *val = 2; + return GRIB_SUCCESS; + } + break; } *val = v; diff --git a/tests/grib_level.sh b/tests/grib_level.sh index eaca6099a..ada93dca6 100755 --- a/tests/grib_level.sh +++ b/tests/grib_level.sh @@ -86,7 +86,7 @@ res=`${tools_dir}/grib_get -p level:d $temp` ${tools_dir}/grib_set -s typeOfLevel=potentialVorticity,shortName=q,level=1500 $sample_g1 $temp ${tools_dir}/grib_set -s edition=2 $temp $temp2 grib_check_key_equals $temp2 'mars.levelist,level,typeOfLevel' '1500 1500 potentialVorticity' -grib_check_key_equals $temp2 'scaleFactorOfFirstFixedSurface,scaledValueOfFirstFixedSurface' '6 1500' +grib_check_key_equals $temp2 'scaleFactorOfFirstFixedSurface,scaledValueOfFirstFixedSurface' '9 1500' # GRIB-637 grib2 Potential vorticity surface From d5d0238d198e740066aedcfa4c597e65c66d7ee3 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 17 Apr 2023 13:34:41 +0000 Subject: [PATCH 068/378] ECC-1081: Fix setting level --- src/grib_accessor_class_g2level.cc | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/grib_accessor_class_g2level.cc b/src/grib_accessor_class_g2level.cc index f148fca4a..fa5a07690 100644 --- a/src/grib_accessor_class_g2level.cc +++ b/src/grib_accessor_class_g2level.cc @@ -189,7 +189,7 @@ static int unpack_double(grib_accessor* a, double* val, size_t* len) return ret; if ((ret = grib_get_string_internal(hand, self->pressure_units, pressure_units, &pressure_units_len)) != GRIB_SUCCESS) return ret; - + if ((ret = grib_get_long(hand, "productionStatusOfProcessedData", &productionStatusOfProcessedData)) != GRIB_SUCCESS) return ret; if (productionStatusOfProcessedData==4 || productionStatusOfProcessedData==5) is_tigge=true; @@ -332,6 +332,8 @@ static int pack_long(grib_accessor* a, const long* val, size_t* len) long levelFactor = 1; char pressure_units[10] = {0,}; size_t pressure_units_len = 10; + bool is_tigge = false; + long productionStatusOfProcessedData = 0; grib_accessor_g2level* self = (grib_accessor_g2level*)a; grib_handle* hand = grib_handle_of_accessor(a); @@ -355,6 +357,10 @@ static int pack_long(grib_accessor* a, const long* val, size_t* len) if ((ret = grib_get_string_internal(hand, self->pressure_units, pressure_units, &pressure_units_len)) != GRIB_SUCCESS) return ret; + if ((ret = grib_get_long(hand, "productionStatusOfProcessedData", &productionStatusOfProcessedData)) != GRIB_SUCCESS) + return ret; + if (productionStatusOfProcessedData==4 || productionStatusOfProcessedData==5) is_tigge=true; + switch (type_first) { case 100: // Pa scale_first = 0; @@ -362,10 +368,14 @@ static int pack_long(grib_accessor* a, const long* val, size_t* len) value_first *= 100; break; case 109: + if (!is_tigge) { + scale_first = 9; + } if ((ret = grib_get_long(hand, "levelFactor", &levelFactor)) == GRIB_SUCCESS) { // See ECC-1081 scale_first = levelFactor; } + break; default: break; From 4cf90306e35c5cb813775e84c032d08e756e2bcc Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 17 Apr 2023 15:49:15 +0000 Subject: [PATCH 069/378] ECC-1081: Fix setting level for TIGGE --- src/grib_accessor_class_g2level.cc | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/src/grib_accessor_class_g2level.cc b/src/grib_accessor_class_g2level.cc index fa5a07690..65ccc8a61 100644 --- a/src/grib_accessor_class_g2level.cc +++ b/src/grib_accessor_class_g2level.cc @@ -192,7 +192,7 @@ static int unpack_double(grib_accessor* a, double* val, size_t* len) if ((ret = grib_get_long(hand, "productionStatusOfProcessedData", &productionStatusOfProcessedData)) != GRIB_SUCCESS) return ret; - if (productionStatusOfProcessedData==4 || productionStatusOfProcessedData==5) is_tigge=true; + is_tigge = (productionStatusOfProcessedData==4 || productionStatusOfProcessedData==5); if (value_first == GRIB_MISSING_LONG) { *val = 0; @@ -208,7 +208,10 @@ static int unpack_double(grib_accessor* a, double* val, size_t* len) if (scale_first != GRIB_MISSING_LONG) { // GRIB-637 Potential vorticity surface if (type_first == 109) { - scale_first -= 9; + if (is_tigge) + scale_first -= 6; + else + scale_first -= 9; } while (scale_first < 0 && v != 0) { @@ -237,12 +240,6 @@ static int unpack_double(grib_accessor* a, double* val, size_t* len) } } break; - case 109: - if (is_tigge) { // all tigge data on PV are like this? - *val = 2; - return GRIB_SUCCESS; - } - break; } *val = v; From 8159ae10e188053f8748414fed5bfcdf072c8d90 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 17 Apr 2023 16:26:22 +0000 Subject: [PATCH 070/378] ECC-1081: Cleanup --- src/grib_accessor_class_g2level.cc | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/grib_accessor_class_g2level.cc b/src/grib_accessor_class_g2level.cc index 65ccc8a61..9db1b1d14 100644 --- a/src/grib_accessor_class_g2level.cc +++ b/src/grib_accessor_class_g2level.cc @@ -206,10 +206,10 @@ static int unpack_double(grib_accessor* a, double* val, size_t* len) v = value_first; if (scale_first != GRIB_MISSING_LONG) { - // GRIB-637 Potential vorticity surface + // GRIB-637, ECC-1081: Potential vorticity surface if (type_first == 109) { if (is_tigge) - scale_first -= 6; + scale_first -= 6; // TIGGE data follows different rules else scale_first -= 9; } @@ -356,7 +356,7 @@ static int pack_long(grib_accessor* a, const long* val, size_t* len) if ((ret = grib_get_long(hand, "productionStatusOfProcessedData", &productionStatusOfProcessedData)) != GRIB_SUCCESS) return ret; - if (productionStatusOfProcessedData==4 || productionStatusOfProcessedData==5) is_tigge=true; + is_tigge = (productionStatusOfProcessedData==4 || productionStatusOfProcessedData==5); switch (type_first) { case 100: // Pa @@ -364,12 +364,12 @@ static int pack_long(grib_accessor* a, const long* val, size_t* len) if (!strcmp(pressure_units, "hPa")) value_first *= 100; break; - case 109: + case 109: // Potential vorticity surface if (!is_tigge) { - scale_first = 9; + scale_first = 9; // TIGGE data follows different rules } if ((ret = grib_get_long(hand, "levelFactor", &levelFactor)) == GRIB_SUCCESS) { - // See ECC-1081 + // ECC-1081: Conversion from grib1 scale_first = levelFactor; } break; From cb78f7d89759379abca6bae1f389fd30a4a6a0e8 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 17 Apr 2023 16:30:47 +0000 Subject: [PATCH 071/378] ECC-1081: Further testing --- tests/grib_level.sh | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/tests/grib_level.sh b/tests/grib_level.sh index ada93dca6..578095c62 100755 --- a/tests/grib_level.sh +++ b/tests/grib_level.sh @@ -15,6 +15,7 @@ sample_g1=$ECCODES_SAMPLES_PATH/GRIB1.tmpl sample_g2=$ECCODES_SAMPLES_PATH/GRIB2.tmpl temp=temp.level.grib temp2=temp2.level.grib +temp3=temp3.level.grib file=${data_dir}/regular_gaussian_pressure_level.grib1 @@ -87,7 +88,9 @@ ${tools_dir}/grib_set -s typeOfLevel=potentialVorticity,shortName=q,level=1500 $ ${tools_dir}/grib_set -s edition=2 $temp $temp2 grib_check_key_equals $temp2 'mars.levelist,level,typeOfLevel' '1500 1500 potentialVorticity' grib_check_key_equals $temp2 'scaleFactorOfFirstFixedSurface,scaledValueOfFirstFixedSurface' '9 1500' - +${tools_dir}/grib_set -s level=1500 $temp2 $temp3 +grib_check_key_equals $temp3 level 1500 +${tools_dir}/grib_compare $temp2 $temp3 # GRIB-637 grib2 Potential vorticity surface input=${data_dir}/tigge_pf_ecmwf.grib2 @@ -121,4 +124,4 @@ for pid in $params; do done -rm -f level.filter temp.level.good test.dump $temp $temp2 +rm -f level.filter temp.level.good test.dump $temp $temp2 $temp3 From 1f5c3e5c0c8b1ef16794e4dbd894cdffff352b4c Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 17 Apr 2023 19:25:20 +0100 Subject: [PATCH 072/378] ECC-1081: More tests --- src/grib_accessor_class_g2level.cc | 9 ++++++--- tests/grib_tigge_check.sh | 7 +++++++ 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/src/grib_accessor_class_g2level.cc b/src/grib_accessor_class_g2level.cc index 9db1b1d14..7750d65a2 100644 --- a/src/grib_accessor_class_g2level.cc +++ b/src/grib_accessor_class_g2level.cc @@ -208,10 +208,11 @@ static int unpack_double(grib_accessor* a, double* val, size_t* len) if (scale_first != GRIB_MISSING_LONG) { // GRIB-637, ECC-1081: Potential vorticity surface if (type_first == 109) { - if (is_tigge) + if (is_tigge) { scale_first -= 6; // TIGGE data follows different rules - else + } else { scale_first -= 9; + } } while (scale_first < 0 && v != 0) { @@ -366,7 +367,9 @@ static int pack_long(grib_accessor* a, const long* val, size_t* len) break; case 109: // Potential vorticity surface if (!is_tigge) { - scale_first = 9; // TIGGE data follows different rules + scale_first = 9; + } else { + scale_first = 6; // TIGGE data follows different rules } if ((ret = grib_get_long(hand, "levelFactor", &levelFactor)) == GRIB_SUCCESS) { // ECC-1081: Conversion from grib1 diff --git a/tests/grib_tigge_check.sh b/tests/grib_tigge_check.sh index 5278f0783..1236f8186 100755 --- a/tests/grib_tigge_check.sh +++ b/tests/grib_tigge_check.sh @@ -116,5 +116,12 @@ status=$? set -e [ $status -ne 0 ] +# ECC-1081 +# --------- +${tools_dir}/grib_set -s level=2 ${data_dir}/tigge/tigge_ecmf_pv_pt.grib $TEMP +grib_check_key_equals $TEMP level 2 +# ${tools_dir}/grib_dump -O -p section_4 $TEMP +${tools_dir}/grib_compare ${data_dir}/tigge/tigge_ecmf_pv_pt.grib $TEMP + rm -f $TEMP From 3fa541200a442e4a1952f65bbb081573fd5c7e62 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 18 Apr 2023 11:33:44 +0100 Subject: [PATCH 073/378] ECC-1081: levelFactor key no longer needed --- definitions/grib1/section.1.def | 4 ---- src/grib_accessor_class_g2level.cc | 5 ----- 2 files changed, 9 deletions(-) diff --git a/definitions/grib1/section.1.def b/definitions/grib1/section.1.def index 9e577a33f..0a1985904 100644 --- a/definitions/grib1/section.1.def +++ b/definitions/grib1/section.1.def @@ -112,10 +112,6 @@ if( indicatorOfTypeOfLevel == 109 || { alias mars.levelist = level; } -if (indicatorOfTypeOfLevel == 117) { - # See ECC-1081 - constant levelFactor = 9; -} unsigned[1] yearOfCentury : edition_specific; unsigned[1] month; diff --git a/src/grib_accessor_class_g2level.cc b/src/grib_accessor_class_g2level.cc index 7750d65a2..1e2b3b707 100644 --- a/src/grib_accessor_class_g2level.cc +++ b/src/grib_accessor_class_g2level.cc @@ -327,7 +327,6 @@ static int pack_long(grib_accessor* a, const long* val, size_t* len) long value_first = *val; long scale_first = 0; long type_first = 0; - long levelFactor = 1; char pressure_units[10] = {0,}; size_t pressure_units_len = 10; bool is_tigge = false; @@ -371,10 +370,6 @@ static int pack_long(grib_accessor* a, const long* val, size_t* len) } else { scale_first = 6; // TIGGE data follows different rules } - if ((ret = grib_get_long(hand, "levelFactor", &levelFactor)) == GRIB_SUCCESS) { - // ECC-1081: Conversion from grib1 - scale_first = levelFactor; - } break; default: From 8ac436a104b774d3f770366a6c4f44ee40ee7230 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 18 Apr 2023 14:41:02 +0100 Subject: [PATCH 074/378] ECC-1569: GRIB2: Adding missing ocean parameter typeOfLevelConcept --- definitions/grib2/typeOfLevelConcept.def | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/definitions/grib2/typeOfLevelConcept.def b/definitions/grib2/typeOfLevelConcept.def index e3a6cc3a1..4e088abd8 100644 --- a/definitions/grib2/typeOfLevelConcept.def +++ b/definitions/grib2/typeOfLevelConcept.def @@ -68,3 +68,11 @@ 'iceLayerUnderSnowOnWater' = {typeOfFirstFixedSurface=175; typeOfSecondFixedSurface=176;} 'iceBottomOnWater' = {typeOfFirstFixedSurface=176; typeOfSecondFixedSurface=255;} 'indefiniteSoilDepth' = {typeOfFirstFixedSurface=177; typeOfSecondFixedSurface=255;} + +'meltPondTop' = {typeOfFirstFixedSurface=188; typeOfSecondFixedSurface=255;} +'meltPondBottom' = {typeOfFirstFixedSurface=189; typeOfSecondFixedSurface=255;} +'entireMeltPond' = {typeOfFirstFixedSurface=188; typeOfSecondFixedSurface=189;} +'iceLayerAboveWaterSurface' = {typeOfFirstFixedSurface=174; typeOfSecondFixedSurface=160; + scaleFactorOfSecondFixedSurface=0; scaledValueOfSecondFixedSurface=0;} +'waterSurfaceToIsothermalOceanLayer' = {typeOfFirstFixedSurface=160; typeOfSecondFixedSurface=20; + scaledValueOfFirstFixedSurface=0; scaleFactorOfFirstFixedSurface=0;} From 168537f503c62d2480314373aa7ffbe6fe620953 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 19 Apr 2023 10:58:21 +0100 Subject: [PATCH 075/378] Examples: cpplint warning [runtime/threadsafe_fn] --- examples/C/large_grib1.c | 4 ++-- examples/C/large_grib1.sh | 9 ++++++--- src/grib_accessor_class_g2level.cc | 28 +++++++++++++--------------- 3 files changed, 21 insertions(+), 20 deletions(-) diff --git a/examples/C/large_grib1.c b/examples/C/large_grib1.c index 6f5b3dc7a..90dcb2a89 100644 --- a/examples/C/large_grib1.c +++ b/examples/C/large_grib1.c @@ -22,6 +22,7 @@ int main() int i = 0; codes_handle* h = NULL; const char* filename = "bigfile.grib"; + unsigned int seed = time(NULL); numbytes = ni * nj * sizeof(double); values = (double*)malloc(numbytes); @@ -31,7 +32,7 @@ int main() } for (i = 0; i < ni * nj; i++) { - double r = rand() * 1.0 / RAND_MAX; + double r = rand_r(&seed) * 1.0 / RAND_MAX; values[i] = r; } @@ -65,7 +66,6 @@ int main() CODES_CHECK(codes_set_double_array(h, "values", values, ni * nj), 0); codes_write_message(h, filename, "w"); - /*printf("Wrote file %s\n", filename);*/ codes_handle_delete(h); free(values); diff --git a/examples/C/large_grib1.sh b/examples/C/large_grib1.sh index 700d354e3..1db407110 100755 --- a/examples/C/large_grib1.sh +++ b/examples/C/large_grib1.sh @@ -9,10 +9,13 @@ . ./include.ctest.sh -# The executable should produce a GRIB1 file +# The executable will produce a GRIB1 file called "bigfile.grib" +output=bigfile.grib ${examples_dir}/c_large_grib1 # Make sure the newly created file can be listed OK -output=bigfile.grib -${tools_dir}/grib_ls $output > /dev/null +${tools_dir}/grib_ls -p numberOfDataPoints,numberOfCodedValues,numberOfMissing $output +num=$(${tools_dir}/grib_get -p numberOfDataPoints $output) +[ $num = 8294400 ] + rm -f $output diff --git a/src/grib_accessor_class_g2level.cc b/src/grib_accessor_class_g2level.cc index 1e2b3b707..0d84e8e45 100644 --- a/src/grib_accessor_class_g2level.cc +++ b/src/grib_accessor_class_g2level.cc @@ -165,6 +165,14 @@ static void dump(grib_accessor* a, grib_dumper* dumper) grib_dump_long(dumper, a, NULL); } +static bool is_tigge(grib_handle* h) +{ + long productionStatus = 0; + int err = grib_get_long(h, "productionStatusOfProcessedData", &productionStatus); + if (err) return false; + return (productionStatus == 4 || productionStatus == 5); +} + static int unpack_double(grib_accessor* a, double* val, size_t* len) { int ret = 0; @@ -176,8 +184,7 @@ static int unpack_double(grib_accessor* a, double* val, size_t* len) long value_first = 0; char pressure_units[10] = {0,}; size_t pressure_units_len = 10; - long productionStatusOfProcessedData = 0; - bool is_tigge = false; + bool tigge = is_tigge(hand); double v; @@ -190,10 +197,6 @@ static int unpack_double(grib_accessor* a, double* val, size_t* len) if ((ret = grib_get_string_internal(hand, self->pressure_units, pressure_units, &pressure_units_len)) != GRIB_SUCCESS) return ret; - if ((ret = grib_get_long(hand, "productionStatusOfProcessedData", &productionStatusOfProcessedData)) != GRIB_SUCCESS) - return ret; - is_tigge = (productionStatusOfProcessedData==4 || productionStatusOfProcessedData==5); - if (value_first == GRIB_MISSING_LONG) { *val = 0; return GRIB_SUCCESS; @@ -208,7 +211,7 @@ static int unpack_double(grib_accessor* a, double* val, size_t* len) if (scale_first != GRIB_MISSING_LONG) { // GRIB-637, ECC-1081: Potential vorticity surface if (type_first == 109) { - if (is_tigge) { + if (tigge) { scale_first -= 6; // TIGGE data follows different rules } else { scale_first -= 9; @@ -329,12 +332,11 @@ static int pack_long(grib_accessor* a, const long* val, size_t* len) long type_first = 0; char pressure_units[10] = {0,}; size_t pressure_units_len = 10; - bool is_tigge = false; - long productionStatusOfProcessedData = 0; grib_accessor_g2level* self = (grib_accessor_g2level*)a; grib_handle* hand = grib_handle_of_accessor(a); int change_scale_and_value = 1; + bool tigge = is_tigge(hand); if (*len != 1) return GRIB_WRONG_ARRAY_SIZE; @@ -354,18 +356,14 @@ static int pack_long(grib_accessor* a, const long* val, size_t* len) if ((ret = grib_get_string_internal(hand, self->pressure_units, pressure_units, &pressure_units_len)) != GRIB_SUCCESS) return ret; - if ((ret = grib_get_long(hand, "productionStatusOfProcessedData", &productionStatusOfProcessedData)) != GRIB_SUCCESS) - return ret; - is_tigge = (productionStatusOfProcessedData==4 || productionStatusOfProcessedData==5); - switch (type_first) { case 100: // Pa scale_first = 0; if (!strcmp(pressure_units, "hPa")) value_first *= 100; break; - case 109: // Potential vorticity surface - if (!is_tigge) { + case 109: // Potential vorticity surface (See ECC-1081) + if (!tigge) { scale_first = 9; } else { scale_first = 6; // TIGGE data follows different rules From c64d82d433bd5077d75832600a6ff00ca5e9e2a5 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 19 Apr 2023 11:20:27 +0100 Subject: [PATCH 076/378] Fix broken Windows build --- examples/C/large_grib1.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/examples/C/large_grib1.c b/examples/C/large_grib1.c index 90dcb2a89..e351f1b80 100644 --- a/examples/C/large_grib1.c +++ b/examples/C/large_grib1.c @@ -22,7 +22,10 @@ int main() int i = 0; codes_handle* h = NULL; const char* filename = "bigfile.grib"; + +#ifndef ECCODES_ON_WINDOWS unsigned int seed = time(NULL); +#endif numbytes = ni * nj * sizeof(double); values = (double*)malloc(numbytes); @@ -32,7 +35,11 @@ int main() } for (i = 0; i < ni * nj; i++) { - double r = rand_r(&seed) * 1.0 / RAND_MAX; + #ifndef ECCODES_ON_WINDOWS + double r = rand_r(&seed) * 1.0 / RAND_MAX; + #else + double r = rand() * 1.0 / RAND_MAX; + #endif values[i] = r; } From 33f51f2a8d0af907e7aa61fab6918f2ca50e6469 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 19 Apr 2023 12:13:59 +0100 Subject: [PATCH 077/378] Deprecated action --- definitions/grib2/boot.def | 14 ++++++-------- src/action_class_while.cc | 15 +++++++++++++-- 2 files changed, 19 insertions(+), 10 deletions(-) diff --git a/definitions/grib2/boot.def b/definitions/grib2/boot.def index c86ba9922..6806a2565 100644 --- a/definitions/grib2/boot.def +++ b/definitions/grib2/boot.def @@ -31,14 +31,12 @@ include "grib2/section.0.def"; template core "grib2/sections.def"; -#if(!new()) -#{ - #lookup[4] endOfProduct(0); - #while(endOfProduct != `7777`) - #{ - #template core "grib2/sections.def"; - #lookup[4] endOfProduct(0); - #} +#if(!new()) { +# lookup[4] endOfProduct(0); +# while(endOfProduct != `7777`) { +# template core "grib2/sections.def"; +# lookup[4] endOfProduct(0); +# } #} template section_8 "grib2/section.8.def"; diff --git a/src/action_class_while.cc b/src/action_class_while.cc index 17243bf06..c42fc92c7 100644 --- a/src/action_class_while.cc +++ b/src/action_class_while.cc @@ -82,16 +82,21 @@ static void init_class(grib_action_class* c) static void dump(grib_action* act, FILE* f, int lvl) { + Assert(!"action class while (dump): deprecated"); +#if 0 grib_action_while* a = (grib_action_while*)act; int i = 0; for (i = 0; i < lvl; i++) grib_context_print(act->context, f, " "); grib_context_print(act->context, f, "Loop %s\n", act->name); grib_dump_action_branch(f, a->block_while, lvl + 1); +#endif } static int create_accessor(grib_section* p, grib_action* act, grib_loader* h) { + Assert(!"action class while (create_accessor): deprecated"); +#if 0 grib_action_while* a = (grib_action_while*)act; grib_accessor* ga = NULL; @@ -132,11 +137,15 @@ static int create_accessor(grib_section* p, grib_action* act, grib_loader* h) next = next->next; } } +#endif return GRIB_SUCCESS; } grib_action* grib_action_create_while(grib_context* context, grib_expression* expression, grib_action* block) { + Assert(!"action class while (grib_action_create_while): deprecated"); + return NULL; +#if 0 char name[80]; const size_t nameLen = sizeof(name); grib_action_while* a; @@ -147,7 +156,6 @@ grib_action* grib_action_create_while(grib_context* context, grib_expression* ex a = (grib_action_while*)act; act->next = NULL; - snprintf(name, nameLen, "_while%p", (void*)a); act->name = grib_context_strdup_persistent(context, name); act->op = grib_context_strdup_persistent(context, "section"); @@ -157,10 +165,13 @@ grib_action* grib_action_create_while(grib_context* context, grib_expression* ex grib_context_log(context, GRIB_LOG_DEBUG, " Action List %s is created \n", act->name); return act; +#endif } static void destroy(grib_context* context, grib_action* act) { + Assert(!"action class while (destroy): deprecated"); +#if 0 grib_action_while* self = (grib_action_while*)act; grib_action* a = self->block_while; @@ -169,8 +180,8 @@ static void destroy(grib_context* context, grib_action* act) grib_action_delete(context, a); a = na; } - grib_context_free_persistent(context, act->name); grib_context_free_persistent(context, act->op); grib_expression_free(context, self->expression); +#endif } From 5ad3d9bcff9c099d77561a98e6ea3ad0eefeb80b Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 19 Apr 2023 12:33:27 +0100 Subject: [PATCH 078/378] Deprecated action --- src/action_class_trigger.cc | 20 +++++++++++++++----- src/action_class_while.cc | 10 ++++++---- 2 files changed, 21 insertions(+), 9 deletions(-) diff --git a/src/action_class_trigger.cc b/src/action_class_trigger.cc index ebee1007d..fc483fc27 100644 --- a/src/action_class_trigger.cc +++ b/src/action_class_trigger.cc @@ -10,7 +10,6 @@ /*************************************************************************** * Jean Baptiste Filippi - 01.11.2005 * - * Enrico Fucile * ***************************************************************************/ #include "grib_api_internal.h" @@ -88,6 +87,9 @@ static void init_class(grib_action_class* c) grib_action* grib_action_create_trigger(grib_context* context, grib_arguments* args, grib_action* block) { + Assert(!"action_class_trigger::grib_action_create_trigger: 'trigger' statement is deprecated"); + return NULL; +#if 0 char name[1024]; const size_t nameLen = sizeof(name); @@ -108,26 +110,31 @@ grib_action* grib_action_create_trigger(grib_context* context, grib_arguments* a a->block = block; return act; +#endif } static void dump(grib_action* act, FILE* f, int lvl) { - /* grib_action_trigger* a = ( grib_action_trigger*)act; */ + Assert(!"action_class_trigger::dump: 'trigger' statement is deprecated"); +#if 0 int i = 0; for (i = 0; i < lvl; i++) grib_context_print(act->context, f, " "); grib_context_print(act->context, f, "Trigger\n"); +#endif } static int create_accessor(grib_section* p, grib_action* act, grib_loader* h) { + Assert(!"action_class_trigger::create_accessor: 'trigger' statement is deprecated"); + +#if 0 int ret = GRIB_SUCCESS; grib_action_trigger* a = (grib_action_trigger*)act; grib_action* next = NULL; grib_accessor* as = NULL; grib_section* gs = NULL; - as = grib_accessor_factory(p, act, 0, NULL); if (!as) @@ -147,7 +154,7 @@ static int create_accessor(grib_section* p, grib_action* act, grib_loader* h) return ret; next = next->next; } - +#endif return GRIB_SUCCESS; } @@ -160,8 +167,10 @@ static grib_action* reparse(grib_action* a, grib_accessor* acc, int* doit) /* COMEBACK */ static void destroy(grib_context* context, grib_action* act) { - grib_action_trigger* a = (grib_action_trigger*)act; + Assert(!"action_class_trigger::destroy: 'trigger' statement is deprecated"); +#if 0 + grib_action_trigger* a = (grib_action_trigger*)act; grib_action* b = a->block; while (b) { @@ -173,4 +182,5 @@ static void destroy(grib_context* context, grib_action* act) grib_arguments_free(context, a->trigger_on); grib_context_free_persistent(context, act->name); grib_context_free_persistent(context, act->op); +#endif } diff --git a/src/action_class_while.cc b/src/action_class_while.cc index c42fc92c7..ec17ef65b 100644 --- a/src/action_class_while.cc +++ b/src/action_class_while.cc @@ -82,7 +82,8 @@ static void init_class(grib_action_class* c) static void dump(grib_action* act, FILE* f, int lvl) { - Assert(!"action class while (dump): deprecated"); + Assert(!"action_class_while::dump: 'while' statement is deprecated"); + #if 0 grib_action_while* a = (grib_action_while*)act; int i = 0; @@ -95,7 +96,8 @@ static void dump(grib_action* act, FILE* f, int lvl) static int create_accessor(grib_section* p, grib_action* act, grib_loader* h) { - Assert(!"action class while (create_accessor): deprecated"); + Assert(!"action_class_while::create_accessor: 'while' statement is deprecated"); + #if 0 grib_action_while* a = (grib_action_while*)act; @@ -143,7 +145,7 @@ static int create_accessor(grib_section* p, grib_action* act, grib_loader* h) grib_action* grib_action_create_while(grib_context* context, grib_expression* expression, grib_action* block) { - Assert(!"action class while (grib_action_create_while): deprecated"); + Assert(!"action_class_while::grib_action_create_while: 'while' statement is deprecated"); return NULL; #if 0 char name[80]; @@ -170,7 +172,7 @@ grib_action* grib_action_create_while(grib_context* context, grib_expression* ex static void destroy(grib_context* context, grib_action* act) { - Assert(!"action class while (destroy): deprecated"); + Assert(!"action_class_while::destroy: 'while' statement is deprecated"); #if 0 grib_action_while* self = (grib_action_while*)act; grib_action* a = self->block_while; From b73ffc090f5a3cd317457eba8806148855f02c6d Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 19 Apr 2023 15:51:42 +0100 Subject: [PATCH 079/378] Cleanup --- src/action_class_concept.cc | 2 +- src/grib_accessor_class_proj_string.cc | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/action_class_concept.cc b/src/action_class_concept.cc index 8631da30a..bbb8f9638 100644 --- a/src/action_class_concept.cc +++ b/src/action_class_concept.cc @@ -46,7 +46,7 @@ static void destroy (grib_context*,grib_action*); typedef struct grib_action_concept { - grib_action act; + grib_action act; /* Members defined in gen */ long len; grib_arguments* params; diff --git a/src/grib_accessor_class_proj_string.cc b/src/grib_accessor_class_proj_string.cc index a334444a8..13d5159b6 100644 --- a/src/grib_accessor_class_proj_string.cc +++ b/src/grib_accessor_class_proj_string.cc @@ -303,7 +303,7 @@ static int proj_unprojected(grib_handle* h, char* result) //if ((err = get_earth_shape(h, shape)) != GRIB_SUCCESS) return err; //snprintf(result, 1024, "+proj=longlat %s", shape); snprintf(result, 1024, "+proj=longlat +datum=WGS84 +no_defs +type=crs"); - + return err; } From 934b500b715685d3fb58317e5f56c22eabd83616 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 19 Apr 2023 15:53:43 +0100 Subject: [PATCH 080/378] Added single-precision mode --- src/grib_api_internal.h | 1 + src/grib_context.cc | 36 ++++++++++++++++++++---------------- 2 files changed, 21 insertions(+), 16 deletions(-) diff --git a/src/grib_api_internal.h b/src/grib_api_internal.h index da2fa37ac..88d8a50f9 100644 --- a/src/grib_api_internal.h +++ b/src/grib_api_internal.h @@ -1118,6 +1118,7 @@ struct grib_context int bufr_set_to_missing_if_out_of_range; int bufr_multi_element_constant_arrays; int grib_data_quality_checks; + int single_precision; FILE* log_stream; grib_trie* classes; grib_trie* lists; diff --git a/src/grib_context.cc b/src/grib_context.cc index 3bfc44982..139217f10 100644 --- a/src/grib_context.cc +++ b/src/grib_context.cc @@ -350,25 +350,26 @@ static grib_context default_grib_context = { 0, /* keys_count */ 0, /* concepts_index */ 0, /* concepts_count */ - {0,}, /* concepts */ - 0, /* hash_array_index */ - 0, /* hash_array_count */ - {0,}, /* hash_array */ - 0, /* def_files */ - 0, /* blocklist */ - 0, /* ieee_packing */ - 0, /* bufrdc_mode */ - 0, /* bufr_set_to_missing_if_out_of_range */ - 0, /* bufr_multi_element_constant_arrays */ - 0, /* grib_data_quality_checks */ - 0, /* log_stream */ - 0, /* classes */ - 0, /* lists */ - 0, /* expanded_descriptors */ + {0,}, /* concepts */ + 0, /* hash_array_index */ + 0, /* hash_array_count */ + {0,}, /* hash_array */ + 0, /* def_files */ + 0, /* blocklist */ + 0, /* ieee_packing */ + 0, /* bufrdc_mode */ + 0, /* bufr_set_to_missing_if_out_of_range */ + 0, /* bufr_multi_element_constant_arrays */ + 0, /* grib_data_quality_checks */ + 0, /* single_precision */ + 0, /* log_stream */ + 0, /* classes */ + 0, /* lists */ + 0, /* expanded_descriptors */ DEFAULT_FILE_POOL_MAX_OPENED_FILES /* file_pool_max_opened_files */ #if GRIB_PTHREADS , - PTHREAD_MUTEX_INITIALIZER /* mutex */ + PTHREAD_MUTEX_INITIALIZER /* mutex */ #endif }; @@ -396,6 +397,7 @@ grib_context* grib_context_get_default() const char* bufr_set_to_missing_if_out_of_range = NULL; const char* bufr_multi_element_constant_arrays = NULL; const char* grib_data_quality_checks = NULL; + const char* single_precision = NULL; const char* file_pool_max_opened_files = NULL; #ifdef ENABLE_FLOATING_POINT_EXCEPTIONS @@ -407,6 +409,7 @@ grib_context* grib_context_get_default() bufr_set_to_missing_if_out_of_range = getenv("ECCODES_BUFR_SET_TO_MISSING_IF_OUT_OF_RANGE"); bufr_multi_element_constant_arrays = getenv("ECCODES_BUFR_MULTI_ELEMENT_CONSTANT_ARRAYS"); grib_data_quality_checks = getenv("ECCODES_GRIB_DATA_QUALITY_CHECKS"); + single_precision = getenv("ECCODES_SINGLE_PRECISION"); large_constant_fields = codes_getenv("ECCODES_GRIB_LARGE_CONSTANT_FIELDS"); no_abort = codes_getenv("ECCODES_NO_ABORT"); debug = codes_getenv("ECCODES_DEBUG"); @@ -550,6 +553,7 @@ grib_context* grib_context_get_default() default_grib_context.bufr_set_to_missing_if_out_of_range = bufr_set_to_missing_if_out_of_range ? atoi(bufr_set_to_missing_if_out_of_range) : 0; default_grib_context.bufr_multi_element_constant_arrays = bufr_multi_element_constant_arrays ? atoi(bufr_multi_element_constant_arrays) : 0; default_grib_context.grib_data_quality_checks = grib_data_quality_checks ? atoi(grib_data_quality_checks) : 0; + default_grib_context.single_precision = single_precision ? atoi(single_precision) : 0; default_grib_context.file_pool_max_opened_files = file_pool_max_opened_files ? atoi(file_pool_max_opened_files) : DEFAULT_FILE_POOL_MAX_OPENED_FILES; } From faf4d84225b7cdc06bb8a3430d373b108a9b0dd4 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 19 Apr 2023 17:24:52 +0100 Subject: [PATCH 081/378] JPEG packing: single-precision not yet implemented --- src/grib_accessor_class_data_jpeg2000_packing.cc | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/grib_accessor_class_data_jpeg2000_packing.cc b/src/grib_accessor_class_data_jpeg2000_packing.cc index 9b813dd6d..610c14b28 100644 --- a/src/grib_accessor_class_data_jpeg2000_packing.cc +++ b/src/grib_accessor_class_data_jpeg2000_packing.cc @@ -18,7 +18,7 @@ SUPER = grib_accessor_class_data_simple_packing IMPLEMENTS = init IMPLEMENTS = unpack_double - IMPLEMENTS = pack_double + IMPLEMENTS = pack_double;unpack_float IMPLEMENTS = unpack_double_element;unpack_double_element_set IMPLEMENTS = value_count MEMBERS=const char* type_of_compression_used @@ -46,6 +46,7 @@ or edit "accessor.class" and rerun ./make_class.pl static int pack_double(grib_accessor*, const double* val, size_t* len); static int unpack_double(grib_accessor*, double* val, size_t* len); +static int unpack_float(grib_accessor*, float* val, size_t* len); static int value_count(grib_accessor*, long*); static void init(grib_accessor*, const long, grib_arguments*); static void init_class(grib_accessor_class*); @@ -111,7 +112,7 @@ static grib_accessor_class _grib_accessor_class_data_jpeg2000_packing = { &pack_double, /* grib_pack procedures double */ 0, /* grib_pack procedures float */ &unpack_double, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ + &unpack_float, /* grib_unpack procedures float */ 0, /* grib_pack procedures string */ 0, /* grib_unpack procedures string */ 0, /* grib_pack array procedures string */ @@ -153,7 +154,6 @@ static void init_class(grib_accessor_class* c) c->pack_long = (*(c->super))->pack_long; c->unpack_long = (*(c->super))->unpack_long; c->pack_float = (*(c->super))->pack_float; - c->unpack_float = (*(c->super))->unpack_float; c->pack_string = (*(c->super))->pack_string; c->unpack_string = (*(c->super))->unpack_string; c->pack_string_array = (*(c->super))->pack_string_array; @@ -251,6 +251,11 @@ static int value_count(grib_accessor* a, long* n_vals) #define EXTRA_BUFFER_SIZE 10240 #if HAVE_JPEG +static int unpack_float(grib_accessor*, float* val, size_t* len) +{ + return GRIB_NOT_IMPLEMENTED; +} + static int unpack_double(grib_accessor* a, double* val, size_t* len) { grib_accessor_data_jpeg2000_packing* self = (grib_accessor_data_jpeg2000_packing*)a; From 76baf2790f713f3583992dac5033125791510742 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 19 Apr 2023 17:57:06 +0100 Subject: [PATCH 082/378] Fix broken builds --- examples/C/large_grib1.c | 1 + src/grib_accessor_class_data_jpeg2000_packing.cc | 5 +++++ 2 files changed, 6 insertions(+) diff --git a/examples/C/large_grib1.c b/examples/C/large_grib1.c index e351f1b80..a01761ced 100644 --- a/examples/C/large_grib1.c +++ b/examples/C/large_grib1.c @@ -10,6 +10,7 @@ #include #include +#include #include "eccodes.h" /* See JIRA issue GRIB-361 */ diff --git a/src/grib_accessor_class_data_jpeg2000_packing.cc b/src/grib_accessor_class_data_jpeg2000_packing.cc index 610c14b28..f401af673 100644 --- a/src/grib_accessor_class_data_jpeg2000_packing.cc +++ b/src/grib_accessor_class_data_jpeg2000_packing.cc @@ -583,6 +583,11 @@ static int pack_double(grib_accessor* a, const double* cval, size_t* len) } #else +static int unpack_float(grib_accessor*, float* val, size_t* len) +{ + grib_context_log(a->context, GRIB_LOG_ERROR, "JPEG support not enabled."); + return GRIB_FUNCTIONALITY_NOT_ENABLED; +} static int unpack_double(grib_accessor* a, double* val, size_t* len) { grib_context_log(a->context, GRIB_LOG_ERROR, "JPEG support not enabled."); From b2120e2c03e822ba74d99c7422d1d0786d13464e Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 19 Apr 2023 18:07:03 +0100 Subject: [PATCH 083/378] Fix broken builds (2) --- src/grib_accessor_class_data_jpeg2000_packing.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/grib_accessor_class_data_jpeg2000_packing.cc b/src/grib_accessor_class_data_jpeg2000_packing.cc index f401af673..a95735ac8 100644 --- a/src/grib_accessor_class_data_jpeg2000_packing.cc +++ b/src/grib_accessor_class_data_jpeg2000_packing.cc @@ -583,7 +583,7 @@ static int pack_double(grib_accessor* a, const double* cval, size_t* len) } #else -static int unpack_float(grib_accessor*, float* val, size_t* len) +static int unpack_float(grib_accessor* a, float* val, size_t* len) { grib_context_log(a->context, GRIB_LOG_ERROR, "JPEG support not enabled."); return GRIB_FUNCTIONALITY_NOT_ENABLED; From c4392c83d513a225db6c2736153735c7116cd6c0 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 19 Apr 2023 19:36:01 +0100 Subject: [PATCH 084/378] Improved error messages --- ...lass_data_g1second_order_constant_width_packing.cc | 11 ++++++++--- ...ss_data_g1second_order_general_extended_packing.cc | 10 +++++++--- ...essor_class_data_g1second_order_general_packing.cc | 11 ++++++++--- ...or_class_data_g1second_order_row_by_row_packing.cc | 11 ++++++++--- 4 files changed, 31 insertions(+), 12 deletions(-) diff --git a/src/grib_accessor_class_data_g1second_order_constant_width_packing.cc b/src/grib_accessor_class_data_g1second_order_constant_width_packing.cc index 23220df88..6e0390111 100644 --- a/src/grib_accessor_class_data_g1second_order_constant_width_packing.cc +++ b/src/grib_accessor_class_data_g1second_order_constant_width_packing.cc @@ -18,7 +18,7 @@ SUPER = grib_accessor_class_data_simple_packing IMPLEMENTS = init IMPLEMENTS = pack_double - IMPLEMENTS = unpack_double + IMPLEMENTS = unpack_double;unpack_float IMPLEMENTS = unpack_double_element;unpack_double_element_set IMPLEMENTS = value_count MEMBERS=const char* half_byte @@ -54,6 +54,7 @@ or edit "accessor.class" and rerun ./make_class.pl static int pack_double(grib_accessor*, const double* val, size_t* len); static int unpack_double(grib_accessor*, double* val, size_t* len); +static int unpack_float(grib_accessor*, float* val, size_t* len); static int value_count(grib_accessor*, long*); static void init(grib_accessor*, const long, grib_arguments*); static void init_class(grib_accessor_class*); @@ -126,7 +127,7 @@ static grib_accessor_class _grib_accessor_class_data_g1second_order_constant_wid &pack_double, /* grib_pack procedures double */ 0, /* grib_pack procedures float */ &unpack_double, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ + &unpack_float, /* grib_unpack procedures float */ 0, /* grib_pack procedures string */ 0, /* grib_unpack procedures string */ 0, /* grib_pack array procedures string */ @@ -168,7 +169,6 @@ static void init_class(grib_accessor_class* c) c->pack_long = (*(c->super))->pack_long; c->unpack_long = (*(c->super))->unpack_long; c->pack_float = (*(c->super))->pack_float; - c->unpack_float = (*(c->super))->unpack_float; c->pack_string = (*(c->super))->pack_string; c->unpack_string = (*(c->super))->unpack_string; c->pack_string_array = (*(c->super))->pack_string_array; @@ -228,6 +228,11 @@ static int value_count(grib_accessor* a, long* numberOfSecondOrderPackedValues) return err; } +static int unpack_float(grib_accessor*, float* val, size_t* len) +{ + return GRIB_NOT_IMPLEMENTED; +} + static int unpack_double(grib_accessor* a, double* values, size_t* len) { grib_accessor_data_g1second_order_constant_width_packing* self = (grib_accessor_data_g1second_order_constant_width_packing*)a; diff --git a/src/grib_accessor_class_data_g1second_order_general_extended_packing.cc b/src/grib_accessor_class_data_g1second_order_general_extended_packing.cc index df99452a0..ceabd4b13 100644 --- a/src/grib_accessor_class_data_g1second_order_general_extended_packing.cc +++ b/src/grib_accessor_class_data_g1second_order_general_extended_packing.cc @@ -19,7 +19,7 @@ SUPER = grib_accessor_class_data_simple_packing IMPLEMENTS = init IMPLEMENTS = pack_double - IMPLEMENTS = unpack_double + IMPLEMENTS = unpack_double;unpack_float IMPLEMENTS = unpack_double_element;unpack_double_element_set IMPLEMENTS = value_count IMPLEMENTS = destroy @@ -65,6 +65,7 @@ or edit "accessor.class" and rerun ./make_class.pl static int pack_double(grib_accessor*, const double* val, size_t* len); static int unpack_double(grib_accessor*, double* val, size_t* len); +static int unpack_float(grib_accessor*, float* val, size_t* len); static int value_count(grib_accessor*, long*); static void destroy(grib_context*, grib_accessor*); static void init(grib_accessor*, const long, grib_arguments*); @@ -146,7 +147,7 @@ static grib_accessor_class _grib_accessor_class_data_g1second_order_general_exte &pack_double, /* grib_pack procedures double */ 0, /* grib_pack procedures float */ &unpack_double, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ + &unpack_float, /* grib_unpack procedures float */ 0, /* grib_pack procedures string */ 0, /* grib_unpack procedures string */ 0, /* grib_pack array procedures string */ @@ -188,7 +189,6 @@ static void init_class(grib_accessor_class* c) c->pack_long = (*(c->super))->pack_long; c->unpack_long = (*(c->super))->unpack_long; c->pack_float = (*(c->super))->pack_float; - c->unpack_float = (*(c->super))->unpack_float; c->pack_string = (*(c->super))->pack_string; c->unpack_string = (*(c->super))->unpack_string; c->pack_string_array = (*(c->super))->pack_string_array; @@ -374,6 +374,10 @@ static int unpack_double_element_set(grib_accessor* a, const size_t* index_array return GRIB_SUCCESS; } +static int unpack_float(grib_accessor*, float* val, size_t* len) +{ + return GRIB_NOT_IMPLEMENTED; +} static int unpack_double(grib_accessor* a, double* values, size_t* len) { diff --git a/src/grib_accessor_class_data_g1second_order_general_packing.cc b/src/grib_accessor_class_data_g1second_order_general_packing.cc index fe16c187d..893e001ba 100644 --- a/src/grib_accessor_class_data_g1second_order_general_packing.cc +++ b/src/grib_accessor_class_data_g1second_order_general_packing.cc @@ -18,7 +18,7 @@ SUPER = grib_accessor_class_data_simple_packing IMPLEMENTS = init IMPLEMENTS = pack_double - IMPLEMENTS = unpack_double + IMPLEMENTS = unpack_double;unpack_float IMPLEMENTS = value_count MEMBERS=const char* half_byte MEMBERS=const char* packingType @@ -53,6 +53,7 @@ or edit "accessor.class" and rerun ./make_class.pl static int pack_double(grib_accessor*, const double* val, size_t* len); static int unpack_double(grib_accessor*, double* val, size_t* len); +static int unpack_float(grib_accessor*, float* val, size_t* len); static int value_count(grib_accessor*, long*); static void init(grib_accessor*, const long, grib_arguments*); static void init_class(grib_accessor_class*); @@ -123,7 +124,7 @@ static grib_accessor_class _grib_accessor_class_data_g1second_order_general_pack &pack_double, /* grib_pack procedures double */ 0, /* grib_pack procedures float */ &unpack_double, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ + &unpack_float, /* grib_unpack procedures float */ 0, /* grib_pack procedures string */ 0, /* grib_unpack procedures string */ 0, /* grib_pack array procedures string */ @@ -165,7 +166,6 @@ static void init_class(grib_accessor_class* c) c->pack_long = (*(c->super))->pack_long; c->unpack_long = (*(c->super))->unpack_long; c->pack_float = (*(c->super))->pack_float; - c->unpack_float = (*(c->super))->unpack_float; c->pack_string = (*(c->super))->pack_string; c->unpack_string = (*(c->super))->unpack_string; c->pack_string_array = (*(c->super))->pack_string_array; @@ -227,6 +227,11 @@ static int value_count(grib_accessor* a, long* numberOfSecondOrderPackedValues) return err; } +static int unpack_float(grib_accessor*, float* val, size_t* len) +{ + return GRIB_NOT_IMPLEMENTED; +} + static int unpack_double(grib_accessor* a, double* values, size_t* len) { grib_accessor_data_g1second_order_general_packing* self = (grib_accessor_data_g1second_order_general_packing*)a; diff --git a/src/grib_accessor_class_data_g1second_order_row_by_row_packing.cc b/src/grib_accessor_class_data_g1second_order_row_by_row_packing.cc index 4eb575515..bd976c4d3 100644 --- a/src/grib_accessor_class_data_g1second_order_row_by_row_packing.cc +++ b/src/grib_accessor_class_data_g1second_order_row_by_row_packing.cc @@ -18,7 +18,7 @@ SUPER = grib_accessor_class_data_simple_packing IMPLEMENTS = init IMPLEMENTS = pack_double - IMPLEMENTS = unpack_double + IMPLEMENTS = unpack_double;unpack_float IMPLEMENTS = value_count MEMBERS=const char* half_byte MEMBERS=const char* packingType @@ -53,6 +53,7 @@ or edit "accessor.class" and rerun ./make_class.pl static int pack_double(grib_accessor*, const double* val, size_t* len); static int unpack_double(grib_accessor*, double* val, size_t* len); +static int unpack_float(grib_accessor*, float* val, size_t* len); static int value_count(grib_accessor*, long*); static void init(grib_accessor*, const long, grib_arguments*); static void init_class(grib_accessor_class*); @@ -123,7 +124,7 @@ static grib_accessor_class _grib_accessor_class_data_g1second_order_row_by_row_p &pack_double, /* grib_pack procedures double */ 0, /* grib_pack procedures float */ &unpack_double, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ + &unpack_float, /* grib_unpack procedures float */ 0, /* grib_pack procedures string */ 0, /* grib_unpack procedures string */ 0, /* grib_pack array procedures string */ @@ -165,7 +166,6 @@ static void init_class(grib_accessor_class* c) c->pack_long = (*(c->super))->pack_long; c->unpack_long = (*(c->super))->unpack_long; c->pack_float = (*(c->super))->pack_float; - c->unpack_float = (*(c->super))->unpack_float; c->pack_string = (*(c->super))->pack_string; c->unpack_string = (*(c->super))->unpack_string; c->pack_string_array = (*(c->super))->pack_string_array; @@ -291,6 +291,11 @@ static int value_count(grib_accessor* a, long* count) return ret; } +static int unpack_float(grib_accessor*, float* val, size_t* len) +{ + return GRIB_NOT_IMPLEMENTED; +} + static int unpack_double(grib_accessor* a, double* values, size_t* len) { grib_accessor_data_g1second_order_row_by_row_packing* self = (grib_accessor_data_g1second_order_row_by_row_packing*)a; From e3fb4e18174a927d40f716c82b3f4926900ab55c Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 20 Apr 2023 12:40:11 +0100 Subject: [PATCH 085/378] Clean up of include files --- src/grib_accessor_class_bitmap.cc | 2 +- src/grib_accessor_class_data_apply_bitmap.cc | 4 ++-- src/grib_accessor_class_data_ccsds_packing.cc | 2 +- src/grib_accessor_class_data_complex_packing.cc | 2 +- src/grib_accessor_class_data_g22order_packing.cc | 2 +- src/grib_accessor_class_gen.cc | 8 ++++---- src/grib_value.h | 16 +++++++++++----- 7 files changed, 21 insertions(+), 15 deletions(-) diff --git a/src/grib_accessor_class_bitmap.cc b/src/grib_accessor_class_bitmap.cc index 31c5997d6..62bd9de34 100644 --- a/src/grib_accessor_class_bitmap.cc +++ b/src/grib_accessor_class_bitmap.cc @@ -9,7 +9,7 @@ */ #include "grib_api_internal.h" -#include +// #include /* This is used by make_class.pl diff --git a/src/grib_accessor_class_data_apply_bitmap.cc b/src/grib_accessor_class_data_apply_bitmap.cc index 91686bafc..8646d6818 100644 --- a/src/grib_accessor_class_data_apply_bitmap.cc +++ b/src/grib_accessor_class_data_apply_bitmap.cc @@ -9,8 +9,8 @@ */ #include "grib_api_internal_cpp.h" -#include -#include +// #include +// #include /* This is used by make_class.pl diff --git a/src/grib_accessor_class_data_ccsds_packing.cc b/src/grib_accessor_class_data_ccsds_packing.cc index a96625e3d..d1e64e394 100644 --- a/src/grib_accessor_class_data_ccsds_packing.cc +++ b/src/grib_accessor_class_data_ccsds_packing.cc @@ -9,7 +9,7 @@ */ #include "grib_api_internal_cpp.h" -#include +// #include /* This is used by make_class.pl diff --git a/src/grib_accessor_class_data_complex_packing.cc b/src/grib_accessor_class_data_complex_packing.cc index 3b45cb480..727c3be48 100644 --- a/src/grib_accessor_class_data_complex_packing.cc +++ b/src/grib_accessor_class_data_complex_packing.cc @@ -9,7 +9,7 @@ */ #include "grib_api_internal_cpp.h" -#include +// #include #include /* This is used by make_class.pl diff --git a/src/grib_accessor_class_data_g22order_packing.cc b/src/grib_accessor_class_data_g22order_packing.cc index ae3a6d9e3..eab020545 100644 --- a/src/grib_accessor_class_data_g22order_packing.cc +++ b/src/grib_accessor_class_data_g22order_packing.cc @@ -10,7 +10,7 @@ #include "grib_api_internal.h" -#include +// #include /* This is used by make_class.pl diff --git a/src/grib_accessor_class_gen.cc b/src/grib_accessor_class_gen.cc index 4d2ea6011..c9124a4c1 100644 --- a/src/grib_accessor_class_gen.cc +++ b/src/grib_accessor_class_gen.cc @@ -14,11 +14,11 @@ * Shahram Najm * ***************************************************************************/ #include "grib_api_internal.h" -#include +//#include #include #include -#include - +//#include +#include "grib_api_internal_cpp.h" /* This is used by make_class.pl @@ -326,7 +326,7 @@ static int unpack(grib_accessor* a, T* v, size_t* len) size_t l = 1; grib_unpack_long(a, &val, &l); *v = val; - grib_context_log(a->context, GRIB_LOG_DEBUG, "Casting long %s to %s", a->name, typeid(T).name()); + grib_context_log(a->context, GRIB_LOG_DEBUG, "Casting long %s to %s", a->name, type_to_string(*v)); return GRIB_SUCCESS; } diff --git a/src/grib_value.h b/src/grib_value.h index b0485de40..850541b14 100644 --- a/src/grib_value.h +++ b/src/grib_value.h @@ -1,8 +1,12 @@ #pragma once #include "grib_api_internal.h" -#include -#include +//#include +//#include + +template const char* type_to_string(T) { return "unknown"; } +template<> inline const char* type_to_string<>(double) { return "double"; } +template<> inline const char* type_to_string<>(float) { return "float"; } template int grib_get_array(const grib_handle* h, const char* name, T* val, size_t* length); @@ -13,10 +17,12 @@ int grib_get_array_internal(const grib_handle* h, const char* name, T* val, size static_assert(std::is_floating_point::value, "Requires floating point numbers"); int ret = grib_get_array(h, name, val, length); - if (ret != GRIB_SUCCESS) + if (ret != GRIB_SUCCESS) { + // Note: typeid(T).name() returns "f" or "d". Not very helpful grib_context_log(h->context, GRIB_LOG_ERROR, - "unable to get %s as %s array (%s)", - name, typeid(T).name(), grib_get_error_message(ret)); + "unable to get %s as %s array (each array element being %zu bytes): %s", + name, type_to_string(*val), sizeof(T), grib_get_error_message(ret)); + } return ret; } From 2793ee2a0dcba132d1e219fa1e4ad7594eb8e1e6 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 20 Apr 2023 12:50:21 +0100 Subject: [PATCH 086/378] Fix broken Windows build --- src/grib_accessor_class_bitmap.cc | 2 +- src/grib_accessor_class_data_apply_bitmap.cc | 2 +- src/grib_accessor_class_data_complex_packing.cc | 2 +- src/grib_accessor_class_data_g22order_packing.cc | 2 +- src/grib_accessor_class_gen.cc | 2 +- src/grib_value.h | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/grib_accessor_class_bitmap.cc b/src/grib_accessor_class_bitmap.cc index 62bd9de34..31c5997d6 100644 --- a/src/grib_accessor_class_bitmap.cc +++ b/src/grib_accessor_class_bitmap.cc @@ -9,7 +9,7 @@ */ #include "grib_api_internal.h" -// #include +#include /* This is used by make_class.pl diff --git a/src/grib_accessor_class_data_apply_bitmap.cc b/src/grib_accessor_class_data_apply_bitmap.cc index 8646d6818..5ea09dbe7 100644 --- a/src/grib_accessor_class_data_apply_bitmap.cc +++ b/src/grib_accessor_class_data_apply_bitmap.cc @@ -10,7 +10,7 @@ #include "grib_api_internal_cpp.h" // #include -// #include +#include /* This is used by make_class.pl diff --git a/src/grib_accessor_class_data_complex_packing.cc b/src/grib_accessor_class_data_complex_packing.cc index 727c3be48..3b45cb480 100644 --- a/src/grib_accessor_class_data_complex_packing.cc +++ b/src/grib_accessor_class_data_complex_packing.cc @@ -9,7 +9,7 @@ */ #include "grib_api_internal_cpp.h" -// #include +#include #include /* This is used by make_class.pl diff --git a/src/grib_accessor_class_data_g22order_packing.cc b/src/grib_accessor_class_data_g22order_packing.cc index eab020545..ae3a6d9e3 100644 --- a/src/grib_accessor_class_data_g22order_packing.cc +++ b/src/grib_accessor_class_data_g22order_packing.cc @@ -10,7 +10,7 @@ #include "grib_api_internal.h" -// #include +#include /* This is used by make_class.pl diff --git a/src/grib_accessor_class_gen.cc b/src/grib_accessor_class_gen.cc index c9124a4c1..d18b4e816 100644 --- a/src/grib_accessor_class_gen.cc +++ b/src/grib_accessor_class_gen.cc @@ -17,7 +17,7 @@ //#include #include #include -//#include +#include #include "grib_api_internal_cpp.h" /* diff --git a/src/grib_value.h b/src/grib_value.h index 850541b14..c46044703 100644 --- a/src/grib_value.h +++ b/src/grib_value.h @@ -2,7 +2,7 @@ #include "grib_api_internal.h" //#include -//#include +#include template const char* type_to_string(T) { return "unknown"; } template<> inline const char* type_to_string<>(double) { return "double"; } From f186a58ddb7c1c332d20954d8935910f9717372e Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 20 Apr 2023 15:44:46 +0000 Subject: [PATCH 087/378] ECC-1570: GRIB2: accumulated mass emission of methane from Wetlands --- definitions/grib2/cfVarName.def | 10 ++++++++++ definitions/grib2/name.def | 10 ++++++++++ definitions/grib2/paramId.def | 10 ++++++++++ definitions/grib2/shortName.def | 10 ++++++++++ definitions/grib2/units.def | 10 ++++++++++ tests/grib2_chemicals_aerosols.sh | 4 ++-- 6 files changed, 52 insertions(+), 2 deletions(-) diff --git a/definitions/grib2/cfVarName.def b/definitions/grib2/cfVarName.def index bb993680a..7be28dfd6 100644 --- a/definitions/grib2/cfVarName.def +++ b/definitions/grib2/cfVarName.def @@ -2230,6 +2230,16 @@ is_chemical_srcsink = 1 ; sourceSinkChemicalPhysicalProcess = 10 ; } +#Accumulated mass emission of methane from Wetlands +'acc_e_WLCH4' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 3 ; + constituentType = 2 ; + typeOfStatisticalProcessing = 1 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 10 ; + } #Convective precipitation 'cp' = { discipline = 0 ; diff --git a/definitions/grib2/name.def b/definitions/grib2/name.def index 3c6d23577..65cb9a484 100644 --- a/definitions/grib2/name.def +++ b/definitions/grib2/name.def @@ -2230,6 +2230,16 @@ is_chemical_srcsink = 1 ; sourceSinkChemicalPhysicalProcess = 10 ; } +#Accumulated mass emission of methane from Wetlands +'Accumulated mass emission of methane from Wetlands' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 3 ; + constituentType = 2 ; + typeOfStatisticalProcessing = 1 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 10 ; + } #Convective precipitation 'Convective precipitation' = { discipline = 0 ; diff --git a/definitions/grib2/paramId.def b/definitions/grib2/paramId.def index 6965f3ad0..1340f68a8 100644 --- a/definitions/grib2/paramId.def +++ b/definitions/grib2/paramId.def @@ -2230,6 +2230,16 @@ is_chemical_srcsink = 1 ; sourceSinkChemicalPhysicalProcess = 10 ; } +#Accumulated mass emission of methane from Wetlands +'228109' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 3 ; + constituentType = 2 ; + typeOfStatisticalProcessing = 1 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 10 ; + } #Convective precipitation '228143' = { discipline = 0 ; diff --git a/definitions/grib2/shortName.def b/definitions/grib2/shortName.def index de493f2fe..b3b6ec2fb 100644 --- a/definitions/grib2/shortName.def +++ b/definitions/grib2/shortName.def @@ -2230,6 +2230,16 @@ is_chemical_srcsink = 1 ; sourceSinkChemicalPhysicalProcess = 10 ; } +#Accumulated mass emission of methane from Wetlands +'acc_e_WLCH4' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 3 ; + constituentType = 2 ; + typeOfStatisticalProcessing = 1 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 10 ; + } #Convective precipitation 'cp' = { discipline = 0 ; diff --git a/definitions/grib2/units.def b/definitions/grib2/units.def index af0f728a6..4f2e2c439 100644 --- a/definitions/grib2/units.def +++ b/definitions/grib2/units.def @@ -2230,6 +2230,16 @@ is_chemical_srcsink = 1 ; sourceSinkChemicalPhysicalProcess = 10 ; } +#Accumulated mass emission of methane from Wetlands +'kg m**-2' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 3 ; + constituentType = 2 ; + typeOfStatisticalProcessing = 1 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 10 ; + } #Convective precipitation 'kg m**-2' = { discipline = 0 ; diff --git a/tests/grib2_chemicals_aerosols.sh b/tests/grib2_chemicals_aerosols.sh index f70689e88..192cd6340 100755 --- a/tests/grib2_chemicals_aerosols.sh +++ b/tests/grib2_chemicals_aerosols.sh @@ -124,8 +124,8 @@ ${tools_dir}/grib_ls -p firstSize,secondSize $temp ${tools_dir}/grib_set -s paramId=228104,setLocalDefinition=1,localDefinitionNumber=1 $sample2 $temp grib_check_key_equals $temp paramId,productDefinitionTemplateNumber,is_chemical_srcsink,localUsePresent '228104 76 1 1' -${tools_dir}/grib_set -s stepType=accum,paramId=228104 $sample2 $temp -grib_check_key_equals $temp shortName,productDefinitionTemplateNumber,is_chemical_srcsink 'e_WLCH4 78 1' +${tools_dir}/grib_set -s paramId=228104 $sample2 $temp +grib_check_key_equals $temp shortName,productDefinitionTemplateNumber,is_chemical_srcsink 'e_WLCH4 76 1' ${tools_dir}/grib_set -s setLocalDefinition=1,localDefinitionNumber=1 $temp $temp1 ${tools_dir}/grib_compare -b totalLength,numberOfSection $temp $temp1 grib_check_key_equals $temp1 localUsePresent 1 From 74986efd64fdfd312e8c5ab773f021abc517f63a Mon Sep 17 00:00:00 2001 From: Robert Osinski Date: Wed, 8 Mar 2023 16:07:05 +0000 Subject: [PATCH 088/378] CMake target set_latest_tables_version added --- samples/CMakeLists.txt | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/samples/CMakeLists.txt b/samples/CMakeLists.txt index 2dbf37b46..d1d3fc607 100644 --- a/samples/CMakeLists.txt +++ b/samples/CMakeLists.txt @@ -4,6 +4,20 @@ if(HAVE_INSTALL_ECCODES_SAMPLES) install( FILES ${samples_files} DESTINATION ${ECCODES_SAMPLES_SUFF} PERMISSIONS OWNER_WRITE OWNER_READ GROUP_READ WORLD_READ ) + +# # copy script installSamples.sh to samples folder +# install( PROGRAMS installSamples.sh DESTINATION ${ECCODES_SAMPLES_SUFF} ) + + if(NOT HAVE_MEMFS) + add_custom_target(set_latest_tables_version) + add_custom_command(TARGET set_latest_tables_version + POST_BUILD + COMMAND bash -c "cd ${CMAKE_INSTALL_PREFIX}/${ECCODES_SAMPLES_SUFF}; for F in GRIB2.tmpl *_grib2.tmpl ; do grib_set -s tablesVersion=30 $F tmp; mv tmp $F; done" + VERBATIM + WORKING_DIRECTORY ${CMAKE_INSTALL_PREFIX}/${ECCODES_SAMPLES_SUFF} + ) + endif() + endif() foreach( tmpl ${samples_files} ) From bb1043307b11725d4550187381ff8131b4fe55d6 Mon Sep 17 00:00:00 2001 From: Robert Osinski Date: Thu, 9 Mar 2023 08:33:32 +0000 Subject: [PATCH 089/378] grib2 ifs_samples added to set latest version target --- samples/CMakeLists.txt | 29 +++++++++++++++++++++++------ 1 file changed, 23 insertions(+), 6 deletions(-) diff --git a/samples/CMakeLists.txt b/samples/CMakeLists.txt index d1d3fc607..f35ae6fd1 100644 --- a/samples/CMakeLists.txt +++ b/samples/CMakeLists.txt @@ -4,18 +4,35 @@ if(HAVE_INSTALL_ECCODES_SAMPLES) install( FILES ${samples_files} DESTINATION ${ECCODES_SAMPLES_SUFF} PERMISSIONS OWNER_WRITE OWNER_READ GROUP_READ WORLD_READ ) - -# # copy script installSamples.sh to samples folder -# install( PROGRAMS installSamples.sh DESTINATION ${ECCODES_SAMPLES_SUFF} ) - + # set to the newest GRIB2 tablesVersion if(NOT HAVE_MEMFS) - add_custom_target(set_latest_tables_version) - add_custom_command(TARGET set_latest_tables_version + add_custom_target(set_grib2_latest_tables_version) + add_custom_command(TARGET set_grib2_latest_tables_version POST_BUILD COMMAND bash -c "cd ${CMAKE_INSTALL_PREFIX}/${ECCODES_SAMPLES_SUFF}; for F in GRIB2.tmpl *_grib2.tmpl ; do grib_set -s tablesVersion=30 $F tmp; mv tmp $F; done" VERBATIM WORKING_DIRECTORY ${CMAKE_INSTALL_PREFIX}/${ECCODES_SAMPLES_SUFF} ) + add_custom_command(TARGET set_grib2_latest_tables_version + POST_BUILD + COMMAND bash -c "cd ${CMAKE_INSTALL_PREFIX}/share/eccodes/ifs_samples/grib1_mlgrib2; for F in *_ml.tmpl ; do grib_set -s tablesVersion=30 $F tmp; mv tmp $F; done" + VERBATIM + WORKING_DIRECTORY ${CMAKE_INSTALL_PREFIX}/${ECCODES_SAMPLES_SUFF} + ) + add_custom_command(TARGET set_grib2_latest_tables_version + POST_BUILD + COMMAND bash -c "cd ${CMAKE_INSTALL_PREFIX}/share/eccodes/ifs_samples/grib1_mlgrib2_ieee64; for F in *_ml.tmpl ; do grib_set -s tablesVersion=30 $F tmp; mv tmp $F; done" + VERBATIM + WORKING_DIRECTORY ${CMAKE_INSTALL_PREFIX}/${ECCODES_SAMPLES_SUFF} + ) + if(HAVE_AEC) + add_custom_command(TARGET set_grib2_latest_tables_version + POST_BUILD + COMMAND bash -c "cd ${CMAKE_INSTALL_PREFIX}/share/eccodes/ifs_samples/grib1_mlgrib2_ccsds; for F in *_ml.tmpl gg_sfc_grib2.tmpl ; do grib_set -s tablesVersion=30 $F tmp; mv tmp $F; done" + VERBATIM + WORKING_DIRECTORY ${CMAKE_INSTALL_PREFIX}/${ECCODES_SAMPLES_SUFF} + ) + endif() endif() endif() From c5e99189e5f2cddad543af47d9dacdfe7d4ce48d Mon Sep 17 00:00:00 2001 From: Robert Osinski Date: Thu, 9 Mar 2023 16:21:52 +0000 Subject: [PATCH 090/378] Variable for grib2 tables version added --- samples/CMakeLists.txt | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/samples/CMakeLists.txt b/samples/CMakeLists.txt index f35ae6fd1..497557c59 100644 --- a/samples/CMakeLists.txt +++ b/samples/CMakeLists.txt @@ -6,29 +6,30 @@ if(HAVE_INSTALL_ECCODES_SAMPLES) PERMISSIONS OWNER_WRITE OWNER_READ GROUP_READ WORLD_READ ) # set to the newest GRIB2 tablesVersion if(NOT HAVE_MEMFS) + set(GRB2TABVERS '30') add_custom_target(set_grib2_latest_tables_version) add_custom_command(TARGET set_grib2_latest_tables_version POST_BUILD - COMMAND bash -c "cd ${CMAKE_INSTALL_PREFIX}/${ECCODES_SAMPLES_SUFF}; for F in GRIB2.tmpl *_grib2.tmpl ; do grib_set -s tablesVersion=30 $F tmp; mv tmp $F; done" + COMMAND bash -c "cd ${CMAKE_INSTALL_PREFIX}/${ECCODES_SAMPLES_SUFF}; for F in GRIB2.tmpl *_grib2.tmpl ; do grib_set -s tablesVersion=${GRB2TABVERS} $F tmp; mv tmp $F; done" VERBATIM WORKING_DIRECTORY ${CMAKE_INSTALL_PREFIX}/${ECCODES_SAMPLES_SUFF} ) add_custom_command(TARGET set_grib2_latest_tables_version POST_BUILD - COMMAND bash -c "cd ${CMAKE_INSTALL_PREFIX}/share/eccodes/ifs_samples/grib1_mlgrib2; for F in *_ml.tmpl ; do grib_set -s tablesVersion=30 $F tmp; mv tmp $F; done" + COMMAND bash -c "cd ${CMAKE_INSTALL_PREFIX}/share/eccodes/ifs_samples/grib1_mlgrib2; for F in *_ml.tmpl ; do grib_set -s tablesVersion=${GRB2TABVERS} $F tmp; mv tmp $F; done" VERBATIM WORKING_DIRECTORY ${CMAKE_INSTALL_PREFIX}/${ECCODES_SAMPLES_SUFF} ) add_custom_command(TARGET set_grib2_latest_tables_version POST_BUILD - COMMAND bash -c "cd ${CMAKE_INSTALL_PREFIX}/share/eccodes/ifs_samples/grib1_mlgrib2_ieee64; for F in *_ml.tmpl ; do grib_set -s tablesVersion=30 $F tmp; mv tmp $F; done" + COMMAND bash -c "cd ${CMAKE_INSTALL_PREFIX}/share/eccodes/ifs_samples/grib1_mlgrib2_ieee64; for F in *_ml.tmpl ; do grib_set -s tablesVersion=${GRB2TABVERS} $F tmp; mv tmp $F; done" VERBATIM WORKING_DIRECTORY ${CMAKE_INSTALL_PREFIX}/${ECCODES_SAMPLES_SUFF} ) if(HAVE_AEC) add_custom_command(TARGET set_grib2_latest_tables_version POST_BUILD - COMMAND bash -c "cd ${CMAKE_INSTALL_PREFIX}/share/eccodes/ifs_samples/grib1_mlgrib2_ccsds; for F in *_ml.tmpl gg_sfc_grib2.tmpl ; do grib_set -s tablesVersion=30 $F tmp; mv tmp $F; done" + COMMAND bash -c "cd ${CMAKE_INSTALL_PREFIX}/share/eccodes/ifs_samples/grib1_mlgrib2_ccsds; for F in *_ml.tmpl gg_sfc_grib2.tmpl ; do grib_set -s tablesVersion=${GRB2TABVERS} $F tmp; mv tmp $F; done" VERBATIM WORKING_DIRECTORY ${CMAKE_INSTALL_PREFIX}/${ECCODES_SAMPLES_SUFF} ) From 5ff8e077624be2362a7fbb134be29e22dd9083ce Mon Sep 17 00:00:00 2001 From: Robert Osinski Date: Wed, 29 Mar 2023 13:58:42 +0000 Subject: [PATCH 091/378] Sync with ecmwf develop --- samples/CMakeLists.txt | 32 -------------------------------- 1 file changed, 32 deletions(-) diff --git a/samples/CMakeLists.txt b/samples/CMakeLists.txt index 497557c59..2dbf37b46 100644 --- a/samples/CMakeLists.txt +++ b/samples/CMakeLists.txt @@ -4,38 +4,6 @@ if(HAVE_INSTALL_ECCODES_SAMPLES) install( FILES ${samples_files} DESTINATION ${ECCODES_SAMPLES_SUFF} PERMISSIONS OWNER_WRITE OWNER_READ GROUP_READ WORLD_READ ) - # set to the newest GRIB2 tablesVersion - if(NOT HAVE_MEMFS) - set(GRB2TABVERS '30') - add_custom_target(set_grib2_latest_tables_version) - add_custom_command(TARGET set_grib2_latest_tables_version - POST_BUILD - COMMAND bash -c "cd ${CMAKE_INSTALL_PREFIX}/${ECCODES_SAMPLES_SUFF}; for F in GRIB2.tmpl *_grib2.tmpl ; do grib_set -s tablesVersion=${GRB2TABVERS} $F tmp; mv tmp $F; done" - VERBATIM - WORKING_DIRECTORY ${CMAKE_INSTALL_PREFIX}/${ECCODES_SAMPLES_SUFF} - ) - add_custom_command(TARGET set_grib2_latest_tables_version - POST_BUILD - COMMAND bash -c "cd ${CMAKE_INSTALL_PREFIX}/share/eccodes/ifs_samples/grib1_mlgrib2; for F in *_ml.tmpl ; do grib_set -s tablesVersion=${GRB2TABVERS} $F tmp; mv tmp $F; done" - VERBATIM - WORKING_DIRECTORY ${CMAKE_INSTALL_PREFIX}/${ECCODES_SAMPLES_SUFF} - ) - add_custom_command(TARGET set_grib2_latest_tables_version - POST_BUILD - COMMAND bash -c "cd ${CMAKE_INSTALL_PREFIX}/share/eccodes/ifs_samples/grib1_mlgrib2_ieee64; for F in *_ml.tmpl ; do grib_set -s tablesVersion=${GRB2TABVERS} $F tmp; mv tmp $F; done" - VERBATIM - WORKING_DIRECTORY ${CMAKE_INSTALL_PREFIX}/${ECCODES_SAMPLES_SUFF} - ) - if(HAVE_AEC) - add_custom_command(TARGET set_grib2_latest_tables_version - POST_BUILD - COMMAND bash -c "cd ${CMAKE_INSTALL_PREFIX}/share/eccodes/ifs_samples/grib1_mlgrib2_ccsds; for F in *_ml.tmpl gg_sfc_grib2.tmpl ; do grib_set -s tablesVersion=${GRB2TABVERS} $F tmp; mv tmp $F; done" - VERBATIM - WORKING_DIRECTORY ${CMAKE_INSTALL_PREFIX}/${ECCODES_SAMPLES_SUFF} - ) - endif() - endif() - endif() foreach( tmpl ${samples_files} ) From 165fada62edc2f644872a94938b968cbc877678e Mon Sep 17 00:00:00 2001 From: Robert Osinski Date: Thu, 20 Apr 2023 13:17:03 +0000 Subject: [PATCH 092/378] local section for uerra --- definitions/grib2/local.uerra.1.def | 7 +++++++ definitions/grib2/products_uerra.def | 10 +++++++++- definitions/grib2/section.2.def | 9 +++++++++ definitions/grib2/uerraLocalVersion.table | 1 + 4 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 definitions/grib2/local.uerra.1.def create mode 100644 definitions/grib2/uerraLocalVersion.table diff --git a/definitions/grib2/local.uerra.1.def b/definitions/grib2/local.uerra.1.def new file mode 100644 index 000000000..799877be5 --- /dev/null +++ b/definitions/grib2/local.uerra.1.def @@ -0,0 +1,7 @@ +# UERRA local section + +constant localDefinitionNumber=0; + +ksec1expver[4] experimentVersionNumber = "0002" : dump; +alias marsExpver = experimentVersionNumber ; + diff --git a/definitions/grib2/products_uerra.def b/definitions/grib2/products_uerra.def index ef70ea316..bf1ae7608 100644 --- a/definitions/grib2/products_uerra.def +++ b/definitions/grib2/products_uerra.def @@ -34,7 +34,14 @@ if(typeOfFirstFixedSurface == 151 && typeOfSecondFixedSurface == 151) { #alias mars.levelist = level; } -alias mars.expver = marsExpver; +# if there is a local section, we take the experimentVersionNumber +if(localUsePresent == 1){ + alias mars.expver = experimentVersionNumber; +} +if(localUsePresent == 0){ + alias mars.expver = marsExpver; +} + alias mars.class = marsClass; alias mars.param = paramId; alias mars.origin = centre; @@ -89,3 +96,4 @@ concept marsStream(unknown) { alias mars.stream = marsStream; alias mars.type = marsType; + diff --git a/definitions/grib2/section.2.def b/definitions/grib2/section.2.def index 07852aaca..ae3948495 100644 --- a/definitions/grib2/section.2.def +++ b/definitions/grib2/section.2.def @@ -16,6 +16,12 @@ if ( addEmptySection2 == 0 ) { if ( grib2LocalSectionPresent==1 or ( section2Length>5 or new() ) ) { alias section2Used=one; + if(productionStatusOfProcessedData == 8 || productionStatusOfProcessedData == 9) { + # uerra + codetable[2] uerraLocalVersion 'grib2/uerraLocalVersion.table' = 1 : dump; + template uerraSection "grib2/local.uerra.[uerraLocalVersion:l].def"; + } + if(productionStatusOfProcessedData == 4 || productionStatusOfProcessedData == 5) { # This is TIGGE-LAM because of the productionStatusOfProcessedData and the non-empty section 2 codetable[2] tiggeLocalVersion 'grib2/tiggeLocalVersion.table' = 1 : dump; @@ -28,7 +34,9 @@ if ( addEmptySection2 == 0 ) { template crraSection "grib2/local.crra.[crraLocalVersion:l].def"; } +# if(productionStatusOfProcessedData != 8 || productionStatusOfProcessedData != 9) { codetable[2] grib2LocalSectionNumber 'grib2/grib2LocalSectionNumber.[centreForLocal:l].table' = 1 : dump; + if (grib2LocalSectionNumber!=0) { template_nofail local "grib2/local.[centreForLocal:l].def"; @@ -36,6 +44,7 @@ if ( addEmptySection2 == 0 ) { constant deleteLocalDefinition=1; } position offsetAfterCentreLocalSection; +# } } } diff --git a/definitions/grib2/uerraLocalVersion.table b/definitions/grib2/uerraLocalVersion.table new file mode 100644 index 000000000..4b9a72922 --- /dev/null +++ b/definitions/grib2/uerraLocalVersion.table @@ -0,0 +1 @@ +1 UERRA UERRA with expver From c37009f15d033332606f5e0027f748987e23d8a7 Mon Sep 17 00:00:00 2001 From: Robert Osinski Date: Thu, 20 Apr 2023 13:21:07 +0000 Subject: [PATCH 093/378] formatting --- definitions/grib2/products_uerra.def | 1 - definitions/grib2/section.2.def | 5 +---- 2 files changed, 1 insertion(+), 5 deletions(-) diff --git a/definitions/grib2/products_uerra.def b/definitions/grib2/products_uerra.def index bf1ae7608..4c3352382 100644 --- a/definitions/grib2/products_uerra.def +++ b/definitions/grib2/products_uerra.def @@ -96,4 +96,3 @@ concept marsStream(unknown) { alias mars.stream = marsStream; alias mars.type = marsType; - diff --git a/definitions/grib2/section.2.def b/definitions/grib2/section.2.def index ae3948495..6db7d8bc3 100644 --- a/definitions/grib2/section.2.def +++ b/definitions/grib2/section.2.def @@ -17,7 +17,7 @@ if ( addEmptySection2 == 0 ) { alias section2Used=one; if(productionStatusOfProcessedData == 8 || productionStatusOfProcessedData == 9) { - # uerra + # This for adding an expver other than prod/test to UERRA codetable[2] uerraLocalVersion 'grib2/uerraLocalVersion.table' = 1 : dump; template uerraSection "grib2/local.uerra.[uerraLocalVersion:l].def"; } @@ -34,17 +34,14 @@ if ( addEmptySection2 == 0 ) { template crraSection "grib2/local.crra.[crraLocalVersion:l].def"; } -# if(productionStatusOfProcessedData != 8 || productionStatusOfProcessedData != 9) { codetable[2] grib2LocalSectionNumber 'grib2/grib2LocalSectionNumber.[centreForLocal:l].table' = 1 : dump; - if (grib2LocalSectionNumber!=0) { template_nofail local "grib2/local.[centreForLocal:l].def"; } else { constant deleteLocalDefinition=1; } position offsetAfterCentreLocalSection; -# } } } From 92e62e540a5fea948f4fe9d3dc8730622948707b Mon Sep 17 00:00:00 2001 From: Robert Osinski Date: Thu, 20 Apr 2023 13:23:49 +0000 Subject: [PATCH 094/378] more formatting --- definitions/grib2/section.2.def | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/definitions/grib2/section.2.def b/definitions/grib2/section.2.def index 6db7d8bc3..f7da1537a 100644 --- a/definitions/grib2/section.2.def +++ b/definitions/grib2/section.2.def @@ -35,7 +35,7 @@ if ( addEmptySection2 == 0 ) { } codetable[2] grib2LocalSectionNumber 'grib2/grib2LocalSectionNumber.[centreForLocal:l].table' = 1 : dump; - + if (grib2LocalSectionNumber!=0) { template_nofail local "grib2/local.[centreForLocal:l].def"; } else { From 55bf28d38e01403b4146911d9569f8de1d65bd22 Mon Sep 17 00:00:00 2001 From: Robert Osinski Date: Fri, 21 Apr 2023 09:35:16 +0000 Subject: [PATCH 095/378] Wrong marsExpver with local section fixed, test added --- definitions/grib2/products_8.def | 4 ++++ definitions/grib2/products_9.def | 4 ++++ tests/CMakeLists.txt | 1 + tests/grib_ecc-1571.sh | 38 ++++++++++++++++++++++++++++++++ 4 files changed, 47 insertions(+) create mode 100755 tests/grib_ecc-1571.sh diff --git a/definitions/grib2/products_8.def b/definitions/grib2/products_8.def index a1c28ffc7..a700457b5 100644 --- a/definitions/grib2/products_8.def +++ b/definitions/grib2/products_8.def @@ -1,5 +1,9 @@ # (C) Copyright 2005- ECMWF. # Uncertainties in ensembles of regional re-analysis project (UERRA) +if(localUsePresent == 0){ constant marsExpver = 'prod'; +} else { +constant marsExpver = experimentVersionNumber; +} include "grib2/products_uerra.def" diff --git a/definitions/grib2/products_9.def b/definitions/grib2/products_9.def index 3b2d3a4de..21b99733e 100644 --- a/definitions/grib2/products_9.def +++ b/definitions/grib2/products_9.def @@ -1,5 +1,9 @@ # (C) Copyright 2005- ECMWF. # Uncertainties in ensembles of regional re-analysis project test (UERRA) +if(localUsePresent == 0){ constant marsExpver = 'test'; +} else { +constant marsExpver = experimentVersionNumber; +} include "grib2/products_uerra.def" diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 66210fd50..45af8a77d 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -82,6 +82,7 @@ if( HAVE_BUILD_TOOLS ) grib_packing_order filter_substr grib_uerra + grib_ecc-1571 grib_s2s grib_fire # grib_true_imagery diff --git a/tests/grib_ecc-1571.sh b/tests/grib_ecc-1571.sh new file mode 100755 index 000000000..262dc82ce --- /dev/null +++ b/tests/grib_ecc-1571.sh @@ -0,0 +1,38 @@ +#!/bin/sh +# (C) Copyright 2005- ECMWF. +# +# This software is licensed under the terms of the Apache Licence Version 2.0 +# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. +# +# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by +# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. +# + +. ./include.ctest.sh + +REDIRECT=/dev/null + +label="prod_ECC-1571" # Change prod to bufr or grib etc +tempGrib1=temp1.$label.grib2 +tempGrib2=temp2.$label.grib2 +sample_grib2=$ECCODES_SAMPLES_PATH/GRIB2.tmpl + +# 1st we create a sample file for UERRA with centre lfpw +${tools_dir}/grib_set -s centre=lfpw,productionStatusOfProcessedData=8 ${sample_grib2} ${tempGrib1} +# Now we use the UERRA sample and add a local section to it +${tools_dir}/grib_set -s setLocalDefinition=1,grib2LocalSectionNumber=0,uerraLocalVersion=1 ${tempGrib1} ${tempGrib2} + +# We should have a local section with uerraLocalVersion=1,experimentVersionNumber=0002 +grib_check_key_equals ${tempGrib2} uerraLocalVersion,experimentVersionNumber "1 0002" +grib_check_key_equals ${tempGrib2} 'marsExpver,mars.expver' '0002 0002' + +# set other expver +${tools_dir}/grib_set -s setLocalDefinition=1,grib2LocalSectionNumber=0,uerraLocalVersion=1,experimentVersionNumber=1234 ${tempGrib1} ${tempGrib2} +grib_check_key_equals ${tempGrib2} uerraLocalVersion,experimentVersionNumber "1 1234" + +rm -f ${tempGrib1} ${tempGrib2} + + + + + From 3a9213ab03091cdea33f9dbef014d768623e5617 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 21 Apr 2023 11:16:06 +0100 Subject: [PATCH 096/378] Compiler warnings: Microsoft Visual --- src/grib_accessor_class_g2level.cc | 4 ++-- src/grib_accessor_class_g2lon.cc | 2 +- src/grib_accessor_class_global_gaussian.cc | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/grib_accessor_class_g2level.cc b/src/grib_accessor_class_g2level.cc index 0d84e8e45..417a31dfc 100644 --- a/src/grib_accessor_class_g2level.cc +++ b/src/grib_accessor_class_g2level.cc @@ -303,8 +303,8 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) //value_first = value_first + 0.5; //round up // TODO(masn): These maxima should come from the respective accessors - const int64_t scaled_value_max = (1UL << 32) - 1; // scaledValueOf*FixedSurface is 4 octets - const int64_t scale_factor_max = (1UL << 8) - 1; // scaleFactorOf*FixedSurface is 1 octet + const int64_t scaled_value_max = (1ULL << 32) - 1; // scaledValueOf*FixedSurface is 4 octets + const int64_t scale_factor_max = (1ULL << 8) - 1; // scaleFactorOf*FixedSurface is 1 octet int64_t lscaled_value=0, lscale_factor=0; ret = compute_scaled_value_and_scale_factor(value_first, scaled_value_max, scale_factor_max, &lscaled_value, &lscale_factor); diff --git a/src/grib_accessor_class_g2lon.cc b/src/grib_accessor_class_g2lon.cc index 03baff9bf..7ffed21d9 100644 --- a/src/grib_accessor_class_g2lon.cc +++ b/src/grib_accessor_class_g2lon.cc @@ -184,7 +184,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) else { if (value < 0) value += 360; - longitude = value * 1000000; + longitude = (long)(value * 1000000); } return grib_set_long(grib_handle_of_accessor(a), self->longitude, longitude); } diff --git a/src/grib_accessor_class_global_gaussian.cc b/src/grib_accessor_class_global_gaussian.cc index 90d69655b..3596dae17 100644 --- a/src/grib_accessor_class_global_gaussian.cc +++ b/src/grib_accessor_class_global_gaussian.cc @@ -373,8 +373,8 @@ static int pack_long(grib_accessor* a, const long* val, size_t* len) ddi = (360.0 * dfactor) / dNi; dlonlast = (360.0 * dfactor) - ddi + 0.5; ddi = ddi + 0.5; - di = ddi; - lonlast = dlonlast; + di = (long)ddi; + lonlast = (long)dlonlast; grib_context_free(c, lats); From 4fdfca2cf78e5a4293e85838bb3a2ff076955e8c Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 21 Apr 2023 11:26:35 +0100 Subject: [PATCH 097/378] ECC-1571: GRIB2: Allow new expver=0002 for class=ur and origin=lfpw --- tests/CMakeLists.txt | 2 +- tests/grib_ecc-1571.sh | 22 ++++++++++------------ 2 files changed, 11 insertions(+), 13 deletions(-) diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 45af8a77d..2e14e0a3d 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -82,7 +82,6 @@ if( HAVE_BUILD_TOOLS ) grib_packing_order filter_substr grib_uerra - grib_ecc-1571 grib_s2s grib_fire # grib_true_imagery @@ -110,6 +109,7 @@ if( HAVE_BUILD_TOOLS ) grib_ecc-1319 grib_ecc-1406 grib_ecc-1560 + grib_ecc-1571 bufr_ecc-1028 bufr_ecc-1195 bufr_ecc-1259 diff --git a/tests/grib_ecc-1571.sh b/tests/grib_ecc-1571.sh index 262dc82ce..80865ae78 100755 --- a/tests/grib_ecc-1571.sh +++ b/tests/grib_ecc-1571.sh @@ -10,27 +10,25 @@ . ./include.ctest.sh -REDIRECT=/dev/null - -label="prod_ECC-1571" # Change prod to bufr or grib etc -tempGrib1=temp1.$label.grib2 -tempGrib2=temp2.$label.grib2 +label="grib_ecc-1571" +tempGribA=temp1.$label.grib2 +tempGribB=temp2.$label.grib2 sample_grib2=$ECCODES_SAMPLES_PATH/GRIB2.tmpl # 1st we create a sample file for UERRA with centre lfpw -${tools_dir}/grib_set -s centre=lfpw,productionStatusOfProcessedData=8 ${sample_grib2} ${tempGrib1} +${tools_dir}/grib_set -s centre=lfpw,productionStatusOfProcessedData=8 ${sample_grib2} ${tempGribA} # Now we use the UERRA sample and add a local section to it -${tools_dir}/grib_set -s setLocalDefinition=1,grib2LocalSectionNumber=0,uerraLocalVersion=1 ${tempGrib1} ${tempGrib2} +${tools_dir}/grib_set -s setLocalDefinition=1,grib2LocalSectionNumber=0,uerraLocalVersion=1 ${tempGribA} ${tempGribB} # We should have a local section with uerraLocalVersion=1,experimentVersionNumber=0002 -grib_check_key_equals ${tempGrib2} uerraLocalVersion,experimentVersionNumber "1 0002" -grib_check_key_equals ${tempGrib2} 'marsExpver,mars.expver' '0002 0002' +grib_check_key_equals ${tempGribB} uerraLocalVersion,experimentVersionNumber "1 0002" +grib_check_key_equals ${tempGribB} 'marsExpver,mars.expver' '0002 0002' # set other expver -${tools_dir}/grib_set -s setLocalDefinition=1,grib2LocalSectionNumber=0,uerraLocalVersion=1,experimentVersionNumber=1234 ${tempGrib1} ${tempGrib2} -grib_check_key_equals ${tempGrib2} uerraLocalVersion,experimentVersionNumber "1 1234" +${tools_dir}/grib_set -s setLocalDefinition=1,grib2LocalSectionNumber=0,uerraLocalVersion=1,experimentVersionNumber=1234 ${tempGribA} ${tempGribB} +grib_check_key_equals ${tempGribB} uerraLocalVersion,experimentVersionNumber "1 1234" -rm -f ${tempGrib1} ${tempGrib2} +rm -f ${tempGribA} ${tempGribB} From ddf8db8bb857527ed0dca8be84e69840ed5b20cd Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 21 Apr 2023 13:47:47 +0100 Subject: [PATCH 098/378] Improved error message re disabled functionality --- src/grib_accessor_class_data_ccsds_packing.cc | 28 +++++++++---------- ...ib_accessor_class_data_jpeg2000_packing.cc | 11 ++++++-- src/grib_accessor_class_data_png_packing.cc | 3 +- 3 files changed, 22 insertions(+), 20 deletions(-) diff --git a/src/grib_accessor_class_data_ccsds_packing.cc b/src/grib_accessor_class_data_ccsds_packing.cc index d1e64e394..db40ad34b 100644 --- a/src/grib_accessor_class_data_ccsds_packing.cc +++ b/src/grib_accessor_class_data_ccsds_packing.cc @@ -9,7 +9,6 @@ */ #include "grib_api_internal_cpp.h" -// #include /* This is used by make_class.pl @@ -174,18 +173,17 @@ static void init_class(grib_accessor_class* c) static void init(grib_accessor* a, const long v, grib_arguments* args) { grib_accessor_data_ccsds_packing* self = (grib_accessor_data_ccsds_packing*)a; - - self->number_of_values = grib_arguments_get_name(grib_handle_of_accessor(a), args, self->carg++); - self->reference_value = grib_arguments_get_name(grib_handle_of_accessor(a), args, self->carg++); - self->binary_scale_factor = grib_arguments_get_name(grib_handle_of_accessor(a), args, self->carg++); - self->decimal_scale_factor = grib_arguments_get_name(grib_handle_of_accessor(a), args, self->carg++); - self->bits_per_value = grib_arguments_get_name(grib_handle_of_accessor(a), args, self->carg++); - - self->number_of_data_points = grib_arguments_get_name(grib_handle_of_accessor(a), args, self->carg++); - - self->ccsds_flags = grib_arguments_get_name(grib_handle_of_accessor(a), args, self->carg++); - self->ccsds_block_size = grib_arguments_get_name(grib_handle_of_accessor(a), args, self->carg++); - self->ccsds_rsi = grib_arguments_get_name(grib_handle_of_accessor(a), args, self->carg++); + grib_handle* h = grib_handle_of_accessor(a); + + self->number_of_values = grib_arguments_get_name(h, args, self->carg++); + self->reference_value = grib_arguments_get_name(h, args, self->carg++); + self->binary_scale_factor = grib_arguments_get_name(h, args, self->carg++); + self->decimal_scale_factor = grib_arguments_get_name(h, args, self->carg++); + self->bits_per_value = grib_arguments_get_name(h, args, self->carg++); + self->number_of_data_points = grib_arguments_get_name(h, args, self->carg++); + self->ccsds_flags = grib_arguments_get_name(h, args, self->carg++); + self->ccsds_block_size = grib_arguments_get_name(h, args, self->carg++); + self->ccsds_rsi = grib_arguments_get_name(h, args, self->carg++); a->flags |= GRIB_ACCESSOR_FLAG_DATA; } @@ -193,7 +191,7 @@ static void init(grib_accessor* a, const long v, grib_arguments* args) static int value_count(grib_accessor* a, long* count) { grib_accessor_data_ccsds_packing* self = (grib_accessor_data_ccsds_packing*)a; - *count = 0; + *count = 0; return grib_get_long_internal(grib_handle_of_accessor(a), self->number_of_values, count); } @@ -685,7 +683,7 @@ static int unpack_double_element_set(grib_accessor* a, const size_t* index_array static void print_error_feature_not_enabled(grib_context* c) { grib_context_log(c, GRIB_LOG_ERROR, - "grib_accessor_data_ccsds_packing: CCSDS support not enabled. " + "CCSDS support not enabled. " "Please rebuild with -DENABLE_AEC=ON (Adaptive Entropy Coding library)"); } static int pack_double(grib_accessor* a, const double* val, size_t* len) diff --git a/src/grib_accessor_class_data_jpeg2000_packing.cc b/src/grib_accessor_class_data_jpeg2000_packing.cc index a95735ac8..20f550666 100644 --- a/src/grib_accessor_class_data_jpeg2000_packing.cc +++ b/src/grib_accessor_class_data_jpeg2000_packing.cc @@ -583,20 +583,25 @@ static int pack_double(grib_accessor* a, const double* cval, size_t* len) } #else +static void print_error_feature_not_enabled(grib_context* c) +{ + grib_context_log(c, GRIB_LOG_ERROR, + "JPEG support not enabled. Please rebuild with -DENABLE_JPG=ON"); +} static int unpack_float(grib_accessor* a, float* val, size_t* len) { - grib_context_log(a->context, GRIB_LOG_ERROR, "JPEG support not enabled."); + print_error_feature_not_enabled(a->context); return GRIB_FUNCTIONALITY_NOT_ENABLED; } static int unpack_double(grib_accessor* a, double* val, size_t* len) { - grib_context_log(a->context, GRIB_LOG_ERROR, "JPEG support not enabled."); + print_error_feature_not_enabled(a->context); return GRIB_FUNCTIONALITY_NOT_ENABLED; } static int pack_double(grib_accessor* a, const double* val, size_t* len) { - grib_context_log(a->context, GRIB_LOG_ERROR, "JPEG support not enabled."); + print_error_feature_not_enabled(a->context); return GRIB_FUNCTIONALITY_NOT_ENABLED; } diff --git a/src/grib_accessor_class_data_png_packing.cc b/src/grib_accessor_class_data_png_packing.cc index 0485b2b21..de8cd040f 100644 --- a/src/grib_accessor_class_data_png_packing.cc +++ b/src/grib_accessor_class_data_png_packing.cc @@ -765,8 +765,7 @@ static int unpack_double_element_set(grib_accessor* a, const size_t* index_array static void print_error_feature_not_enabled(grib_context* c) { grib_context_log(c, GRIB_LOG_ERROR, - "grib_accessor_data_png_packing: PNG support not enabled. " - "Please rebuild with -DENABLE_PNG=ON"); + "PNG support not enabled. Please rebuild with -DENABLE_PNG=ON"); } static int unpack_double(grib_accessor* a, double* val, size_t* len) From b1bea080ee6801b4d2be8ca093ccbc4839674ead Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 21 Apr 2023 14:09:28 +0100 Subject: [PATCH 099/378] Fix header files and add copyright notices --- src/grib_accessor.h | 12 +++++++++++- src/grib_accessor_class_data_apply_bitmap.cc | 2 -- src/grib_accessor_class_data_complex_packing.cc | 1 - src/grib_accessor_class_gen.cc | 2 -- src/grib_api_internal_cpp.h | 10 ++++++++++ src/grib_bits_any_endian_simple.h | 10 +++++++++- src/grib_ieeefloat.h | 10 ++++++++++ src/grib_value.cc | 5 ++++- src/grib_value.h | 11 ++++++++++- 9 files changed, 54 insertions(+), 9 deletions(-) diff --git a/src/grib_accessor.h b/src/grib_accessor.h index f91b6312b..10fa228f7 100644 --- a/src/grib_accessor.h +++ b/src/grib_accessor.h @@ -1,4 +1,14 @@ -# pragma once +/* + * (C) Copyright 2005- ECMWF. + * + * This software is licensed under the terms of the Apache Licence Version 2.0 + * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. + * + * In applying this licence, ECMWF does not waive the privileges and immunities granted to it by + * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. + */ + +#pragma once #include "grib_api_internal.h" diff --git a/src/grib_accessor_class_data_apply_bitmap.cc b/src/grib_accessor_class_data_apply_bitmap.cc index 5ea09dbe7..e64f51780 100644 --- a/src/grib_accessor_class_data_apply_bitmap.cc +++ b/src/grib_accessor_class_data_apply_bitmap.cc @@ -9,8 +9,6 @@ */ #include "grib_api_internal_cpp.h" -// #include -#include /* This is used by make_class.pl diff --git a/src/grib_accessor_class_data_complex_packing.cc b/src/grib_accessor_class_data_complex_packing.cc index 3b45cb480..98e61e0fa 100644 --- a/src/grib_accessor_class_data_complex_packing.cc +++ b/src/grib_accessor_class_data_complex_packing.cc @@ -9,7 +9,6 @@ */ #include "grib_api_internal_cpp.h" -#include #include /* This is used by make_class.pl diff --git a/src/grib_accessor_class_gen.cc b/src/grib_accessor_class_gen.cc index d18b4e816..f63983fc9 100644 --- a/src/grib_accessor_class_gen.cc +++ b/src/grib_accessor_class_gen.cc @@ -14,10 +14,8 @@ * Shahram Najm * ***************************************************************************/ #include "grib_api_internal.h" -//#include #include #include -#include #include "grib_api_internal_cpp.h" /* diff --git a/src/grib_api_internal_cpp.h b/src/grib_api_internal_cpp.h index 47ea00874..4724b050c 100644 --- a/src/grib_api_internal_cpp.h +++ b/src/grib_api_internal_cpp.h @@ -1,3 +1,13 @@ +/* + * (C) Copyright 2005- ECMWF. + * + * This software is licensed under the terms of the Apache Licence Version 2.0 + * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. + * + * In applying this licence, ECMWF does not waive the privileges and immunities granted to it by + * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. + */ + #pragma once #include "grib_accessor.h" diff --git a/src/grib_bits_any_endian_simple.h b/src/grib_bits_any_endian_simple.h index 369b87067..93ed509a5 100644 --- a/src/grib_bits_any_endian_simple.h +++ b/src/grib_bits_any_endian_simple.h @@ -1,4 +1,12 @@ -// ECC-1467 +/* + * (C) Copyright 2005- ECMWF. + * + * This software is licensed under the terms of the Apache Licence Version 2.0 + * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. + * + * In applying this licence, ECMWF does not waive the privileges and immunities granted to it by + * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. + */ #pragma once diff --git a/src/grib_ieeefloat.h b/src/grib_ieeefloat.h index 4967a6129..74944f2ac 100644 --- a/src/grib_ieeefloat.h +++ b/src/grib_ieeefloat.h @@ -1,3 +1,13 @@ +/* + * (C) Copyright 2005- ECMWF. + * + * This software is licensed under the terms of the Apache Licence Version 2.0 + * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. + * + * In applying this licence, ECMWF does not waive the privileges and immunities granted to it by + * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. + */ + #pragma once #include "grib_api_internal.h" diff --git a/src/grib_value.cc b/src/grib_value.cc index fc01822ef..075a2c6a1 100644 --- a/src/grib_value.cc +++ b/src/grib_value.cc @@ -10,7 +10,10 @@ /*************************************************************************** * Jean Baptiste Filippi - 01.11.2005 ***************************************************************************/ -#include "grib_api_internal_cpp.h" + +#include "grib_api_internal.h" +#include "grib_value.h" +#include "grib_accessor.h" #include /* Note: A fast cut-down version of strcmp which does NOT return -1 */ diff --git a/src/grib_value.h b/src/grib_value.h index c46044703..f2fd079be 100644 --- a/src/grib_value.h +++ b/src/grib_value.h @@ -1,7 +1,16 @@ +/* + * (C) Copyright 2005- ECMWF. + * + * This software is licensed under the terms of the Apache Licence Version 2.0 + * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. + * + * In applying this licence, ECMWF does not waive the privileges and immunities granted to it by + * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. + */ + #pragma once #include "grib_api_internal.h" -//#include #include template const char* type_to_string(T) { return "unknown"; } From 078ee6aee32475e499b4fb6b22962e73b03ccd88 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 21 Apr 2023 14:52:47 +0100 Subject: [PATCH 100/378] Add WMO note re experimental template --- definitions/grib2/template.5.61.def | 7 +++++-- definitions/grib2/template.7.61.def | 6 +++++- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/definitions/grib2/template.5.61.def b/definitions/grib2/template.5.61.def index 3565ebea7..9799fd5ad 100644 --- a/definitions/grib2/template.5.61.def +++ b/definitions/grib2/template.5.61.def @@ -1,8 +1,11 @@ # (C) Copyright 2005- ECMWF. # Grid point data - Simple packing with logarithmic preprocessing -constant typeOfPreProcessing=1; + +# Note from WMO document: +# This template is experimental, was not validated at the time of publication and should be used only for bilateral previously agreed tests +constant typeOfPreProcessing = 1; include "grib2/template.5.packing.def"; -ieeefloat preProcessingParameter : read_only; +ieeefloat preProcessingParameter : read_only; diff --git a/definitions/grib2/template.7.61.def b/definitions/grib2/template.7.61.def index 5fd1c1afe..58f6f93e6 100644 --- a/definitions/grib2/template.7.61.def +++ b/definitions/grib2/template.7.61.def @@ -1,6 +1,10 @@ # (C) Copyright 2005- ECMWF. -# TEMPLATE 7.6, Grid point data - simple packing with preprocessing +# TEMPLATE 7.61, Grid point data - simple packing with logarithm pre-processing + +# Note from WMO document: +# This template is experimental, was not validated at the time of publication and should be used only for bilateral previously agreed tests + # Octets 6-nn : Binary data values - binary string, with each (scaled) meta codedValues data_g2simple_packing_with_preprocessing( From 2721644f76288636653b2c5efc3f7d668043a536 Mon Sep 17 00:00:00 2001 From: Eugen Betke Date: Fri, 21 Apr 2023 14:15:19 +0000 Subject: [PATCH 101/378] ECC-1472: remove re-packing form grib-bitmap test --- tests/grib_bitmap.sh | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/tests/grib_bitmap.sh b/tests/grib_bitmap.sh index df9422502..e2765806e 100755 --- a/tests/grib_bitmap.sh +++ b/tests/grib_bitmap.sh @@ -126,7 +126,8 @@ grib_check_key_equals $temp2 bitsPerValue 9 # Note: The input file has bpv=9 # Simple to grid_complex tempComplex=temp.grib_bitmap.complex.grib -${tools_dir}/grib_set -r -s packingType=grid_complex $tempSimple $tempComplex +#${tools_dir}/grib_set -r -s packingType=grid_complex $tempSimple $tempComplex # TODO: fix re-packing +${tools_dir}/grib_set -s packingType=grid_complex $tempSimple $tempComplex grib_check_key_equals $tempComplex packingType,bitmapPresent,numberOfMissing,numberOfValues,numberOfPoints "grid_complex 1 556901 481339 1038240" stats=`${tools_dir}/grib_get -F%.2f -p max,min,avg $tempComplex` [ "$stats" = "2.81 0.00 0.30" ] @@ -134,7 +135,8 @@ rm -f $tempComplex # Simple to grid_complex_spatial_differencing tempComplexSD=temp.grib_bitmap.complexSD.grib -${tools_dir}/grib_set -r -s packingType=grid_complex_spatial_differencing $tempSimple $tempComplexSD +#${tools_dir}/grib_set -r -s packingType=grid_complex_spatial_differencing $tempSimple $tempComplexSD # TODO: fix re-packing +${tools_dir}/grib_set -s packingType=grid_complex_spatial_differencing $tempSimple $tempComplexSD grib_check_key_equals $tempComplexSD packingType "grid_complex_spatial_differencing" grib_check_key_equals $tempComplexSD bitmapPresent,numberOfMissing,numberOfValues,numberOfPoints "1 556901 481339 1038240" stats=`${tools_dir}/grib_get -F%.2f -p max,min,avg $tempComplexSD` From 47a82e181c513670c189a0e071860ebf7d9631d2 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 21 Apr 2023 16:21:33 +0100 Subject: [PATCH 102/378] Cleanup --- ...ata_g2simple_packing_with_preprocessing.cc | 150 ++++++++---------- 1 file changed, 70 insertions(+), 80 deletions(-) diff --git a/src/grib_accessor_class_data_g2simple_packing_with_preprocessing.cc b/src/grib_accessor_class_data_g2simple_packing_with_preprocessing.cc index 55549fdd9..898bc712c 100644 --- a/src/grib_accessor_class_data_g2simple_packing_with_preprocessing.cc +++ b/src/grib_accessor_class_data_g2simple_packing_with_preprocessing.cc @@ -8,15 +8,10 @@ * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. */ -/*********************************** - * Enrico Fucile - **********************************/ - #include "grib_api_internal.h" -#define DIRECT 0 +#define DIRECT 0 #define INVERSE 1 - /* This is used by make_class.pl @@ -33,9 +28,6 @@ */ -static int pre_processing_func(double* values, long length, long pre_processing, - double* pre_processing_parameter, int mode); - /* START_CLASS_IMP */ /* @@ -176,24 +168,88 @@ static void init_class(grib_accessor_class* c) static void init(grib_accessor* a, const long v, grib_arguments* args) { grib_accessor_data_g2simple_packing_with_preprocessing* self = (grib_accessor_data_g2simple_packing_with_preprocessing*)a; - self->pre_processing = grib_arguments_get_name(grib_handle_of_accessor(a), args, self->carg++); - self->pre_processing_parameter = grib_arguments_get_name(grib_handle_of_accessor(a), args, self->carg++); + self->pre_processing = grib_arguments_get_name(grib_handle_of_accessor(a), args, self->carg++); + self->pre_processing_parameter = grib_arguments_get_name(grib_handle_of_accessor(a), args, self->carg++); a->flags |= GRIB_ACCESSOR_FLAG_DATA; } static int value_count(grib_accessor* a, long* n_vals) { grib_accessor_data_g2simple_packing_with_preprocessing* self = (grib_accessor_data_g2simple_packing_with_preprocessing*)a; - *n_vals = 0; + *n_vals = 0; return grib_get_long_internal(grib_handle_of_accessor(a), self->number_of_values, n_vals); } +static int pre_processing_func(double* values, long length, long pre_processing, + double* pre_processing_parameter, int mode) +{ + int i = 0, ret = 0; + double min = values[0]; + double next_min = values[0]; + Assert(length > 0); + + switch (pre_processing) { + /* NONE */ + case 0: + break; + /* LOGARITHM */ + case 1: + if (mode == DIRECT) { + for (i = 0; i < length; i++) { + if (values[i] < min) + min = values[i]; + if (values[i] > next_min) + next_min = values[i]; + } + for (i = 0; i < length; i++) { + if (values[i] > min && values[i] < next_min) + next_min = values[i]; + } + if (min > 0) { + *pre_processing_parameter = 0; + for (i = 0; i < length; i++) { + DebugAssert(values[i] > 0); + values[i] = log(values[i]); + } + } + else { + double ppp = 0; + *pre_processing_parameter = next_min - 2 * min; + if (next_min == min) + return ret; + ppp = *pre_processing_parameter; + for (i = 0; i < length; i++) { + DebugAssert((values[i] + ppp) > 0); + values[i] = log(values[i] + ppp); + } + } + } + else { + Assert(mode == INVERSE); + if (*pre_processing_parameter == 0) { + for (i = 0; i < length; i++) + values[i] = exp(values[i]); + } + else { + for (i = 0; i < length; i++) + values[i] = exp(values[i]) - *pre_processing_parameter; + } + } + break; + default: + ret = GRIB_NOT_IMPLEMENTED; + break; + } + + return ret; +} + static int unpack_double(grib_accessor* a, double* val, size_t* len) { grib_accessor_data_g2simple_packing_with_preprocessing* self = (grib_accessor_data_g2simple_packing_with_preprocessing*)a; - grib_accessor_class* super = *(a->cclass->super); - grib_accessor_class* super2 = NULL; + grib_accessor_class* super = *(a->cclass->super); + grib_accessor_class* super2 = NULL; size_t n_vals = 0; long nn = 0; @@ -215,12 +271,10 @@ static int unpack_double(grib_accessor* a, double* val, size_t* len) self->dirty = 0; if ((err = grib_get_long_internal(grib_handle_of_accessor(a), self->pre_processing, &pre_processing)) != GRIB_SUCCESS) { - grib_context_log(a->context, GRIB_LOG_ERROR, "Accessor %s cannont gather value for %s error %d \n", a->name, self->pre_processing, err); return err; } if ((err = grib_get_double_internal(grib_handle_of_accessor(a), self->pre_processing_parameter, &pre_processing_parameter)) != GRIB_SUCCESS) { - grib_context_log(a->context, GRIB_LOG_ERROR, "Accessor %s cannont gather value for %s error %d \n", a->name, self->pre_processing_parameter, err); return err; } @@ -271,67 +325,3 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) return GRIB_SUCCESS; } - -static int pre_processing_func(double* values, long length, long pre_processing, - double* pre_processing_parameter, int mode) -{ - int i; - int ret = 0; - double min = values[0]; - double next_min = values[0]; - Assert(length > 0); - - switch (pre_processing) { - /* NONE */ - case 0: - break; - /* LOGARITHM */ - case 1: - if (mode == DIRECT) { - for (i = 0; i < length; i++) { - if (values[i] < min) - min = values[i]; - if (values[i] > next_min) - next_min = values[i]; - } - for (i = 0; i < length; i++) { - if (values[i] > min && values[i] < next_min) - next_min = values[i]; - } - if (min > 0) { - *pre_processing_parameter = 0; - for (i = 0; i < length; i++) { - DebugAssert(values[i] > 0); - values[i] = log(values[i]); - } - } - else { - double ppp = 0; - *pre_processing_parameter = next_min - 2 * min; - if (next_min == min) - return ret; - ppp = *pre_processing_parameter; - for (i = 0; i < length; i++) { - DebugAssert((values[i] + ppp) > 0); - values[i] = log(values[i] + ppp); - } - } - } - else { - if (*pre_processing_parameter == 0) { - for (i = 0; i < length; i++) - values[i] = exp(values[i]); - } - else { - for (i = 0; i < length; i++) - values[i] = exp(values[i]) - *pre_processing_parameter; - } - } - break; - default: - ret = GRIB_NOT_IMPLEMENTED; - break; - } - - return ret; -} From 3518cbeeab5b5a2f035de015a148cdf268af52f9 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 21 Apr 2023 17:45:06 +0100 Subject: [PATCH 103/378] grid_complex: cleanups --- src/grib_accessor_class_data_g22order_packing.cc | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/grib_accessor_class_data_g22order_packing.cc b/src/grib_accessor_class_data_g22order_packing.cc index b0ba5f31f..a4bb94f33 100644 --- a/src/grib_accessor_class_data_g22order_packing.cc +++ b/src/grib_accessor_class_data_g22order_packing.cc @@ -768,7 +768,8 @@ static int unpack(grib_accessor* a, T* val, const size_t* len) /* For Complex packing, order == 0 */ /* For Complex packing and spatial differencing, order == 1 or 2 (code table 5.6) */ if (orderOfSpatialDifferencing != 1 && orderOfSpatialDifferencing != 2) { - grib_context_log(a->context, GRIB_LOG_ERROR, "Unsupported order of spatial differencing %ld", orderOfSpatialDifferencing); + grib_context_log(a->context, GRIB_LOG_ERROR, + "grid_complex unpacking: Unsupported order of spatial differencing %ld", orderOfSpatialDifferencing); return GRIB_INTERNAL_ERROR; } @@ -1376,7 +1377,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) size_t ndata = *len; double* data = reinterpret_cast(grib_context_malloc_clear(a->context, ndata * sizeof(double))); if (data == NULL) { - grib_context_log(a->context, GRIB_LOG_ERROR, "grib_accessor_data_g2complex_packing::pack_double unable to allocate %d bytes", ndata * sizeof(double)); + grib_context_log(a->context, GRIB_LOG_ERROR, "grid_complex packing: unable to allocate %zu bytes", ndata * sizeof(double)); return GRIB_OUT_OF_MEMORY; } memcpy(data, val, sizeof(*data) * ndata); @@ -1399,11 +1400,11 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) v = reinterpret_cast(grib_context_malloc(a->context, nndata * sizeof(int))); if (v == NULL) { - grib_context_log(a->context, GRIB_LOG_ERROR, "grib_accessor_data_g2complex_packing::pack_double unable to allocate %d bytes", nndata * sizeof(int)); + grib_context_log(a->context, GRIB_LOG_ERROR, "grid_complex packing: unable to allocate %d bytes", nndata * sizeof(int)); return GRIB_OUT_OF_MEMORY; } if (min_max_array(data, ndata, &mn, &mx) != 0) { - grib_context_log(a->context, GRIB_LOG_ERROR, "grid_complex packing: Failed to get min max of data"); + grib_context_log(a->context, GRIB_LOG_ERROR, "grid_complex packing: failed to get min max of data"); return GRIB_ENCODING_ERROR; } min_val = static_cast(mn); @@ -1861,7 +1862,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) sec7 = reinterpret_cast(grib_context_malloc(a->context, size_sec7)); if (sec7 == NULL) { - grib_context_log(a->context, GRIB_LOG_ERROR, "grib_accessor_data_g2simple_packing::pack_double unable to allocate %d bytes", size_sec7); + grib_context_log(a->context, GRIB_LOG_ERROR, "grid_complex packing: unable to allocate %d bytes", size_sec7); return GRIB_OUT_OF_MEMORY; } From 6ddbf5b4d0bdcaefa8e2fdc1eca3f472ae379eba Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 21 Apr 2023 20:40:12 +0100 Subject: [PATCH 104/378] grid_complex: cleanups --- ...ib_accessor_class_data_g22order_packing.cc | 145 ++++++++---------- 1 file changed, 60 insertions(+), 85 deletions(-) diff --git a/src/grib_accessor_class_data_g22order_packing.cc b/src/grib_accessor_class_data_g22order_packing.cc index a4bb94f33..452aed18b 100644 --- a/src/grib_accessor_class_data_g22order_packing.cc +++ b/src/grib_accessor_class_data_g22order_packing.cc @@ -225,9 +225,9 @@ static void init(grib_accessor* a, const long v, grib_arguments* args) #define ONES (~(int)0) -/*#define UNDEFINED 9.999e20*/ -/*#define UNDEFINED_LOW 9.9989e20*/ -/*#define UNDEFINED_HIGH 9.9991e20*/ +// #define UNDEFINED 9.999e20 +// #define UNDEFINED_LOW 9.9989e20 +// #define UNDEFINED_HIGH 9.9991e20 #define UNDEFINED 9999.0 #define UNDEFINED_LOW 9998.9 #define UNDEFINED_HIGH 9999.1 @@ -617,7 +617,7 @@ static int unpack(grib_accessor* a, T* val, const size_t* len) if ((err = grib_get_long_internal(gh, self->typeOfOriginalFieldValues, &typeOfOriginalFieldValues)) != GRIB_SUCCESS) return err; - /* Don't call grib_get_long_internal to suppress error message being output */ + // Don't call grib_get_long_internal to suppress error message being output if ((err = grib_get_long(gh, self->groupSplittingMethodUsed, &groupSplittingMethodUsed)) != GRIB_SUCCESS) return err; @@ -652,9 +652,8 @@ static int unpack(grib_accessor* a, T* val, const size_t* len) self->dirty = 0; sec_val = (long*)grib_context_malloc(a->context, (n_vals) * sizeof(long)); - if (!sec_val) - return GRIB_OUT_OF_MEMORY; - memset(sec_val, 0, (n_vals) * sizeof(long)); /* See SUP-718 */ + if (!sec_val) return GRIB_OUT_OF_MEMORY; + memset(sec_val, 0, (n_vals) * sizeof(long)); // See SUP-718 buf_ref = buf + a->offset; @@ -692,24 +691,23 @@ static int unpack(grib_accessor* a, T* val, const size_t* len) return GRIB_DECODING_ERROR; } - /*grib_decode_long_array(buf_vals, &vals_p, nbits_per_group_val, nvals_per_group, - &sec_val[vcount]); */ + // grib_decode_long_array(buf_vals, &vals_p, nbits_per_group_val, nvals_per_group, &sec_val[vcount]); if (missingValueManagementUsed == 0) { - /* No explicit missing values included within data values */ + // No explicit missing values included within data values for (j = 0; j < nvals_per_group; j++) { DebugAssertAccess(sec_val, (long)(vcount + j), n_vals); sec_val[vcount + j] = group_ref_val + grib_decode_unsigned_long(buf_vals, &vals_p, nbits_per_group_val); - /*printf("sec_val[%ld]=%ld\n", vcount+j, sec_val[vcount+j]);*/ + // printf("sec_val[%ld]=%ld\n", vcount+j, sec_val[vcount+j]); } } else if (missingValueManagementUsed == 1) { - /* Primary missing values included within data values */ - long maxn = 0; /* (1 << bits_per_value) - 1; */ + // Primary missing values included within data values + long maxn = 0; // (1 << bits_per_value) - 1; for (j = 0; j < nvals_per_group; j++) { if (nbits_per_group_val == 0) { maxn = (1 << bits_per_value) - 1; if (group_ref_val == maxn) { - sec_val[vcount + j] = LONG_MAX; /* missing value */ + sec_val[vcount + j] = LONG_MAX; // missing value } else { long temp = grib_decode_unsigned_long(buf_vals, &vals_p, nbits_per_group_val); @@ -720,7 +718,7 @@ static int unpack(grib_accessor* a, T* val, const size_t* len) long temp = grib_decode_unsigned_long(buf_vals, &vals_p, nbits_per_group_val); maxn = (1 << nbits_per_group_val) - 1; if (temp == maxn) { - sec_val[vcount + j] = LONG_MAX; /* missing value */ + sec_val[vcount + j] = LONG_MAX; // missing value } else { sec_val[vcount + j] = group_ref_val + temp; @@ -729,14 +727,14 @@ static int unpack(grib_accessor* a, T* val, const size_t* len) } } else if (missingValueManagementUsed == 2) { - /* Primary and secondary missing values included within data values */ + // Primary and secondary missing values included within data values long maxn = (1 << bits_per_value) - 1; - long maxn2 = 0; /* maxn - 1; */ + long maxn2 = 0; // maxn - 1 for (j = 0; j < nvals_per_group; j++) { if (nbits_per_group_val == 0) { maxn2 = maxn - 1; if (group_ref_val == maxn || group_ref_val == maxn2) { - sec_val[vcount + j] = LONG_MAX; /* missing value */ + sec_val[vcount + j] = LONG_MAX; // missing value } else { long temp = grib_decode_unsigned_long(buf_vals, &vals_p, nbits_per_group_val); @@ -748,7 +746,7 @@ static int unpack(grib_accessor* a, T* val, const size_t* len) maxn = (1 << nbits_per_group_val) - 1; maxn2 = maxn - 1; if (temp == maxn || temp == maxn2) { - sec_val[vcount + j] = LONG_MAX; /* missing value */ + sec_val[vcount + j] = LONG_MAX; // missing value } else { sec_val[vcount + j] = group_ref_val + temp; @@ -765,8 +763,8 @@ static int unpack(grib_accessor* a, T* val, const size_t* len) unsigned long extras[2] = {0, }; ref_p = 0; - /* For Complex packing, order == 0 */ - /* For Complex packing and spatial differencing, order == 1 or 2 (code table 5.6) */ + // For Complex packing, order == 0 + // For Complex packing and spatial differencing, order == 1 or 2 (code table 5.6) if (orderOfSpatialDifferencing != 1 && orderOfSpatialDifferencing != 2) { grib_context_log(a->context, GRIB_LOG_ERROR, "grid_complex unpacking: Unsupported order of spatial differencing %ld", orderOfSpatialDifferencing); @@ -780,7 +778,7 @@ static int unpack(grib_accessor* a, T* val, const size_t* len) bias = grib_decode_signed_longb(buf_ref, &ref_p, numberOfOctetsExtraDescriptors * 8); post_process(a->context, sec_val, n_vals, orderOfSpatialDifferencing, bias, extras); - /*de_spatial_difference (a->context, sec_val, n_vals, orderOfSpatialDifferencing, bias);*/ + // de_spatial_difference (a->context, sec_val, n_vals, orderOfSpatialDifferencing, bias); } binary_s = (T)grib_power(binary_scale_factor, 2); @@ -867,8 +865,7 @@ static int sizeofsection2(int mn, int mx, int n, int ref_bits, int width_bits, return find_nbits(mx - mn + has_undef) * n + ref_bits + width_bits; } -static int size_all(struct section* s, int ref_bits, int width_bits, - int has_undef) +static int size_all(struct section* s, int ref_bits, int width_bits, int has_undef) { int bits; @@ -1087,7 +1084,6 @@ static void exchange(struct section* s, int* v, int has_undef, int LEN_SEC_MAX) } // if (s->missing == 1 || t->missing == 1) { s=t; continue; } - // 3/2014 val0 = v[s->i1]; // 3/2014 val1 = v[t->i0]; @@ -1214,7 +1210,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) { unsigned char* sec7; grib_accessor_data_g22order_packing* self = reinterpret_cast(a); - grib_handle* gh = grib_handle_of_accessor(a); + grib_handle* gh = grib_handle_of_accessor(a); int err = 0; @@ -1228,14 +1224,11 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) long decimal_scale_factor; long optimize_scale_factor; long typeOfOriginalFieldValues; - // long groupSplittingMethodUsed; + // long groupSplittingMethodUsed, numberOfGroupsOfDataValues, referenceForGroupWidths; long missingValueManagementUsed; long primaryMissingValueSubstitute; long secondaryMissingValueSubstitute; - // long numberOfGroupsOfDataValues; - // long referenceForGroupWidths; long numberOfBitsUsedForTheGroupWidths; - // long trueLengthOfLastGroup; long numberOfBitsUsedForTheScaledGroupLengths; long orderOfSpatialDifferencing; long numberOfOctetsExtraDescriptors; @@ -1249,11 +1242,11 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) int j, j0, k, *v, binary_scale, nbits, has_undef, extra_0, extra_1; unsigned int i, ii; int vmn, vmx, vbits; - /*Sections*/ + // Sections double max_val, min_val, ref, frange, dec_factor, scale; double mn, mx; struct section start, *list, *list_backup, *s; - /*Group*/ + // Group int ngroups, grefmx, glenmn, glenmx, gwidmn, gwidmx, len_last; int size_sec7; int *refs, *lens, *widths, *itmp, *itmp2; @@ -1276,9 +1269,8 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) return err; if ((err = grib_get_long_internal(gh, self->decimal_scale_factor, &decimal_scale_factor)) != GRIB_SUCCESS) return err; - if ((err = grib_get_long_internal(gh, self->optimize_scale_factor, &optimize_scale_factor)) != GRIB_SUCCESS) - return err; - optimize_scale_factor = 1; /* TODO: To be reviewed */ + + optimize_scale_factor = 1; // TODO(masn): To be reviewed if ((err = grib_get_long_internal(gh, self->binary_scale_factor, &binary_scale_factor)) != GRIB_SUCCESS) return err; @@ -1304,16 +1296,9 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) max_bits = bits_per_value; // TODO(masn) // Note: - // orderOfSpatialDifferencing = 0 means "grid_complex" - // orderOfSpatialDifferencing = 1 means "grid_complex_spatial_differencing" with orderOfSpatialDifferencing=1 - // orderOfSpatialDifferencing = 2 means "grid_complex_spatial_differencing" with orderOfSpatialDifferencing=2 - // The variable "packing_mode" in wgrib2 (file complex_pk.c) has 3 possible values: - // packing_mode = 1 grid_complex - // packing_mode = 2 grid_complex_spatial_differencing with orderOfSpatialDifferencing=1 - // packing_mode = 3 grid_complex_spatial_differencing with orderOfSpatialDifferencing=2 - // - // TODO(masn): This needs to be reviewed! - // + // orderOfSpatialDifferencing = 0 means "grid_complex" + // orderOfSpatialDifferencing = 1 means "grid_complex_spatial_differencing" with orderOfSpatialDifferencing=1 + // orderOfSpatialDifferencing = 2 means "grid_complex_spatial_differencing" with orderOfSpatialDifferencing=2 use_bitmap = bitmap_present; wanted_bits = bits_per_value; @@ -1330,38 +1315,37 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) size_t packing_type_len = strlen(packing_type); grib_set_string_internal(gh, "packingType", packing_type, &packing_type_len); - - if ((err = grib_set_double_internal(gh, self->reference_value, grib_ieee_to_long(0.0))) != GRIB_SUCCESS) /* 12-15 */ + if ((err = grib_set_double_internal(gh, self->reference_value, grib_ieee_to_long(0.0))) != GRIB_SUCCESS) return err; - if ((err = grib_set_long_internal(gh, self->binary_scale_factor, 0)) != GRIB_SUCCESS) /* 16-17 */ + if ((err = grib_set_long_internal(gh, self->binary_scale_factor, 0)) != GRIB_SUCCESS) return err; - if ((err = grib_set_long_internal(gh, self->decimal_scale_factor, 0)) != GRIB_SUCCESS) /* 18-19 */ + if ((err = grib_set_long_internal(gh, self->decimal_scale_factor, 0)) != GRIB_SUCCESS) return err; - if ((err = grib_set_long_internal(gh, self->bits_per_value, 8)) != GRIB_SUCCESS) /* 20 */ + if ((err = grib_set_long_internal(gh, self->bits_per_value, 8)) != GRIB_SUCCESS) return err; - if ((err = grib_set_long_internal(gh, self->typeOfOriginalFieldValues, 0)) != GRIB_SUCCESS) /* 21 */ + if ((err = grib_set_long_internal(gh, self->typeOfOriginalFieldValues, 0)) != GRIB_SUCCESS) return err; - if ((err = grib_set_long_internal(gh, self->groupSplittingMethodUsed, 1)) != GRIB_SUCCESS) /* 22 */ + if ((err = grib_set_long_internal(gh, self->groupSplittingMethodUsed, 1)) != GRIB_SUCCESS) return err; - if ((err = grib_set_long_internal(gh, self->missingValueManagementUsed, 1)) != GRIB_SUCCESS) /* 23 */ + if ((err = grib_set_long_internal(gh, self->missingValueManagementUsed, 1)) != GRIB_SUCCESS) return err; - if ((err = grib_set_long_internal(gh, self->primaryMissingValueSubstitute, grib_ieee_to_long(static_cast(9.999e20)))) != GRIB_SUCCESS) /* 24-27 */ + if ((err = grib_set_long_internal(gh, self->primaryMissingValueSubstitute, grib_ieee_to_long(static_cast(9.999e20)))) != GRIB_SUCCESS) return err; - if ((err = grib_set_long_internal(gh, self->secondaryMissingValueSubstitute, 0xFFFFFFFF)) != GRIB_SUCCESS) /* 28-31 */ + if ((err = grib_set_long_internal(gh, self->secondaryMissingValueSubstitute, 0xFFFFFFFF)) != GRIB_SUCCESS) return err; - if ((err = grib_set_long_internal(gh, self->numberOfGroupsOfDataValues, 1)) != GRIB_SUCCESS) /* 32-35 */ + if ((err = grib_set_long_internal(gh, self->numberOfGroupsOfDataValues, 1)) != GRIB_SUCCESS) return err; - if ((err = grib_set_long_internal(gh, self->referenceForGroupWidths, grib_ieee_to_long(0.0))) != GRIB_SUCCESS) /* 36 */ + if ((err = grib_set_long_internal(gh, self->referenceForGroupWidths, grib_ieee_to_long(0.0))) != GRIB_SUCCESS) return err; - if ((err = grib_set_long_internal(gh, self->numberOfBitsUsedForTheGroupWidths, 8)) != GRIB_SUCCESS) /* 37 */ + if ((err = grib_set_long_internal(gh, self->numberOfBitsUsedForTheGroupWidths, 8)) != GRIB_SUCCESS) return err; - if ((err = grib_set_long_internal(gh, self->referenceForGroupLengths, *len)) != GRIB_SUCCESS) /* 38-41 */ + if ((err = grib_set_long_internal(gh, self->referenceForGroupLengths, *len)) != GRIB_SUCCESS) return err; - if ((err = grib_set_long_internal(gh, self->lengthIncrementForTheGroupLengths, 1)) != GRIB_SUCCESS) /* 42 */ + if ((err = grib_set_long_internal(gh, self->lengthIncrementForTheGroupLengths, 1)) != GRIB_SUCCESS) return err; - if ((err = grib_set_long_internal(gh, self->trueLengthOfLastGroup, *len)) != GRIB_SUCCESS) /* 43-46 */ + if ((err = grib_set_long_internal(gh, self->trueLengthOfLastGroup, *len)) != GRIB_SUCCESS) return err; - if ((err = grib_set_long_internal(gh, self->numberOfBitsUsedForTheScaledGroupLengths, 8)) != GRIB_SUCCESS) /* 47 */ + if ((err = grib_set_long_internal(gh, self->numberOfBitsUsedForTheScaledGroupLengths, 8)) != GRIB_SUCCESS) return err; // Section 6 @@ -1385,15 +1369,12 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) dec_scale = -decimal_scale_factor; bin_scale = binary_scale_factor; - /* compute bitmap section */ - /*if (use_bitmap == 0 || ndef == ndata) {*/ - /* if ((err = grib_set_long_internal(gh, "bitmapPresent", 0)) != GRIB_SUCCESS)*/ - /* return err;*/ - /*}*/ - /*else {*/ - /* if ((err = grib_set_long_internal(gh, "bitmapPresent", 1)) != GRIB_SUCCESS)*/ - /* return err;*/ - /*}*/ + //compute bitmap section + //if (use_bitmap == 0 || ndef == ndata) { + // if ((err = grib_set_long_internal(gh, "bitmapPresent", 0)) != GRIB_SUCCESS) return err; + //} else { + // if ((err = grib_set_long_internal(gh, "bitmapPresent", 1)) != GRIB_SUCCESS) return err; + //} nndata = use_bitmap ? ndef : ndata; has_undef = use_bitmap ? 0 : ndata != ndef; @@ -1500,10 +1481,8 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) extra_0 = extra_1 = 0; // turn off warnings if (orderOfSpatialDifferencing == 2) { - // delta_delta(v, nndata, &vmn, &vmx, &extra_0, &extra_1); - + // delta_delta(v, nndata, &vmn, &vmx, &extra_0, &extra_1); // single core version - { int last, last0, penultimate; for (i = 0; i < nndata; i++) { @@ -1534,8 +1513,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) } } else if (orderOfSpatialDifferencing == 1) { - // delta(v, nndata, &vmn, &vmx, &extra_0); - + // delta(v, nndata, &vmn, &vmx, &extra_0); // single core version { int last, last0; @@ -1563,7 +1541,6 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) int_min_max_array(v, nndata, &vmn, &vmx); } - #ifdef DEBUG grib_context_log(a->context, GRIB_LOG_DEBUG, "COMPLEX: 2: vmx %d vmn %d nbits %d", vmx, vmn, find_nbits(vmx - vmn + has_undef)); @@ -1575,8 +1552,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) vmx = vmx - vmn; vbits = find_nbits(vmx + has_undef); - /* size of merged struct */ - + // size of merged struct ii = 0; nstruct = 1; for (i = 1; i < nndata; i++) { @@ -1691,7 +1667,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) #endif // finished making segments - // findout number of bytes for extra info (orderOfSpatialDifferencing 2/3) + // find out number of bytes for extra info (orderOfSpatialDifferencing 2/3) if (orderOfSpatialDifferencing != 0) { // packing modes 2/3 k = vmn >= 0 ? find_nbits(vmn) + 1 : find_nbits(-vmn) + 1; @@ -1712,7 +1688,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) if (s == NULL) { return GRIB_INTERNAL_ERROR; } - ngroups = 0; // number of groups + ngroups = 0; // number of groups while (s) { ngroups++; @@ -1730,7 +1706,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) return GRIB_OUT_OF_MEMORY; } - /* make vectors so we can OpenMP the loop */ + // make vectors so we can OpenMP the loop for (i = ii = 0, s = start.tail; ii < ngroups; ii++, s = s->tail) { lens[ii] = s->i1 - s->i0 + 1; i += lens[ii]; @@ -1859,7 +1835,6 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) } size_sec7 += (k >> 3) + ((k & 7) ? 1 : 0); - sec7 = reinterpret_cast(grib_context_malloc(a->context, size_sec7)); if (sec7 == NULL) { grib_context_log(a->context, GRIB_LOG_ERROR, "grid_complex packing: unable to allocate %d bytes", size_sec7); @@ -1933,7 +1908,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) grib_context_free(a->context, itmp2); grib_context_free(a->context, data); - /* ECC-259: Set correct number of values */ + // ECC-259: Set correct number of values if ((err = grib_set_long_internal(gh, self->numberOfValues, *len)) != GRIB_SUCCESS) return err; @@ -1977,7 +1952,7 @@ static int unpack_double_element_set(grib_accessor* a, const size_t* index_array double* values; int err = 0; - /* GRIB-564: The indexes in index_array relate to codedValues NOT values! */ + // GRIB-564: The indexes in index_array relate to codedValues NOT values! err = grib_get_size(grib_handle_of_accessor(a), "codedValues", &size); if (err) return err; From c592821a8969c8c392a959c411b84d8bde40730e Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sat, 22 Apr 2023 16:52:09 +0100 Subject: [PATCH 105/378] Logging: use __func__ --- src/grib_accessor_class_data_ccsds_packing.cc | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/grib_accessor_class_data_ccsds_packing.cc b/src/grib_accessor_class_data_ccsds_packing.cc index db40ad34b..5f148a15f 100644 --- a/src/grib_accessor_class_data_ccsds_packing.cc +++ b/src/grib_accessor_class_data_ccsds_packing.cc @@ -306,7 +306,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) #endif if (grib_get_nearest_smaller_value(hand, self->reference_value, val[0], &reference_value) != GRIB_SUCCESS) { grib_context_log(a->context, GRIB_LOG_ERROR, - "CCSDS pack_double: unable to find nearest_smaller_value of %g for %s", min, self->reference_value); + "CCSDS %s: unable to find nearest_smaller_value of %g for %s", __func__, min, self->reference_value); return GRIB_INTERNAL_ERROR; } if ((err = grib_set_double_internal(hand, self->reference_value, reference_value)) != GRIB_SUCCESS) @@ -333,13 +333,13 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) if (grib_get_nearest_smaller_value(hand, self->reference_value, min, &reference_value) != GRIB_SUCCESS) { grib_context_log(a->context, GRIB_LOG_ERROR, - "CCSDS pack_double: unable to find nearest_smaller_value of %g for %s", min, self->reference_value); + "CCSDS %s: unable to find nearest_smaller_value of %g for %s", __func__, min, self->reference_value); return GRIB_INTERNAL_ERROR; } if (reference_value > min) { grib_context_log(a->context, GRIB_LOG_ERROR, - "CCSDS pack_double: reference_value=%g min_value=%g diff=%g", reference_value, min, reference_value - min); + "CCSDS %s: reference_value=%g min_value=%g diff=%g", __func__, reference_value, min, reference_value - min); DebugAssert(reference_value <= min); return GRIB_INTERNAL_ERROR; } @@ -376,7 +376,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) } if (grib_get_nearest_smaller_value(hand, self->reference_value, min, &reference_value) != GRIB_SUCCESS) { grib_context_log(a->context, GRIB_LOG_ERROR, - "CCSDS pack_double: unable to find nearest_smaller_value of %g for %s", min, self->reference_value); + "CCSDS %s: unable to find nearest_smaller_value of %g for %s", __func__, min, self->reference_value); return GRIB_INTERNAL_ERROR; } d = grib_power(decimal_scale_factor, 10); @@ -449,8 +449,8 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) if (hand->context->debug) print_aec_stream_info(&strm, "pack_double"); if ((err = aec_buffer_encode(&strm)) != AEC_OK) { - grib_context_log(a->context, GRIB_LOG_ERROR, "CCSDS pack_double: aec_buffer_encode error %d (%s)\n", - err, aec_get_error_message(err)); + grib_context_log(a->context, GRIB_LOG_ERROR, "CCSDS %s: aec_buffer_encode error %d (%s)", + __func__, err, aec_get_error_message(err)); err = GRIB_ENCODING_ERROR; goto cleanup; } @@ -567,9 +567,9 @@ static int unpack(grib_accessor* a, T* val, size_t* len) if (hand->context->debug) print_aec_stream_info(&strm, "unpack_*"); if ((err = aec_buffer_decode(&strm)) != AEC_OK) { - grib_context_log(a->context, GRIB_LOG_ERROR, "CCSDS %s: aec_buffer_decode error %d (%s)\n", + grib_context_log(a->context, GRIB_LOG_ERROR, "CCSDS %s: aec_buffer_decode error %d (%s)", __func__, err, aec_get_error_message(err)); - err = GRIB_ENCODING_ERROR; + err = GRIB_DECODING_ERROR; goto cleanup; } From 0f647bdb99e4394e974a7ffbfa0e1245020aca9d Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sat, 22 Apr 2023 17:11:09 +0100 Subject: [PATCH 106/378] Testing: Remove unused variable --- tests/bufr_dump_data.sh | 1 - tests/bufr_ecc-1259.sh | 4 +--- tests/bufr_ecc-1290.sh | 3 +-- tests/bufr_ecc-1304.sh | 2 -- tests/bufr_ecc-1305.sh | 3 +-- tests/grib2to3.sh | 2 -- tests/grib3_templates.sh | 2 -- tests/grib_dump_debug.sh | 2 -- tests/grib_ecc-1230.sh | 1 - tests/grib_ecc-1260.sh | 1 - tests/grib_ecc-1315.sh | 1 - tests/grib_ecc-1322.sh | 3 +-- tests/grib_ecc-1406.sh | 3 +-- tests/grib_ecc-1560.sh | 2 -- tests/grib_ecc-922.sh | 1 - tests/grib_neg_fctime.sh | 1 - tests/grib_octahedral.sh | 2 -- tests/grib_packing_order.sh | 1 - 18 files changed, 5 insertions(+), 30 deletions(-) diff --git a/tests/bufr_dump_data.sh b/tests/bufr_dump_data.sh index b8c5184a7..1eacbb1f8 100755 --- a/tests/bufr_dump_data.sh +++ b/tests/bufr_dump_data.sh @@ -25,7 +25,6 @@ fi # Test downloaded data files #============================================== bufr_files=`cat ${data_dir}/bufr/bufr_data_files.txt` -REDIRECT=/dev/null for file in ${bufr_files}; do ${tools_dir}/bufr_dump -O ${data_dir}/bufr/$file >/dev/null diff --git a/tests/bufr_ecc-1259.sh b/tests/bufr_ecc-1259.sh index a65e65be5..107a25823 100755 --- a/tests/bufr_ecc-1259.sh +++ b/tests/bufr_ecc-1259.sh @@ -9,10 +9,8 @@ # . ./include.ctest.sh -set -u -REDIRECT=/dev/null -label="bufr_ecc-1259_test" +label="bufr_ecc-1259_test" tempBufr=temp.$label.bufr tempFilt=temp.$label.filt tempOut=temp.$label.out diff --git a/tests/bufr_ecc-1290.sh b/tests/bufr_ecc-1290.sh index 9d426ef5d..90b774cd1 100755 --- a/tests/bufr_ecc-1290.sh +++ b/tests/bufr_ecc-1290.sh @@ -9,8 +9,7 @@ # . ./include.ctest.sh -set -u -REDIRECT=/dev/null + label="bufr_ecc-1290_test" temp=temp.$label tempRules=temp.${label}.filter diff --git a/tests/bufr_ecc-1304.sh b/tests/bufr_ecc-1304.sh index a7cf5dcd7..2ffd34711 100755 --- a/tests/bufr_ecc-1304.sh +++ b/tests/bufr_ecc-1304.sh @@ -9,9 +9,7 @@ # . ./include.ctest.sh -set -u -REDIRECT=/dev/null label="bufr_ecc-1304_test" tempBufr=temp.$label.bufr diff --git a/tests/bufr_ecc-1305.sh b/tests/bufr_ecc-1305.sh index 477404ed5..ac22c948c 100755 --- a/tests/bufr_ecc-1305.sh +++ b/tests/bufr_ecc-1305.sh @@ -9,8 +9,7 @@ # . ./include.ctest.sh -set -u -REDIRECT=/dev/null + label="bufr_ecc-1305_test" temp=temp.$label diff --git a/tests/grib2to3.sh b/tests/grib2to3.sh index ae4a4d339..e58d1f9e5 100755 --- a/tests/grib2to3.sh +++ b/tests/grib2to3.sh @@ -9,8 +9,6 @@ # . ./include.ctest.sh -REDIRECT=/dev/null - label="grib2to3_test" temp=temp.$label.grib3 sample_g2=$ECCODES_SAMPLES_PATH/GRIB2.tmpl diff --git a/tests/grib3_templates.sh b/tests/grib3_templates.sh index decba118a..08a5aa012 100755 --- a/tests/grib3_templates.sh +++ b/tests/grib3_templates.sh @@ -9,8 +9,6 @@ # . ./include.ctest.sh -REDIRECT=/dev/null - label="grib3_templates_test" temp1=temp1.$label.grib3 temp2=temp2.$label.grib3 diff --git a/tests/grib_dump_debug.sh b/tests/grib_dump_debug.sh index d5bceb4f7..ed7698235 100755 --- a/tests/grib_dump_debug.sh +++ b/tests/grib_dump_debug.sh @@ -12,8 +12,6 @@ label="grib_dump_debug_test" temp=temp.$label.txt -REDIRECT=/dev/null - if [ $HAVE_MEMFS -eq 1 ]; then unset ECCODES_DEFINITION_PATH unset ECCODES_SAMPLES_PATH diff --git a/tests/grib_ecc-1230.sh b/tests/grib_ecc-1230.sh index a6f91e674..a20b0b461 100755 --- a/tests/grib_ecc-1230.sh +++ b/tests/grib_ecc-1230.sh @@ -10,7 +10,6 @@ . ./include.ctest.sh -REDIRECT=/dev/null label="prod_ECC-1230_test" temp1=temp1.$label temp2=temp2.$label diff --git a/tests/grib_ecc-1260.sh b/tests/grib_ecc-1260.sh index 23f4f5c82..f33de4eb6 100755 --- a/tests/grib_ecc-1260.sh +++ b/tests/grib_ecc-1260.sh @@ -10,7 +10,6 @@ . ./include.ctest.sh -REDIRECT=/dev/null label="grib_ecc-1260_test" tempGrib=temp.$label.grib tempRef=temp.$label.ref diff --git a/tests/grib_ecc-1315.sh b/tests/grib_ecc-1315.sh index 81a3be7de..73653b77d 100755 --- a/tests/grib_ecc-1315.sh +++ b/tests/grib_ecc-1315.sh @@ -10,7 +10,6 @@ . ./include.ctest.sh -REDIRECT=/dev/null label="grib_ecc-1313_test" tempOut=temp.$label.text tempRef=temp.$label.ref diff --git a/tests/grib_ecc-1322.sh b/tests/grib_ecc-1322.sh index a3024ecf4..d1f61206b 100755 --- a/tests/grib_ecc-1322.sh +++ b/tests/grib_ecc-1322.sh @@ -9,8 +9,7 @@ # . ./include.ctest.sh -set -u -REDIRECT=/dev/null + label="grib_ecc-1322_test" tempGrb=temp.$label.grib diff --git a/tests/grib_ecc-1406.sh b/tests/grib_ecc-1406.sh index 38d9d34c8..901833c07 100755 --- a/tests/grib_ecc-1406.sh +++ b/tests/grib_ecc-1406.sh @@ -9,8 +9,7 @@ # . ./include.ctest.sh -set -u -REDIRECT=/dev/null + label="grib_ecc-1406_test" tempGrib=temp.$label.grib diff --git a/tests/grib_ecc-1560.sh b/tests/grib_ecc-1560.sh index 1af0a98e8..b83eda55c 100755 --- a/tests/grib_ecc-1560.sh +++ b/tests/grib_ecc-1560.sh @@ -10,8 +10,6 @@ . ./include.ctest.sh -REDIRECT=/dev/null - label="grib_ecc-1560_test" temp_PDTN08_Grib=temp.$label.PDTN08.grib temp_PDTN11_Grib=temp.$label.PDTN11.grib diff --git a/tests/grib_ecc-922.sh b/tests/grib_ecc-922.sh index c04201f65..81e995633 100755 --- a/tests/grib_ecc-922.sh +++ b/tests/grib_ecc-922.sh @@ -15,7 +15,6 @@ # grib_get_data should fail on incorrectly coded grid # --------------------------------------------------------- -REDIRECT=/dev/null label="grib_ecc-922_test" temp=temp.$label sample_grib2=$ECCODES_SAMPLES_PATH/GRIB2.tmpl diff --git a/tests/grib_neg_fctime.sh b/tests/grib_neg_fctime.sh index 3d0e5f88d..95d72a3a3 100755 --- a/tests/grib_neg_fctime.sh +++ b/tests/grib_neg_fctime.sh @@ -10,7 +10,6 @@ . ./include.ctest.sh -REDIRECT=/dev/null label="grib_neg_fctime_test" temp=temp.$label.grib input=${data_dir}/sample.grib2 diff --git a/tests/grib_octahedral.sh b/tests/grib_octahedral.sh index b4f3ebf07..967eecc1a 100755 --- a/tests/grib_octahedral.sh +++ b/tests/grib_octahedral.sh @@ -10,8 +10,6 @@ . ./include.ctest.sh -REDIRECT=/dev/null - label="grib_octahedral_test" temp=temp.$label.txt diff --git a/tests/grib_packing_order.sh b/tests/grib_packing_order.sh index 3cadb3f91..ffa758446 100755 --- a/tests/grib_packing_order.sh +++ b/tests/grib_packing_order.sh @@ -10,7 +10,6 @@ . ./include.ctest.sh -REDIRECT=/dev/null label="grib_packing_order_test" temp=${label}".grib.tmp" temp_simple1=${label}".simple1.tmp" From ee9cc4d3340f311b6c6c5ccd0164124a994bee3c Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sat, 22 Apr 2023 18:02:51 +0100 Subject: [PATCH 107/378] Testing: JPEG to CCSDS --- tests/grib_ccsds.sh | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/tests/grib_ccsds.sh b/tests/grib_ccsds.sh index 1c53ed5a2..86e006bd7 100755 --- a/tests/grib_ccsds.sh +++ b/tests/grib_ccsds.sh @@ -150,6 +150,14 @@ infile=${data_dir}/ccsds_szip.grib2 res=`${tools_dir}/grib_get '-F%.3f' -p min,max,avg $infile` [ "$res" = "-180.000 180.000 -0.044" ] +# Conversion from JPEG to CCSDS (binaryScaleFactor=0, decimalScaleFactor!=0) +# ------------------------------------------------------------------------- +if [ $HAVE_JPEG -eq 1 ]; then + ${tools_dir}/grib_copy -w count=2 ${data_dir}/v.grib2 $outfile1 + grib_check_key_equals $outfile1 packingType,bitsPerValue,binaryScaleFactor,decimalScaleFactor 'grid_jpeg 10 0 1' + ${tools_dir}/grib_set -r -s packingType=grid_ccsds $outfile1 $outfile2 + ${tools_dir}/grib_compare -c data:n $outfile1 $outfile2 +fi # Clean up rm -f $outfile1 $outfile2 From 4755277a882c5578f945db77e19b97447626042a Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sat, 22 Apr 2023 19:27:37 +0100 Subject: [PATCH 108/378] Testing: JPEG nearest --- tests/grib_nearest_test.sh | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/tests/grib_nearest_test.sh b/tests/grib_nearest_test.sh index 6e0716afd..998af27c9 100755 --- a/tests/grib_nearest_test.sh +++ b/tests/grib_nearest_test.sh @@ -96,7 +96,7 @@ ${tools_dir}/grib_ls -l 70,345.2,1 $input_grb > $temp grep -q "Grid Point chosen #4 index=0 " $temp -# CCDSDS regular lat/lon +# CCSDS regular lat/lon # ---------------------------------------- if [ $HAVE_AEC -eq 1 ]; then input_grb=${data_dir}/ccsds.grib2 @@ -111,6 +111,13 @@ if [ $HAVE_AEC -eq 1 ]; then grep -q "1" $temp fi +# JPEG regular lat/lon +# ---------------------------------------- +if [ $HAVE_JPEG -eq 1 ]; then + input_grb=${data_dir}/jpeg.grib2 + res=$(${tools_dir}/grib_get -l 0,0,1 $input_grb | tr -d ' ') + [ "$res" = "101309" ] +fi # GRIB2 Complex packing regular lat/lon # ---------------------------------------- From b745bf3fbd5c4dee3117f4ca5793f3251e3a9b3f Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sun, 23 Apr 2023 14:09:26 +0100 Subject: [PATCH 109/378] Remove unused function from accessor hierarchy: init_class --- src/accessor.class | 12 ++--- ...rib_accessor_class_abstract_long_vector.cc | 48 +++---------------- src/grib_accessor_class_abstract_vector.cc | 48 +++---------------- src/grib_accessor_class_apply_operators.cc | 40 +++------------- src/grib_accessor_class_array.cc | 47 +++--------------- src/grib_accessor_class_ascii.cc | 37 +++----------- src/grib_accessor_class_assert.cc | 46 +++--------------- src/grib_accessor_class_bit.cc | 45 +++-------------- src/grib_accessor_class_bitmap.cc | 39 +++------------ src/grib_accessor_class_bits.cc | 40 +++------------- src/grib_accessor_class_bits_per_value.cc | 46 +++--------------- src/grib_accessor_class_blob.cc | 45 +++-------------- src/grib_accessor_class_box.cc | 47 +++--------------- src/grib_accessor_class_budgdate.cc | 46 +++--------------- src/grib_accessor_class_bufr_data_array.cc | 38 +++------------ src/grib_accessor_class_bufr_data_element.cc | 33 +++---------- ...grib_accessor_class_bufr_elements_table.cc | 43 +++-------------- ...ccessor_class_bufr_extract_area_subsets.cc | 46 +++--------------- ...sor_class_bufr_extract_datetime_subsets.cc | 46 +++--------------- ...rib_accessor_class_bufr_extract_subsets.cc | 46 +++--------------- src/grib_accessor_class_bufr_group.cc | 46 +++--------------- ...rib_accessor_class_bufr_simple_thinning.cc | 46 +++--------------- src/grib_accessor_class_bufr_string_values.cc | 42 +++------------- ...essor_class_bufrdc_expanded_descriptors.cc | 44 +++-------------- src/grib_accessor_class_bytes.cc | 44 +++-------------- ...r_class_change_alternative_row_scanning.cc | 45 +++-------------- ...ccessor_class_change_scanning_direction.cc | 45 +++-------------- ...b_accessor_class_check_internal_version.cc | 46 +++--------------- src/grib_accessor_class_closest_date.cc | 45 +++-------------- src/grib_accessor_class_codeflag.cc | 46 +++--------------- src/grib_accessor_class_codetable.cc | 41 +++------------- src/grib_accessor_class_codetable_title.cc | 46 +++--------------- src/grib_accessor_class_codetable_units.cc | 46 +++--------------- src/grib_accessor_class_concept.cc | 37 +++----------- src/grib_accessor_class_constant.cc | 44 +++-------------- src/grib_accessor_class_count_file.cc | 47 +++--------------- src/grib_accessor_class_count_missing.cc | 46 +++--------------- src/grib_accessor_class_count_total.cc | 47 +++--------------- ...grib_accessor_class_data_2order_packing.cc | 45 +++-------------- src/grib_accessor_class_data_apply_bitmap.cc | 40 +++------------- ...cessor_class_data_apply_boustrophedonic.cc | 40 +++------------- ...class_data_apply_boustrophedonic_bitmap.cc | 41 +++------------- ...accessor_class_data_apply_gdsnotpresent.cc | 43 +++-------------- src/grib_accessor_class_data_ccsds_packing.cc | 42 +++------------- ...rib_accessor_class_data_complex_packing.cc | 44 +++-------------- src/grib_accessor_class_data_dummy_field.cc | 45 +++-------------- ...b_accessor_class_data_g1complex_packing.cc | 47 +++--------------- ...a_g1second_order_constant_width_packing.cc | 42 +++------------- ...g1second_order_general_extended_packing.cc | 42 +++------------- ...ass_data_g1second_order_general_packing.cc | 44 +++-------------- ..._data_g1second_order_row_by_row_packing.cc | 44 +++-------------- ..._accessor_class_data_g1secondary_bitmap.cc | 46 +++--------------- ..._accessor_class_data_g1shsimple_packing.cc | 46 +++--------------- ...ib_accessor_class_data_g1simple_packing.cc | 46 +++--------------- ...ib_accessor_class_data_g22order_packing.cc | 44 +++-------------- ...accessor_class_data_g2bifourier_packing.cc | 45 +++-------------- ...b_accessor_class_data_g2complex_packing.cc | 46 +++--------------- ..._accessor_class_data_g2secondary_bitmap.cc | 46 +++--------------- ..._accessor_class_data_g2shsimple_packing.cc | 45 +++-------------- ...ib_accessor_class_data_g2simple_packing.cc | 45 +++-------------- ...ata_g2simple_packing_with_preprocessing.cc | 45 +++-------------- ...ib_accessor_class_data_jpeg2000_packing.cc | 42 +++------------- src/grib_accessor_class_data_png_packing.cc | 43 +++-------------- src/grib_accessor_class_data_raw_packing.cc | 43 +++-------------- ..._accessor_class_data_run_length_packing.cc | 45 +++-------------- ...ib_accessor_class_data_secondary_bitmap.cc | 45 +++-------------- src/grib_accessor_class_data_sh_packed.cc | 46 +++--------------- src/grib_accessor_class_data_sh_unpacked.cc | 46 +++--------------- ...ib_accessor_class_data_shsimple_packing.cc | 45 +++-------------- ...grib_accessor_class_data_simple_packing.cc | 41 +++------------- src/grib_accessor_class_decimal_precision.cc | 46 +++--------------- src/grib_accessor_class_dictionary.cc | 42 +++------------- src/grib_accessor_class_dirty.cc | 46 +++--------------- src/grib_accessor_class_divdouble.cc | 47 +++--------------- src/grib_accessor_class_double.cc | 43 +++-------------- src/grib_accessor_class_element.cc | 46 +++--------------- src/grib_accessor_class_evaluate.cc | 46 +++--------------- ...rib_accessor_class_expanded_descriptors.cc | 42 +++------------- src/grib_accessor_class_forward.cc | 47 +++--------------- ...or_class_from_scale_factor_scaled_value.cc | 44 +++-------------- ...ib_accessor_class_g1_half_byte_codeflag.cc | 43 +++-------------- src/grib_accessor_class_g1_message_length.cc | 46 +++--------------- src/grib_accessor_class_g1_section4_length.cc | 46 +++--------------- src/grib_accessor_class_g1area.cc | 44 +++-------------- src/grib_accessor_class_g1bitmap.cc | 45 +++-------------- src/grib_accessor_class_g1date.cc | 43 +++-------------- ...b_accessor_class_g1day_of_the_year_date.cc | 46 +++--------------- ...ccessor_class_g1end_of_interval_monthly.cc | 45 +++-------------- src/grib_accessor_class_g1fcperiod.cc | 47 +++--------------- src/grib_accessor_class_g1forecastmonth.cc | 45 +++-------------- src/grib_accessor_class_g1monthlydate.cc | 46 +++--------------- ...ass_g1number_of_coded_values_sh_complex.cc | 47 +++--------------- ...lass_g1number_of_coded_values_sh_simple.cc | 47 +++--------------- src/grib_accessor_class_g1step_range.cc | 40 +++------------- src/grib_accessor_class_g1verificationdate.cc | 46 +++--------------- src/grib_accessor_class_g2_aerosol.cc | 45 +++-------------- src/grib_accessor_class_g2_chemical.cc | 45 +++-------------- src/grib_accessor_class_g2_eps.cc | 45 +++-------------- src/grib_accessor_class_g2_mars_labeling.cc | 42 +++------------- src/grib_accessor_class_g2bitmap.cc | 46 +++--------------- src/grib_accessor_class_g2bitmap_present.cc | 46 +++--------------- src/grib_accessor_class_g2date.cc | 45 +++-------------- src/grib_accessor_class_g2end_step.cc | 45 +++-------------- src/grib_accessor_class_g2grid.cc | 45 +++-------------- src/grib_accessor_class_g2latlon.cc | 44 +++-------------- src/grib_accessor_class_g2level.cc | 42 +++------------- src/grib_accessor_class_g2lon.cc | 46 +++--------------- src/grib_accessor_class_g2step_range.cc | 40 +++------------- src/grib_accessor_class_gaussian_grid_name.cc | 45 +++-------------- src/grib_accessor_class_gds_is_present.cc | 46 +++--------------- ...b_accessor_class_gds_not_present_bitmap.cc | 45 +++-------------- src/grib_accessor_class_gen.cc | 11 +++-- src/grib_accessor_class_getenv.cc | 44 +++-------------- src/grib_accessor_class_global_gaussian.cc | 46 +++--------------- src/grib_accessor_class_group.cc | 36 +++----------- src/grib_accessor_class_gts_header.cc | 44 +++-------------- src/grib_accessor_class_hash_array.cc | 37 +++----------- src/grib_accessor_class_headers_only.cc | 46 +++--------------- src/grib_accessor_class_ibmfloat.cc | 40 +++------------- src/grib_accessor_class_ieeefloat.cc | 43 +++-------------- src/grib_accessor_class_ifs_param.cc | 45 +++-------------- src/grib_accessor_class_int16.cc | 46 +++--------------- ...grib_accessor_class_int16_little_endian.cc | 46 +++--------------- src/grib_accessor_class_int32.cc | 46 +++--------------- ...grib_accessor_class_int32_little_endian.cc | 46 +++--------------- src/grib_accessor_class_int64.cc | 46 +++--------------- ...grib_accessor_class_int64_little_endian.cc | 46 +++--------------- src/grib_accessor_class_int8.cc | 46 +++--------------- src/grib_accessor_class_iterator.cc | 47 +++--------------- src/grib_accessor_class_julian_date.cc | 40 +++------------- src/grib_accessor_class_julian_day.cc | 43 +++-------------- src/grib_accessor_class_ksec1expver.cc | 45 +++-------------- src/grib_accessor_class_label.cc | 44 +++-------------- src/grib_accessor_class_laplacian.cc | 44 +++-------------- src/grib_accessor_class_latitudes.cc | 46 +++--------------- src/grib_accessor_class_latlon_increment.cc | 45 +++-------------- src/grib_accessor_class_latlonvalues.cc | 46 +++--------------- src/grib_accessor_class_library_version.cc | 45 +++-------------- src/grib_accessor_class_local_definition.cc | 45 +++-------------- src/grib_accessor_class_long.cc | 41 +++------------- src/grib_accessor_class_long_vector.cc | 44 +++-------------- src/grib_accessor_class_longitudes.cc | 46 +++--------------- src/grib_accessor_class_lookup.cc | 41 +++------------- src/grib_accessor_class_mars_param.cc | 45 +++-------------- src/grib_accessor_class_mars_step.cc | 41 +++------------- src/grib_accessor_class_md5.cc | 44 +++-------------- src/grib_accessor_class_message.cc | 42 +++------------- src/grib_accessor_class_message_copy.cc | 43 +++-------------- src/grib_accessor_class_missing.cc | 11 +++-- src/grib_accessor_class_nearest.cc | 47 +++--------------- src/grib_accessor_class_non_alpha.cc | 36 +++----------- ...b_accessor_class_number_of_coded_values.cc | 47 +++--------------- src/grib_accessor_class_number_of_points.cc | 47 +++--------------- ...ccessor_class_number_of_points_gaussian.cc | 47 +++--------------- src/grib_accessor_class_number_of_values.cc | 47 +++--------------- ...class_number_of_values_data_raw_packing.cc | 46 +++--------------- ...grib_accessor_class_octahedral_gaussian.cc | 46 +++--------------- src/grib_accessor_class_octet_number.cc | 46 +++--------------- src/grib_accessor_class_offset_file.cc | 46 +++--------------- src/grib_accessor_class_offset_values.cc | 46 +++--------------- src/grib_accessor_class_pack_bufr_values.cc | 39 +++------------ src/grib_accessor_class_pad.cc | 47 +++--------------- src/grib_accessor_class_padding.cc | 42 +++------------- src/grib_accessor_class_padto.cc | 46 +++--------------- src/grib_accessor_class_padtoeven.cc | 47 +++--------------- src/grib_accessor_class_padtomultiple.cc | 47 +++--------------- src/grib_accessor_class_position.cc | 44 +++-------------- src/grib_accessor_class_proj_string.cc | 46 +++--------------- src/grib_accessor_class_raw.cc | 41 +++------------- src/grib_accessor_class_rdbtime_guess_date.cc | 45 +++-------------- ...ib_accessor_class_reference_value_error.cc | 47 +++--------------- src/grib_accessor_class_round.cc | 46 +++--------------- src/grib_accessor_class_scale.cc | 44 +++-------------- src/grib_accessor_class_scale_values.cc | 46 +++--------------- ...essor_class_second_order_bits_per_value.cc | 46 +++--------------- src/grib_accessor_class_section.cc | 41 +++------------- src/grib_accessor_class_section_length.cc | 46 +++--------------- src/grib_accessor_class_section_padding.cc | 47 +++--------------- src/grib_accessor_class_section_pointer.cc | 44 +++-------------- ...rib_accessor_class_select_step_template.cc | 45 +++-------------- ...grib_accessor_class_sexagesimal2decimal.cc | 45 +++-------------- src/grib_accessor_class_signed.cc | 39 +++------------ src/grib_accessor_class_signed_bits.cc | 40 +++------------- ...rib_accessor_class_simple_packing_error.cc | 47 +++--------------- src/grib_accessor_class_size.cc | 47 +++--------------- src/grib_accessor_class_smart_table.cc | 43 +++-------------- src/grib_accessor_class_smart_table_column.cc | 43 +++-------------- src/grib_accessor_class_spd.cc | 40 +++------------- ...grib_accessor_class_spectral_truncation.cc | 47 +++--------------- src/grib_accessor_class_sprintf.cc | 44 +++-------------- src/grib_accessor_class_statistics.cc | 44 +++-------------- ...grib_accessor_class_statistics_spectral.cc | 45 +++-------------- ...grib_accessor_class_step_human_readable.cc | 46 +++--------------- src/grib_accessor_class_step_in_units.cc | 45 +++-------------- src/grib_accessor_class_sum.cc | 45 +++-------------- src/grib_accessor_class_suppressed.cc | 40 +++------------- src/grib_accessor_class_time.cc | 44 +++-------------- src/grib_accessor_class_times.cc | 45 +++-------------- src/grib_accessor_class_to_double.cc | 36 +++----------- src/grib_accessor_class_to_integer.cc | 36 +++----------- src/grib_accessor_class_to_string.cc | 36 +++----------- src/grib_accessor_class_transient.cc | 48 +++---------------- src/grib_accessor_class_transient_darray.cc | 40 +++------------- src/grib_accessor_class_trim.cc | 45 +++-------------- src/grib_accessor_class_uint16.cc | 46 +++--------------- ...rib_accessor_class_uint16_little_endian.cc | 46 +++--------------- src/grib_accessor_class_uint32.cc | 45 +++-------------- ...rib_accessor_class_uint32_little_endian.cc | 45 +++-------------- src/grib_accessor_class_uint64.cc | 45 +++-------------- ...rib_accessor_class_uint64_little_endian.cc | 45 +++-------------- src/grib_accessor_class_uint8.cc | 45 +++-------------- ...b_accessor_class_unexpanded_descriptors.cc | 41 +++------------- src/grib_accessor_class_unpack_bufr_values.cc | 39 +++------------ src/grib_accessor_class_unsigned.cc | 39 +++------------ src/grib_accessor_class_unsigned_bits.cc | 40 +++------------- src/grib_accessor_class_validity_date.cc | 46 +++--------------- src/grib_accessor_class_validity_time.cc | 46 +++--------------- src/grib_accessor_class_values.cc | 40 +++------------- src/grib_accessor_class_variable.cc | 35 +++----------- src/grib_accessor_class_vector.cc | 47 +++--------------- src/grib_accessor_class_when.cc | 46 +++--------------- 221 files changed, 1327 insertions(+), 8325 deletions(-) diff --git a/src/accessor.class b/src/accessor.class index ff66f4760..85acbf1c2 100644 --- a/src/accessor.class +++ b/src/accessor.class @@ -24,7 +24,7 @@ static void destroy(grib_context*, grib_accessor*); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); static void post_init(grib_accessor*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); static int notify_change(grib_accessor*, grib_accessor*); static void update_size(grib_accessor*, size_t); static size_t preferred_size(grib_accessor*, int); @@ -53,7 +53,7 @@ static grib_accessor_class _grib_accessor_class_NAME = { "NAME", /* name */ sizeof(grib_accessor_NAME), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ &post_init, /* post_init */ &destroy, /* free mem */ @@ -103,8 +103,8 @@ ADD_TO_FILE grib_accessor_class.h extern grib_accessor_class* grib_accessor ADD_TO_FILE grib_accessor_factory.h { "NAME", &grib_accessor_class_NAME, }, ADD_TO_FILE grib_accessor_factory_hash_list NAME, &grib_accessor_class_NAME -static void init_class(grib_accessor_class* c) -{ -INIT -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} diff --git a/src/grib_accessor_class_abstract_long_vector.cc b/src/grib_accessor_class_abstract_long_vector.cc index b411df584..6e7a633b2 100644 --- a/src/grib_accessor_class_abstract_long_vector.cc +++ b/src/grib_accessor_class_abstract_long_vector.cc @@ -36,7 +36,7 @@ or edit "accessor.class" and rerun ./make_class.pl */ -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_abstract_long_vector { @@ -55,7 +55,7 @@ static grib_accessor_class _grib_accessor_class_abstract_long_vector = { "abstract_long_vector", /* name */ sizeof(grib_accessor_abstract_long_vector), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ 0, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -102,45 +102,9 @@ static grib_accessor_class _grib_accessor_class_abstract_long_vector = { grib_accessor_class* grib_accessor_class_abstract_long_vector = &_grib_accessor_class_abstract_long_vector; -static void init_class(grib_accessor_class* c) -{ - c->dump = (*(c->super))->dump; - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->value_count = (*(c->super))->value_count; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_long = (*(c->super))->pack_long; - c->unpack_long = (*(c->super))->unpack_long; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_double = (*(c->super))->unpack_double; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_abstract_vector.cc b/src/grib_accessor_class_abstract_vector.cc index 1e15ee282..f342dada6 100644 --- a/src/grib_accessor_class_abstract_vector.cc +++ b/src/grib_accessor_class_abstract_vector.cc @@ -35,7 +35,7 @@ or edit "accessor.class" and rerun ./make_class.pl */ -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_abstract_vector { @@ -54,7 +54,7 @@ static grib_accessor_class _grib_accessor_class_abstract_vector = { "abstract_vector", /* name */ sizeof(grib_accessor_abstract_vector), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ 0, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -101,45 +101,9 @@ static grib_accessor_class _grib_accessor_class_abstract_vector = { grib_accessor_class* grib_accessor_class_abstract_vector = &_grib_accessor_class_abstract_vector; -static void init_class(grib_accessor_class* c) -{ - c->dump = (*(c->super))->dump; - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->value_count = (*(c->super))->value_count; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_long = (*(c->super))->pack_long; - c->unpack_long = (*(c->super))->unpack_long; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_double = (*(c->super))->unpack_double; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_apply_operators.cc b/src/grib_accessor_class_apply_operators.cc index e03007b42..505ca54a1 100644 --- a/src/grib_accessor_class_apply_operators.cc +++ b/src/grib_accessor_class_apply_operators.cc @@ -69,7 +69,7 @@ static int value_count(grib_accessor*, long*); static void destroy(grib_context*, grib_accessor*); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_apply_operators { @@ -109,7 +109,7 @@ static grib_accessor_class _grib_accessor_class_apply_operators = { "apply_operators", /* name */ sizeof(grib_accessor_apply_operators), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ &destroy, /* free mem */ @@ -156,38 +156,10 @@ static grib_accessor_class _grib_accessor_class_apply_operators = { grib_accessor_class* grib_accessor_class_apply_operators = &_grib_accessor_class_apply_operators; -static void init_class(grib_accessor_class* c) -{ - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_float = (*(c->super))->pack_float; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_array.cc b/src/grib_accessor_class_array.cc index 321411730..13b0aa3aa 100644 --- a/src/grib_accessor_class_array.cc +++ b/src/grib_accessor_class_array.cc @@ -37,7 +37,7 @@ or edit "accessor.class" and rerun ./make_class.pl static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_array { @@ -55,7 +55,7 @@ static grib_accessor_class _grib_accessor_class_array = { "array", /* name */ sizeof(grib_accessor_array), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -102,45 +102,10 @@ static grib_accessor_class _grib_accessor_class_array = { grib_accessor_class* grib_accessor_class_array = &_grib_accessor_class_array; -static void init_class(grib_accessor_class* c) -{ - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->value_count = (*(c->super))->value_count; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_long = (*(c->super))->pack_long; - c->unpack_long = (*(c->super))->unpack_long; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_double = (*(c->super))->unpack_double; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_ascii.cc b/src/grib_accessor_class_ascii.cc index ccac8bbd5..26e26e9fb 100644 --- a/src/grib_accessor_class_ascii.cc +++ b/src/grib_accessor_class_ascii.cc @@ -50,7 +50,7 @@ static size_t string_length(grib_accessor*); static int value_count(grib_accessor*, long*); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); static int compare(grib_accessor*, grib_accessor*); typedef struct grib_accessor_ascii @@ -67,7 +67,7 @@ static grib_accessor_class _grib_accessor_class_ascii = { "ascii", /* name */ sizeof(grib_accessor_ascii), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -114,35 +114,10 @@ static grib_accessor_class _grib_accessor_class_ascii = { grib_accessor_class* grib_accessor_class_ascii = &_grib_accessor_class_ascii; -static void init_class(grib_accessor_class* c) -{ - c->next_offset = (*(c->super))->next_offset; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_float = (*(c->super))->pack_float; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_assert.cc b/src/grib_accessor_class_assert.cc index 9a73a67ae..2518fda19 100644 --- a/src/grib_accessor_class_assert.cc +++ b/src/grib_accessor_class_assert.cc @@ -38,7 +38,7 @@ or edit "accessor.class" and rerun ./make_class.pl static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); static int notify_change(grib_accessor*, grib_accessor*); typedef struct grib_accessor_assert @@ -55,7 +55,7 @@ static grib_accessor_class _grib_accessor_class_assert = { "assert", /* name */ sizeof(grib_accessor_assert), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -102,44 +102,10 @@ static grib_accessor_class _grib_accessor_class_assert = { grib_accessor_class* grib_accessor_class_assert = &_grib_accessor_class_assert; -static void init_class(grib_accessor_class* c) -{ - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->value_count = (*(c->super))->value_count; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_long = (*(c->super))->pack_long; - c->unpack_long = (*(c->super))->unpack_long; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_double = (*(c->super))->unpack_double; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_bit.cc b/src/grib_accessor_class_bit.cc index 5a646ddaf..c2a4cdb0c 100644 --- a/src/grib_accessor_class_bit.cc +++ b/src/grib_accessor_class_bit.cc @@ -38,7 +38,7 @@ static int pack_long(grib_accessor*, const long* val, size_t* len); static int unpack_long(grib_accessor*, long* val, size_t* len); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_bit { @@ -57,7 +57,7 @@ static grib_accessor_class _grib_accessor_class_bit = { "bit", /* name */ sizeof(grib_accessor_bit), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -104,43 +104,10 @@ static grib_accessor_class _grib_accessor_class_bit = { grib_accessor_class* grib_accessor_class_bit = &_grib_accessor_class_bit; -static void init_class(grib_accessor_class* c) -{ - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->value_count = (*(c->super))->value_count; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_double = (*(c->super))->unpack_double; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_bitmap.cc b/src/grib_accessor_class_bitmap.cc index 31c5997d6..44c6c4039 100644 --- a/src/grib_accessor_class_bitmap.cc +++ b/src/grib_accessor_class_bitmap.cc @@ -49,7 +49,7 @@ static int unpack_string(grib_accessor*, char*, size_t* len); static long next_offset(grib_accessor*); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); static void update_size(grib_accessor*, size_t); static int unpack_double_element(grib_accessor*, size_t i, double* val); static int unpack_double_element_set(grib_accessor*, const size_t* index_array, size_t len, double* val_array); @@ -73,7 +73,7 @@ static grib_accessor_class _grib_accessor_class_bitmap = { "bitmap", /* name */ sizeof(grib_accessor_bitmap), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -120,37 +120,10 @@ static grib_accessor_class _grib_accessor_class_bitmap = { grib_accessor_class* grib_accessor_class_bitmap = &_grib_accessor_class_bitmap; -static void init_class(grib_accessor_class* c) -{ - c->string_length = (*(c->super))->string_length; - c->value_count = (*(c->super))->value_count; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_long = (*(c->super))->pack_long; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->pack_string = (*(c->super))->pack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_bits.cc b/src/grib_accessor_class_bits.cc index 62a21bdb3..298426465 100644 --- a/src/grib_accessor_class_bits.cc +++ b/src/grib_accessor_class_bits.cc @@ -57,7 +57,7 @@ static int unpack_long(grib_accessor*, long* val, size_t* len); static int unpack_string(grib_accessor*, char*, size_t* len); static long byte_count(grib_accessor*); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_bits { @@ -79,7 +79,7 @@ static grib_accessor_class _grib_accessor_class_bits = { "bits", /* name */ sizeof(grib_accessor_bits), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -126,38 +126,10 @@ static grib_accessor_class _grib_accessor_class_bits = { grib_accessor_class* grib_accessor_class_bits = &_grib_accessor_class_bits; -static void init_class(grib_accessor_class* c) -{ - c->dump = (*(c->super))->dump; - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->value_count = (*(c->super))->value_count; - c->byte_offset = (*(c->super))->byte_offset; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_float = (*(c->super))->pack_float; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_bits_per_value.cc b/src/grib_accessor_class_bits_per_value.cc index f6b69cda6..1c14659bf 100644 --- a/src/grib_accessor_class_bits_per_value.cc +++ b/src/grib_accessor_class_bits_per_value.cc @@ -39,7 +39,7 @@ or edit "accessor.class" and rerun ./make_class.pl static int pack_long(grib_accessor*, const long* val, size_t* len); static int unpack_long(grib_accessor*, long* val, size_t* len); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_bits_per_value { @@ -58,7 +58,7 @@ static grib_accessor_class _grib_accessor_class_bits_per_value = { "bits_per_value", /* name */ sizeof(grib_accessor_bits_per_value), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -105,44 +105,10 @@ static grib_accessor_class _grib_accessor_class_bits_per_value = { grib_accessor_class* grib_accessor_class_bits_per_value = &_grib_accessor_class_bits_per_value; -static void init_class(grib_accessor_class* c) -{ - c->dump = (*(c->super))->dump; - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->value_count = (*(c->super))->value_count; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_double = (*(c->super))->unpack_double; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_blob.cc b/src/grib_accessor_class_blob.cc index 13c49cc27..63dc86562 100644 --- a/src/grib_accessor_class_blob.cc +++ b/src/grib_accessor_class_blob.cc @@ -35,7 +35,7 @@ static int get_native_type(grib_accessor*); static int unpack_bytes(grib_accessor*, unsigned char*, size_t* len); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_blob { @@ -51,7 +51,7 @@ static grib_accessor_class _grib_accessor_class_blob = { "blob", /* name */ sizeof(grib_accessor_blob), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -98,43 +98,10 @@ static grib_accessor_class _grib_accessor_class_blob = { grib_accessor_class* grib_accessor_class_blob = &_grib_accessor_class_blob; -static void init_class(grib_accessor_class* c) -{ - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->value_count = (*(c->super))->value_count; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_long = (*(c->super))->pack_long; - c->unpack_long = (*(c->super))->unpack_long; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_double = (*(c->super))->unpack_double; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_box.cc b/src/grib_accessor_class_box.cc index 4b31b9889..8ebe15b1a 100644 --- a/src/grib_accessor_class_box.cc +++ b/src/grib_accessor_class_box.cc @@ -34,7 +34,7 @@ or edit "accessor.class" and rerun ./make_class.pl static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_box { @@ -51,7 +51,7 @@ static grib_accessor_class _grib_accessor_class_box = { "box", /* name */ sizeof(grib_accessor_box), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -98,45 +98,10 @@ static grib_accessor_class _grib_accessor_class_box = { grib_accessor_class* grib_accessor_class_box = &_grib_accessor_class_box; -static void init_class(grib_accessor_class* c) -{ - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->value_count = (*(c->super))->value_count; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_long = (*(c->super))->pack_long; - c->unpack_long = (*(c->super))->unpack_long; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_double = (*(c->super))->unpack_double; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_budgdate.cc b/src/grib_accessor_class_budgdate.cc index 24d354b7b..449da48b5 100644 --- a/src/grib_accessor_class_budgdate.cc +++ b/src/grib_accessor_class_budgdate.cc @@ -38,7 +38,7 @@ or edit "accessor.class" and rerun ./make_class.pl static int pack_long(grib_accessor*, const long* val, size_t* len); static int unpack_long(grib_accessor*, long* val, size_t* len); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_budgdate { @@ -58,7 +58,7 @@ static grib_accessor_class _grib_accessor_class_budgdate = { "budgdate", /* name */ sizeof(grib_accessor_budgdate), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -105,44 +105,10 @@ static grib_accessor_class _grib_accessor_class_budgdate = { grib_accessor_class* grib_accessor_class_budgdate = &_grib_accessor_class_budgdate; -static void init_class(grib_accessor_class* c) -{ - c->dump = (*(c->super))->dump; - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->value_count = (*(c->super))->value_count; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_double = (*(c->super))->unpack_double; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_bufr_data_array.cc b/src/grib_accessor_class_bufr_data_array.cc index 222de3299..7164706c7 100644 --- a/src/grib_accessor_class_bufr_data_array.cc +++ b/src/grib_accessor_class_bufr_data_array.cc @@ -97,7 +97,7 @@ static int value_count(grib_accessor*, long*); static void destroy(grib_context*, grib_accessor*); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); static int compare(grib_accessor*, grib_accessor*); typedef struct grib_accessor_bufr_data_array @@ -161,7 +161,7 @@ static grib_accessor_class _grib_accessor_class_bufr_data_array = { "bufr_data_array", /* name */ sizeof(grib_accessor_bufr_data_array), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ &destroy, /* free mem */ @@ -208,36 +208,10 @@ static grib_accessor_class _grib_accessor_class_bufr_data_array = { grib_accessor_class* grib_accessor_class_bufr_data_array = &_grib_accessor_class_bufr_data_array; -static void init_class(grib_accessor_class* c) -{ - c->string_length = (*(c->super))->string_length; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->unpack_long = (*(c->super))->unpack_long; - c->pack_float = (*(c->super))->pack_float; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_bufr_data_element.cc b/src/grib_accessor_class_bufr_data_element.cc index 5dbd0ef96..e46ff086e 100644 --- a/src/grib_accessor_class_bufr_data_element.cc +++ b/src/grib_accessor_class_bufr_data_element.cc @@ -65,7 +65,7 @@ static int value_count(grib_accessor*, long*); static void destroy(grib_context*, grib_accessor*); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); static int unpack_double_element(grib_accessor*, size_t i, double* val); static grib_accessor* make_clone(grib_accessor*, grib_section*, int*); @@ -93,7 +93,7 @@ static grib_accessor_class _grib_accessor_class_bufr_data_element = { "bufr_data_element", /* name */ sizeof(grib_accessor_bufr_data_element), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ &destroy, /* free mem */ @@ -140,31 +140,10 @@ static grib_accessor_class _grib_accessor_class_bufr_data_element = { grib_accessor_class* grib_accessor_class_bufr_data_element = &_grib_accessor_class_bufr_data_element; -static void init_class(grib_accessor_class* c) -{ - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->sub_section = (*(c->super))->sub_section; - c->pack_float = (*(c->super))->pack_float; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_bufr_elements_table.cc b/src/grib_accessor_class_bufr_elements_table.cc index 14fb769e2..236ab5681 100644 --- a/src/grib_accessor_class_bufr_elements_table.cc +++ b/src/grib_accessor_class_bufr_elements_table.cc @@ -73,7 +73,7 @@ static int unpack_long(grib_accessor*, long* val, size_t* len); static int unpack_string(grib_accessor*, char*, size_t* len); static int value_count(grib_accessor*, long*); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_bufr_elements_table { @@ -92,7 +92,7 @@ static grib_accessor_class _grib_accessor_class_bufr_elements_table = { "bufr_elements_table", /* name */ sizeof(grib_accessor_bufr_elements_table), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -139,41 +139,10 @@ static grib_accessor_class _grib_accessor_class_bufr_elements_table = { grib_accessor_class* grib_accessor_class_bufr_elements_table = &_grib_accessor_class_bufr_elements_table; -static void init_class(grib_accessor_class* c) -{ - c->dump = (*(c->super))->dump; - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_long = (*(c->super))->pack_long; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_bufr_extract_area_subsets.cc b/src/grib_accessor_class_bufr_extract_area_subsets.cc index 5d2176daa..3dfe69f7a 100644 --- a/src/grib_accessor_class_bufr_extract_area_subsets.cc +++ b/src/grib_accessor_class_bufr_extract_area_subsets.cc @@ -44,7 +44,7 @@ or edit "accessor.class" and rerun ./make_class.pl static int get_native_type(grib_accessor*); static int pack_long(grib_accessor*, const long* val, size_t* len); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_bufr_extract_area_subsets { @@ -70,7 +70,7 @@ static grib_accessor_class _grib_accessor_class_bufr_extract_area_subsets = { "bufr_extract_area_subsets", /* name */ sizeof(grib_accessor_bufr_extract_area_subsets), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -117,44 +117,10 @@ static grib_accessor_class _grib_accessor_class_bufr_extract_area_subsets = { grib_accessor_class* grib_accessor_class_bufr_extract_area_subsets = &_grib_accessor_class_bufr_extract_area_subsets; -static void init_class(grib_accessor_class* c) -{ - c->dump = (*(c->super))->dump; - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->value_count = (*(c->super))->value_count; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->unpack_long = (*(c->super))->unpack_long; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_double = (*(c->super))->unpack_double; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_bufr_extract_datetime_subsets.cc b/src/grib_accessor_class_bufr_extract_datetime_subsets.cc index 8a2aee911..e2efdbcef 100644 --- a/src/grib_accessor_class_bufr_extract_datetime_subsets.cc +++ b/src/grib_accessor_class_bufr_extract_datetime_subsets.cc @@ -37,7 +37,7 @@ or edit "accessor.class" and rerun ./make_class.pl static int get_native_type(grib_accessor*); static int pack_long(grib_accessor*, const long* val, size_t* len); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_bufr_extract_datetime_subsets { @@ -56,7 +56,7 @@ static grib_accessor_class _grib_accessor_class_bufr_extract_datetime_subsets = "bufr_extract_datetime_subsets", /* name */ sizeof(grib_accessor_bufr_extract_datetime_subsets), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -103,44 +103,10 @@ static grib_accessor_class _grib_accessor_class_bufr_extract_datetime_subsets = grib_accessor_class* grib_accessor_class_bufr_extract_datetime_subsets = &_grib_accessor_class_bufr_extract_datetime_subsets; -static void init_class(grib_accessor_class* c) -{ - c->dump = (*(c->super))->dump; - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->value_count = (*(c->super))->value_count; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->unpack_long = (*(c->super))->unpack_long; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_double = (*(c->super))->unpack_double; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_bufr_extract_subsets.cc b/src/grib_accessor_class_bufr_extract_subsets.cc index d618e9f4d..3920286ad 100644 --- a/src/grib_accessor_class_bufr_extract_subsets.cc +++ b/src/grib_accessor_class_bufr_extract_subsets.cc @@ -38,7 +38,7 @@ or edit "accessor.class" and rerun ./make_class.pl static int get_native_type(grib_accessor*); static int pack_long(grib_accessor*, const long* val, size_t* len); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_bufr_extract_subsets { @@ -58,7 +58,7 @@ static grib_accessor_class _grib_accessor_class_bufr_extract_subsets = { "bufr_extract_subsets", /* name */ sizeof(grib_accessor_bufr_extract_subsets), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -105,44 +105,10 @@ static grib_accessor_class _grib_accessor_class_bufr_extract_subsets = { grib_accessor_class* grib_accessor_class_bufr_extract_subsets = &_grib_accessor_class_bufr_extract_subsets; -static void init_class(grib_accessor_class* c) -{ - c->dump = (*(c->super))->dump; - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->value_count = (*(c->super))->value_count; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->unpack_long = (*(c->super))->unpack_long; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_double = (*(c->super))->unpack_double; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_bufr_group.cc b/src/grib_accessor_class_bufr_group.cc index 350ce034b..cad594c7c 100644 --- a/src/grib_accessor_class_bufr_group.cc +++ b/src/grib_accessor_class_bufr_group.cc @@ -32,7 +32,7 @@ or edit "accessor.class" and rerun ./make_class.pl */ static void dump(grib_accessor*, grib_dumper*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); static grib_accessor* next(grib_accessor*, int); typedef struct grib_accessor_bufr_group @@ -54,7 +54,7 @@ static grib_accessor_class _grib_accessor_class_bufr_group = { "bufr_group", /* name */ sizeof(grib_accessor_bufr_group), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ 0, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -101,44 +101,10 @@ static grib_accessor_class _grib_accessor_class_bufr_group = { grib_accessor_class* grib_accessor_class_bufr_group = &_grib_accessor_class_bufr_group; -static void init_class(grib_accessor_class* c) -{ - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->value_count = (*(c->super))->value_count; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_long = (*(c->super))->pack_long; - c->unpack_long = (*(c->super))->unpack_long; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_double = (*(c->super))->unpack_double; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_bufr_simple_thinning.cc b/src/grib_accessor_class_bufr_simple_thinning.cc index 9d3544122..3722ce100 100644 --- a/src/grib_accessor_class_bufr_simple_thinning.cc +++ b/src/grib_accessor_class_bufr_simple_thinning.cc @@ -40,7 +40,7 @@ or edit "accessor.class" and rerun ./make_class.pl static int get_native_type(grib_accessor*); static int pack_long(grib_accessor*, const long* val, size_t* len); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_bufr_simple_thinning { @@ -62,7 +62,7 @@ static grib_accessor_class _grib_accessor_class_bufr_simple_thinning = { "bufr_simple_thinning", /* name */ sizeof(grib_accessor_bufr_simple_thinning), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -109,44 +109,10 @@ static grib_accessor_class _grib_accessor_class_bufr_simple_thinning = { grib_accessor_class* grib_accessor_class_bufr_simple_thinning = &_grib_accessor_class_bufr_simple_thinning; -static void init_class(grib_accessor_class* c) -{ - c->dump = (*(c->super))->dump; - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->value_count = (*(c->super))->value_count; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->unpack_long = (*(c->super))->unpack_long; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_double = (*(c->super))->unpack_double; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_bufr_string_values.cc b/src/grib_accessor_class_bufr_string_values.cc index ba78d3c77..40eac7014 100644 --- a/src/grib_accessor_class_bufr_string_values.cc +++ b/src/grib_accessor_class_bufr_string_values.cc @@ -51,7 +51,7 @@ static int value_count(grib_accessor*, long*); static void destroy(grib_context*, grib_accessor*); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_bufr_string_values { @@ -70,7 +70,7 @@ static grib_accessor_class _grib_accessor_class_bufr_string_values = { "bufr_string_values", /* name */ sizeof(grib_accessor_bufr_string_values), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ &destroy, /* free mem */ @@ -117,40 +117,10 @@ static grib_accessor_class _grib_accessor_class_bufr_string_values = { grib_accessor_class* grib_accessor_class_bufr_string_values = &_grib_accessor_class_bufr_string_values; -static void init_class(grib_accessor_class* c) -{ - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_long = (*(c->super))->pack_long; - c->unpack_long = (*(c->super))->unpack_long; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_double = (*(c->super))->unpack_double; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_bufrdc_expanded_descriptors.cc b/src/grib_accessor_class_bufrdc_expanded_descriptors.cc index 77115dfe1..1e3505d2a 100644 --- a/src/grib_accessor_class_bufrdc_expanded_descriptors.cc +++ b/src/grib_accessor_class_bufrdc_expanded_descriptors.cc @@ -49,7 +49,7 @@ static int value_count(grib_accessor*, long*); static void destroy(grib_context*, grib_accessor*); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_bufrdc_expanded_descriptors { @@ -68,7 +68,7 @@ static grib_accessor_class _grib_accessor_class_bufrdc_expanded_descriptors = { "bufrdc_expanded_descriptors", /* name */ sizeof(grib_accessor_bufrdc_expanded_descriptors), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ &destroy, /* free mem */ @@ -115,42 +115,10 @@ static grib_accessor_class _grib_accessor_class_bufrdc_expanded_descriptors = { grib_accessor_class* grib_accessor_class_bufrdc_expanded_descriptors = &_grib_accessor_class_bufrdc_expanded_descriptors; -static void init_class(grib_accessor_class* c) -{ - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_long = (*(c->super))->pack_long; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_double = (*(c->super))->unpack_double; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_bytes.cc b/src/grib_accessor_class_bytes.cc index 4dd770a06..a43359b61 100644 --- a/src/grib_accessor_class_bytes.cc +++ b/src/grib_accessor_class_bytes.cc @@ -35,7 +35,7 @@ static int get_native_type(grib_accessor*); static int pack_string(grib_accessor*, const char*, size_t* len); static int unpack_string(grib_accessor*, char*, size_t* len); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); static int compare(grib_accessor*, grib_accessor*); typedef struct grib_accessor_bytes @@ -52,7 +52,7 @@ static grib_accessor_class _grib_accessor_class_bytes = { "bytes", /* name */ sizeof(grib_accessor_bytes), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -99,42 +99,10 @@ static grib_accessor_class _grib_accessor_class_bytes = { grib_accessor_class* grib_accessor_class_bytes = &_grib_accessor_class_bytes; -static void init_class(grib_accessor_class* c) -{ - c->dump = (*(c->super))->dump; - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->value_count = (*(c->super))->value_count; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_long = (*(c->super))->pack_long; - c->unpack_long = (*(c->super))->unpack_long; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_double = (*(c->super))->unpack_double; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_change_alternative_row_scanning.cc b/src/grib_accessor_class_change_alternative_row_scanning.cc index c561e4818..90c0ec0d2 100644 --- a/src/grib_accessor_class_change_alternative_row_scanning.cc +++ b/src/grib_accessor_class_change_alternative_row_scanning.cc @@ -40,7 +40,7 @@ static int get_native_type(grib_accessor*); static int pack_long(grib_accessor*, const long* val, size_t* len); static int unpack_long(grib_accessor*, long* val, size_t* len); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_change_alternative_row_scanning { @@ -60,7 +60,7 @@ static grib_accessor_class _grib_accessor_class_change_alternative_row_scanning "change_alternative_row_scanning", /* name */ sizeof(grib_accessor_change_alternative_row_scanning), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -107,43 +107,10 @@ static grib_accessor_class _grib_accessor_class_change_alternative_row_scanning grib_accessor_class* grib_accessor_class_change_alternative_row_scanning = &_grib_accessor_class_change_alternative_row_scanning; -static void init_class(grib_accessor_class* c) -{ - c->dump = (*(c->super))->dump; - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->value_count = (*(c->super))->value_count; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_double = (*(c->super))->unpack_double; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_change_scanning_direction.cc b/src/grib_accessor_class_change_scanning_direction.cc index dd480fb77..6ebe8f7cb 100644 --- a/src/grib_accessor_class_change_scanning_direction.cc +++ b/src/grib_accessor_class_change_scanning_direction.cc @@ -44,7 +44,7 @@ static int get_native_type(grib_accessor*); static int pack_long(grib_accessor*, const long* val, size_t* len); static int unpack_long(grib_accessor*, long* val, size_t* len); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_change_scanning_direction { @@ -68,7 +68,7 @@ static grib_accessor_class _grib_accessor_class_change_scanning_direction = { "change_scanning_direction", /* name */ sizeof(grib_accessor_change_scanning_direction), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -115,43 +115,10 @@ static grib_accessor_class _grib_accessor_class_change_scanning_direction = { grib_accessor_class* grib_accessor_class_change_scanning_direction = &_grib_accessor_class_change_scanning_direction; -static void init_class(grib_accessor_class* c) -{ - c->dump = (*(c->super))->dump; - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->value_count = (*(c->super))->value_count; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_double = (*(c->super))->unpack_double; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_check_internal_version.cc b/src/grib_accessor_class_check_internal_version.cc index 6e7e1d9ba..fa765749a 100644 --- a/src/grib_accessor_class_check_internal_version.cc +++ b/src/grib_accessor_class_check_internal_version.cc @@ -34,7 +34,7 @@ or edit "accessor.class" and rerun ./make_class.pl static size_t string_length(grib_accessor*); static int value_count(grib_accessor*, long*); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_check_internal_version { @@ -51,7 +51,7 @@ static grib_accessor_class _grib_accessor_class_check_internal_version = { "check_internal_version", /* name */ sizeof(grib_accessor_check_internal_version), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -98,44 +98,10 @@ static grib_accessor_class _grib_accessor_class_check_internal_version = { grib_accessor_class* grib_accessor_class_check_internal_version = &_grib_accessor_class_check_internal_version; -static void init_class(grib_accessor_class* c) -{ - c->dump = (*(c->super))->dump; - c->next_offset = (*(c->super))->next_offset; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_long = (*(c->super))->pack_long; - c->unpack_long = (*(c->super))->unpack_long; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_double = (*(c->super))->unpack_double; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_closest_date.cc b/src/grib_accessor_class_closest_date.cc index b735e3aed..6f3172d85 100644 --- a/src/grib_accessor_class_closest_date.cc +++ b/src/grib_accessor_class_closest_date.cc @@ -48,7 +48,7 @@ static int unpack_double(grib_accessor*, double* val, size_t* len); static int unpack_long(grib_accessor*, long* val, size_t* len); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_closest_date { @@ -74,7 +74,7 @@ static grib_accessor_class _grib_accessor_class_closest_date = { "closest_date", /* name */ sizeof(grib_accessor_closest_date), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -121,43 +121,10 @@ static grib_accessor_class _grib_accessor_class_closest_date = { grib_accessor_class* grib_accessor_class_closest_date = &_grib_accessor_class_closest_date; -static void init_class(grib_accessor_class* c) -{ - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->value_count = (*(c->super))->value_count; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_long = (*(c->super))->pack_long; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_codeflag.cc b/src/grib_accessor_class_codeflag.cc index 4f2eba341..eac1d3fd9 100644 --- a/src/grib_accessor_class_codeflag.cc +++ b/src/grib_accessor_class_codeflag.cc @@ -39,7 +39,7 @@ or edit "accessor.class" and rerun ./make_class.pl static int value_count(grib_accessor*, long*); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_codeflag { @@ -60,7 +60,7 @@ static grib_accessor_class _grib_accessor_class_codeflag = { "codeflag", /* name */ sizeof(grib_accessor_codeflag), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -107,44 +107,10 @@ static grib_accessor_class _grib_accessor_class_codeflag = { grib_accessor_class* grib_accessor_class_codeflag = &_grib_accessor_class_codeflag; -static void init_class(grib_accessor_class* c) -{ - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_long = (*(c->super))->pack_long; - c->unpack_long = (*(c->super))->unpack_long; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_double = (*(c->super))->unpack_double; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_codetable.cc b/src/grib_accessor_class_codetable.cc index 8b525e246..db7e8b53c 100644 --- a/src/grib_accessor_class_codetable.cc +++ b/src/grib_accessor_class_codetable.cc @@ -79,7 +79,7 @@ static int value_count(grib_accessor*, long*); static void destroy(grib_context*, grib_accessor*); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_codetable { @@ -104,7 +104,7 @@ static grib_accessor_class _grib_accessor_class_codetable = { "codetable", /* name */ sizeof(grib_accessor_codetable), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ &destroy, /* free mem */ @@ -151,39 +151,10 @@ static grib_accessor_class _grib_accessor_class_codetable = { grib_accessor_class* grib_accessor_class_codetable = &_grib_accessor_class_codetable; -static void init_class(grib_accessor_class* c) -{ - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_long = (*(c->super))->pack_long; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_double = (*(c->super))->unpack_double; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_codetable_title.cc b/src/grib_accessor_class_codetable_title.cc index 897a7b2b2..5b43c5076 100644 --- a/src/grib_accessor_class_codetable_title.cc +++ b/src/grib_accessor_class_codetable_title.cc @@ -35,7 +35,7 @@ or edit "accessor.class" and rerun ./make_class.pl static int get_native_type(grib_accessor*); static int unpack_string(grib_accessor*, char*, size_t* len); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_codetable_title { @@ -52,7 +52,7 @@ static grib_accessor_class _grib_accessor_class_codetable_title = { "codetable_title", /* name */ sizeof(grib_accessor_codetable_title), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -99,44 +99,10 @@ static grib_accessor_class _grib_accessor_class_codetable_title = { grib_accessor_class* grib_accessor_class_codetable_title = &_grib_accessor_class_codetable_title; -static void init_class(grib_accessor_class* c) -{ - c->dump = (*(c->super))->dump; - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->value_count = (*(c->super))->value_count; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_long = (*(c->super))->pack_long; - c->unpack_long = (*(c->super))->unpack_long; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_double = (*(c->super))->unpack_double; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_codetable_units.cc b/src/grib_accessor_class_codetable_units.cc index 9f1d40e0a..af956a675 100644 --- a/src/grib_accessor_class_codetable_units.cc +++ b/src/grib_accessor_class_codetable_units.cc @@ -35,7 +35,7 @@ or edit "accessor.class" and rerun ./make_class.pl static int get_native_type(grib_accessor*); static int unpack_string(grib_accessor*, char*, size_t* len); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_codetable_units { @@ -52,7 +52,7 @@ static grib_accessor_class _grib_accessor_class_codetable_units = { "codetable_units", /* name */ sizeof(grib_accessor_codetable_units), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -99,44 +99,10 @@ static grib_accessor_class _grib_accessor_class_codetable_units = { grib_accessor_class* grib_accessor_class_codetable_units = &_grib_accessor_class_codetable_units; -static void init_class(grib_accessor_class* c) -{ - c->dump = (*(c->super))->dump; - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->value_count = (*(c->super))->value_count; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_long = (*(c->super))->pack_long; - c->unpack_long = (*(c->super))->unpack_long; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_double = (*(c->super))->unpack_double; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_concept.cc b/src/grib_accessor_class_concept.cc index e3f794395..6c14f2293 100644 --- a/src/grib_accessor_class_concept.cc +++ b/src/grib_accessor_class_concept.cc @@ -52,7 +52,7 @@ static int value_count(grib_accessor*, long*); static void destroy(grib_context*, grib_accessor*); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); static int compare(grib_accessor*, grib_accessor*); typedef struct grib_accessor_concept @@ -69,7 +69,7 @@ static grib_accessor_class _grib_accessor_class_concept = { "concept", /* name */ sizeof(grib_accessor_concept), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ &destroy, /* free mem */ @@ -116,35 +116,10 @@ static grib_accessor_class _grib_accessor_class_concept = { grib_accessor_class* grib_accessor_class_concept = &_grib_accessor_class_concept; -static void init_class(grib_accessor_class* c) -{ - c->next_offset = (*(c->super))->next_offset; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_float = (*(c->super))->pack_float; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_constant.cc b/src/grib_accessor_class_constant.cc index 6c5bbda84..259c89715 100644 --- a/src/grib_accessor_class_constant.cc +++ b/src/grib_accessor_class_constant.cc @@ -40,7 +40,7 @@ static int pack_double(grib_accessor*, const double* val, size_t* len); static int pack_long(grib_accessor*, const long* val, size_t* len); static int pack_string(grib_accessor*, const char*, size_t* len); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_constant { @@ -61,7 +61,7 @@ static grib_accessor_class _grib_accessor_class_constant = { "constant", /* name */ sizeof(grib_accessor_constant), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -108,42 +108,10 @@ static grib_accessor_class _grib_accessor_class_constant = { grib_accessor_class* grib_accessor_class_constant = &_grib_accessor_class_constant; -static void init_class(grib_accessor_class* c) -{ - c->dump = (*(c->super))->dump; - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->value_count = (*(c->super))->value_count; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->unpack_long = (*(c->super))->unpack_long; - c->pack_float = (*(c->super))->pack_float; - c->unpack_double = (*(c->super))->unpack_double; - c->unpack_float = (*(c->super))->unpack_float; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_count_file.cc b/src/grib_accessor_class_count_file.cc index ad40e2cbe..84964a9dc 100644 --- a/src/grib_accessor_class_count_file.cc +++ b/src/grib_accessor_class_count_file.cc @@ -36,7 +36,7 @@ or edit "accessor.class" and rerun ./make_class.pl static int unpack_long(grib_accessor*, long* val, size_t* len); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_count_file { @@ -53,7 +53,7 @@ static grib_accessor_class _grib_accessor_class_count_file = { "count_file", /* name */ sizeof(grib_accessor_count_file), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -100,45 +100,10 @@ static grib_accessor_class _grib_accessor_class_count_file = { grib_accessor_class* grib_accessor_class_count_file = &_grib_accessor_class_count_file; -static void init_class(grib_accessor_class* c) -{ - c->dump = (*(c->super))->dump; - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->value_count = (*(c->super))->value_count; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_long = (*(c->super))->pack_long; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_double = (*(c->super))->unpack_double; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_count_missing.cc b/src/grib_accessor_class_count_missing.cc index b7c2b66e3..42924144f 100644 --- a/src/grib_accessor_class_count_missing.cc +++ b/src/grib_accessor_class_count_missing.cc @@ -39,7 +39,7 @@ or edit "accessor.class" and rerun ./make_class.pl static int unpack_long(grib_accessor*, long* val, size_t* len); static int value_count(grib_accessor*, long*); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_count_missing { @@ -60,7 +60,7 @@ static grib_accessor_class _grib_accessor_class_count_missing = { "count_missing", /* name */ sizeof(grib_accessor_count_missing), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -107,44 +107,10 @@ static grib_accessor_class _grib_accessor_class_count_missing = { grib_accessor_class* grib_accessor_class_count_missing = &_grib_accessor_class_count_missing; -static void init_class(grib_accessor_class* c) -{ - c->dump = (*(c->super))->dump; - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_long = (*(c->super))->pack_long; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_double = (*(c->super))->unpack_double; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_count_total.cc b/src/grib_accessor_class_count_total.cc index cf5ed7972..f66b3be7a 100644 --- a/src/grib_accessor_class_count_total.cc +++ b/src/grib_accessor_class_count_total.cc @@ -38,7 +38,7 @@ or edit "accessor.class" and rerun ./make_class.pl static int unpack_long(grib_accessor*, long* val, size_t* len); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_count_total { @@ -55,7 +55,7 @@ static grib_accessor_class _grib_accessor_class_count_total = { "count_total", /* name */ sizeof(grib_accessor_count_total), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -102,45 +102,10 @@ static grib_accessor_class _grib_accessor_class_count_total = { grib_accessor_class* grib_accessor_class_count_total = &_grib_accessor_class_count_total; -static void init_class(grib_accessor_class* c) -{ - c->dump = (*(c->super))->dump; - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->value_count = (*(c->super))->value_count; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_long = (*(c->super))->pack_long; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_double = (*(c->super))->unpack_double; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_data_2order_packing.cc b/src/grib_accessor_class_data_2order_packing.cc index 5d93ef8f8..d0361361f 100644 --- a/src/grib_accessor_class_data_2order_packing.cc +++ b/src/grib_accessor_class_data_2order_packing.cc @@ -62,7 +62,7 @@ static int pack_double(grib_accessor*, const double* val, size_t* len); static int unpack_double(grib_accessor*, double* val, size_t* len); static int value_count(grib_accessor*, long*); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_data_2order_packing { @@ -107,7 +107,7 @@ static grib_accessor_class _grib_accessor_class_data_2order_packing = { "data_2order_packing", /* name */ sizeof(grib_accessor_data_2order_packing), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -154,43 +154,10 @@ static grib_accessor_class _grib_accessor_class_data_2order_packing = { grib_accessor_class* grib_accessor_class_data_2order_packing = &_grib_accessor_class_data_2order_packing; -static void init_class(grib_accessor_class* c) -{ - c->dump = (*(c->super))->dump; - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_long = (*(c->super))->pack_long; - c->unpack_long = (*(c->super))->unpack_long; - c->pack_float = (*(c->super))->pack_float; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_data_apply_bitmap.cc b/src/grib_accessor_class_data_apply_bitmap.cc index e64f51780..703c4c83e 100644 --- a/src/grib_accessor_class_data_apply_bitmap.cc +++ b/src/grib_accessor_class_data_apply_bitmap.cc @@ -48,7 +48,7 @@ static int unpack_float(grib_accessor*, float* val, size_t* len); static int value_count(grib_accessor*, long*); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); static int unpack_double_element(grib_accessor*, size_t i, double* val); static int unpack_double_element_set(grib_accessor*, const size_t* index_array, size_t len, double* val_array); @@ -72,7 +72,7 @@ static grib_accessor_class _grib_accessor_class_data_apply_bitmap = { "data_apply_bitmap", /* name */ sizeof(grib_accessor_data_apply_bitmap), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -119,38 +119,10 @@ static grib_accessor_class _grib_accessor_class_data_apply_bitmap = { grib_accessor_class* grib_accessor_class_data_apply_bitmap = &_grib_accessor_class_data_apply_bitmap; -static void init_class(grib_accessor_class* c) -{ - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_long = (*(c->super))->pack_long; - c->unpack_long = (*(c->super))->unpack_long; - c->pack_float = (*(c->super))->pack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_data_apply_boustrophedonic.cc b/src/grib_accessor_class_data_apply_boustrophedonic.cc index c512cc4a3..29c9ebdf8 100644 --- a/src/grib_accessor_class_data_apply_boustrophedonic.cc +++ b/src/grib_accessor_class_data_apply_boustrophedonic.cc @@ -47,7 +47,7 @@ static int unpack_float(grib_accessor*, float* val, size_t* len); static int value_count(grib_accessor*, long*); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); static int unpack_double_element(grib_accessor*, size_t i, double* val); static int unpack_double_element_set(grib_accessor*, const size_t* index_array, size_t len, double* val_array); @@ -70,7 +70,7 @@ static grib_accessor_class _grib_accessor_class_data_apply_boustrophedonic = { "data_apply_boustrophedonic", /* name */ sizeof(grib_accessor_data_apply_boustrophedonic), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -117,38 +117,10 @@ static grib_accessor_class _grib_accessor_class_data_apply_boustrophedonic = { grib_accessor_class* grib_accessor_class_data_apply_boustrophedonic = &_grib_accessor_class_data_apply_boustrophedonic; -static void init_class(grib_accessor_class* c) -{ - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_long = (*(c->super))->pack_long; - c->unpack_long = (*(c->super))->unpack_long; - c->pack_float = (*(c->super))->pack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_data_apply_boustrophedonic_bitmap.cc b/src/grib_accessor_class_data_apply_boustrophedonic_bitmap.cc index a1aa5c812..64dfe9b1e 100644 --- a/src/grib_accessor_class_data_apply_boustrophedonic_bitmap.cc +++ b/src/grib_accessor_class_data_apply_boustrophedonic_bitmap.cc @@ -48,7 +48,7 @@ static int unpack_double(grib_accessor*, double* val, size_t* len); static int value_count(grib_accessor*, long*); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); static int unpack_double_element(grib_accessor*, size_t i, double* val); static int unpack_double_element_set(grib_accessor*, const size_t* index_array, size_t len, double* val_array); @@ -73,7 +73,7 @@ static grib_accessor_class _grib_accessor_class_data_apply_boustrophedonic_bitma "data_apply_boustrophedonic_bitmap", /* name */ sizeof(grib_accessor_data_apply_boustrophedonic_bitmap), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -120,39 +120,10 @@ static grib_accessor_class _grib_accessor_class_data_apply_boustrophedonic_bitma grib_accessor_class* grib_accessor_class_data_apply_boustrophedonic_bitmap = &_grib_accessor_class_data_apply_boustrophedonic_bitmap; -static void init_class(grib_accessor_class* c) -{ - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_long = (*(c->super))->pack_long; - c->unpack_long = (*(c->super))->unpack_long; - c->pack_float = (*(c->super))->pack_float; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_data_apply_gdsnotpresent.cc b/src/grib_accessor_class_data_apply_gdsnotpresent.cc index 1e7c38e57..f81da3b05 100644 --- a/src/grib_accessor_class_data_apply_gdsnotpresent.cc +++ b/src/grib_accessor_class_data_apply_gdsnotpresent.cc @@ -53,7 +53,7 @@ static int unpack_double(grib_accessor*, double* val, size_t* len); static int value_count(grib_accessor*, long*); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_data_apply_gdsnotpresent { @@ -77,7 +77,7 @@ static grib_accessor_class _grib_accessor_class_data_apply_gdsnotpresent = { "data_apply_gdsnotpresent", /* name */ sizeof(grib_accessor_data_apply_gdsnotpresent), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -124,41 +124,10 @@ static grib_accessor_class _grib_accessor_class_data_apply_gdsnotpresent = { grib_accessor_class* grib_accessor_class_data_apply_gdsnotpresent = &_grib_accessor_class_data_apply_gdsnotpresent; -static void init_class(grib_accessor_class* c) -{ - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_long = (*(c->super))->pack_long; - c->unpack_long = (*(c->super))->unpack_long; - c->pack_float = (*(c->super))->pack_float; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_data_ccsds_packing.cc b/src/grib_accessor_class_data_ccsds_packing.cc index 5f148a15f..d9ca25fe8 100644 --- a/src/grib_accessor_class_data_ccsds_packing.cc +++ b/src/grib_accessor_class_data_ccsds_packing.cc @@ -53,7 +53,7 @@ static int unpack_double(grib_accessor*, double* val, size_t* len); static int unpack_float(grib_accessor*, float* val, size_t* len); static int value_count(grib_accessor*, long*); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); static int unpack_double_element(grib_accessor*, size_t i, double* val); static int unpack_double_element_set(grib_accessor*, const size_t* index_array, size_t len, double* val_array); @@ -86,7 +86,7 @@ static grib_accessor_class _grib_accessor_class_data_ccsds_packing = { "data_ccsds_packing", /* name */ sizeof(grib_accessor_data_ccsds_packing), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -133,40 +133,10 @@ static grib_accessor_class _grib_accessor_class_data_ccsds_packing = { grib_accessor_class* grib_accessor_class_data_ccsds_packing = &_grib_accessor_class_data_ccsds_packing; -static void init_class(grib_accessor_class* c) -{ - c->dump = (*(c->super))->dump; - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_long = (*(c->super))->pack_long; - c->unpack_long = (*(c->super))->unpack_long; - c->pack_float = (*(c->super))->pack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_data_complex_packing.cc b/src/grib_accessor_class_data_complex_packing.cc index 98e61e0fa..2e99ce342 100644 --- a/src/grib_accessor_class_data_complex_packing.cc +++ b/src/grib_accessor_class_data_complex_packing.cc @@ -51,7 +51,7 @@ static int unpack_double(grib_accessor*, double* val, size_t* len); static int unpack_float(grib_accessor*, float* val, size_t* len); static int value_count(grib_accessor*, long*); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_data_complex_packing { @@ -94,7 +94,7 @@ static grib_accessor_class _grib_accessor_class_data_complex_packing = { "data_complex_packing", /* name */ sizeof(grib_accessor_data_complex_packing), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -141,42 +141,10 @@ static grib_accessor_class _grib_accessor_class_data_complex_packing = { grib_accessor_class* grib_accessor_class_data_complex_packing = &_grib_accessor_class_data_complex_packing; -static void init_class(grib_accessor_class* c) -{ - c->dump = (*(c->super))->dump; - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_long = (*(c->super))->pack_long; - c->unpack_long = (*(c->super))->unpack_long; - c->pack_float = (*(c->super))->pack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_data_dummy_field.cc b/src/grib_accessor_class_data_dummy_field.cc index 0ca1b5508..8856f7155 100644 --- a/src/grib_accessor_class_data_dummy_field.cc +++ b/src/grib_accessor_class_data_dummy_field.cc @@ -41,7 +41,7 @@ static int pack_double(grib_accessor*, const double* val, size_t* len); static int unpack_double(grib_accessor*, double* val, size_t* len); static int value_count(grib_accessor*, long*); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_data_dummy_field { @@ -82,7 +82,7 @@ static grib_accessor_class _grib_accessor_class_data_dummy_field = { "data_dummy_field", /* name */ sizeof(grib_accessor_data_dummy_field), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -129,43 +129,10 @@ static grib_accessor_class _grib_accessor_class_data_dummy_field = { grib_accessor_class* grib_accessor_class_data_dummy_field = &_grib_accessor_class_data_dummy_field; -static void init_class(grib_accessor_class* c) -{ - c->dump = (*(c->super))->dump; - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_long = (*(c->super))->pack_long; - c->unpack_long = (*(c->super))->unpack_long; - c->pack_float = (*(c->super))->pack_float; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_data_g1complex_packing.cc b/src/grib_accessor_class_data_g1complex_packing.cc index e7a57cd85..dde172c77 100644 --- a/src/grib_accessor_class_data_g1complex_packing.cc +++ b/src/grib_accessor_class_data_g1complex_packing.cc @@ -40,7 +40,7 @@ or edit "accessor.class" and rerun ./make_class.pl static int pack_double(grib_accessor*, const double* val, size_t* len); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_data_g1complex_packing { @@ -89,7 +89,7 @@ static grib_accessor_class _grib_accessor_class_data_g1complex_packing = { "data_g1complex_packing", /* name */ sizeof(grib_accessor_data_g1complex_packing), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -136,45 +136,10 @@ static grib_accessor_class _grib_accessor_class_data_g1complex_packing = { grib_accessor_class* grib_accessor_class_data_g1complex_packing = &_grib_accessor_class_data_g1complex_packing; -static void init_class(grib_accessor_class* c) -{ - c->dump = (*(c->super))->dump; - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->value_count = (*(c->super))->value_count; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_long = (*(c->super))->pack_long; - c->unpack_long = (*(c->super))->unpack_long; - c->pack_float = (*(c->super))->pack_float; - c->unpack_double = (*(c->super))->unpack_double; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_data_g1second_order_constant_width_packing.cc b/src/grib_accessor_class_data_g1second_order_constant_width_packing.cc index 6e0390111..77653a898 100644 --- a/src/grib_accessor_class_data_g1second_order_constant_width_packing.cc +++ b/src/grib_accessor_class_data_g1second_order_constant_width_packing.cc @@ -57,7 +57,7 @@ static int unpack_double(grib_accessor*, double* val, size_t* len); static int unpack_float(grib_accessor*, float* val, size_t* len); static int value_count(grib_accessor*, long*); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); static int unpack_double_element(grib_accessor*, size_t i, double* val); static int unpack_double_element_set(grib_accessor*, const size_t* index_array, size_t len, double* val_array); @@ -108,7 +108,7 @@ static grib_accessor_class _grib_accessor_class_data_g1second_order_constant_wid "data_g1second_order_constant_width_packing", /* name */ sizeof(grib_accessor_data_g1second_order_constant_width_packing), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -155,40 +155,10 @@ static grib_accessor_class _grib_accessor_class_data_g1second_order_constant_wid grib_accessor_class* grib_accessor_class_data_g1second_order_constant_width_packing = &_grib_accessor_class_data_g1second_order_constant_width_packing; -static void init_class(grib_accessor_class* c) -{ - c->dump = (*(c->super))->dump; - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_long = (*(c->super))->pack_long; - c->unpack_long = (*(c->super))->unpack_long; - c->pack_float = (*(c->super))->pack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_data_g1second_order_general_extended_packing.cc b/src/grib_accessor_class_data_g1second_order_general_extended_packing.cc index ceabd4b13..74adb28bc 100644 --- a/src/grib_accessor_class_data_g1second_order_general_extended_packing.cc +++ b/src/grib_accessor_class_data_g1second_order_general_extended_packing.cc @@ -69,7 +69,7 @@ static int unpack_float(grib_accessor*, float* val, size_t* len); static int value_count(grib_accessor*, long*); static void destroy(grib_context*, grib_accessor*); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); static int unpack_double_element(grib_accessor*, size_t i, double* val); static int unpack_double_element_set(grib_accessor*, const size_t* index_array, size_t len, double* val_array); @@ -128,7 +128,7 @@ static grib_accessor_class _grib_accessor_class_data_g1second_order_general_exte "data_g1second_order_general_extended_packing", /* name */ sizeof(grib_accessor_data_g1second_order_general_extended_packing), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ &destroy, /* free mem */ @@ -175,40 +175,10 @@ static grib_accessor_class _grib_accessor_class_data_g1second_order_general_exte grib_accessor_class* grib_accessor_class_data_g1second_order_general_extended_packing = &_grib_accessor_class_data_g1second_order_general_extended_packing; -static void init_class(grib_accessor_class* c) -{ - c->dump = (*(c->super))->dump; - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_long = (*(c->super))->pack_long; - c->unpack_long = (*(c->super))->unpack_long; - c->pack_float = (*(c->super))->pack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_data_g1second_order_general_packing.cc b/src/grib_accessor_class_data_g1second_order_general_packing.cc index 893e001ba..c4235f167 100644 --- a/src/grib_accessor_class_data_g1second_order_general_packing.cc +++ b/src/grib_accessor_class_data_g1second_order_general_packing.cc @@ -56,7 +56,7 @@ static int unpack_double(grib_accessor*, double* val, size_t* len); static int unpack_float(grib_accessor*, float* val, size_t* len); static int value_count(grib_accessor*, long*); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_data_g1second_order_general_packing { @@ -105,7 +105,7 @@ static grib_accessor_class _grib_accessor_class_data_g1second_order_general_pack "data_g1second_order_general_packing", /* name */ sizeof(grib_accessor_data_g1second_order_general_packing), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -152,42 +152,10 @@ static grib_accessor_class _grib_accessor_class_data_g1second_order_general_pack grib_accessor_class* grib_accessor_class_data_g1second_order_general_packing = &_grib_accessor_class_data_g1second_order_general_packing; -static void init_class(grib_accessor_class* c) -{ - c->dump = (*(c->super))->dump; - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_long = (*(c->super))->pack_long; - c->unpack_long = (*(c->super))->unpack_long; - c->pack_float = (*(c->super))->pack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_data_g1second_order_row_by_row_packing.cc b/src/grib_accessor_class_data_g1second_order_row_by_row_packing.cc index bd976c4d3..a336e7193 100644 --- a/src/grib_accessor_class_data_g1second_order_row_by_row_packing.cc +++ b/src/grib_accessor_class_data_g1second_order_row_by_row_packing.cc @@ -56,7 +56,7 @@ static int unpack_double(grib_accessor*, double* val, size_t* len); static int unpack_float(grib_accessor*, float* val, size_t* len); static int value_count(grib_accessor*, long*); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_data_g1second_order_row_by_row_packing { @@ -105,7 +105,7 @@ static grib_accessor_class _grib_accessor_class_data_g1second_order_row_by_row_p "data_g1second_order_row_by_row_packing", /* name */ sizeof(grib_accessor_data_g1second_order_row_by_row_packing), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -152,42 +152,10 @@ static grib_accessor_class _grib_accessor_class_data_g1second_order_row_by_row_p grib_accessor_class* grib_accessor_class_data_g1second_order_row_by_row_packing = &_grib_accessor_class_data_g1second_order_row_by_row_packing; -static void init_class(grib_accessor_class* c) -{ - c->dump = (*(c->super))->dump; - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_long = (*(c->super))->pack_long; - c->unpack_long = (*(c->super))->unpack_long; - c->pack_float = (*(c->super))->pack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_data_g1secondary_bitmap.cc b/src/grib_accessor_class_data_g1secondary_bitmap.cc index aa34acbd7..d2d9b6042 100644 --- a/src/grib_accessor_class_data_g1secondary_bitmap.cc +++ b/src/grib_accessor_class_data_g1secondary_bitmap.cc @@ -36,7 +36,7 @@ or edit "accessor.class" and rerun ./make_class.pl static int pack_double(grib_accessor*, const double* val, size_t* len); static int value_count(grib_accessor*, long*); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_data_g1secondary_bitmap { @@ -58,7 +58,7 @@ static grib_accessor_class _grib_accessor_class_data_g1secondary_bitmap = { "data_g1secondary_bitmap", /* name */ sizeof(grib_accessor_data_g1secondary_bitmap), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -105,44 +105,10 @@ static grib_accessor_class _grib_accessor_class_data_g1secondary_bitmap = { grib_accessor_class* grib_accessor_class_data_g1secondary_bitmap = &_grib_accessor_class_data_g1secondary_bitmap; -static void init_class(grib_accessor_class* c) -{ - c->dump = (*(c->super))->dump; - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_long = (*(c->super))->pack_long; - c->unpack_long = (*(c->super))->unpack_long; - c->pack_float = (*(c->super))->pack_float; - c->unpack_double = (*(c->super))->unpack_double; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_data_g1shsimple_packing.cc b/src/grib_accessor_class_data_g1shsimple_packing.cc index c519f3deb..9c5d64cf5 100644 --- a/src/grib_accessor_class_data_g1shsimple_packing.cc +++ b/src/grib_accessor_class_data_g1shsimple_packing.cc @@ -33,7 +33,7 @@ or edit "accessor.class" and rerun ./make_class.pl static int unpack_double(grib_accessor*, double* val, size_t* len); static int value_count(grib_accessor*, long*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_data_g1shsimple_packing { @@ -53,7 +53,7 @@ static grib_accessor_class _grib_accessor_class_data_g1shsimple_packing = { "data_g1shsimple_packing", /* name */ sizeof(grib_accessor_data_g1shsimple_packing), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ 0, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -100,44 +100,10 @@ static grib_accessor_class _grib_accessor_class_data_g1shsimple_packing = { grib_accessor_class* grib_accessor_class_data_g1shsimple_packing = &_grib_accessor_class_data_g1shsimple_packing; -static void init_class(grib_accessor_class* c) -{ - c->dump = (*(c->super))->dump; - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_long = (*(c->super))->pack_long; - c->unpack_long = (*(c->super))->unpack_long; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_data_g1simple_packing.cc b/src/grib_accessor_class_data_g1simple_packing.cc index e423de516..f639155a1 100644 --- a/src/grib_accessor_class_data_g1simple_packing.cc +++ b/src/grib_accessor_class_data_g1simple_packing.cc @@ -40,7 +40,7 @@ or edit "accessor.class" and rerun ./make_class.pl static int pack_double(grib_accessor*, const double* val, size_t* len); static int value_count(grib_accessor*, long*); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_data_g1simple_packing { @@ -77,7 +77,7 @@ static grib_accessor_class _grib_accessor_class_data_g1simple_packing = { "data_g1simple_packing", /* name */ sizeof(grib_accessor_data_g1simple_packing), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -124,44 +124,10 @@ static grib_accessor_class _grib_accessor_class_data_g1simple_packing = { grib_accessor_class* grib_accessor_class_data_g1simple_packing = &_grib_accessor_class_data_g1simple_packing; -static void init_class(grib_accessor_class* c) -{ - c->dump = (*(c->super))->dump; - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_long = (*(c->super))->pack_long; - c->unpack_long = (*(c->super))->unpack_long; - c->pack_float = (*(c->super))->pack_float; - c->unpack_double = (*(c->super))->unpack_double; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_data_g22order_packing.cc b/src/grib_accessor_class_data_g22order_packing.cc index 452aed18b..a071ec2be 100644 --- a/src/grib_accessor_class_data_g22order_packing.cc +++ b/src/grib_accessor_class_data_g22order_packing.cc @@ -64,7 +64,7 @@ static int unpack_double(grib_accessor*, double* val, size_t* len); static int unpack_float(grib_accessor*, float* val, size_t* len); static int value_count(grib_accessor*, long*); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); static int unpack_double_element(grib_accessor*, size_t i, double* val); static int unpack_double_element_set(grib_accessor*, const size_t* index_array, size_t len, double* val_array); @@ -84,7 +84,7 @@ typedef struct grib_accessor_data_g22order_packing const char* reference_value; const char* binary_scale_factor; const char* decimal_scale_factor; - const char* optimize_scale_factor; + const char* optimize_scale_factor; const char* typeOfOriginalFieldValues; const char* groupSplittingMethodUsed; const char* missingValueManagementUsed; @@ -108,7 +108,7 @@ static grib_accessor_class _grib_accessor_class_data_g22order_packing = { "data_g22order_packing", /* name */ sizeof(grib_accessor_data_g22order_packing), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -155,40 +155,10 @@ static grib_accessor_class _grib_accessor_class_data_g22order_packing = { grib_accessor_class* grib_accessor_class_data_g22order_packing = &_grib_accessor_class_data_g22order_packing; -static void init_class(grib_accessor_class* c) -{ - c->dump = (*(c->super))->dump; - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_long = (*(c->super))->pack_long; - c->unpack_long = (*(c->super))->unpack_long; - c->pack_float = (*(c->super))->pack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_data_g2bifourier_packing.cc b/src/grib_accessor_class_data_g2bifourier_packing.cc index 1e2335c0f..8052c9a81 100644 --- a/src/grib_accessor_class_data_g2bifourier_packing.cc +++ b/src/grib_accessor_class_data_g2bifourier_packing.cc @@ -57,7 +57,7 @@ static int pack_double(grib_accessor*, const double* val, size_t* len); static int unpack_double(grib_accessor*, double* val, size_t* len); static int value_count(grib_accessor*, long*); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_data_g2bifourier_packing { @@ -103,7 +103,7 @@ static grib_accessor_class _grib_accessor_class_data_g2bifourier_packing = { "data_g2bifourier_packing", /* name */ sizeof(grib_accessor_data_g2bifourier_packing), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -150,43 +150,10 @@ static grib_accessor_class _grib_accessor_class_data_g2bifourier_packing = { grib_accessor_class* grib_accessor_class_data_g2bifourier_packing = &_grib_accessor_class_data_g2bifourier_packing; -static void init_class(grib_accessor_class* c) -{ - c->dump = (*(c->super))->dump; - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_long = (*(c->super))->pack_long; - c->unpack_long = (*(c->super))->unpack_long; - c->pack_float = (*(c->super))->pack_float; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_data_g2complex_packing.cc b/src/grib_accessor_class_data_g2complex_packing.cc index 363c4d88a..597eeefd0 100644 --- a/src/grib_accessor_class_data_g2complex_packing.cc +++ b/src/grib_accessor_class_data_g2complex_packing.cc @@ -37,7 +37,7 @@ or edit "accessor.class" and rerun ./make_class.pl static int pack_double(grib_accessor*, const double* val, size_t* len); static int value_count(grib_accessor*, long*); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_data_g2complex_packing { @@ -82,7 +82,7 @@ static grib_accessor_class _grib_accessor_class_data_g2complex_packing = { "data_g2complex_packing", /* name */ sizeof(grib_accessor_data_g2complex_packing), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -129,44 +129,10 @@ static grib_accessor_class _grib_accessor_class_data_g2complex_packing = { grib_accessor_class* grib_accessor_class_data_g2complex_packing = &_grib_accessor_class_data_g2complex_packing; -static void init_class(grib_accessor_class* c) -{ - c->dump = (*(c->super))->dump; - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_long = (*(c->super))->pack_long; - c->unpack_long = (*(c->super))->unpack_long; - c->pack_float = (*(c->super))->pack_float; - c->unpack_double = (*(c->super))->unpack_double; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_data_g2secondary_bitmap.cc b/src/grib_accessor_class_data_g2secondary_bitmap.cc index 7756962f6..256eb1ee4 100644 --- a/src/grib_accessor_class_data_g2secondary_bitmap.cc +++ b/src/grib_accessor_class_data_g2secondary_bitmap.cc @@ -36,7 +36,7 @@ or edit "accessor.class" and rerun ./make_class.pl static int pack_double(grib_accessor*, const double* val, size_t* len); static int value_count(grib_accessor*, long*); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_data_g2secondary_bitmap { @@ -58,7 +58,7 @@ static grib_accessor_class _grib_accessor_class_data_g2secondary_bitmap = { "data_g2secondary_bitmap", /* name */ sizeof(grib_accessor_data_g2secondary_bitmap), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -105,44 +105,10 @@ static grib_accessor_class _grib_accessor_class_data_g2secondary_bitmap = { grib_accessor_class* grib_accessor_class_data_g2secondary_bitmap = &_grib_accessor_class_data_g2secondary_bitmap; -static void init_class(grib_accessor_class* c) -{ - c->dump = (*(c->super))->dump; - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_long = (*(c->super))->pack_long; - c->unpack_long = (*(c->super))->unpack_long; - c->pack_float = (*(c->super))->pack_float; - c->unpack_double = (*(c->super))->unpack_double; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_data_g2shsimple_packing.cc b/src/grib_accessor_class_data_g2shsimple_packing.cc index 8f5d6d981..174769099 100644 --- a/src/grib_accessor_class_data_g2shsimple_packing.cc +++ b/src/grib_accessor_class_data_g2shsimple_packing.cc @@ -39,7 +39,7 @@ static int pack_double(grib_accessor*, const double* val, size_t* len); static int unpack_double(grib_accessor*, double* val, size_t* len); static int value_count(grib_accessor*, long*); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_data_g2shsimple_packing { @@ -61,7 +61,7 @@ static grib_accessor_class _grib_accessor_class_data_g2shsimple_packing = { "data_g2shsimple_packing", /* name */ sizeof(grib_accessor_data_g2shsimple_packing), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -108,43 +108,10 @@ static grib_accessor_class _grib_accessor_class_data_g2shsimple_packing = { grib_accessor_class* grib_accessor_class_data_g2shsimple_packing = &_grib_accessor_class_data_g2shsimple_packing; -static void init_class(grib_accessor_class* c) -{ - c->dump = (*(c->super))->dump; - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_long = (*(c->super))->pack_long; - c->unpack_long = (*(c->super))->unpack_long; - c->pack_float = (*(c->super))->pack_float; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_data_g2simple_packing.cc b/src/grib_accessor_class_data_g2simple_packing.cc index 0adaf67bb..05617c6f3 100644 --- a/src/grib_accessor_class_data_g2simple_packing.cc +++ b/src/grib_accessor_class_data_g2simple_packing.cc @@ -38,7 +38,7 @@ static int pack_bytes(grib_accessor*, const unsigned char*, size_t* len); static int pack_double(grib_accessor*, const double* val, size_t* len); static int value_count(grib_accessor*, long*); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_data_g2simple_packing { @@ -71,7 +71,7 @@ static grib_accessor_class _grib_accessor_class_data_g2simple_packing = { "data_g2simple_packing", /* name */ sizeof(grib_accessor_data_g2simple_packing), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -118,43 +118,10 @@ static grib_accessor_class _grib_accessor_class_data_g2simple_packing = { grib_accessor_class* grib_accessor_class_data_g2simple_packing = &_grib_accessor_class_data_g2simple_packing; -static void init_class(grib_accessor_class* c) -{ - c->dump = (*(c->super))->dump; - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_long = (*(c->super))->pack_long; - c->unpack_long = (*(c->super))->unpack_long; - c->pack_float = (*(c->super))->pack_float; - c->unpack_double = (*(c->super))->unpack_double; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_data_g2simple_packing_with_preprocessing.cc b/src/grib_accessor_class_data_g2simple_packing_with_preprocessing.cc index 898bc712c..566a0d147 100644 --- a/src/grib_accessor_class_data_g2simple_packing_with_preprocessing.cc +++ b/src/grib_accessor_class_data_g2simple_packing_with_preprocessing.cc @@ -42,7 +42,7 @@ static int pack_double(grib_accessor*, const double* val, size_t* len); static int unpack_double(grib_accessor*, double* val, size_t* len); static int value_count(grib_accessor*, long*); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_data_g2simple_packing_with_preprocessing { @@ -78,7 +78,7 @@ static grib_accessor_class _grib_accessor_class_data_g2simple_packing_with_prepr "data_g2simple_packing_with_preprocessing", /* name */ sizeof(grib_accessor_data_g2simple_packing_with_preprocessing), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -125,43 +125,10 @@ static grib_accessor_class _grib_accessor_class_data_g2simple_packing_with_prepr grib_accessor_class* grib_accessor_class_data_g2simple_packing_with_preprocessing = &_grib_accessor_class_data_g2simple_packing_with_preprocessing; -static void init_class(grib_accessor_class* c) -{ - c->dump = (*(c->super))->dump; - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_long = (*(c->super))->pack_long; - c->unpack_long = (*(c->super))->unpack_long; - c->pack_float = (*(c->super))->pack_float; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_data_jpeg2000_packing.cc b/src/grib_accessor_class_data_jpeg2000_packing.cc index 20f550666..6c081b3df 100644 --- a/src/grib_accessor_class_data_jpeg2000_packing.cc +++ b/src/grib_accessor_class_data_jpeg2000_packing.cc @@ -49,7 +49,7 @@ static int unpack_double(grib_accessor*, double* val, size_t* len); static int unpack_float(grib_accessor*, float* val, size_t* len); static int value_count(grib_accessor*, long*); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); static int unpack_double_element(grib_accessor*, size_t i, double* val); static int unpack_double_element_set(grib_accessor*, const size_t* index_array, size_t len, double* val_array); @@ -93,7 +93,7 @@ static grib_accessor_class _grib_accessor_class_data_jpeg2000_packing = { "data_jpeg2000_packing", /* name */ sizeof(grib_accessor_data_jpeg2000_packing), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -140,40 +140,10 @@ static grib_accessor_class _grib_accessor_class_data_jpeg2000_packing = { grib_accessor_class* grib_accessor_class_data_jpeg2000_packing = &_grib_accessor_class_data_jpeg2000_packing; -static void init_class(grib_accessor_class* c) -{ - c->dump = (*(c->super))->dump; - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_long = (*(c->super))->pack_long; - c->unpack_long = (*(c->super))->unpack_long; - c->pack_float = (*(c->super))->pack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_data_png_packing.cc b/src/grib_accessor_class_data_png_packing.cc index de8cd040f..fa891bd99 100644 --- a/src/grib_accessor_class_data_png_packing.cc +++ b/src/grib_accessor_class_data_png_packing.cc @@ -51,7 +51,7 @@ static int pack_double(grib_accessor*, const double* val, size_t* len); static int unpack_double(grib_accessor*, double* val, size_t* len); static int value_count(grib_accessor*, long*); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); static int unpack_double_element(grib_accessor*, size_t i, double* val); static int unpack_double_element_set(grib_accessor*, const size_t* index_array, size_t len, double* val_array); @@ -85,7 +85,7 @@ static grib_accessor_class _grib_accessor_class_data_png_packing = { "data_png_packing", /* name */ sizeof(grib_accessor_data_png_packing), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -132,41 +132,10 @@ static grib_accessor_class _grib_accessor_class_data_png_packing = { grib_accessor_class* grib_accessor_class_data_png_packing = &_grib_accessor_class_data_png_packing; -static void init_class(grib_accessor_class* c) -{ - c->dump = (*(c->super))->dump; - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_long = (*(c->super))->pack_long; - c->unpack_long = (*(c->super))->unpack_long; - c->pack_float = (*(c->super))->pack_float; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_data_raw_packing.cc b/src/grib_accessor_class_data_raw_packing.cc index acceae597..0fb40d54f 100644 --- a/src/grib_accessor_class_data_raw_packing.cc +++ b/src/grib_accessor_class_data_raw_packing.cc @@ -46,7 +46,7 @@ static int pack_double(grib_accessor*, const double* val, size_t* len); static int unpack_double(grib_accessor*, double* val, size_t* len); static int value_count(grib_accessor*, long*); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); static int unpack_double_element(grib_accessor*, size_t i, double* val); static int unpack_double_element_set(grib_accessor*, const size_t* index_array, size_t len, double* val_array); @@ -72,7 +72,7 @@ static grib_accessor_class _grib_accessor_class_data_raw_packing = { "data_raw_packing", /* name */ sizeof(grib_accessor_data_raw_packing), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -119,41 +119,10 @@ static grib_accessor_class _grib_accessor_class_data_raw_packing = { grib_accessor_class* grib_accessor_class_data_raw_packing = &_grib_accessor_class_data_raw_packing; -static void init_class(grib_accessor_class* c) -{ - c->dump = (*(c->super))->dump; - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_long = (*(c->super))->pack_long; - c->unpack_long = (*(c->super))->unpack_long; - c->pack_float = (*(c->super))->pack_float; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_data_run_length_packing.cc b/src/grib_accessor_class_data_run_length_packing.cc index d8ecdaba2..ce3515796 100644 --- a/src/grib_accessor_class_data_run_length_packing.cc +++ b/src/grib_accessor_class_data_run_length_packing.cc @@ -44,7 +44,7 @@ static int pack_double(grib_accessor*, const double* val, size_t* len); static int unpack_double(grib_accessor*, double* val, size_t* len); static int value_count(grib_accessor*, long*); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_data_run_length_packing { @@ -72,7 +72,7 @@ static grib_accessor_class _grib_accessor_class_data_run_length_packing = { "data_run_length_packing", /* name */ sizeof(grib_accessor_data_run_length_packing), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -119,43 +119,10 @@ static grib_accessor_class _grib_accessor_class_data_run_length_packing = { grib_accessor_class* grib_accessor_class_data_run_length_packing = &_grib_accessor_class_data_run_length_packing; -static void init_class(grib_accessor_class* c) -{ - c->dump = (*(c->super))->dump; - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_long = (*(c->super))->pack_long; - c->unpack_long = (*(c->super))->unpack_long; - c->pack_float = (*(c->super))->pack_float; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_data_secondary_bitmap.cc b/src/grib_accessor_class_data_secondary_bitmap.cc index e914ecd4a..4a81dbd2c 100644 --- a/src/grib_accessor_class_data_secondary_bitmap.cc +++ b/src/grib_accessor_class_data_secondary_bitmap.cc @@ -40,7 +40,7 @@ static int get_native_type(grib_accessor*); static int unpack_double(grib_accessor*, double* val, size_t* len); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_data_secondary_bitmap { @@ -60,7 +60,7 @@ static grib_accessor_class _grib_accessor_class_data_secondary_bitmap = { "data_secondary_bitmap", /* name */ sizeof(grib_accessor_data_secondary_bitmap), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -107,43 +107,10 @@ static grib_accessor_class _grib_accessor_class_data_secondary_bitmap = { grib_accessor_class* grib_accessor_class_data_secondary_bitmap = &_grib_accessor_class_data_secondary_bitmap; -static void init_class(grib_accessor_class* c) -{ - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->value_count = (*(c->super))->value_count; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_long = (*(c->super))->pack_long; - c->unpack_long = (*(c->super))->unpack_long; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_data_sh_packed.cc b/src/grib_accessor_class_data_sh_packed.cc index 0d78b879a..efaf12005 100644 --- a/src/grib_accessor_class_data_sh_packed.cc +++ b/src/grib_accessor_class_data_sh_packed.cc @@ -47,7 +47,7 @@ or edit "accessor.class" and rerun ./make_class.pl static int unpack_double(grib_accessor*, double* val, size_t* len); static int value_count(grib_accessor*, long*); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_data_sh_packed { @@ -90,7 +90,7 @@ static grib_accessor_class _grib_accessor_class_data_sh_packed = { "data_sh_packed", /* name */ sizeof(grib_accessor_data_sh_packed), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -137,44 +137,10 @@ static grib_accessor_class _grib_accessor_class_data_sh_packed = { grib_accessor_class* grib_accessor_class_data_sh_packed = &_grib_accessor_class_data_sh_packed; -static void init_class(grib_accessor_class* c) -{ - c->dump = (*(c->super))->dump; - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_long = (*(c->super))->pack_long; - c->unpack_long = (*(c->super))->unpack_long; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_data_sh_unpacked.cc b/src/grib_accessor_class_data_sh_unpacked.cc index baacec961..492c4fe61 100644 --- a/src/grib_accessor_class_data_sh_unpacked.cc +++ b/src/grib_accessor_class_data_sh_unpacked.cc @@ -47,7 +47,7 @@ or edit "accessor.class" and rerun ./make_class.pl static int unpack_double(grib_accessor*, double* val, size_t* len); static int value_count(grib_accessor*, long*); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_data_sh_unpacked { @@ -90,7 +90,7 @@ static grib_accessor_class _grib_accessor_class_data_sh_unpacked = { "data_sh_unpacked", /* name */ sizeof(grib_accessor_data_sh_unpacked), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -137,44 +137,10 @@ static grib_accessor_class _grib_accessor_class_data_sh_unpacked = { grib_accessor_class* grib_accessor_class_data_sh_unpacked = &_grib_accessor_class_data_sh_unpacked; -static void init_class(grib_accessor_class* c) -{ - c->dump = (*(c->super))->dump; - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_long = (*(c->super))->pack_long; - c->unpack_long = (*(c->super))->unpack_long; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_data_shsimple_packing.cc b/src/grib_accessor_class_data_shsimple_packing.cc index 643e2e035..9353f3de3 100644 --- a/src/grib_accessor_class_data_shsimple_packing.cc +++ b/src/grib_accessor_class_data_shsimple_packing.cc @@ -39,7 +39,7 @@ static int get_native_type(grib_accessor*); static int pack_double(grib_accessor*, const double* val, size_t* len); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_data_shsimple_packing { @@ -58,7 +58,7 @@ static grib_accessor_class _grib_accessor_class_data_shsimple_packing = { "data_shsimple_packing", /* name */ sizeof(grib_accessor_data_shsimple_packing), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -105,43 +105,10 @@ static grib_accessor_class _grib_accessor_class_data_shsimple_packing = { grib_accessor_class* grib_accessor_class_data_shsimple_packing = &_grib_accessor_class_data_shsimple_packing; -static void init_class(grib_accessor_class* c) -{ - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->value_count = (*(c->super))->value_count; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_long = (*(c->super))->pack_long; - c->unpack_long = (*(c->super))->unpack_long; - c->pack_float = (*(c->super))->pack_float; - c->unpack_double = (*(c->super))->unpack_double; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_data_simple_packing.cc b/src/grib_accessor_class_data_simple_packing.cc index 672b24b70..4d3c8c2b9 100644 --- a/src/grib_accessor_class_data_simple_packing.cc +++ b/src/grib_accessor_class_data_simple_packing.cc @@ -57,7 +57,7 @@ static int unpack_double(grib_accessor*, double* val, size_t* len); static int unpack_float(grib_accessor*, float* val, size_t* len); static int value_count(grib_accessor*, long*); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); static int unpack_double_element(grib_accessor*, size_t i, double* val); static int unpack_double_element_set(grib_accessor*, const size_t* index_array, size_t len, double* val_array); static int unpack_double_subarray(grib_accessor*, double* val, size_t start, size_t len); @@ -92,7 +92,7 @@ static grib_accessor_class _grib_accessor_class_data_simple_packing = { "data_simple_packing", /* name */ sizeof(grib_accessor_data_simple_packing), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -139,39 +139,10 @@ static grib_accessor_class _grib_accessor_class_data_simple_packing = { grib_accessor_class* grib_accessor_class_data_simple_packing = &_grib_accessor_class_data_simple_packing; -static void init_class(grib_accessor_class* c) -{ - c->dump = (*(c->super))->dump; - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_long = (*(c->super))->pack_long; - c->unpack_long = (*(c->super))->unpack_long; - c->pack_float = (*(c->super))->pack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_decimal_precision.cc b/src/grib_accessor_class_decimal_precision.cc index 0d5bbd6c7..5532e1679 100644 --- a/src/grib_accessor_class_decimal_precision.cc +++ b/src/grib_accessor_class_decimal_precision.cc @@ -41,7 +41,7 @@ or edit "accessor.class" and rerun ./make_class.pl static int pack_long(grib_accessor*, const long* val, size_t* len); static int unpack_long(grib_accessor*, long* val, size_t* len); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_decimal_precision { @@ -62,7 +62,7 @@ static grib_accessor_class _grib_accessor_class_decimal_precision = { "decimal_precision", /* name */ sizeof(grib_accessor_decimal_precision), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -109,44 +109,10 @@ static grib_accessor_class _grib_accessor_class_decimal_precision = { grib_accessor_class* grib_accessor_class_decimal_precision = &_grib_accessor_class_decimal_precision; -static void init_class(grib_accessor_class* c) -{ - c->dump = (*(c->super))->dump; - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->value_count = (*(c->super))->value_count; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_double = (*(c->super))->unpack_double; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_dictionary.cc b/src/grib_accessor_class_dictionary.cc index f239ccdfb..d5776b858 100644 --- a/src/grib_accessor_class_dictionary.cc +++ b/src/grib_accessor_class_dictionary.cc @@ -44,7 +44,7 @@ static int unpack_string(grib_accessor*, char*, size_t* len); static int value_count(grib_accessor*, long*); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_dictionary { @@ -65,7 +65,7 @@ static grib_accessor_class _grib_accessor_class_dictionary = { "dictionary", /* name */ sizeof(grib_accessor_dictionary), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -112,40 +112,10 @@ static grib_accessor_class _grib_accessor_class_dictionary = { grib_accessor_class* grib_accessor_class_dictionary = &_grib_accessor_class_dictionary; -static void init_class(grib_accessor_class* c) -{ - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_long = (*(c->super))->pack_long; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_dirty.cc b/src/grib_accessor_class_dirty.cc index b94270be0..53284c311 100644 --- a/src/grib_accessor_class_dirty.cc +++ b/src/grib_accessor_class_dirty.cc @@ -39,7 +39,7 @@ or edit "accessor.class" and rerun ./make_class.pl static int pack_long(grib_accessor*, const long* val, size_t* len); static int unpack_long(grib_accessor*, long* val, size_t* len); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_dirty { @@ -57,7 +57,7 @@ static grib_accessor_class _grib_accessor_class_dirty = { "dirty", /* name */ sizeof(grib_accessor_dirty), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -104,44 +104,10 @@ static grib_accessor_class _grib_accessor_class_dirty = { grib_accessor_class* grib_accessor_class_dirty = &_grib_accessor_class_dirty; -static void init_class(grib_accessor_class* c) -{ - c->dump = (*(c->super))->dump; - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->value_count = (*(c->super))->value_count; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_double = (*(c->super))->unpack_double; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_divdouble.cc b/src/grib_accessor_class_divdouble.cc index dda267300..0330b49fc 100644 --- a/src/grib_accessor_class_divdouble.cc +++ b/src/grib_accessor_class_divdouble.cc @@ -39,7 +39,7 @@ or edit "accessor.class" and rerun ./make_class.pl static int unpack_double(grib_accessor*, double* val, size_t* len); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_divdouble { @@ -58,7 +58,7 @@ static grib_accessor_class _grib_accessor_class_divdouble = { "divdouble", /* name */ sizeof(grib_accessor_divdouble), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -105,45 +105,10 @@ static grib_accessor_class _grib_accessor_class_divdouble = { grib_accessor_class* grib_accessor_class_divdouble = &_grib_accessor_class_divdouble; -static void init_class(grib_accessor_class* c) -{ - c->dump = (*(c->super))->dump; - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->value_count = (*(c->super))->value_count; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_long = (*(c->super))->pack_long; - c->unpack_long = (*(c->super))->unpack_long; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_double.cc b/src/grib_accessor_class_double.cc index 62a4aea5b..d6891d27c 100644 --- a/src/grib_accessor_class_double.cc +++ b/src/grib_accessor_class_double.cc @@ -41,7 +41,7 @@ static int get_native_type(grib_accessor*); static int pack_missing(grib_accessor*); static int unpack_string(grib_accessor*, char*, size_t* len); static void dump(grib_accessor*, grib_dumper*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); static int compare(grib_accessor*, grib_accessor*); typedef struct grib_accessor_double @@ -58,7 +58,7 @@ static grib_accessor_class _grib_accessor_class_double = { "double", /* name */ sizeof(grib_accessor_double), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ 0, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -105,41 +105,10 @@ static grib_accessor_class _grib_accessor_class_double = { grib_accessor_class* grib_accessor_class_double = &_grib_accessor_class_double; -static void init_class(grib_accessor_class* c) -{ - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->value_count = (*(c->super))->value_count; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->sub_section = (*(c->super))->sub_section; - c->is_missing = (*(c->super))->is_missing; - c->pack_long = (*(c->super))->pack_long; - c->unpack_long = (*(c->super))->unpack_long; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_double = (*(c->super))->unpack_double; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_element.cc b/src/grib_accessor_class_element.cc index 4b3c15973..9c61de39e 100644 --- a/src/grib_accessor_class_element.cc +++ b/src/grib_accessor_class_element.cc @@ -41,7 +41,7 @@ or edit "accessor.class" and rerun ./make_class.pl static int pack_long(grib_accessor*, const long* val, size_t* len); static int unpack_long(grib_accessor*, long* val, size_t* len); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_element { @@ -60,7 +60,7 @@ static grib_accessor_class _grib_accessor_class_element = { "element", /* name */ sizeof(grib_accessor_element), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -107,44 +107,10 @@ static grib_accessor_class _grib_accessor_class_element = { grib_accessor_class* grib_accessor_class_element = &_grib_accessor_class_element; -static void init_class(grib_accessor_class* c) -{ - c->dump = (*(c->super))->dump; - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->value_count = (*(c->super))->value_count; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_double = (*(c->super))->unpack_double; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_evaluate.cc b/src/grib_accessor_class_evaluate.cc index 1099e4099..6a22ea744 100644 --- a/src/grib_accessor_class_evaluate.cc +++ b/src/grib_accessor_class_evaluate.cc @@ -35,7 +35,7 @@ or edit "accessor.class" and rerun ./make_class.pl static int pack_long(grib_accessor*, const long* val, size_t* len); static int unpack_long(grib_accessor*, long* val, size_t* len); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_evaluate { @@ -53,7 +53,7 @@ static grib_accessor_class _grib_accessor_class_evaluate = { "evaluate", /* name */ sizeof(grib_accessor_evaluate), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -100,44 +100,10 @@ static grib_accessor_class _grib_accessor_class_evaluate = { grib_accessor_class* grib_accessor_class_evaluate = &_grib_accessor_class_evaluate; -static void init_class(grib_accessor_class* c) -{ - c->dump = (*(c->super))->dump; - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->value_count = (*(c->super))->value_count; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_double = (*(c->super))->unpack_double; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_expanded_descriptors.cc b/src/grib_accessor_class_expanded_descriptors.cc index 66c56c9ae..9377ed2bd 100644 --- a/src/grib_accessor_class_expanded_descriptors.cc +++ b/src/grib_accessor_class_expanded_descriptors.cc @@ -58,7 +58,7 @@ static int value_count(grib_accessor*, long*); static void destroy(grib_context*, grib_accessor*); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_expanded_descriptors { @@ -84,7 +84,7 @@ static grib_accessor_class _grib_accessor_class_expanded_descriptors = { "expanded_descriptors", /* name */ sizeof(grib_accessor_expanded_descriptors), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ &destroy, /* free mem */ @@ -131,40 +131,10 @@ static grib_accessor_class _grib_accessor_class_expanded_descriptors = { grib_accessor_class* grib_accessor_class_expanded_descriptors = &_grib_accessor_class_expanded_descriptors; -static void init_class(grib_accessor_class* c) -{ - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_forward.cc b/src/grib_accessor_class_forward.cc index da816334a..9db717924 100644 --- a/src/grib_accessor_class_forward.cc +++ b/src/grib_accessor_class_forward.cc @@ -32,7 +32,7 @@ or edit "accessor.class" and rerun ./make_class.pl */ static void dump(grib_accessor*, grib_dumper*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_forward { @@ -48,7 +48,7 @@ static grib_accessor_class _grib_accessor_class_forward = { "forward", /* name */ sizeof(grib_accessor_forward), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ 0, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -95,45 +95,10 @@ static grib_accessor_class _grib_accessor_class_forward = { grib_accessor_class* grib_accessor_class_forward = &_grib_accessor_class_forward; -static void init_class(grib_accessor_class* c) -{ - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->value_count = (*(c->super))->value_count; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_long = (*(c->super))->pack_long; - c->unpack_long = (*(c->super))->unpack_long; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_double = (*(c->super))->unpack_double; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_from_scale_factor_scaled_value.cc b/src/grib_accessor_class_from_scale_factor_scaled_value.cc index 4fccbfbd1..f6c3b1ffc 100644 --- a/src/grib_accessor_class_from_scale_factor_scaled_value.cc +++ b/src/grib_accessor_class_from_scale_factor_scaled_value.cc @@ -44,7 +44,7 @@ static int pack_double(grib_accessor*, const double* val, size_t* len); static int unpack_double(grib_accessor*, double* val, size_t* len); static int value_count(grib_accessor*, long*); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_from_scale_factor_scaled_value { @@ -63,7 +63,7 @@ static grib_accessor_class _grib_accessor_class_from_scale_factor_scaled_value = "from_scale_factor_scaled_value", /* name */ sizeof(grib_accessor_from_scale_factor_scaled_value), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -110,42 +110,10 @@ static grib_accessor_class _grib_accessor_class_from_scale_factor_scaled_value = grib_accessor_class* grib_accessor_class_from_scale_factor_scaled_value = &_grib_accessor_class_from_scale_factor_scaled_value; -static void init_class(grib_accessor_class* c) -{ - c->dump = (*(c->super))->dump; - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->pack_long = (*(c->super))->pack_long; - c->unpack_long = (*(c->super))->unpack_long; - c->pack_float = (*(c->super))->pack_float; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_g1_half_byte_codeflag.cc b/src/grib_accessor_class_g1_half_byte_codeflag.cc index 6d819c2b7..ecd58b08e 100644 --- a/src/grib_accessor_class_g1_half_byte_codeflag.cc +++ b/src/grib_accessor_class_g1_half_byte_codeflag.cc @@ -39,7 +39,7 @@ static int pack_long(grib_accessor*, const long* val, size_t* len); static int unpack_long(grib_accessor*, long* val, size_t* len); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); static int compare(grib_accessor*, grib_accessor*); typedef struct grib_accessor_g1_half_byte_codeflag @@ -56,7 +56,7 @@ static grib_accessor_class _grib_accessor_class_g1_half_byte_codeflag = { "g1_half_byte_codeflag", /* name */ sizeof(grib_accessor_g1_half_byte_codeflag), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -103,41 +103,10 @@ static grib_accessor_class _grib_accessor_class_g1_half_byte_codeflag = { grib_accessor_class* grib_accessor_class_g1_half_byte_codeflag = &_grib_accessor_class_g1_half_byte_codeflag; -static void init_class(grib_accessor_class* c) -{ - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->value_count = (*(c->super))->value_count; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_double = (*(c->super))->unpack_double; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_g1_message_length.cc b/src/grib_accessor_class_g1_message_length.cc index 9eb10664e..e7ffb21b2 100644 --- a/src/grib_accessor_class_g1_message_length.cc +++ b/src/grib_accessor_class_g1_message_length.cc @@ -34,7 +34,7 @@ or edit "accessor.class" and rerun ./make_class.pl static int pack_long(grib_accessor*, const long* val, size_t* len); static int unpack_long(grib_accessor*, long* val, size_t* len); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_g1_message_length { @@ -56,7 +56,7 @@ static grib_accessor_class _grib_accessor_class_g1_message_length = { "g1_message_length", /* name */ sizeof(grib_accessor_g1_message_length), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -103,44 +103,10 @@ static grib_accessor_class _grib_accessor_class_g1_message_length = { grib_accessor_class* grib_accessor_class_g1_message_length = &_grib_accessor_class_g1_message_length; -static void init_class(grib_accessor_class* c) -{ - c->dump = (*(c->super))->dump; - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->value_count = (*(c->super))->value_count; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_double = (*(c->super))->unpack_double; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_g1_section4_length.cc b/src/grib_accessor_class_g1_section4_length.cc index 6e114daaf..91cc62f1a 100644 --- a/src/grib_accessor_class_g1_section4_length.cc +++ b/src/grib_accessor_class_g1_section4_length.cc @@ -34,7 +34,7 @@ or edit "accessor.class" and rerun ./make_class.pl static int pack_long(grib_accessor*, const long* val, size_t* len); static int unpack_long(grib_accessor*, long* val, size_t* len); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_g1_section4_length { @@ -56,7 +56,7 @@ static grib_accessor_class _grib_accessor_class_g1_section4_length = { "g1_section4_length", /* name */ sizeof(grib_accessor_g1_section4_length), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -103,44 +103,10 @@ static grib_accessor_class _grib_accessor_class_g1_section4_length = { grib_accessor_class* grib_accessor_class_g1_section4_length = &_grib_accessor_class_g1_section4_length; -static void init_class(grib_accessor_class* c) -{ - c->dump = (*(c->super))->dump; - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->value_count = (*(c->super))->value_count; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_double = (*(c->super))->unpack_double; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_g1area.cc b/src/grib_accessor_class_g1area.cc index 616797efd..28a6f18f4 100644 --- a/src/grib_accessor_class_g1area.cc +++ b/src/grib_accessor_class_g1area.cc @@ -42,7 +42,7 @@ static int unpack_double(grib_accessor*, double* val, size_t* len); static int unpack_string(grib_accessor*, char*, size_t* len); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_g1area { @@ -64,7 +64,7 @@ static grib_accessor_class _grib_accessor_class_g1area = { "g1area", /* name */ sizeof(grib_accessor_g1area), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -111,42 +111,10 @@ static grib_accessor_class _grib_accessor_class_g1area = { grib_accessor_class* grib_accessor_class_g1area = &_grib_accessor_class_g1area; -static void init_class(grib_accessor_class* c) -{ - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->value_count = (*(c->super))->value_count; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_long = (*(c->super))->pack_long; - c->unpack_long = (*(c->super))->unpack_long; - c->pack_float = (*(c->super))->pack_float; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_g1bitmap.cc b/src/grib_accessor_class_g1bitmap.cc index bee7e21bc..005a58ab8 100644 --- a/src/grib_accessor_class_g1bitmap.cc +++ b/src/grib_accessor_class_g1bitmap.cc @@ -37,7 +37,7 @@ static int pack_double(grib_accessor*, const double* val, size_t* len); static int unpack_bytes(grib_accessor*, unsigned char*, size_t* len); static int value_count(grib_accessor*, long*); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_g1bitmap { @@ -60,7 +60,7 @@ static grib_accessor_class _grib_accessor_class_g1bitmap = { "g1bitmap", /* name */ sizeof(grib_accessor_g1bitmap), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -107,43 +107,10 @@ static grib_accessor_class _grib_accessor_class_g1bitmap = { grib_accessor_class* grib_accessor_class_g1bitmap = &_grib_accessor_class_g1bitmap; -static void init_class(grib_accessor_class* c) -{ - c->dump = (*(c->super))->dump; - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_long = (*(c->super))->pack_long; - c->unpack_long = (*(c->super))->unpack_long; - c->pack_float = (*(c->super))->pack_float; - c->unpack_double = (*(c->super))->unpack_double; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_g1date.cc b/src/grib_accessor_class_g1date.cc index 4113e3fa1..13dd3b334 100644 --- a/src/grib_accessor_class_g1date.cc +++ b/src/grib_accessor_class_g1date.cc @@ -46,7 +46,7 @@ static int unpack_string(grib_accessor*, char*, size_t* len); static int value_count(grib_accessor*, long*); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_g1date { @@ -67,7 +67,7 @@ static grib_accessor_class _grib_accessor_class_g1date = { "g1date", /* name */ sizeof(grib_accessor_g1date), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -114,41 +114,10 @@ static grib_accessor_class _grib_accessor_class_g1date = { grib_accessor_class* grib_accessor_class_g1date = &_grib_accessor_class_g1date; -static void init_class(grib_accessor_class* c) -{ - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_double = (*(c->super))->unpack_double; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_g1day_of_the_year_date.cc b/src/grib_accessor_class_g1day_of_the_year_date.cc index c14fa427a..3f2060170 100644 --- a/src/grib_accessor_class_g1day_of_the_year_date.cc +++ b/src/grib_accessor_class_g1day_of_the_year_date.cc @@ -36,7 +36,7 @@ or edit "accessor.class" and rerun ./make_class.pl static int unpack_string(grib_accessor*, char*, size_t* len); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_g1day_of_the_year_date { @@ -58,7 +58,7 @@ static grib_accessor_class _grib_accessor_class_g1day_of_the_year_date = { "g1day_of_the_year_date", /* name */ sizeof(grib_accessor_g1day_of_the_year_date), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -105,44 +105,10 @@ static grib_accessor_class _grib_accessor_class_g1day_of_the_year_date = { grib_accessor_class* grib_accessor_class_g1day_of_the_year_date = &_grib_accessor_class_g1day_of_the_year_date; -static void init_class(grib_accessor_class* c) -{ - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->value_count = (*(c->super))->value_count; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_long = (*(c->super))->pack_long; - c->unpack_long = (*(c->super))->unpack_long; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_double = (*(c->super))->unpack_double; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_g1end_of_interval_monthly.cc b/src/grib_accessor_class_g1end_of_interval_monthly.cc index b47b659b4..6f394c8cb 100644 --- a/src/grib_accessor_class_g1end_of_interval_monthly.cc +++ b/src/grib_accessor_class_g1end_of_interval_monthly.cc @@ -37,7 +37,7 @@ static int unpack_double(grib_accessor*, double* val, size_t* len); static int value_count(grib_accessor*, long*); static void destroy(grib_context*, grib_accessor*); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); static int compare(grib_accessor*, grib_accessor*); typedef struct grib_accessor_g1end_of_interval_monthly @@ -59,7 +59,7 @@ static grib_accessor_class _grib_accessor_class_g1end_of_interval_monthly = { "g1end_of_interval_monthly", /* name */ sizeof(grib_accessor_g1end_of_interval_monthly), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ &destroy, /* free mem */ @@ -106,43 +106,10 @@ static grib_accessor_class _grib_accessor_class_g1end_of_interval_monthly = { grib_accessor_class* grib_accessor_class_g1end_of_interval_monthly = &_grib_accessor_class_g1end_of_interval_monthly; -static void init_class(grib_accessor_class* c) -{ - c->dump = (*(c->super))->dump; - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_long = (*(c->super))->pack_long; - c->unpack_long = (*(c->super))->unpack_long; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_g1fcperiod.cc b/src/grib_accessor_class_g1fcperiod.cc index e0ad74979..7b9abf3dc 100644 --- a/src/grib_accessor_class_g1fcperiod.cc +++ b/src/grib_accessor_class_g1fcperiod.cc @@ -31,7 +31,7 @@ or edit "accessor.class" and rerun ./make_class.pl */ static int unpack_string(grib_accessor*, char*, size_t* len); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_g1fcperiod { @@ -60,7 +60,7 @@ static grib_accessor_class _grib_accessor_class_g1fcperiod = { "g1fcperiod", /* name */ sizeof(grib_accessor_g1fcperiod), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ 0, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -107,45 +107,10 @@ static grib_accessor_class _grib_accessor_class_g1fcperiod = { grib_accessor_class* grib_accessor_class_g1fcperiod = &_grib_accessor_class_g1fcperiod; -static void init_class(grib_accessor_class* c) -{ - c->dump = (*(c->super))->dump; - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->value_count = (*(c->super))->value_count; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_long = (*(c->super))->pack_long; - c->unpack_long = (*(c->super))->unpack_long; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_double = (*(c->super))->unpack_double; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_g1forecastmonth.cc b/src/grib_accessor_class_g1forecastmonth.cc index 62bb3a7f2..57016b9f0 100644 --- a/src/grib_accessor_class_g1forecastmonth.cc +++ b/src/grib_accessor_class_g1forecastmonth.cc @@ -42,7 +42,7 @@ static int pack_long(grib_accessor*, const long* val, size_t* len); static int unpack_long(grib_accessor*, long* val, size_t* len); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_g1forecastmonth { @@ -65,7 +65,7 @@ static grib_accessor_class _grib_accessor_class_g1forecastmonth = { "g1forecastmonth", /* name */ sizeof(grib_accessor_g1forecastmonth), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -112,43 +112,10 @@ static grib_accessor_class _grib_accessor_class_g1forecastmonth = { grib_accessor_class* grib_accessor_class_g1forecastmonth = &_grib_accessor_class_g1forecastmonth; -static void init_class(grib_accessor_class* c) -{ - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->value_count = (*(c->super))->value_count; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_double = (*(c->super))->unpack_double; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_g1monthlydate.cc b/src/grib_accessor_class_g1monthlydate.cc index a3b47807e..3c78af250 100644 --- a/src/grib_accessor_class_g1monthlydate.cc +++ b/src/grib_accessor_class_g1monthlydate.cc @@ -41,7 +41,7 @@ or edit "accessor.class" and rerun ./make_class.pl static int unpack_long(grib_accessor*, long* val, size_t* len); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_g1monthlydate { @@ -59,7 +59,7 @@ static grib_accessor_class _grib_accessor_class_g1monthlydate = { "g1monthlydate", /* name */ sizeof(grib_accessor_g1monthlydate), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -106,44 +106,10 @@ static grib_accessor_class _grib_accessor_class_g1monthlydate = { grib_accessor_class* grib_accessor_class_g1monthlydate = &_grib_accessor_class_g1monthlydate; -static void init_class(grib_accessor_class* c) -{ - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->value_count = (*(c->super))->value_count; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_long = (*(c->super))->pack_long; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_double = (*(c->super))->unpack_double; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_g1number_of_coded_values_sh_complex.cc b/src/grib_accessor_class_g1number_of_coded_values_sh_complex.cc index c643f2a55..a28f8431e 100644 --- a/src/grib_accessor_class_g1number_of_coded_values_sh_complex.cc +++ b/src/grib_accessor_class_g1number_of_coded_values_sh_complex.cc @@ -44,7 +44,7 @@ or edit "accessor.class" and rerun ./make_class.pl static int unpack_long(grib_accessor*, long* val, size_t* len); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_g1number_of_coded_values_sh_complex { @@ -69,7 +69,7 @@ static grib_accessor_class _grib_accessor_class_g1number_of_coded_values_sh_comp "g1number_of_coded_values_sh_complex", /* name */ sizeof(grib_accessor_g1number_of_coded_values_sh_complex), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -116,45 +116,10 @@ static grib_accessor_class _grib_accessor_class_g1number_of_coded_values_sh_comp grib_accessor_class* grib_accessor_class_g1number_of_coded_values_sh_complex = &_grib_accessor_class_g1number_of_coded_values_sh_complex; -static void init_class(grib_accessor_class* c) -{ - c->dump = (*(c->super))->dump; - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->value_count = (*(c->super))->value_count; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_long = (*(c->super))->pack_long; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_double = (*(c->super))->unpack_double; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_g1number_of_coded_values_sh_simple.cc b/src/grib_accessor_class_g1number_of_coded_values_sh_simple.cc index 9b8a3d772..74e78fc51 100644 --- a/src/grib_accessor_class_g1number_of_coded_values_sh_simple.cc +++ b/src/grib_accessor_class_g1number_of_coded_values_sh_simple.cc @@ -41,7 +41,7 @@ or edit "accessor.class" and rerun ./make_class.pl static int unpack_long(grib_accessor*, long* val, size_t* len); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_g1number_of_coded_values_sh_simple { @@ -63,7 +63,7 @@ static grib_accessor_class _grib_accessor_class_g1number_of_coded_values_sh_simp "g1number_of_coded_values_sh_simple", /* name */ sizeof(grib_accessor_g1number_of_coded_values_sh_simple), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -110,45 +110,10 @@ static grib_accessor_class _grib_accessor_class_g1number_of_coded_values_sh_simp grib_accessor_class* grib_accessor_class_g1number_of_coded_values_sh_simple = &_grib_accessor_class_g1number_of_coded_values_sh_simple; -static void init_class(grib_accessor_class* c) -{ - c->dump = (*(c->super))->dump; - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->value_count = (*(c->super))->value_count; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_long = (*(c->super))->pack_long; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_double = (*(c->super))->unpack_double; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_g1step_range.cc b/src/grib_accessor_class_g1step_range.cc index 308929d46..4bae8a8be 100644 --- a/src/grib_accessor_class_g1step_range.cc +++ b/src/grib_accessor_class_g1step_range.cc @@ -55,7 +55,7 @@ static int value_count(grib_accessor*, long*); static void destroy(grib_context*, grib_accessor*); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_g1step_range { @@ -83,7 +83,7 @@ static grib_accessor_class _grib_accessor_class_g1step_range = { "g1step_range", /* name */ sizeof(grib_accessor_g1step_range), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ &destroy, /* free mem */ @@ -130,38 +130,10 @@ static grib_accessor_class _grib_accessor_class_g1step_range = { grib_accessor_class* grib_accessor_class_g1step_range = &_grib_accessor_class_g1step_range; -static void init_class(grib_accessor_class* c) -{ - c->next_offset = (*(c->super))->next_offset; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_double = (*(c->super))->unpack_double; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_g1verificationdate.cc b/src/grib_accessor_class_g1verificationdate.cc index 651f9d322..3fe1f1f69 100644 --- a/src/grib_accessor_class_g1verificationdate.cc +++ b/src/grib_accessor_class_g1verificationdate.cc @@ -38,7 +38,7 @@ or edit "accessor.class" and rerun ./make_class.pl static int unpack_long(grib_accessor*, long* val, size_t* len); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_g1verificationdate { @@ -58,7 +58,7 @@ static grib_accessor_class _grib_accessor_class_g1verificationdate = { "g1verificationdate", /* name */ sizeof(grib_accessor_g1verificationdate), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -105,44 +105,10 @@ static grib_accessor_class _grib_accessor_class_g1verificationdate = { grib_accessor_class* grib_accessor_class_g1verificationdate = &_grib_accessor_class_g1verificationdate; -static void init_class(grib_accessor_class* c) -{ - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->value_count = (*(c->super))->value_count; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_long = (*(c->super))->pack_long; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_double = (*(c->super))->unpack_double; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_g2_aerosol.cc b/src/grib_accessor_class_g2_aerosol.cc index 2c36e96c9..e78cc4313 100644 --- a/src/grib_accessor_class_g2_aerosol.cc +++ b/src/grib_accessor_class_g2_aerosol.cc @@ -38,7 +38,7 @@ static int pack_long(grib_accessor*, const long* val, size_t* len); static int unpack_long(grib_accessor*, long* val, size_t* len); static int value_count(grib_accessor*, long*); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_g2_aerosol { @@ -61,7 +61,7 @@ static grib_accessor_class _grib_accessor_class_g2_aerosol = { "g2_aerosol", /* name */ sizeof(grib_accessor_g2_aerosol), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -108,43 +108,10 @@ static grib_accessor_class _grib_accessor_class_g2_aerosol = { grib_accessor_class* grib_accessor_class_g2_aerosol = &_grib_accessor_class_g2_aerosol; -static void init_class(grib_accessor_class* c) -{ - c->dump = (*(c->super))->dump; - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_double = (*(c->super))->unpack_double; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_g2_chemical.cc b/src/grib_accessor_class_g2_chemical.cc index 48360f124..8ab18cb23 100644 --- a/src/grib_accessor_class_g2_chemical.cc +++ b/src/grib_accessor_class_g2_chemical.cc @@ -38,7 +38,7 @@ static int pack_long(grib_accessor*, const long* val, size_t* len); static int unpack_long(grib_accessor*, long* val, size_t* len); static int value_count(grib_accessor*, long*); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_g2_chemical { @@ -61,7 +61,7 @@ static grib_accessor_class _grib_accessor_class_g2_chemical = { "g2_chemical", /* name */ sizeof(grib_accessor_g2_chemical), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -108,43 +108,10 @@ static grib_accessor_class _grib_accessor_class_g2_chemical = { grib_accessor_class* grib_accessor_class_g2_chemical = &_grib_accessor_class_g2_chemical; -static void init_class(grib_accessor_class* c) -{ - c->dump = (*(c->super))->dump; - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_double = (*(c->super))->unpack_double; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_g2_eps.cc b/src/grib_accessor_class_g2_eps.cc index 949d4bc25..a04233571 100644 --- a/src/grib_accessor_class_g2_eps.cc +++ b/src/grib_accessor_class_g2_eps.cc @@ -41,7 +41,7 @@ static int pack_long(grib_accessor*, const long* val, size_t* len); static int unpack_long(grib_accessor*, long* val, size_t* len); static int value_count(grib_accessor*, long*); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_g2_eps { @@ -66,7 +66,7 @@ static grib_accessor_class _grib_accessor_class_g2_eps = { "g2_eps", /* name */ sizeof(grib_accessor_g2_eps), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -113,43 +113,10 @@ static grib_accessor_class _grib_accessor_class_g2_eps = { grib_accessor_class* grib_accessor_class_g2_eps = &_grib_accessor_class_g2_eps; -static void init_class(grib_accessor_class* c) -{ - c->dump = (*(c->super))->dump; - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_double = (*(c->super))->unpack_double; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_g2_mars_labeling.cc b/src/grib_accessor_class_g2_mars_labeling.cc index b11cbb30a..922b79194 100644 --- a/src/grib_accessor_class_g2_mars_labeling.cc +++ b/src/grib_accessor_class_g2_mars_labeling.cc @@ -55,7 +55,7 @@ static int unpack_long(grib_accessor*, long* val, size_t* len); static int unpack_string(grib_accessor*, char*, size_t* len); static int value_count(grib_accessor*, long*); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_g2_mars_labeling { @@ -81,7 +81,7 @@ static grib_accessor_class _grib_accessor_class_g2_mars_labeling = { "g2_mars_labeling", /* name */ sizeof(grib_accessor_g2_mars_labeling), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -128,40 +128,10 @@ static grib_accessor_class _grib_accessor_class_g2_mars_labeling = { grib_accessor_class* grib_accessor_class_g2_mars_labeling = &_grib_accessor_class_g2_mars_labeling; -static void init_class(grib_accessor_class* c) -{ - c->dump = (*(c->super))->dump; - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_double = (*(c->super))->unpack_double; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_g2bitmap.cc b/src/grib_accessor_class_g2bitmap.cc index c17da753b..f3a891dad 100644 --- a/src/grib_accessor_class_g2bitmap.cc +++ b/src/grib_accessor_class_g2bitmap.cc @@ -36,7 +36,7 @@ or edit "accessor.class" and rerun ./make_class.pl static int pack_double(grib_accessor*, const double* val, size_t* len); static int value_count(grib_accessor*, long*); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_g2bitmap { @@ -59,7 +59,7 @@ static grib_accessor_class _grib_accessor_class_g2bitmap = { "g2bitmap", /* name */ sizeof(grib_accessor_g2bitmap), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -106,44 +106,10 @@ static grib_accessor_class _grib_accessor_class_g2bitmap = { grib_accessor_class* grib_accessor_class_g2bitmap = &_grib_accessor_class_g2bitmap; -static void init_class(grib_accessor_class* c) -{ - c->dump = (*(c->super))->dump; - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_long = (*(c->super))->pack_long; - c->unpack_long = (*(c->super))->unpack_long; - c->pack_float = (*(c->super))->pack_float; - c->unpack_double = (*(c->super))->unpack_double; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_g2bitmap_present.cc b/src/grib_accessor_class_g2bitmap_present.cc index 93201529f..a81b6ddcc 100644 --- a/src/grib_accessor_class_g2bitmap_present.cc +++ b/src/grib_accessor_class_g2bitmap_present.cc @@ -39,7 +39,7 @@ or edit "accessor.class" and rerun ./make_class.pl static int pack_long(grib_accessor*, const long* val, size_t* len); static int unpack_long(grib_accessor*, long* val, size_t* len); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_g2bitmap_present { @@ -57,7 +57,7 @@ static grib_accessor_class _grib_accessor_class_g2bitmap_present = { "g2bitmap_present", /* name */ sizeof(grib_accessor_g2bitmap_present), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -104,44 +104,10 @@ static grib_accessor_class _grib_accessor_class_g2bitmap_present = { grib_accessor_class* grib_accessor_class_g2bitmap_present = &_grib_accessor_class_g2bitmap_present; -static void init_class(grib_accessor_class* c) -{ - c->dump = (*(c->super))->dump; - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->value_count = (*(c->super))->value_count; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_double = (*(c->super))->unpack_double; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_g2date.cc b/src/grib_accessor_class_g2date.cc index d3523dfbe..101d4b493 100644 --- a/src/grib_accessor_class_g2date.cc +++ b/src/grib_accessor_class_g2date.cc @@ -39,7 +39,7 @@ static int pack_long(grib_accessor*, const long* val, size_t* len); static int unpack_long(grib_accessor*, long* val, size_t* len); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_g2date { @@ -60,7 +60,7 @@ static grib_accessor_class _grib_accessor_class_g2date = { "g2date", /* name */ sizeof(grib_accessor_g2date), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -107,43 +107,10 @@ static grib_accessor_class _grib_accessor_class_g2date = { grib_accessor_class* grib_accessor_class_g2date = &_grib_accessor_class_g2date; -static void init_class(grib_accessor_class* c) -{ - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->value_count = (*(c->super))->value_count; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_double = (*(c->super))->unpack_double; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ static void init(grib_accessor* a, const long l, grib_arguments* c) diff --git a/src/grib_accessor_class_g2end_step.cc b/src/grib_accessor_class_g2end_step.cc index a450bec15..b7224fa5f 100644 --- a/src/grib_accessor_class_g2end_step.cc +++ b/src/grib_accessor_class_g2end_step.cc @@ -57,7 +57,7 @@ static int pack_long(grib_accessor*, const long* val, size_t* len); static int unpack_long(grib_accessor*, long* val, size_t* len); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_g2end_step { @@ -92,7 +92,7 @@ static grib_accessor_class _grib_accessor_class_g2end_step = { "g2end_step", /* name */ sizeof(grib_accessor_g2end_step), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -139,43 +139,10 @@ static grib_accessor_class _grib_accessor_class_g2end_step = { grib_accessor_class* grib_accessor_class_g2end_step = &_grib_accessor_class_g2end_step; -static void init_class(grib_accessor_class* c) -{ - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->value_count = (*(c->super))->value_count; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_double = (*(c->super))->unpack_double; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_g2grid.cc b/src/grib_accessor_class_g2grid.cc index fba5d7ccc..dd8d89ebb 100644 --- a/src/grib_accessor_class_g2grid.cc +++ b/src/grib_accessor_class_g2grid.cc @@ -48,7 +48,7 @@ static int pack_double(grib_accessor*, const double* val, size_t* len); static int unpack_double(grib_accessor*, double* val, size_t* len); static int value_count(grib_accessor*, long*); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_g2grid { @@ -73,7 +73,7 @@ static grib_accessor_class _grib_accessor_class_g2grid = { "g2grid", /* name */ sizeof(grib_accessor_g2grid), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -120,43 +120,10 @@ static grib_accessor_class _grib_accessor_class_g2grid = { grib_accessor_class* grib_accessor_class_g2grid = &_grib_accessor_class_g2grid; -static void init_class(grib_accessor_class* c) -{ - c->dump = (*(c->super))->dump; - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_long = (*(c->super))->pack_long; - c->unpack_long = (*(c->super))->unpack_long; - c->pack_float = (*(c->super))->pack_float; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_g2latlon.cc b/src/grib_accessor_class_g2latlon.cc index ff9adf7db..ef7529f00 100644 --- a/src/grib_accessor_class_g2latlon.cc +++ b/src/grib_accessor_class_g2latlon.cc @@ -44,7 +44,7 @@ static int is_missing(grib_accessor*); static int pack_double(grib_accessor*, const double* val, size_t* len); static int unpack_double(grib_accessor*, double* val, size_t* len); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_g2latlon { @@ -64,7 +64,7 @@ static grib_accessor_class _grib_accessor_class_g2latlon = { "g2latlon", /* name */ sizeof(grib_accessor_g2latlon), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -111,42 +111,10 @@ static grib_accessor_class _grib_accessor_class_g2latlon = { grib_accessor_class* grib_accessor_class_g2latlon = &_grib_accessor_class_g2latlon; -static void init_class(grib_accessor_class* c) -{ - c->dump = (*(c->super))->dump; - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->value_count = (*(c->super))->value_count; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_long = (*(c->super))->pack_long; - c->unpack_long = (*(c->super))->unpack_long; - c->pack_float = (*(c->super))->pack_float; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_g2level.cc b/src/grib_accessor_class_g2level.cc index 417a31dfc..563ae7623 100644 --- a/src/grib_accessor_class_g2level.cc +++ b/src/grib_accessor_class_g2level.cc @@ -43,7 +43,7 @@ static int unpack_double(grib_accessor*, double* val, size_t* len); static int unpack_long(grib_accessor*, long* val, size_t* len); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_g2level { @@ -64,7 +64,7 @@ static grib_accessor_class _grib_accessor_class_g2level = { "g2level", /* name */ sizeof(grib_accessor_g2level), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -111,40 +111,10 @@ static grib_accessor_class _grib_accessor_class_g2level = { grib_accessor_class* grib_accessor_class_g2level = &_grib_accessor_class_g2level; -static void init_class(grib_accessor_class* c) -{ - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->value_count = (*(c->super))->value_count; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->pack_float = (*(c->super))->pack_float; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_g2lon.cc b/src/grib_accessor_class_g2lon.cc index 7ffed21d9..fba404475 100644 --- a/src/grib_accessor_class_g2lon.cc +++ b/src/grib_accessor_class_g2lon.cc @@ -39,7 +39,7 @@ or edit "accessor.class" and rerun ./make_class.pl static int pack_double(grib_accessor*, const double* val, size_t* len); static int unpack_double(grib_accessor*, double* val, size_t* len); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_g2lon { @@ -57,7 +57,7 @@ static grib_accessor_class _grib_accessor_class_g2lon = { "g2lon", /* name */ sizeof(grib_accessor_g2lon), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -104,44 +104,10 @@ static grib_accessor_class _grib_accessor_class_g2lon = { grib_accessor_class* grib_accessor_class_g2lon = &_grib_accessor_class_g2lon; -static void init_class(grib_accessor_class* c) -{ - c->dump = (*(c->super))->dump; - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->value_count = (*(c->super))->value_count; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_long = (*(c->super))->pack_long; - c->unpack_long = (*(c->super))->unpack_long; - c->pack_float = (*(c->super))->pack_float; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_g2step_range.cc b/src/grib_accessor_class_g2step_range.cc index d99950c79..014ac5e06 100644 --- a/src/grib_accessor_class_g2step_range.cc +++ b/src/grib_accessor_class_g2step_range.cc @@ -48,7 +48,7 @@ static size_t string_length(grib_accessor*); static int value_count(grib_accessor*, long*); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_g2step_range { @@ -66,7 +66,7 @@ static grib_accessor_class _grib_accessor_class_g2step_range = { "g2step_range", /* name */ sizeof(grib_accessor_g2step_range), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -113,38 +113,10 @@ static grib_accessor_class _grib_accessor_class_g2step_range = { grib_accessor_class* grib_accessor_class_g2step_range = &_grib_accessor_class_g2step_range; -static void init_class(grib_accessor_class* c) -{ - c->next_offset = (*(c->super))->next_offset; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_double = (*(c->super))->unpack_double; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_gaussian_grid_name.cc b/src/grib_accessor_class_gaussian_grid_name.cc index 2906cf77a..6979297ee 100644 --- a/src/grib_accessor_class_gaussian_grid_name.cc +++ b/src/grib_accessor_class_gaussian_grid_name.cc @@ -38,7 +38,7 @@ static int get_native_type(grib_accessor*); static int unpack_string(grib_accessor*, char*, size_t* len); static size_t string_length(grib_accessor*); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_gaussian_grid_name { @@ -57,7 +57,7 @@ static grib_accessor_class _grib_accessor_class_gaussian_grid_name = { "gaussian_grid_name", /* name */ sizeof(grib_accessor_gaussian_grid_name), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -104,43 +104,10 @@ static grib_accessor_class _grib_accessor_class_gaussian_grid_name = { grib_accessor_class* grib_accessor_class_gaussian_grid_name = &_grib_accessor_class_gaussian_grid_name; -static void init_class(grib_accessor_class* c) -{ - c->dump = (*(c->super))->dump; - c->next_offset = (*(c->super))->next_offset; - c->value_count = (*(c->super))->value_count; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_long = (*(c->super))->pack_long; - c->unpack_long = (*(c->super))->unpack_long; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_double = (*(c->super))->unpack_double; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_gds_is_present.cc b/src/grib_accessor_class_gds_is_present.cc index bb5e2910c..f54793de9 100644 --- a/src/grib_accessor_class_gds_is_present.cc +++ b/src/grib_accessor_class_gds_is_present.cc @@ -42,7 +42,7 @@ or edit "accessor.class" and rerun ./make_class.pl static int pack_long(grib_accessor*, const long* val, size_t* len); static int unpack_long(grib_accessor*, long* val, size_t* len); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_gds_is_present { @@ -63,7 +63,7 @@ static grib_accessor_class _grib_accessor_class_gds_is_present = { "gds_is_present", /* name */ sizeof(grib_accessor_gds_is_present), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -110,44 +110,10 @@ static grib_accessor_class _grib_accessor_class_gds_is_present = { grib_accessor_class* grib_accessor_class_gds_is_present = &_grib_accessor_class_gds_is_present; -static void init_class(grib_accessor_class* c) -{ - c->dump = (*(c->super))->dump; - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->value_count = (*(c->super))->value_count; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_double = (*(c->super))->unpack_double; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_gds_not_present_bitmap.cc b/src/grib_accessor_class_gds_not_present_bitmap.cc index 40700c089..e73478d4b 100644 --- a/src/grib_accessor_class_gds_not_present_bitmap.cc +++ b/src/grib_accessor_class_gds_not_present_bitmap.cc @@ -47,7 +47,7 @@ static int pack_double(grib_accessor*, const double* val, size_t* len); static int unpack_double(grib_accessor*, double* val, size_t* len); static int value_count(grib_accessor*, long*); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_gds_not_present_bitmap { @@ -68,7 +68,7 @@ static grib_accessor_class _grib_accessor_class_gds_not_present_bitmap = { "gds_not_present_bitmap", /* name */ sizeof(grib_accessor_gds_not_present_bitmap), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -115,43 +115,10 @@ static grib_accessor_class _grib_accessor_class_gds_not_present_bitmap = { grib_accessor_class* grib_accessor_class_gds_not_present_bitmap = &_grib_accessor_class_gds_not_present_bitmap; -static void init_class(grib_accessor_class* c) -{ - c->dump = (*(c->super))->dump; - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_long = (*(c->super))->pack_long; - c->unpack_long = (*(c->super))->unpack_long; - c->pack_float = (*(c->super))->pack_float; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_gen.cc b/src/grib_accessor_class_gen.cc index f63983fc9..b7bf616ea 100644 --- a/src/grib_accessor_class_gen.cc +++ b/src/grib_accessor_class_gen.cc @@ -73,7 +73,7 @@ static int value_count(grib_accessor*, long*); static void destroy(grib_context*, grib_accessor*); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); static int notify_change(grib_accessor*, grib_accessor*); static void update_size(grib_accessor*, size_t); static size_t preferred_size(grib_accessor*, int); @@ -97,7 +97,7 @@ static grib_accessor_class _grib_accessor_class_gen = { "gen", /* name */ sizeof(grib_accessor_gen), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ &destroy, /* free mem */ @@ -144,9 +144,10 @@ static grib_accessor_class _grib_accessor_class_gen = { grib_accessor_class* grib_accessor_class_gen = &_grib_accessor_class_gen; -static void init_class(grib_accessor_class* c) -{ -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_getenv.cc b/src/grib_accessor_class_getenv.cc index bf2db877c..05a81f81c 100644 --- a/src/grib_accessor_class_getenv.cc +++ b/src/grib_accessor_class_getenv.cc @@ -39,7 +39,7 @@ static int unpack_string(grib_accessor*, char*, size_t* len); static size_t string_length(grib_accessor*); static int value_count(grib_accessor*, long*); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_getenv { @@ -59,7 +59,7 @@ static grib_accessor_class _grib_accessor_class_getenv = { "getenv", /* name */ sizeof(grib_accessor_getenv), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -106,42 +106,10 @@ static grib_accessor_class _grib_accessor_class_getenv = { grib_accessor_class* grib_accessor_class_getenv = &_grib_accessor_class_getenv; -static void init_class(grib_accessor_class* c) -{ - c->dump = (*(c->super))->dump; - c->next_offset = (*(c->super))->next_offset; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_long = (*(c->super))->pack_long; - c->unpack_long = (*(c->super))->unpack_long; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_double = (*(c->super))->unpack_double; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_global_gaussian.cc b/src/grib_accessor_class_global_gaussian.cc index 3596dae17..3472333a9 100644 --- a/src/grib_accessor_class_global_gaussian.cc +++ b/src/grib_accessor_class_global_gaussian.cc @@ -46,7 +46,7 @@ or edit "accessor.class" and rerun ./make_class.pl static int pack_long(grib_accessor*, const long* val, size_t* len); static int unpack_long(grib_accessor*, long* val, size_t* len); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_global_gaussian { @@ -74,7 +74,7 @@ static grib_accessor_class _grib_accessor_class_global_gaussian = { "global_gaussian", /* name */ sizeof(grib_accessor_global_gaussian), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -121,44 +121,10 @@ static grib_accessor_class _grib_accessor_class_global_gaussian = { grib_accessor_class* grib_accessor_class_global_gaussian = &_grib_accessor_class_global_gaussian; -static void init_class(grib_accessor_class* c) -{ - c->dump = (*(c->super))->dump; - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->value_count = (*(c->super))->value_count; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_double = (*(c->super))->unpack_double; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_group.cc b/src/grib_accessor_class_group.cc index 6e7f4dd85..ead0b6cdf 100644 --- a/src/grib_accessor_class_group.cc +++ b/src/grib_accessor_class_group.cc @@ -54,7 +54,7 @@ static int value_count(grib_accessor*, long*); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); static void post_init(grib_accessor*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); static int compare(grib_accessor*, grib_accessor*); typedef struct grib_accessor_group @@ -72,7 +72,7 @@ static grib_accessor_class _grib_accessor_class_group = { "group", /* name */ sizeof(grib_accessor_group), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ &post_init, /* post_init */ 0, /* free mem */ @@ -119,34 +119,10 @@ static grib_accessor_class _grib_accessor_class_group = { grib_accessor_class* grib_accessor_class_group = &_grib_accessor_class_group; -static void init_class(grib_accessor_class* c) -{ - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_float = (*(c->super))->pack_float; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_gts_header.cc b/src/grib_accessor_class_gts_header.cc index d47ef0328..45a43ddba 100644 --- a/src/grib_accessor_class_gts_header.cc +++ b/src/grib_accessor_class_gts_header.cc @@ -38,7 +38,7 @@ static int unpack_string(grib_accessor*, char*, size_t* len); static size_t string_length(grib_accessor*); static int value_count(grib_accessor*, long*); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_gts_header { @@ -57,7 +57,7 @@ static grib_accessor_class _grib_accessor_class_gts_header = { "gts_header", /* name */ sizeof(grib_accessor_gts_header), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -104,42 +104,10 @@ static grib_accessor_class _grib_accessor_class_gts_header = { grib_accessor_class* grib_accessor_class_gts_header = &_grib_accessor_class_gts_header; -static void init_class(grib_accessor_class* c) -{ - c->dump = (*(c->super))->dump; - c->next_offset = (*(c->super))->next_offset; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_long = (*(c->super))->pack_long; - c->unpack_long = (*(c->super))->unpack_long; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_double = (*(c->super))->unpack_double; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_hash_array.cc b/src/grib_accessor_class_hash_array.cc index 7eefe3c29..e31653ec8 100644 --- a/src/grib_accessor_class_hash_array.cc +++ b/src/grib_accessor_class_hash_array.cc @@ -54,7 +54,7 @@ static int value_count(grib_accessor*, long*); static void destroy(grib_context*, grib_accessor*); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); static int compare(grib_accessor*, grib_accessor*); typedef struct grib_accessor_hash_array @@ -73,7 +73,7 @@ static grib_accessor_class _grib_accessor_class_hash_array = { "hash_array", /* name */ sizeof(grib_accessor_hash_array), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ &destroy, /* free mem */ @@ -120,35 +120,10 @@ static grib_accessor_class _grib_accessor_class_hash_array = { grib_accessor_class* grib_accessor_class_hash_array = &_grib_accessor_class_hash_array; -static void init_class(grib_accessor_class* c) -{ - c->next_offset = (*(c->super))->next_offset; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_float = (*(c->super))->pack_float; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_headers_only.cc b/src/grib_accessor_class_headers_only.cc index 5626d582d..c25d0e8dc 100644 --- a/src/grib_accessor_class_headers_only.cc +++ b/src/grib_accessor_class_headers_only.cc @@ -33,7 +33,7 @@ or edit "accessor.class" and rerun ./make_class.pl static int get_native_type(grib_accessor*); static int unpack_long(grib_accessor*, long* val, size_t* len); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_headers_only { @@ -49,7 +49,7 @@ static grib_accessor_class _grib_accessor_class_headers_only = { "headers_only", /* name */ sizeof(grib_accessor_headers_only), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -96,44 +96,10 @@ static grib_accessor_class _grib_accessor_class_headers_only = { grib_accessor_class* grib_accessor_class_headers_only = &_grib_accessor_class_headers_only; -static void init_class(grib_accessor_class* c) -{ - c->dump = (*(c->super))->dump; - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->value_count = (*(c->super))->value_count; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_long = (*(c->super))->pack_long; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_double = (*(c->super))->unpack_double; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_ibmfloat.cc b/src/grib_accessor_class_ibmfloat.cc index 70a523347..474ceb8a3 100644 --- a/src/grib_accessor_class_ibmfloat.cc +++ b/src/grib_accessor_class_ibmfloat.cc @@ -50,7 +50,7 @@ static long byte_offset(grib_accessor*); static long next_offset(grib_accessor*); static int value_count(grib_accessor*, long*); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); static void update_size(grib_accessor*, size_t); static int nearest_smaller_value (grib_accessor*, double, double*); @@ -70,7 +70,7 @@ static grib_accessor_class _grib_accessor_class_ibmfloat = { "ibmfloat", /* name */ sizeof(grib_accessor_ibmfloat), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -117,38 +117,10 @@ static grib_accessor_class _grib_accessor_class_ibmfloat = { grib_accessor_class* grib_accessor_class_ibmfloat = &_grib_accessor_class_ibmfloat; -static void init_class(grib_accessor_class* c) -{ - c->dump = (*(c->super))->dump; - c->string_length = (*(c->super))->string_length; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_long = (*(c->super))->pack_long; - c->unpack_long = (*(c->super))->unpack_long; - c->pack_float = (*(c->super))->pack_float; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_ieeefloat.cc b/src/grib_accessor_class_ieeefloat.cc index 599145a8d..96e20d0fc 100644 --- a/src/grib_accessor_class_ieeefloat.cc +++ b/src/grib_accessor_class_ieeefloat.cc @@ -39,7 +39,7 @@ static int pack_double(grib_accessor*, const double* val, size_t* len); static int unpack_double(grib_accessor*, double* val, size_t* len); static int value_count(grib_accessor*, long*); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); static void update_size(grib_accessor*, size_t); static int nearest_smaller_value (grib_accessor*, double, double*); @@ -59,7 +59,7 @@ static grib_accessor_class _grib_accessor_class_ieeefloat = { "ieeefloat", /* name */ sizeof(grib_accessor_ieeefloat), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -106,41 +106,10 @@ static grib_accessor_class _grib_accessor_class_ieeefloat = { grib_accessor_class* grib_accessor_class_ieeefloat = &_grib_accessor_class_ieeefloat; -static void init_class(grib_accessor_class* c) -{ - c->dump = (*(c->super))->dump; - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_long = (*(c->super))->pack_long; - c->unpack_long = (*(c->super))->unpack_long; - c->pack_float = (*(c->super))->pack_float; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_ifs_param.cc b/src/grib_accessor_class_ifs_param.cc index 6e00e5913..a24fadabc 100644 --- a/src/grib_accessor_class_ifs_param.cc +++ b/src/grib_accessor_class_ifs_param.cc @@ -42,7 +42,7 @@ static int get_native_type(grib_accessor*); static int pack_long(grib_accessor*, const long* val, size_t* len); static int unpack_long(grib_accessor*, long* val, size_t* len); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_ifs_param { @@ -60,7 +60,7 @@ static grib_accessor_class _grib_accessor_class_ifs_param = { "ifs_param", /* name */ sizeof(grib_accessor_ifs_param), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -107,43 +107,10 @@ static grib_accessor_class _grib_accessor_class_ifs_param = { grib_accessor_class* grib_accessor_class_ifs_param = &_grib_accessor_class_ifs_param; -static void init_class(grib_accessor_class* c) -{ - c->dump = (*(c->super))->dump; - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->value_count = (*(c->super))->value_count; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_double = (*(c->super))->unpack_double; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_int16.cc b/src/grib_accessor_class_int16.cc index 0e46a4a88..c216130f6 100644 --- a/src/grib_accessor_class_int16.cc +++ b/src/grib_accessor_class_int16.cc @@ -34,7 +34,7 @@ or edit "accessor.class" and rerun ./make_class.pl static int pack_long(grib_accessor*, const long* val, size_t* len); static int unpack_long(grib_accessor*, long* val, size_t* len); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_int16 { @@ -50,7 +50,7 @@ static grib_accessor_class _grib_accessor_class_int16 = { "int16", /* name */ sizeof(grib_accessor_int16), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ 0, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -97,44 +97,10 @@ static grib_accessor_class _grib_accessor_class_int16 = { grib_accessor_class* grib_accessor_class_int16 = &_grib_accessor_class_int16; -static void init_class(grib_accessor_class* c) -{ - c->dump = (*(c->super))->dump; - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->value_count = (*(c->super))->value_count; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_double = (*(c->super))->unpack_double; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_int16_little_endian.cc b/src/grib_accessor_class_int16_little_endian.cc index 34375162e..7c869a238 100644 --- a/src/grib_accessor_class_int16_little_endian.cc +++ b/src/grib_accessor_class_int16_little_endian.cc @@ -34,7 +34,7 @@ or edit "accessor.class" and rerun ./make_class.pl static int pack_long(grib_accessor*, const long* val, size_t* len); static int unpack_long(grib_accessor*, long* val, size_t* len); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_int16_little_endian { @@ -50,7 +50,7 @@ static grib_accessor_class _grib_accessor_class_int16_little_endian = { "int16_little_endian", /* name */ sizeof(grib_accessor_int16_little_endian), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ 0, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -97,44 +97,10 @@ static grib_accessor_class _grib_accessor_class_int16_little_endian = { grib_accessor_class* grib_accessor_class_int16_little_endian = &_grib_accessor_class_int16_little_endian; -static void init_class(grib_accessor_class* c) -{ - c->dump = (*(c->super))->dump; - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->value_count = (*(c->super))->value_count; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_double = (*(c->super))->unpack_double; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_int32.cc b/src/grib_accessor_class_int32.cc index d45dd6115..1087662fa 100644 --- a/src/grib_accessor_class_int32.cc +++ b/src/grib_accessor_class_int32.cc @@ -34,7 +34,7 @@ or edit "accessor.class" and rerun ./make_class.pl static int pack_long(grib_accessor*, const long* val, size_t* len); static int unpack_long(grib_accessor*, long* val, size_t* len); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_int32 { @@ -50,7 +50,7 @@ static grib_accessor_class _grib_accessor_class_int32 = { "int32", /* name */ sizeof(grib_accessor_int32), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ 0, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -97,44 +97,10 @@ static grib_accessor_class _grib_accessor_class_int32 = { grib_accessor_class* grib_accessor_class_int32 = &_grib_accessor_class_int32; -static void init_class(grib_accessor_class* c) -{ - c->dump = (*(c->super))->dump; - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->value_count = (*(c->super))->value_count; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_double = (*(c->super))->unpack_double; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_int32_little_endian.cc b/src/grib_accessor_class_int32_little_endian.cc index a91e18253..3b7f5dc3f 100644 --- a/src/grib_accessor_class_int32_little_endian.cc +++ b/src/grib_accessor_class_int32_little_endian.cc @@ -34,7 +34,7 @@ or edit "accessor.class" and rerun ./make_class.pl static int pack_long(grib_accessor*, const long* val, size_t* len); static int unpack_long(grib_accessor*, long* val, size_t* len); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_int32_little_endian { @@ -50,7 +50,7 @@ static grib_accessor_class _grib_accessor_class_int32_little_endian = { "int32_little_endian", /* name */ sizeof(grib_accessor_int32_little_endian), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ 0, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -97,44 +97,10 @@ static grib_accessor_class _grib_accessor_class_int32_little_endian = { grib_accessor_class* grib_accessor_class_int32_little_endian = &_grib_accessor_class_int32_little_endian; -static void init_class(grib_accessor_class* c) -{ - c->dump = (*(c->super))->dump; - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->value_count = (*(c->super))->value_count; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_double = (*(c->super))->unpack_double; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_int64.cc b/src/grib_accessor_class_int64.cc index 5bfdba96e..4341a6ce5 100644 --- a/src/grib_accessor_class_int64.cc +++ b/src/grib_accessor_class_int64.cc @@ -34,7 +34,7 @@ or edit "accessor.class" and rerun ./make_class.pl static int pack_long(grib_accessor*, const long* val, size_t* len); static int unpack_long(grib_accessor*, long* val, size_t* len); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_int64 { @@ -50,7 +50,7 @@ static grib_accessor_class _grib_accessor_class_int64 = { "int64", /* name */ sizeof(grib_accessor_int64), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ 0, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -97,44 +97,10 @@ static grib_accessor_class _grib_accessor_class_int64 = { grib_accessor_class* grib_accessor_class_int64 = &_grib_accessor_class_int64; -static void init_class(grib_accessor_class* c) -{ - c->dump = (*(c->super))->dump; - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->value_count = (*(c->super))->value_count; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_double = (*(c->super))->unpack_double; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_int64_little_endian.cc b/src/grib_accessor_class_int64_little_endian.cc index acba5952d..8b5debfe7 100644 --- a/src/grib_accessor_class_int64_little_endian.cc +++ b/src/grib_accessor_class_int64_little_endian.cc @@ -34,7 +34,7 @@ or edit "accessor.class" and rerun ./make_class.pl static int pack_long(grib_accessor*, const long* val, size_t* len); static int unpack_long(grib_accessor*, long* val, size_t* len); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_int64_little_endian { @@ -50,7 +50,7 @@ static grib_accessor_class _grib_accessor_class_int64_little_endian = { "int64_little_endian", /* name */ sizeof(grib_accessor_int64_little_endian), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ 0, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -97,44 +97,10 @@ static grib_accessor_class _grib_accessor_class_int64_little_endian = { grib_accessor_class* grib_accessor_class_int64_little_endian = &_grib_accessor_class_int64_little_endian; -static void init_class(grib_accessor_class* c) -{ - c->dump = (*(c->super))->dump; - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->value_count = (*(c->super))->value_count; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_double = (*(c->super))->unpack_double; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_int8.cc b/src/grib_accessor_class_int8.cc index 25f1e9e4e..bbd8fd16c 100644 --- a/src/grib_accessor_class_int8.cc +++ b/src/grib_accessor_class_int8.cc @@ -34,7 +34,7 @@ or edit "accessor.class" and rerun ./make_class.pl static int pack_long(grib_accessor*, const long* val, size_t* len); static int unpack_long(grib_accessor*, long* val, size_t* len); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_int8 { @@ -50,7 +50,7 @@ static grib_accessor_class _grib_accessor_class_int8 = { "int8", /* name */ sizeof(grib_accessor_int8), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ 0, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -97,44 +97,10 @@ static grib_accessor_class _grib_accessor_class_int8 = { grib_accessor_class* grib_accessor_class_int8 = &_grib_accessor_class_int8; -static void init_class(grib_accessor_class* c) -{ - c->dump = (*(c->super))->dump; - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->value_count = (*(c->super))->value_count; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_double = (*(c->super))->unpack_double; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_iterator.cc b/src/grib_accessor_class_iterator.cc index 8eab065b9..4a89437e2 100644 --- a/src/grib_accessor_class_iterator.cc +++ b/src/grib_accessor_class_iterator.cc @@ -37,7 +37,7 @@ or edit "accessor.class" and rerun ./make_class.pl static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_iterator { @@ -54,7 +54,7 @@ static grib_accessor_class _grib_accessor_class_iterator = { "iterator", /* name */ sizeof(grib_accessor_iterator), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -101,45 +101,10 @@ static grib_accessor_class _grib_accessor_class_iterator = { grib_accessor_class* grib_accessor_class_iterator = &_grib_accessor_class_iterator; -static void init_class(grib_accessor_class* c) -{ - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->value_count = (*(c->super))->value_count; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_long = (*(c->super))->pack_long; - c->unpack_long = (*(c->super))->unpack_long; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_double = (*(c->super))->unpack_double; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_julian_date.cc b/src/grib_accessor_class_julian_date.cc index 2ce59d6be..2c4a08456 100644 --- a/src/grib_accessor_class_julian_date.cc +++ b/src/grib_accessor_class_julian_date.cc @@ -54,7 +54,7 @@ static int unpack_long(grib_accessor*, long* val, size_t* len); static int unpack_string(grib_accessor*, char*, size_t* len); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_julian_date { @@ -80,7 +80,7 @@ static grib_accessor_class _grib_accessor_class_julian_date = { "julian_date", /* name */ sizeof(grib_accessor_julian_date), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -127,38 +127,10 @@ static grib_accessor_class _grib_accessor_class_julian_date = { grib_accessor_class* grib_accessor_class_julian_date = &_grib_accessor_class_julian_date; -static void init_class(grib_accessor_class* c) -{ - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->value_count = (*(c->super))->value_count; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_float = (*(c->super))->pack_float; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_julian_day.cc b/src/grib_accessor_class_julian_day.cc index 332fc3c8a..59b3c105a 100644 --- a/src/grib_accessor_class_julian_day.cc +++ b/src/grib_accessor_class_julian_day.cc @@ -44,7 +44,7 @@ static int unpack_double(grib_accessor*, double* val, size_t* len); static int unpack_long(grib_accessor*, long* val, size_t* len); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_julian_day { @@ -65,7 +65,7 @@ static grib_accessor_class _grib_accessor_class_julian_day = { "julian_day", /* name */ sizeof(grib_accessor_julian_day), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -112,41 +112,10 @@ static grib_accessor_class _grib_accessor_class_julian_day = { grib_accessor_class* grib_accessor_class_julian_day = &_grib_accessor_class_julian_day; -static void init_class(grib_accessor_class* c) -{ - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->value_count = (*(c->super))->value_count; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_float = (*(c->super))->pack_float; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_ksec1expver.cc b/src/grib_accessor_class_ksec1expver.cc index 41c61980e..8107ecfd2 100644 --- a/src/grib_accessor_class_ksec1expver.cc +++ b/src/grib_accessor_class_ksec1expver.cc @@ -37,7 +37,7 @@ static int pack_long(grib_accessor*, const long* val, size_t* len); static int pack_string(grib_accessor*, const char*, size_t* len); static int unpack_long(grib_accessor*, long* val, size_t* len); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_ksec1expver { @@ -54,7 +54,7 @@ static grib_accessor_class _grib_accessor_class_ksec1expver = { "ksec1expver", /* name */ sizeof(grib_accessor_ksec1expver), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -101,43 +101,10 @@ static grib_accessor_class _grib_accessor_class_ksec1expver = { grib_accessor_class* grib_accessor_class_ksec1expver = &_grib_accessor_class_ksec1expver; -static void init_class(grib_accessor_class* c) -{ - c->dump = (*(c->super))->dump; - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->value_count = (*(c->super))->value_count; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_double = (*(c->super))->unpack_double; - c->unpack_float = (*(c->super))->unpack_float; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_label.cc b/src/grib_accessor_class_label.cc index 9eecba906..08b964bed 100644 --- a/src/grib_accessor_class_label.cc +++ b/src/grib_accessor_class_label.cc @@ -35,7 +35,7 @@ static int get_native_type(grib_accessor*); static int unpack_string(grib_accessor*, char*, size_t* len); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); static int compare(grib_accessor*, grib_accessor*); typedef struct grib_accessor_label @@ -52,7 +52,7 @@ static grib_accessor_class _grib_accessor_class_label = { "label", /* name */ sizeof(grib_accessor_label), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -99,42 +99,10 @@ static grib_accessor_class _grib_accessor_class_label = { grib_accessor_class* grib_accessor_class_label = &_grib_accessor_class_label; -static void init_class(grib_accessor_class* c) -{ - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->value_count = (*(c->super))->value_count; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_long = (*(c->super))->pack_long; - c->unpack_long = (*(c->super))->unpack_long; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_double = (*(c->super))->unpack_double; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_laplacian.cc b/src/grib_accessor_class_laplacian.cc index 293f216f4..6ab032519 100644 --- a/src/grib_accessor_class_laplacian.cc +++ b/src/grib_accessor_class_laplacian.cc @@ -47,7 +47,7 @@ static int pack_double(grib_accessor*, const double* val, size_t* len); static int pack_long(grib_accessor*, const long* val, size_t* len); static int unpack_double(grib_accessor*, double* val, size_t* len); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_laplacian { @@ -69,7 +69,7 @@ static grib_accessor_class _grib_accessor_class_laplacian = { "laplacian", /* name */ sizeof(grib_accessor_laplacian), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -116,42 +116,10 @@ static grib_accessor_class _grib_accessor_class_laplacian = { grib_accessor_class* grib_accessor_class_laplacian = &_grib_accessor_class_laplacian; -static void init_class(grib_accessor_class* c) -{ - c->dump = (*(c->super))->dump; - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->value_count = (*(c->super))->value_count; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->unpack_long = (*(c->super))->unpack_long; - c->pack_float = (*(c->super))->pack_float; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_latitudes.cc b/src/grib_accessor_class_latitudes.cc index 1eefcff4c..d99b9b8b3 100644 --- a/src/grib_accessor_class_latitudes.cc +++ b/src/grib_accessor_class_latitudes.cc @@ -40,7 +40,7 @@ or edit "accessor.class" and rerun ./make_class.pl static int unpack_double(grib_accessor*, double* val, size_t* len); static int value_count(grib_accessor*, long*); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_latitudes { @@ -62,7 +62,7 @@ static grib_accessor_class _grib_accessor_class_latitudes = { "latitudes", /* name */ sizeof(grib_accessor_latitudes), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -109,44 +109,10 @@ static grib_accessor_class _grib_accessor_class_latitudes = { grib_accessor_class* grib_accessor_class_latitudes = &_grib_accessor_class_latitudes; -static void init_class(grib_accessor_class* c) -{ - c->dump = (*(c->super))->dump; - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_long = (*(c->super))->pack_long; - c->unpack_long = (*(c->super))->unpack_long; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_latlon_increment.cc b/src/grib_accessor_class_latlon_increment.cc index 4c5953800..fa83b003a 100644 --- a/src/grib_accessor_class_latlon_increment.cc +++ b/src/grib_accessor_class_latlon_increment.cc @@ -44,7 +44,7 @@ static int is_missing(grib_accessor*); static int pack_double(grib_accessor*, const double* val, size_t* len); static int unpack_double(grib_accessor*, double* val, size_t* len); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_latlon_increment { @@ -70,7 +70,7 @@ static grib_accessor_class _grib_accessor_class_latlon_increment = { "latlon_increment", /* name */ sizeof(grib_accessor_latlon_increment), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -117,43 +117,10 @@ static grib_accessor_class _grib_accessor_class_latlon_increment = { grib_accessor_class* grib_accessor_class_latlon_increment = &_grib_accessor_class_latlon_increment; -static void init_class(grib_accessor_class* c) -{ - c->dump = (*(c->super))->dump; - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->value_count = (*(c->super))->value_count; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->pack_long = (*(c->super))->pack_long; - c->unpack_long = (*(c->super))->unpack_long; - c->pack_float = (*(c->super))->pack_float; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_latlonvalues.cc b/src/grib_accessor_class_latlonvalues.cc index 3eca92da0..01c1c8b92 100644 --- a/src/grib_accessor_class_latlonvalues.cc +++ b/src/grib_accessor_class_latlonvalues.cc @@ -36,7 +36,7 @@ or edit "accessor.class" and rerun ./make_class.pl static int unpack_double(grib_accessor*, double* val, size_t* len); static int value_count(grib_accessor*, long*); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_latlonvalues { @@ -54,7 +54,7 @@ static grib_accessor_class _grib_accessor_class_latlonvalues = { "latlonvalues", /* name */ sizeof(grib_accessor_latlonvalues), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -101,44 +101,10 @@ static grib_accessor_class _grib_accessor_class_latlonvalues = { grib_accessor_class* grib_accessor_class_latlonvalues = &_grib_accessor_class_latlonvalues; -static void init_class(grib_accessor_class* c) -{ - c->dump = (*(c->super))->dump; - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_long = (*(c->super))->pack_long; - c->unpack_long = (*(c->super))->unpack_long; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_library_version.cc b/src/grib_accessor_class_library_version.cc index c6c0dc791..9f7a091b9 100644 --- a/src/grib_accessor_class_library_version.cc +++ b/src/grib_accessor_class_library_version.cc @@ -33,7 +33,7 @@ or edit "accessor.class" and rerun ./make_class.pl static int unpack_string(grib_accessor*, char*, size_t* len); static size_t string_length(grib_accessor*); static int value_count(grib_accessor*, long*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_library_version { @@ -50,7 +50,7 @@ static grib_accessor_class _grib_accessor_class_library_version = { "library_version", /* name */ sizeof(grib_accessor_library_version), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ 0, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -97,43 +97,10 @@ static grib_accessor_class _grib_accessor_class_library_version = { grib_accessor_class* grib_accessor_class_library_version = &_grib_accessor_class_library_version; -static void init_class(grib_accessor_class* c) -{ - c->dump = (*(c->super))->dump; - c->next_offset = (*(c->super))->next_offset; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_long = (*(c->super))->pack_long; - c->unpack_long = (*(c->super))->unpack_long; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_double = (*(c->super))->unpack_double; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_local_definition.cc b/src/grib_accessor_class_local_definition.cc index e1dc84f16..df5a343b4 100644 --- a/src/grib_accessor_class_local_definition.cc +++ b/src/grib_accessor_class_local_definition.cc @@ -48,7 +48,7 @@ static int pack_long(grib_accessor*, const long* val, size_t* len); static int unpack_long(grib_accessor*, long* val, size_t* len); static int value_count(grib_accessor*, long*); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_local_definition { @@ -77,7 +77,7 @@ static grib_accessor_class _grib_accessor_class_local_definition = { "local_definition", /* name */ sizeof(grib_accessor_local_definition), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -124,43 +124,10 @@ static grib_accessor_class _grib_accessor_class_local_definition = { grib_accessor_class* grib_accessor_class_local_definition = &_grib_accessor_class_local_definition; -static void init_class(grib_accessor_class* c) -{ - c->dump = (*(c->super))->dump; - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_double = (*(c->super))->unpack_double; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_long.cc b/src/grib_accessor_class_long.cc index 6f5babcde..a0184a744 100644 --- a/src/grib_accessor_class_long.cc +++ b/src/grib_accessor_class_long.cc @@ -40,7 +40,7 @@ static int pack_string(grib_accessor*, const char*, size_t* len); static int unpack_double(grib_accessor*, double* val, size_t* len); static int unpack_string(grib_accessor*, char*, size_t* len); static void dump(grib_accessor*, grib_dumper*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); static int compare(grib_accessor*, grib_accessor*); typedef struct grib_accessor_long @@ -57,7 +57,7 @@ static grib_accessor_class _grib_accessor_class_long = { "long", /* name */ sizeof(grib_accessor_long), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ 0, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -104,39 +104,10 @@ static grib_accessor_class _grib_accessor_class_long = { grib_accessor_class* grib_accessor_class_long = &_grib_accessor_class_long; -static void init_class(grib_accessor_class* c) -{ - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->value_count = (*(c->super))->value_count; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->sub_section = (*(c->super))->sub_section; - c->is_missing = (*(c->super))->is_missing; - c->pack_long = (*(c->super))->pack_long; - c->unpack_long = (*(c->super))->unpack_long; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_long_vector.cc b/src/grib_accessor_class_long_vector.cc index b5389b512..a60a80df8 100644 --- a/src/grib_accessor_class_long_vector.cc +++ b/src/grib_accessor_class_long_vector.cc @@ -44,7 +44,7 @@ static int pack_long(grib_accessor*, const long* val, size_t* len); static int unpack_double(grib_accessor*, double* val, size_t* len); static int unpack_long(grib_accessor*, long* val, size_t* len); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_long_vector { @@ -66,7 +66,7 @@ static grib_accessor_class _grib_accessor_class_long_vector = { "long_vector", /* name */ sizeof(grib_accessor_long_vector), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -113,42 +113,10 @@ static grib_accessor_class _grib_accessor_class_long_vector = { grib_accessor_class* grib_accessor_class_long_vector = &_grib_accessor_class_long_vector; -static void init_class(grib_accessor_class* c) -{ - c->dump = (*(c->super))->dump; - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->value_count = (*(c->super))->value_count; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_longitudes.cc b/src/grib_accessor_class_longitudes.cc index 09f4bf87b..d1a201db9 100644 --- a/src/grib_accessor_class_longitudes.cc +++ b/src/grib_accessor_class_longitudes.cc @@ -40,7 +40,7 @@ or edit "accessor.class" and rerun ./make_class.pl static int unpack_double(grib_accessor*, double* val, size_t* len); static int value_count(grib_accessor*, long*); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_longitudes { @@ -62,7 +62,7 @@ static grib_accessor_class _grib_accessor_class_longitudes = { "longitudes", /* name */ sizeof(grib_accessor_longitudes), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -109,44 +109,10 @@ static grib_accessor_class _grib_accessor_class_longitudes = { grib_accessor_class* grib_accessor_class_longitudes = &_grib_accessor_class_longitudes; -static void init_class(grib_accessor_class* c) -{ - c->dump = (*(c->super))->dump; - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_long = (*(c->super))->pack_long; - c->unpack_long = (*(c->super))->unpack_long; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_lookup.cc b/src/grib_accessor_class_lookup.cc index e8ce7af09..038c75431 100644 --- a/src/grib_accessor_class_lookup.cc +++ b/src/grib_accessor_class_lookup.cc @@ -46,7 +46,7 @@ static long byte_offset(grib_accessor*); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); static void post_init(grib_accessor*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); static int notify_change(grib_accessor*, grib_accessor*); typedef struct grib_accessor_lookup @@ -67,7 +67,7 @@ static grib_accessor_class _grib_accessor_class_lookup = { "lookup", /* name */ sizeof(grib_accessor_lookup), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ &post_init, /* post_init */ 0, /* free mem */ @@ -114,39 +114,10 @@ static grib_accessor_class _grib_accessor_class_lookup = { grib_accessor_class* grib_accessor_class_lookup = &_grib_accessor_class_lookup; -static void init_class(grib_accessor_class* c) -{ - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->value_count = (*(c->super))->value_count; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_double = (*(c->super))->unpack_double; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_mars_param.cc b/src/grib_accessor_class_mars_param.cc index d5c6da1fd..e071e1fb3 100644 --- a/src/grib_accessor_class_mars_param.cc +++ b/src/grib_accessor_class_mars_param.cc @@ -38,7 +38,7 @@ static int pack_string(grib_accessor*, const char*, size_t* len); static int unpack_string(grib_accessor*, char*, size_t* len); static size_t string_length(grib_accessor*); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_mars_param { @@ -58,7 +58,7 @@ static grib_accessor_class _grib_accessor_class_mars_param = { "mars_param", /* name */ sizeof(grib_accessor_mars_param), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -105,43 +105,10 @@ static grib_accessor_class _grib_accessor_class_mars_param = { grib_accessor_class* grib_accessor_class_mars_param = &_grib_accessor_class_mars_param; -static void init_class(grib_accessor_class* c) -{ - c->dump = (*(c->super))->dump; - c->next_offset = (*(c->super))->next_offset; - c->value_count = (*(c->super))->value_count; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_long = (*(c->super))->pack_long; - c->unpack_long = (*(c->super))->unpack_long; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_double = (*(c->super))->unpack_double; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_mars_step.cc b/src/grib_accessor_class_mars_step.cc index bdf0715c9..695e2f88e 100644 --- a/src/grib_accessor_class_mars_step.cc +++ b/src/grib_accessor_class_mars_step.cc @@ -43,7 +43,7 @@ static int unpack_string(grib_accessor*, char*, size_t* len); static size_t string_length(grib_accessor*); static int value_count(grib_accessor*, long*); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_mars_step { @@ -62,7 +62,7 @@ static grib_accessor_class _grib_accessor_class_mars_step = { "mars_step", /* name */ sizeof(grib_accessor_mars_step), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -109,39 +109,10 @@ static grib_accessor_class _grib_accessor_class_mars_step = { grib_accessor_class* grib_accessor_class_mars_step = &_grib_accessor_class_mars_step; -static void init_class(grib_accessor_class* c) -{ - c->dump = (*(c->super))->dump; - c->next_offset = (*(c->super))->next_offset; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_double = (*(c->super))->unpack_double; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_md5.cc b/src/grib_accessor_class_md5.cc index e5ea8177e..6a9cf39b8 100644 --- a/src/grib_accessor_class_md5.cc +++ b/src/grib_accessor_class_md5.cc @@ -40,7 +40,7 @@ static int unpack_string(grib_accessor*, char*, size_t* len); static int value_count(grib_accessor*, long*); static void destroy(grib_context*, grib_accessor*); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); static int compare(grib_accessor*, grib_accessor*); typedef struct grib_accessor_md5 @@ -60,7 +60,7 @@ static grib_accessor_class _grib_accessor_class_md5 = { "md5", /* name */ sizeof(grib_accessor_md5), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ &destroy, /* free mem */ @@ -107,42 +107,10 @@ static grib_accessor_class _grib_accessor_class_md5 = { grib_accessor_class* grib_accessor_class_md5 = &_grib_accessor_class_md5; -static void init_class(grib_accessor_class* c) -{ - c->dump = (*(c->super))->dump; - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_long = (*(c->super))->pack_long; - c->unpack_long = (*(c->super))->unpack_long; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_double = (*(c->super))->unpack_double; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_message.cc b/src/grib_accessor_class_message.cc index 11d430127..1365c0d82 100644 --- a/src/grib_accessor_class_message.cc +++ b/src/grib_accessor_class_message.cc @@ -40,7 +40,7 @@ static int unpack_string(grib_accessor*, char*, size_t* len); static size_t string_length(grib_accessor*); static int value_count(grib_accessor*, long*); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); static void update_size(grib_accessor*, size_t); static void resize(grib_accessor*,size_t); static int compare(grib_accessor*, grib_accessor*); @@ -60,7 +60,7 @@ static grib_accessor_class _grib_accessor_class_message = { "message", /* name */ sizeof(grib_accessor_message), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -107,40 +107,10 @@ static grib_accessor_class _grib_accessor_class_message = { grib_accessor_class* grib_accessor_class_message = &_grib_accessor_class_message; -static void init_class(grib_accessor_class* c) -{ - c->dump = (*(c->super))->dump; - c->next_offset = (*(c->super))->next_offset; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_long = (*(c->super))->pack_long; - c->unpack_long = (*(c->super))->unpack_long; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_double = (*(c->super))->unpack_double; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->preferred_size = (*(c->super))->preferred_size; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_message_copy.cc b/src/grib_accessor_class_message_copy.cc index ed6d43c9b..daa91ef3c 100644 --- a/src/grib_accessor_class_message_copy.cc +++ b/src/grib_accessor_class_message_copy.cc @@ -39,7 +39,7 @@ static size_t string_length(grib_accessor*); static long byte_count(grib_accessor*); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_message_copy { @@ -55,7 +55,7 @@ static grib_accessor_class _grib_accessor_class_message_copy = { "message_copy", /* name */ sizeof(grib_accessor_message_copy), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -102,41 +102,10 @@ static grib_accessor_class _grib_accessor_class_message_copy = { grib_accessor_class* grib_accessor_class_message_copy = &_grib_accessor_class_message_copy; -static void init_class(grib_accessor_class* c) -{ - c->next_offset = (*(c->super))->next_offset; - c->value_count = (*(c->super))->value_count; - c->byte_offset = (*(c->super))->byte_offset; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_long = (*(c->super))->pack_long; - c->unpack_long = (*(c->super))->unpack_long; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_double = (*(c->super))->unpack_double; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_missing.cc b/src/grib_accessor_class_missing.cc index d6eb6af52..72b308e4e 100644 --- a/src/grib_accessor_class_missing.cc +++ b/src/grib_accessor_class_missing.cc @@ -60,7 +60,7 @@ static int value_count(grib_accessor*, long*); static void destroy(grib_context*, grib_accessor*); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); static int notify_change(grib_accessor*, grib_accessor*); static void update_size(grib_accessor*, size_t); @@ -76,7 +76,7 @@ static grib_accessor_class _grib_accessor_class_missing = { "missing", /* name */ sizeof(grib_accessor_missing), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ &destroy, /* free mem */ @@ -123,9 +123,10 @@ static grib_accessor_class _grib_accessor_class_missing = { grib_accessor_class* grib_accessor_class_missing = &_grib_accessor_class_missing; -static void init_class(grib_accessor_class* c) -{ -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_nearest.cc b/src/grib_accessor_class_nearest.cc index 329c2b8b5..bf3214947 100644 --- a/src/grib_accessor_class_nearest.cc +++ b/src/grib_accessor_class_nearest.cc @@ -33,7 +33,7 @@ or edit "accessor.class" and rerun ./make_class.pl static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_nearest { @@ -50,7 +50,7 @@ static grib_accessor_class _grib_accessor_class_nearest = { "nearest", /* name */ sizeof(grib_accessor_nearest), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -97,45 +97,10 @@ static grib_accessor_class _grib_accessor_class_nearest = { grib_accessor_class* grib_accessor_class_nearest = &_grib_accessor_class_nearest; -static void init_class(grib_accessor_class* c) -{ - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->value_count = (*(c->super))->value_count; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_long = (*(c->super))->pack_long; - c->unpack_long = (*(c->super))->unpack_long; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_double = (*(c->super))->unpack_double; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_non_alpha.cc b/src/grib_accessor_class_non_alpha.cc index 6eb316d6b..986125053 100644 --- a/src/grib_accessor_class_non_alpha.cc +++ b/src/grib_accessor_class_non_alpha.cc @@ -52,7 +52,7 @@ static long next_offset(grib_accessor*); static int value_count(grib_accessor*, long*); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); static int compare(grib_accessor*, grib_accessor*); typedef struct grib_accessor_non_alpha @@ -69,7 +69,7 @@ static grib_accessor_class _grib_accessor_class_non_alpha = { "non_alpha", /* name */ sizeof(grib_accessor_non_alpha), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -116,34 +116,10 @@ static grib_accessor_class _grib_accessor_class_non_alpha = { grib_accessor_class* grib_accessor_class_non_alpha = &_grib_accessor_class_non_alpha; -static void init_class(grib_accessor_class* c) -{ - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_float = (*(c->super))->pack_float; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_number_of_coded_values.cc b/src/grib_accessor_class_number_of_coded_values.cc index df2c48f5a..05b79d43c 100644 --- a/src/grib_accessor_class_number_of_coded_values.cc +++ b/src/grib_accessor_class_number_of_coded_values.cc @@ -41,7 +41,7 @@ or edit "accessor.class" and rerun ./make_class.pl static int unpack_long(grib_accessor*, long* val, size_t* len); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_number_of_coded_values { @@ -63,7 +63,7 @@ static grib_accessor_class _grib_accessor_class_number_of_coded_values = { "number_of_coded_values", /* name */ sizeof(grib_accessor_number_of_coded_values), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -110,45 +110,10 @@ static grib_accessor_class _grib_accessor_class_number_of_coded_values = { grib_accessor_class* grib_accessor_class_number_of_coded_values = &_grib_accessor_class_number_of_coded_values; -static void init_class(grib_accessor_class* c) -{ - c->dump = (*(c->super))->dump; - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->value_count = (*(c->super))->value_count; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_long = (*(c->super))->pack_long; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_double = (*(c->super))->unpack_double; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_number_of_points.cc b/src/grib_accessor_class_number_of_points.cc index f5e35590a..3d5205125 100644 --- a/src/grib_accessor_class_number_of_points.cc +++ b/src/grib_accessor_class_number_of_points.cc @@ -40,7 +40,7 @@ or edit "accessor.class" and rerun ./make_class.pl static int unpack_long(grib_accessor*, long* val, size_t* len); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_number_of_points { @@ -61,7 +61,7 @@ static grib_accessor_class _grib_accessor_class_number_of_points = { "number_of_points", /* name */ sizeof(grib_accessor_number_of_points), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -108,45 +108,10 @@ static grib_accessor_class _grib_accessor_class_number_of_points = { grib_accessor_class* grib_accessor_class_number_of_points = &_grib_accessor_class_number_of_points; -static void init_class(grib_accessor_class* c) -{ - c->dump = (*(c->super))->dump; - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->value_count = (*(c->super))->value_count; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_long = (*(c->super))->pack_long; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_double = (*(c->super))->unpack_double; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_number_of_points_gaussian.cc b/src/grib_accessor_class_number_of_points_gaussian.cc index 17e4d03af..95d77735a 100644 --- a/src/grib_accessor_class_number_of_points_gaussian.cc +++ b/src/grib_accessor_class_number_of_points_gaussian.cc @@ -48,7 +48,7 @@ or edit "accessor.class" and rerun ./make_class.pl static int unpack_long(grib_accessor*, long* val, size_t* len); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_number_of_points_gaussian { @@ -75,7 +75,7 @@ static grib_accessor_class _grib_accessor_class_number_of_points_gaussian = { "number_of_points_gaussian", /* name */ sizeof(grib_accessor_number_of_points_gaussian), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -122,45 +122,10 @@ static grib_accessor_class _grib_accessor_class_number_of_points_gaussian = { grib_accessor_class* grib_accessor_class_number_of_points_gaussian = &_grib_accessor_class_number_of_points_gaussian; -static void init_class(grib_accessor_class* c) -{ - c->dump = (*(c->super))->dump; - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->value_count = (*(c->super))->value_count; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_long = (*(c->super))->pack_long; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_double = (*(c->super))->unpack_double; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_number_of_values.cc b/src/grib_accessor_class_number_of_values.cc index fb84b7fa4..b1d9cfa50 100644 --- a/src/grib_accessor_class_number_of_values.cc +++ b/src/grib_accessor_class_number_of_values.cc @@ -42,7 +42,7 @@ or edit "accessor.class" and rerun ./make_class.pl static int unpack_long(grib_accessor*, long* val, size_t* len); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_number_of_values { @@ -65,7 +65,7 @@ static grib_accessor_class _grib_accessor_class_number_of_values = { "number_of_values", /* name */ sizeof(grib_accessor_number_of_values), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -112,45 +112,10 @@ static grib_accessor_class _grib_accessor_class_number_of_values = { grib_accessor_class* grib_accessor_class_number_of_values = &_grib_accessor_class_number_of_values; -static void init_class(grib_accessor_class* c) -{ - c->dump = (*(c->super))->dump; - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->value_count = (*(c->super))->value_count; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_long = (*(c->super))->pack_long; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_double = (*(c->super))->unpack_double; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_number_of_values_data_raw_packing.cc b/src/grib_accessor_class_number_of_values_data_raw_packing.cc index be6ff1899..16c29d7ab 100644 --- a/src/grib_accessor_class_number_of_values_data_raw_packing.cc +++ b/src/grib_accessor_class_number_of_values_data_raw_packing.cc @@ -49,7 +49,7 @@ or edit "accessor.class" and rerun ./make_class.pl static int get_native_type(grib_accessor*); static int unpack_long(grib_accessor*, long* val, size_t* len); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_number_of_values_data_raw_packing { @@ -67,7 +67,7 @@ static grib_accessor_class _grib_accessor_class_number_of_values_data_raw_packin "number_of_values_data_raw_packing", /* name */ sizeof(grib_accessor_number_of_values_data_raw_packing), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -114,44 +114,10 @@ static grib_accessor_class _grib_accessor_class_number_of_values_data_raw_packin grib_accessor_class* grib_accessor_class_number_of_values_data_raw_packing = &_grib_accessor_class_number_of_values_data_raw_packing; -static void init_class(grib_accessor_class* c) -{ - c->dump = (*(c->super))->dump; - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->value_count = (*(c->super))->value_count; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_long = (*(c->super))->pack_long; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_double = (*(c->super))->unpack_double; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_octahedral_gaussian.cc b/src/grib_accessor_class_octahedral_gaussian.cc index dc88d329a..9839224ce 100644 --- a/src/grib_accessor_class_octahedral_gaussian.cc +++ b/src/grib_accessor_class_octahedral_gaussian.cc @@ -40,7 +40,7 @@ or edit "accessor.class" and rerun ./make_class.pl static int pack_long(grib_accessor*, const long* val, size_t* len); static int unpack_long(grib_accessor*, long* val, size_t* len); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_octahedral_gaussian { @@ -61,7 +61,7 @@ static grib_accessor_class _grib_accessor_class_octahedral_gaussian = { "octahedral_gaussian", /* name */ sizeof(grib_accessor_octahedral_gaussian), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -108,44 +108,10 @@ static grib_accessor_class _grib_accessor_class_octahedral_gaussian = { grib_accessor_class* grib_accessor_class_octahedral_gaussian = &_grib_accessor_class_octahedral_gaussian; -static void init_class(grib_accessor_class* c) -{ - c->dump = (*(c->super))->dump; - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->value_count = (*(c->super))->value_count; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_double = (*(c->super))->unpack_double; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_octet_number.cc b/src/grib_accessor_class_octet_number.cc index 9650e09e0..6be7f6efb 100644 --- a/src/grib_accessor_class_octet_number.cc +++ b/src/grib_accessor_class_octet_number.cc @@ -40,7 +40,7 @@ or edit "accessor.class" and rerun ./make_class.pl static int pack_long(grib_accessor*, const long* val, size_t* len); static int unpack_long(grib_accessor*, long* val, size_t* len); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_octet_number { @@ -59,7 +59,7 @@ static grib_accessor_class _grib_accessor_class_octet_number = { "octet_number", /* name */ sizeof(grib_accessor_octet_number), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -106,44 +106,10 @@ static grib_accessor_class _grib_accessor_class_octet_number = { grib_accessor_class* grib_accessor_class_octet_number = &_grib_accessor_class_octet_number; -static void init_class(grib_accessor_class* c) -{ - c->dump = (*(c->super))->dump; - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->value_count = (*(c->super))->value_count; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_double = (*(c->super))->unpack_double; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_offset_file.cc b/src/grib_accessor_class_offset_file.cc index d923c87c2..6acfee894 100644 --- a/src/grib_accessor_class_offset_file.cc +++ b/src/grib_accessor_class_offset_file.cc @@ -38,7 +38,7 @@ or edit "accessor.class" and rerun ./make_class.pl static int unpack_double(grib_accessor*, double* val, size_t* len); static int unpack_string(grib_accessor*, char*, size_t* len); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_offset_file { @@ -55,7 +55,7 @@ static grib_accessor_class _grib_accessor_class_offset_file = { "offset_file", /* name */ sizeof(grib_accessor_offset_file), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -102,44 +102,10 @@ static grib_accessor_class _grib_accessor_class_offset_file = { grib_accessor_class* grib_accessor_class_offset_file = &_grib_accessor_class_offset_file; -static void init_class(grib_accessor_class* c) -{ - c->dump = (*(c->super))->dump; - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->value_count = (*(c->super))->value_count; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_long = (*(c->super))->pack_long; - c->unpack_long = (*(c->super))->unpack_long; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_offset_values.cc b/src/grib_accessor_class_offset_values.cc index e72d892f4..145506dc5 100644 --- a/src/grib_accessor_class_offset_values.cc +++ b/src/grib_accessor_class_offset_values.cc @@ -39,7 +39,7 @@ or edit "accessor.class" and rerun ./make_class.pl static int pack_double(grib_accessor*, const double* val, size_t* len); static int unpack_double(grib_accessor*, double* val, size_t* len); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_offset_values { @@ -58,7 +58,7 @@ static grib_accessor_class _grib_accessor_class_offset_values = { "offset_values", /* name */ sizeof(grib_accessor_offset_values), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -105,44 +105,10 @@ static grib_accessor_class _grib_accessor_class_offset_values = { grib_accessor_class* grib_accessor_class_offset_values = &_grib_accessor_class_offset_values; -static void init_class(grib_accessor_class* c) -{ - c->dump = (*(c->super))->dump; - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->value_count = (*(c->super))->value_count; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_long = (*(c->super))->pack_long; - c->unpack_long = (*(c->super))->unpack_long; - c->pack_float = (*(c->super))->pack_float; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_pack_bufr_values.cc b/src/grib_accessor_class_pack_bufr_values.cc index b51f90021..006aea4ec 100644 --- a/src/grib_accessor_class_pack_bufr_values.cc +++ b/src/grib_accessor_class_pack_bufr_values.cc @@ -47,7 +47,7 @@ static int value_count(grib_accessor*, long*); static void destroy(grib_context*, grib_accessor*); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_pack_bufr_values { @@ -64,7 +64,7 @@ static grib_accessor_class _grib_accessor_class_pack_bufr_values = { "pack_bufr_values", /* name */ sizeof(grib_accessor_pack_bufr_values), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ &destroy, /* free mem */ @@ -111,37 +111,10 @@ static grib_accessor_class _grib_accessor_class_pack_bufr_values = { grib_accessor_class* grib_accessor_class_pack_bufr_values = &_grib_accessor_class_pack_bufr_values; -static void init_class(grib_accessor_class* c) -{ - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_float = (*(c->super))->pack_float; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_pad.cc b/src/grib_accessor_class_pad.cc index 7f19c1c73..a4db1e58f 100644 --- a/src/grib_accessor_class_pad.cc +++ b/src/grib_accessor_class_pad.cc @@ -37,7 +37,7 @@ or edit "accessor.class" and rerun ./make_class.pl */ static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); static size_t preferred_size(grib_accessor*, int); typedef struct grib_accessor_pad @@ -57,7 +57,7 @@ static grib_accessor_class _grib_accessor_class_pad = { "pad", /* name */ sizeof(grib_accessor_pad), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -104,45 +104,10 @@ static grib_accessor_class _grib_accessor_class_pad = { grib_accessor_class* grib_accessor_class_pad = &_grib_accessor_class_pad; -static void init_class(grib_accessor_class* c) -{ - c->dump = (*(c->super))->dump; - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->value_count = (*(c->super))->value_count; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_long = (*(c->super))->pack_long; - c->unpack_long = (*(c->super))->unpack_long; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_double = (*(c->super))->unpack_double; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_padding.cc b/src/grib_accessor_class_padding.cc index 5f8900c6a..d066678c6 100644 --- a/src/grib_accessor_class_padding.cc +++ b/src/grib_accessor_class_padding.cc @@ -39,7 +39,7 @@ static size_t string_length(grib_accessor*); static long byte_count(grib_accessor*); static int value_count(grib_accessor*, long*); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); static void update_size(grib_accessor*, size_t); static void resize(grib_accessor*,size_t); static int compare(grib_accessor*, grib_accessor*); @@ -59,7 +59,7 @@ static grib_accessor_class _grib_accessor_class_padding = { "padding", /* name */ sizeof(grib_accessor_padding), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -106,40 +106,10 @@ static grib_accessor_class _grib_accessor_class_padding = { grib_accessor_class* grib_accessor_class_padding = &_grib_accessor_class_padding; -static void init_class(grib_accessor_class* c) -{ - c->dump = (*(c->super))->dump; - c->next_offset = (*(c->super))->next_offset; - c->byte_offset = (*(c->super))->byte_offset; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_long = (*(c->super))->pack_long; - c->unpack_long = (*(c->super))->unpack_long; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_double = (*(c->super))->unpack_double; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->preferred_size = (*(c->super))->preferred_size; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_padto.cc b/src/grib_accessor_class_padto.cc index 233a751d2..56662671b 100644 --- a/src/grib_accessor_class_padto.cc +++ b/src/grib_accessor_class_padto.cc @@ -37,7 +37,7 @@ or edit "accessor.class" and rerun ./make_class.pl static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); static size_t preferred_size(grib_accessor*, int); typedef struct grib_accessor_padto @@ -57,7 +57,7 @@ static grib_accessor_class _grib_accessor_class_padto = { "padto", /* name */ sizeof(grib_accessor_padto), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -104,44 +104,10 @@ static grib_accessor_class _grib_accessor_class_padto = { grib_accessor_class* grib_accessor_class_padto = &_grib_accessor_class_padto; -static void init_class(grib_accessor_class* c) -{ - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->value_count = (*(c->super))->value_count; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_long = (*(c->super))->pack_long; - c->unpack_long = (*(c->super))->unpack_long; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_double = (*(c->super))->unpack_double; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_padtoeven.cc b/src/grib_accessor_class_padtoeven.cc index 3f37d7c78..fe79deb22 100644 --- a/src/grib_accessor_class_padtoeven.cc +++ b/src/grib_accessor_class_padtoeven.cc @@ -38,7 +38,7 @@ or edit "accessor.class" and rerun ./make_class.pl */ static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); static size_t preferred_size(grib_accessor*, int); typedef struct grib_accessor_padtoeven @@ -59,7 +59,7 @@ static grib_accessor_class _grib_accessor_class_padtoeven = { "padtoeven", /* name */ sizeof(grib_accessor_padtoeven), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -106,45 +106,10 @@ static grib_accessor_class _grib_accessor_class_padtoeven = { grib_accessor_class* grib_accessor_class_padtoeven = &_grib_accessor_class_padtoeven; -static void init_class(grib_accessor_class* c) -{ - c->dump = (*(c->super))->dump; - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->value_count = (*(c->super))->value_count; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_long = (*(c->super))->pack_long; - c->unpack_long = (*(c->super))->unpack_long; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_double = (*(c->super))->unpack_double; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_padtomultiple.cc b/src/grib_accessor_class_padtomultiple.cc index e57d33788..b996376ca 100644 --- a/src/grib_accessor_class_padtomultiple.cc +++ b/src/grib_accessor_class_padtomultiple.cc @@ -38,7 +38,7 @@ or edit "accessor.class" and rerun ./make_class.pl */ static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); static size_t preferred_size(grib_accessor*, int); typedef struct grib_accessor_padtomultiple @@ -59,7 +59,7 @@ static grib_accessor_class _grib_accessor_class_padtomultiple = { "padtomultiple", /* name */ sizeof(grib_accessor_padtomultiple), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -106,45 +106,10 @@ static grib_accessor_class _grib_accessor_class_padtomultiple = { grib_accessor_class* grib_accessor_class_padtomultiple = &_grib_accessor_class_padtomultiple; -static void init_class(grib_accessor_class* c) -{ - c->dump = (*(c->super))->dump; - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->value_count = (*(c->super))->value_count; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_long = (*(c->super))->pack_long; - c->unpack_long = (*(c->super))->unpack_long; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_double = (*(c->super))->unpack_double; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_position.cc b/src/grib_accessor_class_position.cc index eed88cd38..8ea04b97f 100644 --- a/src/grib_accessor_class_position.cc +++ b/src/grib_accessor_class_position.cc @@ -42,7 +42,7 @@ static int get_native_type(grib_accessor*); static int unpack_long(grib_accessor*, long* val, size_t* len); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); static int compare(grib_accessor*, grib_accessor*); typedef struct grib_accessor_position @@ -59,7 +59,7 @@ static grib_accessor_class _grib_accessor_class_position = { "position", /* name */ sizeof(grib_accessor_position), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -106,42 +106,10 @@ static grib_accessor_class _grib_accessor_class_position = { grib_accessor_class* grib_accessor_class_position = &_grib_accessor_class_position; -static void init_class(grib_accessor_class* c) -{ - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->value_count = (*(c->super))->value_count; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_long = (*(c->super))->pack_long; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_double = (*(c->super))->unpack_double; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_proj_string.cc b/src/grib_accessor_class_proj_string.cc index 13d5159b6..f3be3ef7e 100644 --- a/src/grib_accessor_class_proj_string.cc +++ b/src/grib_accessor_class_proj_string.cc @@ -36,7 +36,7 @@ or edit "accessor.class" and rerun ./make_class.pl static int get_native_type(grib_accessor*); static int unpack_string(grib_accessor*, char*, size_t* len); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_proj_string { @@ -54,7 +54,7 @@ static grib_accessor_class _grib_accessor_class_proj_string = { "proj_string", /* name */ sizeof(grib_accessor_proj_string), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -101,44 +101,10 @@ static grib_accessor_class _grib_accessor_class_proj_string = { grib_accessor_class* grib_accessor_class_proj_string = &_grib_accessor_class_proj_string; -static void init_class(grib_accessor_class* c) -{ - c->dump = (*(c->super))->dump; - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->value_count = (*(c->super))->value_count; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_long = (*(c->super))->pack_long; - c->unpack_long = (*(c->super))->unpack_long; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_double = (*(c->super))->unpack_double; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_raw.cc b/src/grib_accessor_class_raw.cc index ec2a89dc4..3b8e31d52 100644 --- a/src/grib_accessor_class_raw.cc +++ b/src/grib_accessor_class_raw.cc @@ -40,7 +40,7 @@ static int unpack_bytes(grib_accessor*, unsigned char*, size_t* len); static long byte_count(grib_accessor*); static int value_count(grib_accessor*, long*); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); static void update_size(grib_accessor*, size_t); static int compare(grib_accessor*, grib_accessor*); @@ -61,7 +61,7 @@ static grib_accessor_class _grib_accessor_class_raw = { "raw", /* name */ sizeof(grib_accessor_raw), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -108,39 +108,10 @@ static grib_accessor_class _grib_accessor_class_raw = { grib_accessor_class* grib_accessor_class_raw = &_grib_accessor_class_raw; -static void init_class(grib_accessor_class* c) -{ - c->dump = (*(c->super))->dump; - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->byte_offset = (*(c->super))->byte_offset; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_long = (*(c->super))->pack_long; - c->unpack_long = (*(c->super))->unpack_long; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_double = (*(c->super))->unpack_double; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_rdbtime_guess_date.cc b/src/grib_accessor_class_rdbtime_guess_date.cc index 33b380520..76ab4a989 100644 --- a/src/grib_accessor_class_rdbtime_guess_date.cc +++ b/src/grib_accessor_class_rdbtime_guess_date.cc @@ -41,7 +41,7 @@ static int pack_long(grib_accessor*, const long* val, size_t* len); static int unpack_long(grib_accessor*, long* val, size_t* len); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_rdbtime_guess_date { @@ -63,7 +63,7 @@ static grib_accessor_class _grib_accessor_class_rdbtime_guess_date = { "rdbtime_guess_date", /* name */ sizeof(grib_accessor_rdbtime_guess_date), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -110,43 +110,10 @@ static grib_accessor_class _grib_accessor_class_rdbtime_guess_date = { grib_accessor_class* grib_accessor_class_rdbtime_guess_date = &_grib_accessor_class_rdbtime_guess_date; -static void init_class(grib_accessor_class* c) -{ - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->value_count = (*(c->super))->value_count; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_double = (*(c->super))->unpack_double; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_reference_value_error.cc b/src/grib_accessor_class_reference_value_error.cc index 8b94991b4..b68066169 100644 --- a/src/grib_accessor_class_reference_value_error.cc +++ b/src/grib_accessor_class_reference_value_error.cc @@ -40,7 +40,7 @@ or edit "accessor.class" and rerun ./make_class.pl static int unpack_double(grib_accessor*, double* val, size_t* len); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_reference_value_error { @@ -59,7 +59,7 @@ static grib_accessor_class _grib_accessor_class_reference_value_error = { "reference_value_error", /* name */ sizeof(grib_accessor_reference_value_error), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -106,45 +106,10 @@ static grib_accessor_class _grib_accessor_class_reference_value_error = { grib_accessor_class* grib_accessor_class_reference_value_error = &_grib_accessor_class_reference_value_error; -static void init_class(grib_accessor_class* c) -{ - c->dump = (*(c->super))->dump; - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->value_count = (*(c->super))->value_count; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_long = (*(c->super))->pack_long; - c->unpack_long = (*(c->super))->unpack_long; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_round.cc b/src/grib_accessor_class_round.cc index d15a5b83a..3ce251652 100644 --- a/src/grib_accessor_class_round.cc +++ b/src/grib_accessor_class_round.cc @@ -33,7 +33,7 @@ or edit "accessor.class" and rerun ./make_class.pl static int unpack_double(grib_accessor*, double* val, size_t* len); static int unpack_string(grib_accessor*, char*, size_t* len); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_round { @@ -52,7 +52,7 @@ static grib_accessor_class _grib_accessor_class_round = { "round", /* name */ sizeof(grib_accessor_round), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ 0, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -99,44 +99,10 @@ static grib_accessor_class _grib_accessor_class_round = { grib_accessor_class* grib_accessor_class_round = &_grib_accessor_class_round; -static void init_class(grib_accessor_class* c) -{ - c->dump = (*(c->super))->dump; - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->value_count = (*(c->super))->value_count; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_long = (*(c->super))->pack_long; - c->unpack_long = (*(c->super))->unpack_long; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_scale.cc b/src/grib_accessor_class_scale.cc index 9ebab9e2b..80527d7a6 100644 --- a/src/grib_accessor_class_scale.cc +++ b/src/grib_accessor_class_scale.cc @@ -46,7 +46,7 @@ static int pack_double(grib_accessor*, const double* val, size_t* len); static int pack_long(grib_accessor*, const long* val, size_t* len); static int unpack_double(grib_accessor*, double* val, size_t* len); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_scale { @@ -67,7 +67,7 @@ static grib_accessor_class _grib_accessor_class_scale = { "scale", /* name */ sizeof(grib_accessor_scale), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -114,42 +114,10 @@ static grib_accessor_class _grib_accessor_class_scale = { grib_accessor_class* grib_accessor_class_scale = &_grib_accessor_class_scale; -static void init_class(grib_accessor_class* c) -{ - c->dump = (*(c->super))->dump; - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->value_count = (*(c->super))->value_count; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->unpack_long = (*(c->super))->unpack_long; - c->pack_float = (*(c->super))->pack_float; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_scale_values.cc b/src/grib_accessor_class_scale_values.cc index 1f62cd902..e87ecc36a 100644 --- a/src/grib_accessor_class_scale_values.cc +++ b/src/grib_accessor_class_scale_values.cc @@ -39,7 +39,7 @@ or edit "accessor.class" and rerun ./make_class.pl static int pack_double(grib_accessor*, const double* val, size_t* len); static int unpack_double(grib_accessor*, double* val, size_t* len); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_scale_values { @@ -58,7 +58,7 @@ static grib_accessor_class _grib_accessor_class_scale_values = { "scale_values", /* name */ sizeof(grib_accessor_scale_values), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -105,44 +105,10 @@ static grib_accessor_class _grib_accessor_class_scale_values = { grib_accessor_class* grib_accessor_class_scale_values = &_grib_accessor_class_scale_values; -static void init_class(grib_accessor_class* c) -{ - c->dump = (*(c->super))->dump; - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->value_count = (*(c->super))->value_count; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_long = (*(c->super))->pack_long; - c->unpack_long = (*(c->super))->unpack_long; - c->pack_float = (*(c->super))->pack_float; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_second_order_bits_per_value.cc b/src/grib_accessor_class_second_order_bits_per_value.cc index 5cd3b970c..f38c57594 100644 --- a/src/grib_accessor_class_second_order_bits_per_value.cc +++ b/src/grib_accessor_class_second_order_bits_per_value.cc @@ -42,7 +42,7 @@ or edit "accessor.class" and rerun ./make_class.pl static int pack_long(grib_accessor*, const long* val, size_t* len); static int unpack_long(grib_accessor*, long* val, size_t* len); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_second_order_bits_per_value { @@ -63,7 +63,7 @@ static grib_accessor_class _grib_accessor_class_second_order_bits_per_value = { "second_order_bits_per_value", /* name */ sizeof(grib_accessor_second_order_bits_per_value), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -110,44 +110,10 @@ static grib_accessor_class _grib_accessor_class_second_order_bits_per_value = { grib_accessor_class* grib_accessor_class_second_order_bits_per_value = &_grib_accessor_class_second_order_bits_per_value; -static void init_class(grib_accessor_class* c) -{ - c->dump = (*(c->super))->dump; - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->value_count = (*(c->super))->value_count; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_double = (*(c->super))->unpack_double; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_section.cc b/src/grib_accessor_class_section.cc index 12abc49e8..21ff77c62 100644 --- a/src/grib_accessor_class_section.cc +++ b/src/grib_accessor_class_section.cc @@ -42,7 +42,7 @@ static long next_offset(grib_accessor*); static void destroy(grib_context*, grib_accessor*); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); static void update_size(grib_accessor*, size_t); static grib_accessor* next(grib_accessor*, int); @@ -60,7 +60,7 @@ static grib_accessor_class _grib_accessor_class_section = { "section", /* name */ sizeof(grib_accessor_section), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ &destroy, /* free mem */ @@ -107,39 +107,10 @@ static grib_accessor_class _grib_accessor_class_section = { grib_accessor_class* grib_accessor_class_section = &_grib_accessor_class_section; -static void init_class(grib_accessor_class* c) -{ - c->string_length = (*(c->super))->string_length; - c->value_count = (*(c->super))->value_count; - c->byte_offset = (*(c->super))->byte_offset; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_long = (*(c->super))->pack_long; - c->unpack_long = (*(c->super))->unpack_long; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_double = (*(c->super))->unpack_double; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_section_length.cc b/src/grib_accessor_class_section_length.cc index 4d51be289..601964a70 100644 --- a/src/grib_accessor_class_section_length.cc +++ b/src/grib_accessor_class_section_length.cc @@ -34,7 +34,7 @@ or edit "accessor.class" and rerun ./make_class.pl static int value_count(grib_accessor*, long*); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_section_length { @@ -54,7 +54,7 @@ static grib_accessor_class _grib_accessor_class_section_length = { "section_length", /* name */ sizeof(grib_accessor_section_length), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -101,44 +101,10 @@ static grib_accessor_class _grib_accessor_class_section_length = { grib_accessor_class* grib_accessor_class_section_length = &_grib_accessor_class_section_length; -static void init_class(grib_accessor_class* c) -{ - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_long = (*(c->super))->pack_long; - c->unpack_long = (*(c->super))->unpack_long; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_double = (*(c->super))->unpack_double; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_section_padding.cc b/src/grib_accessor_class_section_padding.cc index 3d4cab230..1cfbd9d1f 100644 --- a/src/grib_accessor_class_section_padding.cc +++ b/src/grib_accessor_class_section_padding.cc @@ -32,7 +32,7 @@ or edit "accessor.class" and rerun ./make_class.pl */ static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); static size_t preferred_size(grib_accessor*, int); typedef struct grib_accessor_section_padding @@ -52,7 +52,7 @@ static grib_accessor_class _grib_accessor_class_section_padding = { "section_padding", /* name */ sizeof(grib_accessor_section_padding), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -99,45 +99,10 @@ static grib_accessor_class _grib_accessor_class_section_padding = { grib_accessor_class* grib_accessor_class_section_padding = &_grib_accessor_class_section_padding; -static void init_class(grib_accessor_class* c) -{ - c->dump = (*(c->super))->dump; - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->value_count = (*(c->super))->value_count; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_long = (*(c->super))->pack_long; - c->unpack_long = (*(c->super))->unpack_long; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_double = (*(c->super))->unpack_double; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_section_pointer.cc b/src/grib_accessor_class_section_pointer.cc index 687f35d73..e5c085e23 100644 --- a/src/grib_accessor_class_section_pointer.cc +++ b/src/grib_accessor_class_section_pointer.cc @@ -39,7 +39,7 @@ static int unpack_string(grib_accessor*, char*, size_t* len); static long byte_count(grib_accessor*); static long byte_offset(grib_accessor*); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_section_pointer { @@ -58,7 +58,7 @@ static grib_accessor_class _grib_accessor_class_section_pointer = { "section_pointer", /* name */ sizeof(grib_accessor_section_pointer), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -105,42 +105,10 @@ static grib_accessor_class _grib_accessor_class_section_pointer = { grib_accessor_class* grib_accessor_class_section_pointer = &_grib_accessor_class_section_pointer; -static void init_class(grib_accessor_class* c) -{ - c->dump = (*(c->super))->dump; - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->value_count = (*(c->super))->value_count; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_long = (*(c->super))->pack_long; - c->unpack_long = (*(c->super))->unpack_long; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_double = (*(c->super))->unpack_double; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_select_step_template.cc b/src/grib_accessor_class_select_step_template.cc index a3ddb88fe..efd61b831 100644 --- a/src/grib_accessor_class_select_step_template.cc +++ b/src/grib_accessor_class_select_step_template.cc @@ -38,7 +38,7 @@ static int pack_long(grib_accessor*, const long* val, size_t* len); static int unpack_long(grib_accessor*, long* val, size_t* len); static int value_count(grib_accessor*, long*); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_select_step_template { @@ -60,7 +60,7 @@ static grib_accessor_class _grib_accessor_class_select_step_template = { "select_step_template", /* name */ sizeof(grib_accessor_select_step_template), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -107,43 +107,10 @@ static grib_accessor_class _grib_accessor_class_select_step_template = { grib_accessor_class* grib_accessor_class_select_step_template = &_grib_accessor_class_select_step_template; -static void init_class(grib_accessor_class* c) -{ - c->dump = (*(c->super))->dump; - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_double = (*(c->super))->unpack_double; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_sexagesimal2decimal.cc b/src/grib_accessor_class_sexagesimal2decimal.cc index 31683d2ed..c9b4a017c 100644 --- a/src/grib_accessor_class_sexagesimal2decimal.cc +++ b/src/grib_accessor_class_sexagesimal2decimal.cc @@ -39,7 +39,7 @@ static int get_native_type(grib_accessor*); static int unpack_string(grib_accessor*, char*, size_t* len); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_sexagesimal2decimal { @@ -60,7 +60,7 @@ static grib_accessor_class _grib_accessor_class_sexagesimal2decimal = { "sexagesimal2decimal", /* name */ sizeof(grib_accessor_sexagesimal2decimal), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -107,43 +107,10 @@ static grib_accessor_class _grib_accessor_class_sexagesimal2decimal = { grib_accessor_class* grib_accessor_class_sexagesimal2decimal = &_grib_accessor_class_sexagesimal2decimal; -static void init_class(grib_accessor_class* c) -{ - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->value_count = (*(c->super))->value_count; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_long = (*(c->super))->pack_long; - c->unpack_long = (*(c->super))->unpack_long; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_double = (*(c->super))->unpack_double; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_signed.cc b/src/grib_accessor_class_signed.cc index 6c5606be0..fd0eeaed3 100644 --- a/src/grib_accessor_class_signed.cc +++ b/src/grib_accessor_class_signed.cc @@ -48,7 +48,7 @@ static long next_offset(grib_accessor*); static int value_count(grib_accessor*, long*); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); static void update_size(grib_accessor*, size_t); typedef struct grib_accessor_signed @@ -68,7 +68,7 @@ static grib_accessor_class _grib_accessor_class_signed = { "signed", /* name */ sizeof(grib_accessor_signed), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -115,37 +115,10 @@ static grib_accessor_class _grib_accessor_class_signed = { grib_accessor_class* grib_accessor_class_signed = &_grib_accessor_class_signed; -static void init_class(grib_accessor_class* c) -{ - c->string_length = (*(c->super))->string_length; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_double = (*(c->super))->unpack_double; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_signed_bits.cc b/src/grib_accessor_class_signed_bits.cc index de9aab6fe..1530a17cd 100644 --- a/src/grib_accessor_class_signed_bits.cc +++ b/src/grib_accessor_class_signed_bits.cc @@ -47,7 +47,7 @@ static long next_offset(grib_accessor*); static int value_count(grib_accessor*, long*); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); static void update_size(grib_accessor*, size_t); typedef struct grib_accessor_signed_bits @@ -67,7 +67,7 @@ static grib_accessor_class _grib_accessor_class_signed_bits = { "signed_bits", /* name */ sizeof(grib_accessor_signed_bits), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -114,38 +114,10 @@ static grib_accessor_class _grib_accessor_class_signed_bits = { grib_accessor_class* grib_accessor_class_signed_bits = &_grib_accessor_class_signed_bits; -static void init_class(grib_accessor_class* c) -{ - c->string_length = (*(c->super))->string_length; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_double = (*(c->super))->unpack_double; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_simple_packing_error.cc b/src/grib_accessor_class_simple_packing_error.cc index 54ee2d426..8b0505413 100644 --- a/src/grib_accessor_class_simple_packing_error.cc +++ b/src/grib_accessor_class_simple_packing_error.cc @@ -43,7 +43,7 @@ or edit "accessor.class" and rerun ./make_class.pl static int unpack_double(grib_accessor*, double* val, size_t* len); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_simple_packing_error { @@ -65,7 +65,7 @@ static grib_accessor_class _grib_accessor_class_simple_packing_error = { "simple_packing_error", /* name */ sizeof(grib_accessor_simple_packing_error), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -112,45 +112,10 @@ static grib_accessor_class _grib_accessor_class_simple_packing_error = { grib_accessor_class* grib_accessor_class_simple_packing_error = &_grib_accessor_class_simple_packing_error; -static void init_class(grib_accessor_class* c) -{ - c->dump = (*(c->super))->dump; - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->value_count = (*(c->super))->value_count; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_long = (*(c->super))->pack_long; - c->unpack_long = (*(c->super))->unpack_long; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_size.cc b/src/grib_accessor_class_size.cc index e6b305414..e69df3a56 100644 --- a/src/grib_accessor_class_size.cc +++ b/src/grib_accessor_class_size.cc @@ -33,7 +33,7 @@ or edit "accessor.class" and rerun ./make_class.pl static int unpack_long(grib_accessor*, long* val, size_t* len); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_size { @@ -51,7 +51,7 @@ static grib_accessor_class _grib_accessor_class_size = { "size", /* name */ sizeof(grib_accessor_size), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -98,45 +98,10 @@ static grib_accessor_class _grib_accessor_class_size = { grib_accessor_class* grib_accessor_class_size = &_grib_accessor_class_size; -static void init_class(grib_accessor_class* c) -{ - c->dump = (*(c->super))->dump; - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->value_count = (*(c->super))->value_count; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_long = (*(c->super))->pack_long; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_double = (*(c->super))->unpack_double; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_smart_table.cc b/src/grib_accessor_class_smart_table.cc index 6291f6eb0..ea3f680e3 100644 --- a/src/grib_accessor_class_smart_table.cc +++ b/src/grib_accessor_class_smart_table.cc @@ -55,7 +55,7 @@ static int value_count(grib_accessor*, long*); static void destroy(grib_context*, grib_accessor*); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_smart_table { @@ -86,7 +86,7 @@ static grib_accessor_class _grib_accessor_class_smart_table = { "smart_table", /* name */ sizeof(grib_accessor_smart_table), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ &destroy, /* free mem */ @@ -133,41 +133,10 @@ static grib_accessor_class _grib_accessor_class_smart_table = { grib_accessor_class* grib_accessor_class_smart_table = &_grib_accessor_class_smart_table; -static void init_class(grib_accessor_class* c) -{ - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_long = (*(c->super))->pack_long; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_double = (*(c->super))->unpack_double; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_smart_table_column.cc b/src/grib_accessor_class_smart_table_column.cc index 2c307240b..234a54971 100644 --- a/src/grib_accessor_class_smart_table_column.cc +++ b/src/grib_accessor_class_smart_table_column.cc @@ -41,7 +41,7 @@ static int value_count(grib_accessor*, long*); static void destroy(grib_context*, grib_accessor*); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_smart_table_column { @@ -59,7 +59,7 @@ static grib_accessor_class _grib_accessor_class_smart_table_column = { "smart_table_column", /* name */ sizeof(grib_accessor_smart_table_column), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ &destroy, /* free mem */ @@ -106,41 +106,10 @@ static grib_accessor_class _grib_accessor_class_smart_table_column = { grib_accessor_class* grib_accessor_class_smart_table_column = &_grib_accessor_class_smart_table_column; -static void init_class(grib_accessor_class* c) -{ - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_long = (*(c->super))->pack_long; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_double = (*(c->super))->unpack_double; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_spd.cc b/src/grib_accessor_class_spd.cc index 06b8d0e66..abab36ee8 100644 --- a/src/grib_accessor_class_spd.cc +++ b/src/grib_accessor_class_spd.cc @@ -47,7 +47,7 @@ static long next_offset(grib_accessor*); static int value_count(grib_accessor*, long*); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); static void update_size(grib_accessor*, size_t); typedef struct grib_accessor_spd @@ -67,7 +67,7 @@ static grib_accessor_class _grib_accessor_class_spd = { "spd", /* name */ sizeof(grib_accessor_spd), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -114,38 +114,10 @@ static grib_accessor_class _grib_accessor_class_spd = { grib_accessor_class* grib_accessor_class_spd = &_grib_accessor_class_spd; -static void init_class(grib_accessor_class* c) -{ - c->string_length = (*(c->super))->string_length; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_double = (*(c->super))->unpack_double; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_spectral_truncation.cc b/src/grib_accessor_class_spectral_truncation.cc index 98c4f30ae..92aad01cb 100644 --- a/src/grib_accessor_class_spectral_truncation.cc +++ b/src/grib_accessor_class_spectral_truncation.cc @@ -42,7 +42,7 @@ or edit "accessor.class" and rerun ./make_class.pl static int unpack_long(grib_accessor*, long* val, size_t* len); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_spectral_truncation { @@ -63,7 +63,7 @@ static grib_accessor_class _grib_accessor_class_spectral_truncation = { "spectral_truncation", /* name */ sizeof(grib_accessor_spectral_truncation), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -110,45 +110,10 @@ static grib_accessor_class _grib_accessor_class_spectral_truncation = { grib_accessor_class* grib_accessor_class_spectral_truncation = &_grib_accessor_class_spectral_truncation; -static void init_class(grib_accessor_class* c) -{ - c->dump = (*(c->super))->dump; - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->value_count = (*(c->super))->value_count; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_long = (*(c->super))->pack_long; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_double = (*(c->super))->unpack_double; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_sprintf.cc b/src/grib_accessor_class_sprintf.cc index 4b39122e0..a0e12f14e 100644 --- a/src/grib_accessor_class_sprintf.cc +++ b/src/grib_accessor_class_sprintf.cc @@ -37,7 +37,7 @@ static int unpack_string(grib_accessor*, char*, size_t* len); static size_t string_length(grib_accessor*); static int value_count(grib_accessor*, long*); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_sprintf { @@ -55,7 +55,7 @@ static grib_accessor_class _grib_accessor_class_sprintf = { "sprintf", /* name */ sizeof(grib_accessor_sprintf), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -102,42 +102,10 @@ static grib_accessor_class _grib_accessor_class_sprintf = { grib_accessor_class* grib_accessor_class_sprintf = &_grib_accessor_class_sprintf; -static void init_class(grib_accessor_class* c) -{ - c->dump = (*(c->super))->dump; - c->next_offset = (*(c->super))->next_offset; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_long = (*(c->super))->pack_long; - c->unpack_long = (*(c->super))->unpack_long; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_double = (*(c->super))->unpack_double; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_statistics.cc b/src/grib_accessor_class_statistics.cc index 0669ed7b2..190534e5d 100644 --- a/src/grib_accessor_class_statistics.cc +++ b/src/grib_accessor_class_statistics.cc @@ -45,7 +45,7 @@ static int unpack_string(grib_accessor*, char*, size_t* len); static int value_count(grib_accessor*, long*); static void destroy(grib_context*, grib_accessor*); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); static int compare(grib_accessor*, grib_accessor*); typedef struct grib_accessor_statistics @@ -68,7 +68,7 @@ static grib_accessor_class _grib_accessor_class_statistics = { "statistics", /* name */ sizeof(grib_accessor_statistics), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ &destroy, /* free mem */ @@ -115,42 +115,10 @@ static grib_accessor_class _grib_accessor_class_statistics = { grib_accessor_class* grib_accessor_class_statistics = &_grib_accessor_class_statistics; -static void init_class(grib_accessor_class* c) -{ - c->dump = (*(c->super))->dump; - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_long = (*(c->super))->pack_long; - c->unpack_long = (*(c->super))->unpack_long; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_statistics_spectral.cc b/src/grib_accessor_class_statistics_spectral.cc index 0d4b47d94..ecac294cb 100644 --- a/src/grib_accessor_class_statistics_spectral.cc +++ b/src/grib_accessor_class_statistics_spectral.cc @@ -46,7 +46,7 @@ static int unpack_double(grib_accessor*, double* val, size_t* len); static int value_count(grib_accessor*, long*); static void destroy(grib_context*, grib_accessor*); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); static int compare(grib_accessor*, grib_accessor*); typedef struct grib_accessor_statistics_spectral @@ -72,7 +72,7 @@ static grib_accessor_class _grib_accessor_class_statistics_spectral = { "statistics_spectral", /* name */ sizeof(grib_accessor_statistics_spectral), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ &destroy, /* free mem */ @@ -119,43 +119,10 @@ static grib_accessor_class _grib_accessor_class_statistics_spectral = { grib_accessor_class* grib_accessor_class_statistics_spectral = &_grib_accessor_class_statistics_spectral; -static void init_class(grib_accessor_class* c) -{ - c->dump = (*(c->super))->dump; - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_long = (*(c->super))->pack_long; - c->unpack_long = (*(c->super))->unpack_long; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_step_human_readable.cc b/src/grib_accessor_class_step_human_readable.cc index eefa3f902..e6aef5352 100644 --- a/src/grib_accessor_class_step_human_readable.cc +++ b/src/grib_accessor_class_step_human_readable.cc @@ -36,7 +36,7 @@ or edit "accessor.class" and rerun ./make_class.pl static int get_native_type(grib_accessor*); static int unpack_string(grib_accessor*, char*, size_t* len); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_step_human_readable { @@ -54,7 +54,7 @@ static grib_accessor_class _grib_accessor_class_step_human_readable = { "step_human_readable", /* name */ sizeof(grib_accessor_step_human_readable), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -101,44 +101,10 @@ static grib_accessor_class _grib_accessor_class_step_human_readable = { grib_accessor_class* grib_accessor_class_step_human_readable = &_grib_accessor_class_step_human_readable; -static void init_class(grib_accessor_class* c) -{ - c->dump = (*(c->super))->dump; - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->value_count = (*(c->super))->value_count; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_long = (*(c->super))->pack_long; - c->unpack_long = (*(c->super))->unpack_long; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_double = (*(c->super))->unpack_double; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_step_in_units.cc b/src/grib_accessor_class_step_in_units.cc index ce1cbcdba..48998c361 100644 --- a/src/grib_accessor_class_step_in_units.cc +++ b/src/grib_accessor_class_step_in_units.cc @@ -41,7 +41,7 @@ static int pack_long(grib_accessor*, const long* val, size_t* len); static int unpack_long(grib_accessor*, long* val, size_t* len); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_step_in_units { @@ -63,7 +63,7 @@ static grib_accessor_class _grib_accessor_class_step_in_units = { "step_in_units", /* name */ sizeof(grib_accessor_step_in_units), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -110,43 +110,10 @@ static grib_accessor_class _grib_accessor_class_step_in_units = { grib_accessor_class* grib_accessor_class_step_in_units = &_grib_accessor_class_step_in_units; -static void init_class(grib_accessor_class* c) -{ - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->value_count = (*(c->super))->value_count; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_double = (*(c->super))->unpack_double; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_sum.cc b/src/grib_accessor_class_sum.cc index db7d3843a..dbf20d867 100644 --- a/src/grib_accessor_class_sum.cc +++ b/src/grib_accessor_class_sum.cc @@ -43,7 +43,7 @@ static int unpack_double(grib_accessor*, double* val, size_t* len); static int unpack_long(grib_accessor*, long* val, size_t* len); static int value_count(grib_accessor*, long*); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_sum { @@ -61,7 +61,7 @@ static grib_accessor_class _grib_accessor_class_sum = { "sum", /* name */ sizeof(grib_accessor_sum), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -108,43 +108,10 @@ static grib_accessor_class _grib_accessor_class_sum = { grib_accessor_class* grib_accessor_class_sum = &_grib_accessor_class_sum; -static void init_class(grib_accessor_class* c) -{ - c->dump = (*(c->super))->dump; - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_long = (*(c->super))->pack_long; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_suppressed.cc b/src/grib_accessor_class_suppressed.cc index 64d9657bb..f2c551592 100644 --- a/src/grib_accessor_class_suppressed.cc +++ b/src/grib_accessor_class_suppressed.cc @@ -44,7 +44,7 @@ static int unpack_long(grib_accessor*, long* val, size_t* len); static int unpack_string(grib_accessor*, char*, size_t* len); static int value_count(grib_accessor*, long*); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_suppressed { @@ -62,7 +62,7 @@ static grib_accessor_class _grib_accessor_class_suppressed = { "suppressed", /* name */ sizeof(grib_accessor_suppressed), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -109,38 +109,10 @@ static grib_accessor_class _grib_accessor_class_suppressed = { grib_accessor_class* grib_accessor_class_suppressed = &_grib_accessor_class_suppressed; -static void init_class(grib_accessor_class* c) -{ - c->dump = (*(c->super))->dump; - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_float = (*(c->super))->pack_float; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_time.cc b/src/grib_accessor_class_time.cc index e163ff66f..89554f9e2 100644 --- a/src/grib_accessor_class_time.cc +++ b/src/grib_accessor_class_time.cc @@ -41,7 +41,7 @@ static int unpack_long(grib_accessor*, long* val, size_t* len); static int unpack_string(grib_accessor*, char*, size_t* len); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_time { @@ -61,7 +61,7 @@ static grib_accessor_class _grib_accessor_class_time = { "time", /* name */ sizeof(grib_accessor_time), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -108,42 +108,10 @@ static grib_accessor_class _grib_accessor_class_time = { grib_accessor_class* grib_accessor_class_time = &_grib_accessor_class_time; -static void init_class(grib_accessor_class* c) -{ - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->value_count = (*(c->super))->value_count; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_double = (*(c->super))->unpack_double; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_times.cc b/src/grib_accessor_class_times.cc index b0b27baf6..40467c5c2 100644 --- a/src/grib_accessor_class_times.cc +++ b/src/grib_accessor_class_times.cc @@ -38,7 +38,7 @@ static int pack_long(grib_accessor*, const long* val, size_t* len); static int unpack_long(grib_accessor*, long* val, size_t* len); static int value_count(grib_accessor*, long*); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_times { @@ -61,7 +61,7 @@ static grib_accessor_class _grib_accessor_class_times = { "times", /* name */ sizeof(grib_accessor_times), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -108,43 +108,10 @@ static grib_accessor_class _grib_accessor_class_times = { grib_accessor_class* grib_accessor_class_times = &_grib_accessor_class_times; -static void init_class(grib_accessor_class* c) -{ - c->dump = (*(c->super))->dump; - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_double = (*(c->super))->unpack_double; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_to_double.cc b/src/grib_accessor_class_to_double.cc index 0110b5cc1..c8e44a28e 100644 --- a/src/grib_accessor_class_to_double.cc +++ b/src/grib_accessor_class_to_double.cc @@ -57,7 +57,7 @@ static int value_count(grib_accessor*, long*); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); static void post_init(grib_accessor*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); static int compare(grib_accessor*, grib_accessor*); typedef struct grib_accessor_to_double @@ -78,7 +78,7 @@ static grib_accessor_class _grib_accessor_class_to_double = { "to_double", /* name */ sizeof(grib_accessor_to_double), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ &post_init, /* post_init */ 0, /* free mem */ @@ -125,34 +125,10 @@ static grib_accessor_class _grib_accessor_class_to_double = { grib_accessor_class* grib_accessor_class_to_double = &_grib_accessor_class_to_double; -static void init_class(grib_accessor_class* c) -{ - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_float = (*(c->super))->pack_float; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_to_integer.cc b/src/grib_accessor_class_to_integer.cc index 7d74b40f8..c53b01ad8 100644 --- a/src/grib_accessor_class_to_integer.cc +++ b/src/grib_accessor_class_to_integer.cc @@ -56,7 +56,7 @@ static int value_count(grib_accessor*, long*); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); static void post_init(grib_accessor*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); static int compare(grib_accessor*, grib_accessor*); typedef struct grib_accessor_to_integer @@ -76,7 +76,7 @@ static grib_accessor_class _grib_accessor_class_to_integer = { "to_integer", /* name */ sizeof(grib_accessor_to_integer), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ &post_init, /* post_init */ 0, /* free mem */ @@ -123,34 +123,10 @@ static grib_accessor_class _grib_accessor_class_to_integer = { grib_accessor_class* grib_accessor_class_to_integer = &_grib_accessor_class_to_integer; -static void init_class(grib_accessor_class* c) -{ - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_float = (*(c->super))->pack_float; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_to_string.cc b/src/grib_accessor_class_to_string.cc index b7f9f05ca..215333fc6 100644 --- a/src/grib_accessor_class_to_string.cc +++ b/src/grib_accessor_class_to_string.cc @@ -56,7 +56,7 @@ static int value_count(grib_accessor*, long*); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); static void post_init(grib_accessor*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); static int compare(grib_accessor*, grib_accessor*); typedef struct grib_accessor_to_string @@ -76,7 +76,7 @@ static grib_accessor_class _grib_accessor_class_to_string = { "to_string", /* name */ sizeof(grib_accessor_to_string), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ &post_init, /* post_init */ 0, /* free mem */ @@ -123,34 +123,10 @@ static grib_accessor_class _grib_accessor_class_to_string = { grib_accessor_class* grib_accessor_class_to_string = &_grib_accessor_class_to_string; -static void init_class(grib_accessor_class* c) -{ - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_float = (*(c->super))->pack_float; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_transient.cc b/src/grib_accessor_class_transient.cc index 158351e31..d95962cb2 100644 --- a/src/grib_accessor_class_transient.cc +++ b/src/grib_accessor_class_transient.cc @@ -30,7 +30,7 @@ or edit "accessor.class" and rerun ./make_class.pl */ -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_transient { @@ -51,7 +51,7 @@ static grib_accessor_class _grib_accessor_class_transient = { "transient", /* name */ sizeof(grib_accessor_transient), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ 0, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -98,45 +98,9 @@ static grib_accessor_class _grib_accessor_class_transient = { grib_accessor_class* grib_accessor_class_transient = &_grib_accessor_class_transient; -static void init_class(grib_accessor_class* c) -{ - c->dump = (*(c->super))->dump; - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->value_count = (*(c->super))->value_count; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_long = (*(c->super))->pack_long; - c->unpack_long = (*(c->super))->unpack_long; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_double = (*(c->super))->unpack_double; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_transient_darray.cc b/src/grib_accessor_class_transient_darray.cc index 19fec9f56..1b7768b09 100644 --- a/src/grib_accessor_class_transient_darray.cc +++ b/src/grib_accessor_class_transient_darray.cc @@ -45,7 +45,7 @@ static int value_count(grib_accessor*, long*); static void destroy(grib_context*, grib_accessor*); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); static int compare(grib_accessor*, grib_accessor*); typedef struct grib_accessor_transient_darray @@ -64,7 +64,7 @@ static grib_accessor_class _grib_accessor_class_transient_darray = { "transient_darray", /* name */ sizeof(grib_accessor_transient_darray), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ &destroy, /* free mem */ @@ -111,38 +111,10 @@ static grib_accessor_class _grib_accessor_class_transient_darray = { grib_accessor_class* grib_accessor_class_transient_darray = &_grib_accessor_class_transient_darray; -static void init_class(grib_accessor_class* c) -{ - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_float = (*(c->super))->pack_float; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_trim.cc b/src/grib_accessor_class_trim.cc index 86b18376f..aa07f3118 100644 --- a/src/grib_accessor_class_trim.cc +++ b/src/grib_accessor_class_trim.cc @@ -38,7 +38,7 @@ static int pack_string(grib_accessor*, const char*, size_t* len); static int unpack_string(grib_accessor*, char*, size_t* len); static size_t string_length(grib_accessor*); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_trim { @@ -58,7 +58,7 @@ static grib_accessor_class _grib_accessor_class_trim = { "trim", /* name */ sizeof(grib_accessor_trim), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -105,43 +105,10 @@ static grib_accessor_class _grib_accessor_class_trim = { grib_accessor_class* grib_accessor_class_trim = &_grib_accessor_class_trim; -static void init_class(grib_accessor_class* c) -{ - c->dump = (*(c->super))->dump; - c->next_offset = (*(c->super))->next_offset; - c->value_count = (*(c->super))->value_count; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_long = (*(c->super))->pack_long; - c->unpack_long = (*(c->super))->unpack_long; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_double = (*(c->super))->unpack_double; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_uint16.cc b/src/grib_accessor_class_uint16.cc index cbf1eba05..873085e21 100644 --- a/src/grib_accessor_class_uint16.cc +++ b/src/grib_accessor_class_uint16.cc @@ -34,7 +34,7 @@ or edit "accessor.class" and rerun ./make_class.pl static int pack_long(grib_accessor*, const long* val, size_t* len); static int unpack_long(grib_accessor*, long* val, size_t* len); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_uint16 { @@ -50,7 +50,7 @@ static grib_accessor_class _grib_accessor_class_uint16 = { "uint16", /* name */ sizeof(grib_accessor_uint16), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ 0, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -97,44 +97,10 @@ static grib_accessor_class _grib_accessor_class_uint16 = { grib_accessor_class* grib_accessor_class_uint16 = &_grib_accessor_class_uint16; -static void init_class(grib_accessor_class* c) -{ - c->dump = (*(c->super))->dump; - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->value_count = (*(c->super))->value_count; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_double = (*(c->super))->unpack_double; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_uint16_little_endian.cc b/src/grib_accessor_class_uint16_little_endian.cc index 42cc1ed6c..a21c1fb47 100644 --- a/src/grib_accessor_class_uint16_little_endian.cc +++ b/src/grib_accessor_class_uint16_little_endian.cc @@ -34,7 +34,7 @@ or edit "accessor.class" and rerun ./make_class.pl static int pack_long(grib_accessor*, const long* val, size_t* len); static int unpack_long(grib_accessor*, long* val, size_t* len); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_uint16_little_endian { @@ -50,7 +50,7 @@ static grib_accessor_class _grib_accessor_class_uint16_little_endian = { "uint16_little_endian", /* name */ sizeof(grib_accessor_uint16_little_endian), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ 0, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -97,44 +97,10 @@ static grib_accessor_class _grib_accessor_class_uint16_little_endian = { grib_accessor_class* grib_accessor_class_uint16_little_endian = &_grib_accessor_class_uint16_little_endian; -static void init_class(grib_accessor_class* c) -{ - c->dump = (*(c->super))->dump; - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->value_count = (*(c->super))->value_count; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_double = (*(c->super))->unpack_double; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_uint32.cc b/src/grib_accessor_class_uint32.cc index c29a9c7f2..aa8a54ece 100644 --- a/src/grib_accessor_class_uint32.cc +++ b/src/grib_accessor_class_uint32.cc @@ -36,7 +36,7 @@ or edit "accessor.class" and rerun ./make_class.pl static int get_native_type(grib_accessor*); static int pack_long(grib_accessor*, const long* val, size_t* len); static int unpack_long(grib_accessor*, long* val, size_t* len); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_uint32 { @@ -52,7 +52,7 @@ static grib_accessor_class _grib_accessor_class_uint32 = { "uint32", /* name */ sizeof(grib_accessor_uint32), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ 0, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -99,43 +99,10 @@ static grib_accessor_class _grib_accessor_class_uint32 = { grib_accessor_class* grib_accessor_class_uint32 = &_grib_accessor_class_uint32; -static void init_class(grib_accessor_class* c) -{ - c->dump = (*(c->super))->dump; - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->value_count = (*(c->super))->value_count; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_double = (*(c->super))->unpack_double; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_uint32_little_endian.cc b/src/grib_accessor_class_uint32_little_endian.cc index 6938f7284..815568ab5 100644 --- a/src/grib_accessor_class_uint32_little_endian.cc +++ b/src/grib_accessor_class_uint32_little_endian.cc @@ -36,7 +36,7 @@ or edit "accessor.class" and rerun ./make_class.pl static int get_native_type(grib_accessor*); static int pack_long(grib_accessor*, const long* val, size_t* len); static int unpack_long(grib_accessor*, long* val, size_t* len); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_uint32_little_endian { @@ -52,7 +52,7 @@ static grib_accessor_class _grib_accessor_class_uint32_little_endian = { "uint32_little_endian", /* name */ sizeof(grib_accessor_uint32_little_endian), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ 0, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -99,43 +99,10 @@ static grib_accessor_class _grib_accessor_class_uint32_little_endian = { grib_accessor_class* grib_accessor_class_uint32_little_endian = &_grib_accessor_class_uint32_little_endian; -static void init_class(grib_accessor_class* c) -{ - c->dump = (*(c->super))->dump; - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->value_count = (*(c->super))->value_count; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_double = (*(c->super))->unpack_double; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_uint64.cc b/src/grib_accessor_class_uint64.cc index c2f240b29..5dadfb8c9 100644 --- a/src/grib_accessor_class_uint64.cc +++ b/src/grib_accessor_class_uint64.cc @@ -36,7 +36,7 @@ or edit "accessor.class" and rerun ./make_class.pl static int get_native_type(grib_accessor*); static int pack_long(grib_accessor*, const long* val, size_t* len); static int unpack_long(grib_accessor*, long* val, size_t* len); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_uint64 { @@ -52,7 +52,7 @@ static grib_accessor_class _grib_accessor_class_uint64 = { "uint64", /* name */ sizeof(grib_accessor_uint64), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ 0, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -99,43 +99,10 @@ static grib_accessor_class _grib_accessor_class_uint64 = { grib_accessor_class* grib_accessor_class_uint64 = &_grib_accessor_class_uint64; -static void init_class(grib_accessor_class* c) -{ - c->dump = (*(c->super))->dump; - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->value_count = (*(c->super))->value_count; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_double = (*(c->super))->unpack_double; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_uint64_little_endian.cc b/src/grib_accessor_class_uint64_little_endian.cc index d7aaa3aba..ad540c3a6 100644 --- a/src/grib_accessor_class_uint64_little_endian.cc +++ b/src/grib_accessor_class_uint64_little_endian.cc @@ -36,7 +36,7 @@ or edit "accessor.class" and rerun ./make_class.pl static int get_native_type(grib_accessor*); static int pack_long(grib_accessor*, const long* val, size_t* len); static int unpack_long(grib_accessor*, long* val, size_t* len); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_uint64_little_endian { @@ -52,7 +52,7 @@ static grib_accessor_class _grib_accessor_class_uint64_little_endian = { "uint64_little_endian", /* name */ sizeof(grib_accessor_uint64_little_endian), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ 0, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -99,43 +99,10 @@ static grib_accessor_class _grib_accessor_class_uint64_little_endian = { grib_accessor_class* grib_accessor_class_uint64_little_endian = &_grib_accessor_class_uint64_little_endian; -static void init_class(grib_accessor_class* c) -{ - c->dump = (*(c->super))->dump; - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->value_count = (*(c->super))->value_count; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_double = (*(c->super))->unpack_double; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_uint8.cc b/src/grib_accessor_class_uint8.cc index b9d4fc665..330403663 100644 --- a/src/grib_accessor_class_uint8.cc +++ b/src/grib_accessor_class_uint8.cc @@ -36,7 +36,7 @@ or edit "accessor.class" and rerun ./make_class.pl static int get_native_type(grib_accessor*); static int pack_long(grib_accessor*, const long* val, size_t* len); static int unpack_long(grib_accessor*, long* val, size_t* len); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_uint8 { @@ -52,7 +52,7 @@ static grib_accessor_class _grib_accessor_class_uint8 = { "uint8", /* name */ sizeof(grib_accessor_uint8), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ 0, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -99,43 +99,10 @@ static grib_accessor_class _grib_accessor_class_uint8 = { grib_accessor_class* grib_accessor_class_uint8 = &_grib_accessor_class_uint8; -static void init_class(grib_accessor_class* c) -{ - c->dump = (*(c->super))->dump; - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->value_count = (*(c->super))->value_count; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_double = (*(c->super))->unpack_double; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_unexpanded_descriptors.cc b/src/grib_accessor_class_unexpanded_descriptors.cc index e0c31460b..0f8d31055 100644 --- a/src/grib_accessor_class_unexpanded_descriptors.cc +++ b/src/grib_accessor_class_unexpanded_descriptors.cc @@ -45,7 +45,7 @@ static long next_offset(grib_accessor*); static int value_count(grib_accessor*, long*); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); static void update_size(grib_accessor*, size_t); typedef struct grib_accessor_unexpanded_descriptors @@ -65,7 +65,7 @@ static grib_accessor_class _grib_accessor_class_unexpanded_descriptors = { "unexpanded_descriptors", /* name */ sizeof(grib_accessor_unexpanded_descriptors), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -112,39 +112,10 @@ static grib_accessor_class _grib_accessor_class_unexpanded_descriptors = { grib_accessor_class* grib_accessor_class_unexpanded_descriptors = &_grib_accessor_class_unexpanded_descriptors; -static void init_class(grib_accessor_class* c) -{ - c->string_length = (*(c->super))->string_length; - c->byte_count = (*(c->super))->byte_count; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_double = (*(c->super))->unpack_double; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_unpack_bufr_values.cc b/src/grib_accessor_class_unpack_bufr_values.cc index 0f02df1d6..4e65fe6bf 100644 --- a/src/grib_accessor_class_unpack_bufr_values.cc +++ b/src/grib_accessor_class_unpack_bufr_values.cc @@ -47,7 +47,7 @@ static int value_count(grib_accessor*, long*); static void destroy(grib_context*, grib_accessor*); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_unpack_bufr_values { @@ -64,7 +64,7 @@ static grib_accessor_class _grib_accessor_class_unpack_bufr_values = { "unpack_bufr_values", /* name */ sizeof(grib_accessor_unpack_bufr_values), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ &destroy, /* free mem */ @@ -111,37 +111,10 @@ static grib_accessor_class _grib_accessor_class_unpack_bufr_values = { grib_accessor_class* grib_accessor_class_unpack_bufr_values = &_grib_accessor_class_unpack_bufr_values; -static void init_class(grib_accessor_class* c) -{ - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_float = (*(c->super))->pack_float; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_unsigned.cc b/src/grib_accessor_class_unsigned.cc index 1ffe1c385..fc3a6ccbb 100644 --- a/src/grib_accessor_class_unsigned.cc +++ b/src/grib_accessor_class_unsigned.cc @@ -48,7 +48,7 @@ static int value_count(grib_accessor*, long*); static void destroy(grib_context*, grib_accessor*); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); static void update_size(grib_accessor*, size_t); typedef struct grib_accessor_unsigned @@ -68,7 +68,7 @@ static grib_accessor_class _grib_accessor_class_unsigned = { "unsigned", /* name */ sizeof(grib_accessor_unsigned), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ &destroy, /* free mem */ @@ -115,37 +115,10 @@ static grib_accessor_class _grib_accessor_class_unsigned = { grib_accessor_class* grib_accessor_class_unsigned = &_grib_accessor_class_unsigned; -static void init_class(grib_accessor_class* c) -{ - c->string_length = (*(c->super))->string_length; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_double = (*(c->super))->unpack_double; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_unsigned_bits.cc b/src/grib_accessor_class_unsigned_bits.cc index d675bab7c..375f3e1a0 100644 --- a/src/grib_accessor_class_unsigned_bits.cc +++ b/src/grib_accessor_class_unsigned_bits.cc @@ -47,7 +47,7 @@ static long next_offset(grib_accessor*); static int value_count(grib_accessor*, long*); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); static void update_size(grib_accessor*, size_t); typedef struct grib_accessor_unsigned_bits @@ -67,7 +67,7 @@ static grib_accessor_class _grib_accessor_class_unsigned_bits = { "unsigned_bits", /* name */ sizeof(grib_accessor_unsigned_bits), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -114,38 +114,10 @@ static grib_accessor_class _grib_accessor_class_unsigned_bits = { grib_accessor_class* grib_accessor_class_unsigned_bits = &_grib_accessor_class_unsigned_bits; -static void init_class(grib_accessor_class* c) -{ - c->string_length = (*(c->super))->string_length; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_double = (*(c->super))->unpack_double; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_validity_date.cc b/src/grib_accessor_class_validity_date.cc index 9d8c5cab1..bbb804914 100644 --- a/src/grib_accessor_class_validity_date.cc +++ b/src/grib_accessor_class_validity_date.cc @@ -42,7 +42,7 @@ or edit "accessor.class" and rerun ./make_class.pl static int unpack_long(grib_accessor*, long* val, size_t* len); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_validity_date { @@ -66,7 +66,7 @@ static grib_accessor_class _grib_accessor_class_validity_date = { "validity_date", /* name */ sizeof(grib_accessor_validity_date), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -113,44 +113,10 @@ static grib_accessor_class _grib_accessor_class_validity_date = { grib_accessor_class* grib_accessor_class_validity_date = &_grib_accessor_class_validity_date; -static void init_class(grib_accessor_class* c) -{ - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->value_count = (*(c->super))->value_count; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_long = (*(c->super))->pack_long; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_double = (*(c->super))->unpack_double; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_validity_time.cc b/src/grib_accessor_class_validity_time.cc index 64ae1a197..4840612a5 100644 --- a/src/grib_accessor_class_validity_time.cc +++ b/src/grib_accessor_class_validity_time.cc @@ -41,7 +41,7 @@ or edit "accessor.class" and rerun ./make_class.pl static int unpack_long(grib_accessor*, long* val, size_t* len); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_validity_time { @@ -64,7 +64,7 @@ static grib_accessor_class _grib_accessor_class_validity_time = { "validity_time", /* name */ sizeof(grib_accessor_validity_time), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -111,44 +111,10 @@ static grib_accessor_class _grib_accessor_class_validity_time = { grib_accessor_class* grib_accessor_class_validity_time = &_grib_accessor_class_validity_time; -static void init_class(grib_accessor_class* c) -{ - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->value_count = (*(c->super))->value_count; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_long = (*(c->super))->pack_long; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_double = (*(c->super))->unpack_double; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_values.cc b/src/grib_accessor_class_values.cc index 3d5ec2818..633bfa051 100644 --- a/src/grib_accessor_class_values.cc +++ b/src/grib_accessor_class_values.cc @@ -51,7 +51,7 @@ static long byte_offset(grib_accessor*); static long next_offset(grib_accessor*); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); static void update_size(grib_accessor*, size_t); static int compare(grib_accessor*, grib_accessor*); @@ -74,7 +74,7 @@ static grib_accessor_class _grib_accessor_class_values = { "values", /* name */ sizeof(grib_accessor_values), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -121,38 +121,10 @@ static grib_accessor_class _grib_accessor_class_values = { grib_accessor_class* grib_accessor_class_values = &_grib_accessor_class_values; -static void init_class(grib_accessor_class* c) -{ - c->string_length = (*(c->super))->string_length; - c->value_count = (*(c->super))->value_count; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->unpack_long = (*(c->super))->unpack_long; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_double = (*(c->super))->unpack_double; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ static long init_length(grib_accessor* a) diff --git a/src/grib_accessor_class_variable.cc b/src/grib_accessor_class_variable.cc index 306578968..6b941674d 100644 --- a/src/grib_accessor_class_variable.cc +++ b/src/grib_accessor_class_variable.cc @@ -52,7 +52,7 @@ static int value_count(grib_accessor*, long*); static void destroy(grib_context*, grib_accessor*); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); static int compare(grib_accessor*, grib_accessor*); static grib_accessor* make_clone(grib_accessor*, grib_section*, int*); @@ -74,7 +74,7 @@ static grib_accessor_class _grib_accessor_class_variable = { "variable", /* name */ sizeof(grib_accessor_variable), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ &destroy, /* free mem */ @@ -121,33 +121,10 @@ static grib_accessor_class _grib_accessor_class_variable = { grib_accessor_class* grib_accessor_class_variable = &_grib_accessor_class_variable; -static void init_class(grib_accessor_class* c) -{ - c->next_offset = (*(c->super))->next_offset; - c->byte_offset = (*(c->super))->byte_offset; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_float = (*(c->super))->pack_float; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_vector.cc b/src/grib_accessor_class_vector.cc index 26b870001..0c459a042 100644 --- a/src/grib_accessor_class_vector.cc +++ b/src/grib_accessor_class_vector.cc @@ -40,7 +40,7 @@ or edit "accessor.class" and rerun ./make_class.pl static int unpack_double(grib_accessor*, double* val, size_t* len); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); typedef struct grib_accessor_vector { @@ -62,7 +62,7 @@ static grib_accessor_class _grib_accessor_class_vector = { "vector", /* name */ sizeof(grib_accessor_vector), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -109,45 +109,10 @@ static grib_accessor_class _grib_accessor_class_vector = { grib_accessor_class* grib_accessor_class_vector = &_grib_accessor_class_vector; -static void init_class(grib_accessor_class* c) -{ - c->dump = (*(c->super))->dump; - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->value_count = (*(c->super))->value_count; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_long = (*(c->super))->pack_long; - c->unpack_long = (*(c->super))->unpack_long; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->notify_change = (*(c->super))->notify_change; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_when.cc b/src/grib_accessor_class_when.cc index 1f2c1f57b..b97250033 100644 --- a/src/grib_accessor_class_when.cc +++ b/src/grib_accessor_class_when.cc @@ -38,7 +38,7 @@ or edit "accessor.class" and rerun ./make_class.pl static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -static void init_class(grib_accessor_class*); +//static void init_class(grib_accessor_class*); static int notify_change(grib_accessor*, grib_accessor*); typedef struct grib_accessor_when @@ -55,7 +55,7 @@ static grib_accessor_class _grib_accessor_class_when = { "when", /* name */ sizeof(grib_accessor_when), /* size */ 0, /* inited */ - &init_class, /* init_class */ + 0, /* init_class */ &init, /* init */ 0, /* post_init */ 0, /* free mem */ @@ -102,44 +102,10 @@ static grib_accessor_class _grib_accessor_class_when = { grib_accessor_class* grib_accessor_class_when = &_grib_accessor_class_when; -static void init_class(grib_accessor_class* c) -{ - c->next_offset = (*(c->super))->next_offset; - c->string_length = (*(c->super))->string_length; - c->value_count = (*(c->super))->value_count; - c->byte_count = (*(c->super))->byte_count; - c->byte_offset = (*(c->super))->byte_offset; - c->get_native_type = (*(c->super))->get_native_type; - c->sub_section = (*(c->super))->sub_section; - c->pack_missing = (*(c->super))->pack_missing; - c->is_missing = (*(c->super))->is_missing; - c->pack_long = (*(c->super))->pack_long; - c->unpack_long = (*(c->super))->unpack_long; - c->pack_double = (*(c->super))->pack_double; - c->pack_float = (*(c->super))->pack_float; - c->unpack_double = (*(c->super))->unpack_double; - c->unpack_float = (*(c->super))->unpack_float; - c->pack_string = (*(c->super))->pack_string; - c->unpack_string = (*(c->super))->unpack_string; - c->pack_string_array = (*(c->super))->pack_string_array; - c->unpack_string_array = (*(c->super))->unpack_string_array; - c->pack_bytes = (*(c->super))->pack_bytes; - c->unpack_bytes = (*(c->super))->unpack_bytes; - c->pack_expression = (*(c->super))->pack_expression; - c->update_size = (*(c->super))->update_size; - c->preferred_size = (*(c->super))->preferred_size; - c->resize = (*(c->super))->resize; - c->nearest_smaller_value = (*(c->super))->nearest_smaller_value; - c->next = (*(c->super))->next; - c->compare = (*(c->super))->compare; - c->unpack_double_element = (*(c->super))->unpack_double_element; - c->unpack_float_element = (*(c->super))->unpack_float_element; - c->unpack_double_element_set = (*(c->super))->unpack_double_element_set; - c->unpack_float_element_set = (*(c->super))->unpack_float_element_set; - c->unpack_double_subarray = (*(c->super))->unpack_double_subarray; - c->clear = (*(c->super))->clear; - c->make_clone = (*(c->super))->make_clone; -} +//static void init_class(grib_accessor_class* c) +//{ +//INIT +//} /* END_CLASS_IMP */ From 94c657aa98ed0450898f9afe07830cea5fd2df75 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sun, 23 Apr 2023 18:14:02 +0100 Subject: [PATCH 110/378] Update comments for accessor functions --- src/accessor.class | 44 +++++++++---------- ...rib_accessor_class_abstract_long_vector.cc | 44 +++++++++---------- src/grib_accessor_class_abstract_vector.cc | 44 +++++++++---------- src/grib_accessor_class_apply_operators.cc | 44 +++++++++---------- src/grib_accessor_class_array.cc | 44 +++++++++---------- src/grib_accessor_class_ascii.cc | 44 +++++++++---------- src/grib_accessor_class_assert.cc | 44 +++++++++---------- src/grib_accessor_class_bit.cc | 44 +++++++++---------- src/grib_accessor_class_bitmap.cc | 44 +++++++++---------- src/grib_accessor_class_bits.cc | 44 +++++++++---------- src/grib_accessor_class_bits_per_value.cc | 44 +++++++++---------- src/grib_accessor_class_blob.cc | 44 +++++++++---------- src/grib_accessor_class_box.cc | 44 +++++++++---------- src/grib_accessor_class_budgdate.cc | 44 +++++++++---------- src/grib_accessor_class_bufr_data_array.cc | 44 +++++++++---------- src/grib_accessor_class_bufr_data_element.cc | 44 +++++++++---------- ...grib_accessor_class_bufr_elements_table.cc | 44 +++++++++---------- ...ccessor_class_bufr_extract_area_subsets.cc | 44 +++++++++---------- ...sor_class_bufr_extract_datetime_subsets.cc | 44 +++++++++---------- ...rib_accessor_class_bufr_extract_subsets.cc | 44 +++++++++---------- src/grib_accessor_class_bufr_group.cc | 44 +++++++++---------- ...rib_accessor_class_bufr_simple_thinning.cc | 44 +++++++++---------- src/grib_accessor_class_bufr_string_values.cc | 44 +++++++++---------- ...essor_class_bufrdc_expanded_descriptors.cc | 44 +++++++++---------- src/grib_accessor_class_bytes.cc | 44 +++++++++---------- ...r_class_change_alternative_row_scanning.cc | 44 +++++++++---------- ...ccessor_class_change_scanning_direction.cc | 44 +++++++++---------- ...b_accessor_class_check_internal_version.cc | 44 +++++++++---------- src/grib_accessor_class_closest_date.cc | 44 +++++++++---------- src/grib_accessor_class_codeflag.cc | 44 +++++++++---------- src/grib_accessor_class_codetable.cc | 44 +++++++++---------- src/grib_accessor_class_codetable_title.cc | 44 +++++++++---------- src/grib_accessor_class_codetable_units.cc | 44 +++++++++---------- src/grib_accessor_class_concept.cc | 44 +++++++++---------- src/grib_accessor_class_constant.cc | 44 +++++++++---------- src/grib_accessor_class_count_file.cc | 44 +++++++++---------- src/grib_accessor_class_count_missing.cc | 44 +++++++++---------- src/grib_accessor_class_count_total.cc | 44 +++++++++---------- ...grib_accessor_class_data_2order_packing.cc | 44 +++++++++---------- src/grib_accessor_class_data_apply_bitmap.cc | 44 +++++++++---------- ...cessor_class_data_apply_boustrophedonic.cc | 44 +++++++++---------- ...class_data_apply_boustrophedonic_bitmap.cc | 44 +++++++++---------- ...accessor_class_data_apply_gdsnotpresent.cc | 44 +++++++++---------- src/grib_accessor_class_data_ccsds_packing.cc | 44 +++++++++---------- ...rib_accessor_class_data_complex_packing.cc | 44 +++++++++---------- src/grib_accessor_class_data_dummy_field.cc | 44 +++++++++---------- ...b_accessor_class_data_g1complex_packing.cc | 44 +++++++++---------- ...a_g1second_order_constant_width_packing.cc | 44 +++++++++---------- ...g1second_order_general_extended_packing.cc | 44 +++++++++---------- ...ass_data_g1second_order_general_packing.cc | 44 +++++++++---------- ..._data_g1second_order_row_by_row_packing.cc | 44 +++++++++---------- ..._accessor_class_data_g1secondary_bitmap.cc | 44 +++++++++---------- ..._accessor_class_data_g1shsimple_packing.cc | 44 +++++++++---------- ...ib_accessor_class_data_g1simple_packing.cc | 44 +++++++++---------- ...ib_accessor_class_data_g22order_packing.cc | 44 +++++++++---------- ...accessor_class_data_g2bifourier_packing.cc | 44 +++++++++---------- ...b_accessor_class_data_g2complex_packing.cc | 44 +++++++++---------- ..._accessor_class_data_g2secondary_bitmap.cc | 44 +++++++++---------- ..._accessor_class_data_g2shsimple_packing.cc | 44 +++++++++---------- ...ib_accessor_class_data_g2simple_packing.cc | 44 +++++++++---------- ...ata_g2simple_packing_with_preprocessing.cc | 44 +++++++++---------- ...ib_accessor_class_data_jpeg2000_packing.cc | 44 +++++++++---------- src/grib_accessor_class_data_png_packing.cc | 44 +++++++++---------- src/grib_accessor_class_data_raw_packing.cc | 44 +++++++++---------- ..._accessor_class_data_run_length_packing.cc | 44 +++++++++---------- ...ib_accessor_class_data_secondary_bitmap.cc | 44 +++++++++---------- src/grib_accessor_class_data_sh_packed.cc | 44 +++++++++---------- src/grib_accessor_class_data_sh_unpacked.cc | 44 +++++++++---------- ...ib_accessor_class_data_shsimple_packing.cc | 44 +++++++++---------- ...grib_accessor_class_data_simple_packing.cc | 44 +++++++++---------- src/grib_accessor_class_decimal_precision.cc | 44 +++++++++---------- src/grib_accessor_class_dictionary.cc | 44 +++++++++---------- src/grib_accessor_class_dirty.cc | 44 +++++++++---------- src/grib_accessor_class_divdouble.cc | 44 +++++++++---------- src/grib_accessor_class_double.cc | 44 +++++++++---------- src/grib_accessor_class_element.cc | 44 +++++++++---------- src/grib_accessor_class_evaluate.cc | 44 +++++++++---------- ...rib_accessor_class_expanded_descriptors.cc | 44 +++++++++---------- src/grib_accessor_class_forward.cc | 44 +++++++++---------- ...or_class_from_scale_factor_scaled_value.cc | 44 +++++++++---------- ...ib_accessor_class_g1_half_byte_codeflag.cc | 44 +++++++++---------- src/grib_accessor_class_g1_message_length.cc | 44 +++++++++---------- src/grib_accessor_class_g1_section4_length.cc | 44 +++++++++---------- src/grib_accessor_class_g1area.cc | 44 +++++++++---------- src/grib_accessor_class_g1bitmap.cc | 44 +++++++++---------- src/grib_accessor_class_g1date.cc | 44 +++++++++---------- ...b_accessor_class_g1day_of_the_year_date.cc | 44 +++++++++---------- ...ccessor_class_g1end_of_interval_monthly.cc | 44 +++++++++---------- src/grib_accessor_class_g1fcperiod.cc | 44 +++++++++---------- src/grib_accessor_class_g1forecastmonth.cc | 44 +++++++++---------- src/grib_accessor_class_g1monthlydate.cc | 44 +++++++++---------- ...ass_g1number_of_coded_values_sh_complex.cc | 44 +++++++++---------- ...lass_g1number_of_coded_values_sh_simple.cc | 44 +++++++++---------- src/grib_accessor_class_g1step_range.cc | 44 +++++++++---------- src/grib_accessor_class_g1verificationdate.cc | 44 +++++++++---------- src/grib_accessor_class_g2_aerosol.cc | 44 +++++++++---------- src/grib_accessor_class_g2_chemical.cc | 44 +++++++++---------- src/grib_accessor_class_g2_eps.cc | 44 +++++++++---------- src/grib_accessor_class_g2_mars_labeling.cc | 44 +++++++++---------- src/grib_accessor_class_g2bitmap.cc | 44 +++++++++---------- src/grib_accessor_class_g2bitmap_present.cc | 44 +++++++++---------- src/grib_accessor_class_g2date.cc | 44 +++++++++---------- src/grib_accessor_class_g2end_step.cc | 44 +++++++++---------- src/grib_accessor_class_g2grid.cc | 44 +++++++++---------- src/grib_accessor_class_g2latlon.cc | 44 +++++++++---------- src/grib_accessor_class_g2level.cc | 44 +++++++++---------- src/grib_accessor_class_g2lon.cc | 44 +++++++++---------- src/grib_accessor_class_g2step_range.cc | 44 +++++++++---------- src/grib_accessor_class_gaussian_grid_name.cc | 44 +++++++++---------- src/grib_accessor_class_gds_is_present.cc | 44 +++++++++---------- ...b_accessor_class_gds_not_present_bitmap.cc | 44 +++++++++---------- src/grib_accessor_class_gen.cc | 44 +++++++++---------- src/grib_accessor_class_getenv.cc | 44 +++++++++---------- src/grib_accessor_class_global_gaussian.cc | 44 +++++++++---------- src/grib_accessor_class_group.cc | 44 +++++++++---------- src/grib_accessor_class_gts_header.cc | 44 +++++++++---------- src/grib_accessor_class_hash_array.cc | 44 +++++++++---------- src/grib_accessor_class_headers_only.cc | 44 +++++++++---------- src/grib_accessor_class_ibmfloat.cc | 44 +++++++++---------- src/grib_accessor_class_ieeefloat.cc | 44 +++++++++---------- src/grib_accessor_class_ifs_param.cc | 44 +++++++++---------- src/grib_accessor_class_int16.cc | 44 +++++++++---------- ...grib_accessor_class_int16_little_endian.cc | 44 +++++++++---------- src/grib_accessor_class_int32.cc | 44 +++++++++---------- ...grib_accessor_class_int32_little_endian.cc | 44 +++++++++---------- src/grib_accessor_class_int64.cc | 44 +++++++++---------- ...grib_accessor_class_int64_little_endian.cc | 44 +++++++++---------- src/grib_accessor_class_int8.cc | 44 +++++++++---------- src/grib_accessor_class_iterator.cc | 44 +++++++++---------- src/grib_accessor_class_julian_date.cc | 44 +++++++++---------- src/grib_accessor_class_julian_day.cc | 44 +++++++++---------- src/grib_accessor_class_ksec1expver.cc | 44 +++++++++---------- src/grib_accessor_class_label.cc | 44 +++++++++---------- src/grib_accessor_class_laplacian.cc | 44 +++++++++---------- src/grib_accessor_class_latitudes.cc | 44 +++++++++---------- src/grib_accessor_class_latlon_increment.cc | 44 +++++++++---------- src/grib_accessor_class_latlonvalues.cc | 44 +++++++++---------- src/grib_accessor_class_library_version.cc | 44 +++++++++---------- src/grib_accessor_class_local_definition.cc | 44 +++++++++---------- src/grib_accessor_class_long.cc | 44 +++++++++---------- src/grib_accessor_class_long_vector.cc | 44 +++++++++---------- src/grib_accessor_class_longitudes.cc | 44 +++++++++---------- src/grib_accessor_class_lookup.cc | 44 +++++++++---------- src/grib_accessor_class_mars_param.cc | 44 +++++++++---------- src/grib_accessor_class_mars_step.cc | 44 +++++++++---------- src/grib_accessor_class_md5.cc | 44 +++++++++---------- src/grib_accessor_class_message.cc | 44 +++++++++---------- src/grib_accessor_class_message_copy.cc | 44 +++++++++---------- src/grib_accessor_class_missing.cc | 44 +++++++++---------- src/grib_accessor_class_nearest.cc | 44 +++++++++---------- src/grib_accessor_class_non_alpha.cc | 44 +++++++++---------- ...b_accessor_class_number_of_coded_values.cc | 44 +++++++++---------- src/grib_accessor_class_number_of_points.cc | 44 +++++++++---------- ...ccessor_class_number_of_points_gaussian.cc | 44 +++++++++---------- src/grib_accessor_class_number_of_values.cc | 44 +++++++++---------- ...class_number_of_values_data_raw_packing.cc | 44 +++++++++---------- ...grib_accessor_class_octahedral_gaussian.cc | 44 +++++++++---------- src/grib_accessor_class_octet_number.cc | 44 +++++++++---------- src/grib_accessor_class_offset_file.cc | 44 +++++++++---------- src/grib_accessor_class_offset_values.cc | 44 +++++++++---------- src/grib_accessor_class_pack_bufr_values.cc | 44 +++++++++---------- src/grib_accessor_class_pad.cc | 44 +++++++++---------- src/grib_accessor_class_padding.cc | 44 +++++++++---------- src/grib_accessor_class_padto.cc | 44 +++++++++---------- src/grib_accessor_class_padtoeven.cc | 44 +++++++++---------- src/grib_accessor_class_padtomultiple.cc | 44 +++++++++---------- src/grib_accessor_class_position.cc | 44 +++++++++---------- src/grib_accessor_class_proj_string.cc | 44 +++++++++---------- src/grib_accessor_class_raw.cc | 44 +++++++++---------- src/grib_accessor_class_rdbtime_guess_date.cc | 44 +++++++++---------- ...ib_accessor_class_reference_value_error.cc | 44 +++++++++---------- src/grib_accessor_class_round.cc | 44 +++++++++---------- src/grib_accessor_class_scale.cc | 44 +++++++++---------- src/grib_accessor_class_scale_values.cc | 44 +++++++++---------- ...essor_class_second_order_bits_per_value.cc | 44 +++++++++---------- src/grib_accessor_class_section.cc | 44 +++++++++---------- src/grib_accessor_class_section_length.cc | 44 +++++++++---------- src/grib_accessor_class_section_padding.cc | 44 +++++++++---------- src/grib_accessor_class_section_pointer.cc | 44 +++++++++---------- ...rib_accessor_class_select_step_template.cc | 44 +++++++++---------- ...grib_accessor_class_sexagesimal2decimal.cc | 44 +++++++++---------- src/grib_accessor_class_signed.cc | 44 +++++++++---------- src/grib_accessor_class_signed_bits.cc | 44 +++++++++---------- ...rib_accessor_class_simple_packing_error.cc | 44 +++++++++---------- src/grib_accessor_class_size.cc | 44 +++++++++---------- src/grib_accessor_class_smart_table.cc | 44 +++++++++---------- src/grib_accessor_class_smart_table_column.cc | 44 +++++++++---------- src/grib_accessor_class_spd.cc | 44 +++++++++---------- ...grib_accessor_class_spectral_truncation.cc | 44 +++++++++---------- src/grib_accessor_class_sprintf.cc | 44 +++++++++---------- src/grib_accessor_class_statistics.cc | 44 +++++++++---------- ...grib_accessor_class_statistics_spectral.cc | 44 +++++++++---------- ...grib_accessor_class_step_human_readable.cc | 44 +++++++++---------- src/grib_accessor_class_step_in_units.cc | 44 +++++++++---------- src/grib_accessor_class_sum.cc | 44 +++++++++---------- src/grib_accessor_class_suppressed.cc | 44 +++++++++---------- src/grib_accessor_class_time.cc | 44 +++++++++---------- src/grib_accessor_class_times.cc | 44 +++++++++---------- src/grib_accessor_class_to_double.cc | 44 +++++++++---------- src/grib_accessor_class_to_integer.cc | 44 +++++++++---------- src/grib_accessor_class_to_string.cc | 44 +++++++++---------- src/grib_accessor_class_transient.cc | 44 +++++++++---------- src/grib_accessor_class_transient_darray.cc | 44 +++++++++---------- src/grib_accessor_class_trim.cc | 44 +++++++++---------- src/grib_accessor_class_uint16.cc | 44 +++++++++---------- ...rib_accessor_class_uint16_little_endian.cc | 44 +++++++++---------- src/grib_accessor_class_uint32.cc | 44 +++++++++---------- ...rib_accessor_class_uint32_little_endian.cc | 44 +++++++++---------- src/grib_accessor_class_uint64.cc | 44 +++++++++---------- ...rib_accessor_class_uint64_little_endian.cc | 44 +++++++++---------- src/grib_accessor_class_uint8.cc | 44 +++++++++---------- ...b_accessor_class_unexpanded_descriptors.cc | 44 +++++++++---------- src/grib_accessor_class_unpack_bufr_values.cc | 44 +++++++++---------- src/grib_accessor_class_unsigned.cc | 44 +++++++++---------- src/grib_accessor_class_unsigned_bits.cc | 44 +++++++++---------- src/grib_accessor_class_validity_date.cc | 44 +++++++++---------- src/grib_accessor_class_validity_time.cc | 44 +++++++++---------- src/grib_accessor_class_values.cc | 44 +++++++++---------- src/grib_accessor_class_variable.cc | 44 +++++++++---------- src/grib_accessor_class_vector.cc | 44 +++++++++---------- src/grib_accessor_class_when.cc | 44 +++++++++---------- 221 files changed, 4862 insertions(+), 4862 deletions(-) diff --git a/src/accessor.class b/src/accessor.class index 85acbf1c2..9981e35cb 100644 --- a/src/accessor.class +++ b/src/accessor.class @@ -56,29 +56,29 @@ static grib_accessor_class _grib_accessor_class_NAME = { 0, /* init_class */ &init, /* init */ &post_init, /* post_init */ - &destroy, /* free mem */ - &dump, /* describes himself */ - &next_offset, /* get length of section */ + &destroy, /* destroy */ + &dump, /* dump */ + &next_offset, /* next_offset */ &string_length, /* get length of string */ &value_count, /* get number of values */ &byte_count, /* get number of bytes */ &byte_offset, /* get offset to bytes */ &get_native_type, /* get native type */ &sub_section, /* get sub_section */ - &pack_missing, /* grib_pack procedures long */ - &is_missing, /* grib_pack procedures long */ - &pack_long, /* grib_pack procedures long */ - &unpack_long, /* grib_unpack procedures long */ - &pack_double, /* grib_pack procedures double */ - &pack_float, /* grib_pack procedures float */ - &unpack_double, /* grib_unpack procedures double */ - &unpack_float, /* grib_unpack procedures float */ - &pack_string, /* grib_pack procedures string */ - &unpack_string, /* grib_unpack procedures string */ - &pack_string_array, /* grib_pack array procedures string */ - &unpack_string_array, /* grib_unpack array procedures string */ - &pack_bytes, /* grib_pack procedures bytes */ - &unpack_bytes, /* grib_unpack procedures bytes */ + &pack_missing, /* pack_missing */ + &is_missing, /* is_missing */ + &pack_long, /* pack_long */ + &unpack_long, /* unpack_long */ + &pack_double, /* pack_double */ + &pack_float, /* pack_float */ + &unpack_double, /* unpack_double */ + &unpack_float, /* unpack_float */ + &pack_string, /* pack_string */ + &unpack_string, /* unpack_string */ + &pack_string_array, /* pack_string_array */ + &unpack_string_array, /* unpack_string_array */ + &pack_bytes, /* pack_bytes */ + &unpack_bytes, /* unpack_bytes */ &pack_expression, /* pack_expression */ ¬ify_change, /* notify_change */ &update_size, /* update_size */ @@ -87,10 +87,10 @@ static grib_accessor_class _grib_accessor_class_NAME = { &nearest_smaller_value, /* nearest_smaller_value */ &next, /* next accessor */ &compare, /* compare vs. another accessor */ - &unpack_double_element, /* unpack only ith value */ - &unpack_float_element, /* unpack only ith value */ - &unpack_double_element_set, /* unpack a given set of elements */ - &unpack_float_element_set, /* unpack a given set of elements */ + &unpack_double_element, /* unpack only ith value (double) */ + &unpack_float_element, /* unpack only ith value (float) */ + &unpack_double_element_set, /* unpack a given set of elements (double) */ + &unpack_float_element_set, /* unpack a given set of elements (float) */ &unpack_double_subarray, /* unpack a subarray */ &clear, /* clear */ &make_clone, /* clone accessor */ @@ -105,6 +105,6 @@ ADD_TO_FILE grib_accessor_factory_hash_list NAME, &grib_accessor_class_NAME //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} diff --git a/src/grib_accessor_class_abstract_long_vector.cc b/src/grib_accessor_class_abstract_long_vector.cc index 6e7a633b2..efdabab47 100644 --- a/src/grib_accessor_class_abstract_long_vector.cc +++ b/src/grib_accessor_class_abstract_long_vector.cc @@ -58,29 +58,29 @@ static grib_accessor_class _grib_accessor_class_abstract_long_vector = { 0, /* init_class */ 0, /* init */ 0, /* post_init */ - 0, /* free mem */ - 0, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + 0, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ 0, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - 0, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + 0, /* pack_long */ + 0, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + 0, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -89,10 +89,10 @@ static grib_accessor_class _grib_accessor_class_abstract_long_vector = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -104,7 +104,7 @@ grib_accessor_class* grib_accessor_class_abstract_long_vector = &_grib_accessor_ //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_abstract_vector.cc b/src/grib_accessor_class_abstract_vector.cc index f342dada6..dc1053f0a 100644 --- a/src/grib_accessor_class_abstract_vector.cc +++ b/src/grib_accessor_class_abstract_vector.cc @@ -57,29 +57,29 @@ static grib_accessor_class _grib_accessor_class_abstract_vector = { 0, /* init_class */ 0, /* init */ 0, /* post_init */ - 0, /* free mem */ - 0, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + 0, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ 0, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - 0, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + 0, /* pack_long */ + 0, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + 0, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -88,10 +88,10 @@ static grib_accessor_class _grib_accessor_class_abstract_vector = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -103,7 +103,7 @@ grib_accessor_class* grib_accessor_class_abstract_vector = &_grib_accessor_class //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_apply_operators.cc b/src/grib_accessor_class_apply_operators.cc index 505ca54a1..57bfb3bf2 100644 --- a/src/grib_accessor_class_apply_operators.cc +++ b/src/grib_accessor_class_apply_operators.cc @@ -112,29 +112,29 @@ static grib_accessor_class _grib_accessor_class_apply_operators = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - &destroy, /* free mem */ - &dump, /* describes himself */ - 0, /* get length of section */ + &destroy, /* destroy */ + &dump, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ &value_count, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ &get_native_type, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - &pack_long, /* grib_pack procedures long */ - &unpack_long, /* grib_unpack procedures long */ - &pack_double, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - &unpack_double, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - &unpack_string_array, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + &pack_long, /* pack_long */ + &unpack_long, /* unpack_long */ + &pack_double, /* pack_double */ + 0, /* pack_float */ + &unpack_double, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + &unpack_string_array, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -143,10 +143,10 @@ static grib_accessor_class _grib_accessor_class_apply_operators = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -158,7 +158,7 @@ grib_accessor_class* grib_accessor_class_apply_operators = &_grib_accessor_class //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_array.cc b/src/grib_accessor_class_array.cc index 13b0aa3aa..dc77ee9f8 100644 --- a/src/grib_accessor_class_array.cc +++ b/src/grib_accessor_class_array.cc @@ -58,29 +58,29 @@ static grib_accessor_class _grib_accessor_class_array = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - &dump, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + &dump, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ 0, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - 0, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + 0, /* pack_long */ + 0, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + 0, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -89,10 +89,10 @@ static grib_accessor_class _grib_accessor_class_array = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -104,7 +104,7 @@ grib_accessor_class* grib_accessor_class_array = &_grib_accessor_class_array; //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_ascii.cc b/src/grib_accessor_class_ascii.cc index 26e26e9fb..210e8941b 100644 --- a/src/grib_accessor_class_ascii.cc +++ b/src/grib_accessor_class_ascii.cc @@ -70,29 +70,29 @@ static grib_accessor_class _grib_accessor_class_ascii = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - &dump, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + &dump, /* dump */ + 0, /* next_offset */ &string_length, /* get length of string */ &value_count, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ &get_native_type, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - &pack_long, /* grib_pack procedures long */ - &unpack_long, /* grib_unpack procedures long */ - &pack_double, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - &unpack_double, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - &pack_string, /* grib_pack procedures string */ - &unpack_string, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + &pack_long, /* pack_long */ + &unpack_long, /* unpack_long */ + &pack_double, /* pack_double */ + 0, /* pack_float */ + &unpack_double, /* unpack_double */ + 0, /* unpack_float */ + &pack_string, /* pack_string */ + &unpack_string, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -101,10 +101,10 @@ static grib_accessor_class _grib_accessor_class_ascii = { 0, /* nearest_smaller_value */ 0, /* next accessor */ &compare, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -116,7 +116,7 @@ grib_accessor_class* grib_accessor_class_ascii = &_grib_accessor_class_ascii; //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_assert.cc b/src/grib_accessor_class_assert.cc index 2518fda19..8e9ff7696 100644 --- a/src/grib_accessor_class_assert.cc +++ b/src/grib_accessor_class_assert.cc @@ -58,29 +58,29 @@ static grib_accessor_class _grib_accessor_class_assert = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - &dump, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + &dump, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ 0, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - 0, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + 0, /* pack_long */ + 0, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + 0, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ ¬ify_change, /* notify_change */ 0, /* update_size */ @@ -89,10 +89,10 @@ static grib_accessor_class _grib_accessor_class_assert = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -104,7 +104,7 @@ grib_accessor_class* grib_accessor_class_assert = &_grib_accessor_class_assert; //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_bit.cc b/src/grib_accessor_class_bit.cc index c2a4cdb0c..3aef2905c 100644 --- a/src/grib_accessor_class_bit.cc +++ b/src/grib_accessor_class_bit.cc @@ -60,29 +60,29 @@ static grib_accessor_class _grib_accessor_class_bit = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - &dump, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + &dump, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ 0, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - &pack_long, /* grib_pack procedures long */ - &unpack_long, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - 0, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + &pack_long, /* pack_long */ + &unpack_long, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + 0, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -91,10 +91,10 @@ static grib_accessor_class _grib_accessor_class_bit = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -106,7 +106,7 @@ grib_accessor_class* grib_accessor_class_bit = &_grib_accessor_class_bit; //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_bitmap.cc b/src/grib_accessor_class_bitmap.cc index 44c6c4039..edb4d2858 100644 --- a/src/grib_accessor_class_bitmap.cc +++ b/src/grib_accessor_class_bitmap.cc @@ -76,29 +76,29 @@ static grib_accessor_class _grib_accessor_class_bitmap = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - &dump, /* describes himself */ - &next_offset, /* get length of section */ + 0, /* destroy */ + &dump, /* dump */ + &next_offset, /* next_offset */ 0, /* get length of string */ 0, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - &unpack_long, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - &unpack_double, /* grib_unpack procedures double */ - &unpack_float, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - &unpack_string, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + 0, /* pack_long */ + &unpack_long, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + &unpack_double, /* unpack_double */ + &unpack_float, /* unpack_float */ + 0, /* pack_string */ + &unpack_string, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ &update_size, /* update_size */ @@ -107,10 +107,10 @@ static grib_accessor_class _grib_accessor_class_bitmap = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - &unpack_double_element, /* unpack only ith value */ - 0, /* unpack only ith value */ - &unpack_double_element_set, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + &unpack_double_element, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + &unpack_double_element_set, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -122,7 +122,7 @@ grib_accessor_class* grib_accessor_class_bitmap = &_grib_accessor_class_bitmap; //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_bits.cc b/src/grib_accessor_class_bits.cc index 298426465..bb291b439 100644 --- a/src/grib_accessor_class_bits.cc +++ b/src/grib_accessor_class_bits.cc @@ -82,29 +82,29 @@ static grib_accessor_class _grib_accessor_class_bits = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - 0, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + 0, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ 0, /* get number of values */ &byte_count, /* get number of bytes */ 0, /* get offset to bytes */ &get_native_type, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - &pack_long, /* grib_pack procedures long */ - &unpack_long, /* grib_unpack procedures long */ - &pack_double, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - &unpack_double, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - &unpack_string, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - &unpack_bytes, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + &pack_long, /* pack_long */ + &unpack_long, /* unpack_long */ + &pack_double, /* pack_double */ + 0, /* pack_float */ + &unpack_double, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + &unpack_string, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + &unpack_bytes, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -113,10 +113,10 @@ static grib_accessor_class _grib_accessor_class_bits = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -128,7 +128,7 @@ grib_accessor_class* grib_accessor_class_bits = &_grib_accessor_class_bits; //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_bits_per_value.cc b/src/grib_accessor_class_bits_per_value.cc index 1c14659bf..60301badd 100644 --- a/src/grib_accessor_class_bits_per_value.cc +++ b/src/grib_accessor_class_bits_per_value.cc @@ -61,29 +61,29 @@ static grib_accessor_class _grib_accessor_class_bits_per_value = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - 0, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + 0, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ 0, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - &pack_long, /* grib_pack procedures long */ - &unpack_long, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - 0, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + &pack_long, /* pack_long */ + &unpack_long, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + 0, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -92,10 +92,10 @@ static grib_accessor_class _grib_accessor_class_bits_per_value = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -107,7 +107,7 @@ grib_accessor_class* grib_accessor_class_bits_per_value = &_grib_accessor_class_ //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_blob.cc b/src/grib_accessor_class_blob.cc index 63dc86562..ffd13c700 100644 --- a/src/grib_accessor_class_blob.cc +++ b/src/grib_accessor_class_blob.cc @@ -54,29 +54,29 @@ static grib_accessor_class _grib_accessor_class_blob = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - &dump, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + &dump, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ 0, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ &get_native_type, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - 0, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - &unpack_bytes, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + 0, /* pack_long */ + 0, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + 0, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + &unpack_bytes, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -85,10 +85,10 @@ static grib_accessor_class _grib_accessor_class_blob = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -100,7 +100,7 @@ grib_accessor_class* grib_accessor_class_blob = &_grib_accessor_class_blob; //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_box.cc b/src/grib_accessor_class_box.cc index 8ebe15b1a..3d99fa566 100644 --- a/src/grib_accessor_class_box.cc +++ b/src/grib_accessor_class_box.cc @@ -54,29 +54,29 @@ static grib_accessor_class _grib_accessor_class_box = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - &dump, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + &dump, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ 0, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - 0, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + 0, /* pack_long */ + 0, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + 0, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -85,10 +85,10 @@ static grib_accessor_class _grib_accessor_class_box = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -100,7 +100,7 @@ grib_accessor_class* grib_accessor_class_box = &_grib_accessor_class_box; //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_budgdate.cc b/src/grib_accessor_class_budgdate.cc index 449da48b5..effa6e8df 100644 --- a/src/grib_accessor_class_budgdate.cc +++ b/src/grib_accessor_class_budgdate.cc @@ -61,29 +61,29 @@ static grib_accessor_class _grib_accessor_class_budgdate = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - 0, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + 0, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ 0, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - &pack_long, /* grib_pack procedures long */ - &unpack_long, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - 0, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + &pack_long, /* pack_long */ + &unpack_long, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + 0, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -92,10 +92,10 @@ static grib_accessor_class _grib_accessor_class_budgdate = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -107,7 +107,7 @@ grib_accessor_class* grib_accessor_class_budgdate = &_grib_accessor_class_budgda //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_bufr_data_array.cc b/src/grib_accessor_class_bufr_data_array.cc index 7164706c7..64731fa28 100644 --- a/src/grib_accessor_class_bufr_data_array.cc +++ b/src/grib_accessor_class_bufr_data_array.cc @@ -164,29 +164,29 @@ static grib_accessor_class _grib_accessor_class_bufr_data_array = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - &destroy, /* free mem */ - &dump, /* describes himself */ - &next_offset, /* get length of section */ + &destroy, /* destroy */ + &dump, /* dump */ + &next_offset, /* next_offset */ 0, /* get length of string */ &value_count, /* get number of values */ &byte_count, /* get number of bytes */ &byte_offset, /* get offset to bytes */ &get_native_type, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - &pack_long, /* grib_pack procedures long */ - 0, /* grib_unpack procedures long */ - &pack_double, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - &unpack_double, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + &pack_long, /* pack_long */ + 0, /* unpack_long */ + &pack_double, /* pack_double */ + 0, /* pack_float */ + &unpack_double, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -195,10 +195,10 @@ static grib_accessor_class _grib_accessor_class_bufr_data_array = { 0, /* nearest_smaller_value */ 0, /* next accessor */ &compare, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -210,7 +210,7 @@ grib_accessor_class* grib_accessor_class_bufr_data_array = &_grib_accessor_class //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_bufr_data_element.cc b/src/grib_accessor_class_bufr_data_element.cc index e46ff086e..0fa991ced 100644 --- a/src/grib_accessor_class_bufr_data_element.cc +++ b/src/grib_accessor_class_bufr_data_element.cc @@ -96,29 +96,29 @@ static grib_accessor_class _grib_accessor_class_bufr_data_element = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - &destroy, /* free mem */ - &dump, /* describes himself */ - 0, /* get length of section */ + &destroy, /* destroy */ + &dump, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ &value_count, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ &get_native_type, /* get native type */ 0, /* get sub_section */ - &pack_missing, /* grib_pack procedures long */ - &is_missing, /* grib_pack procedures long */ - &pack_long, /* grib_pack procedures long */ - &unpack_long, /* grib_unpack procedures long */ - &pack_double, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - &unpack_double, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - &pack_string, /* grib_pack procedures string */ - &unpack_string, /* grib_unpack procedures string */ - &pack_string_array, /* grib_pack array procedures string */ - &unpack_string_array, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + &pack_missing, /* pack_missing */ + &is_missing, /* is_missing */ + &pack_long, /* pack_long */ + &unpack_long, /* unpack_long */ + &pack_double, /* pack_double */ + 0, /* pack_float */ + &unpack_double, /* unpack_double */ + 0, /* unpack_float */ + &pack_string, /* pack_string */ + &unpack_string, /* unpack_string */ + &pack_string_array, /* pack_string_array */ + &unpack_string_array, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -127,10 +127,10 @@ static grib_accessor_class _grib_accessor_class_bufr_data_element = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - &unpack_double_element, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + &unpack_double_element, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ &make_clone, /* clone accessor */ @@ -142,7 +142,7 @@ grib_accessor_class* grib_accessor_class_bufr_data_element = &_grib_accessor_cla //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_bufr_elements_table.cc b/src/grib_accessor_class_bufr_elements_table.cc index 236ab5681..b804ec269 100644 --- a/src/grib_accessor_class_bufr_elements_table.cc +++ b/src/grib_accessor_class_bufr_elements_table.cc @@ -95,29 +95,29 @@ static grib_accessor_class _grib_accessor_class_bufr_elements_table = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - 0, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + 0, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ &value_count, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ &get_native_type, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - &unpack_long, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - &unpack_double, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - &unpack_string, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + 0, /* pack_long */ + &unpack_long, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + &unpack_double, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + &unpack_string, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -126,10 +126,10 @@ static grib_accessor_class _grib_accessor_class_bufr_elements_table = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -141,7 +141,7 @@ grib_accessor_class* grib_accessor_class_bufr_elements_table = &_grib_accessor_c //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_bufr_extract_area_subsets.cc b/src/grib_accessor_class_bufr_extract_area_subsets.cc index 3dfe69f7a..a7519615c 100644 --- a/src/grib_accessor_class_bufr_extract_area_subsets.cc +++ b/src/grib_accessor_class_bufr_extract_area_subsets.cc @@ -73,29 +73,29 @@ static grib_accessor_class _grib_accessor_class_bufr_extract_area_subsets = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - 0, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + 0, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ 0, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ &get_native_type, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - &pack_long, /* grib_pack procedures long */ - 0, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - 0, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + &pack_long, /* pack_long */ + 0, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + 0, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -104,10 +104,10 @@ static grib_accessor_class _grib_accessor_class_bufr_extract_area_subsets = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -119,7 +119,7 @@ grib_accessor_class* grib_accessor_class_bufr_extract_area_subsets = &_grib_acce //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_bufr_extract_datetime_subsets.cc b/src/grib_accessor_class_bufr_extract_datetime_subsets.cc index e2efdbcef..b9daf0de0 100644 --- a/src/grib_accessor_class_bufr_extract_datetime_subsets.cc +++ b/src/grib_accessor_class_bufr_extract_datetime_subsets.cc @@ -59,29 +59,29 @@ static grib_accessor_class _grib_accessor_class_bufr_extract_datetime_subsets = 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - 0, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + 0, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ 0, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ &get_native_type, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - &pack_long, /* grib_pack procedures long */ - 0, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - 0, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + &pack_long, /* pack_long */ + 0, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + 0, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -90,10 +90,10 @@ static grib_accessor_class _grib_accessor_class_bufr_extract_datetime_subsets = 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -105,7 +105,7 @@ grib_accessor_class* grib_accessor_class_bufr_extract_datetime_subsets = &_grib_ //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_bufr_extract_subsets.cc b/src/grib_accessor_class_bufr_extract_subsets.cc index 3920286ad..673c2b36d 100644 --- a/src/grib_accessor_class_bufr_extract_subsets.cc +++ b/src/grib_accessor_class_bufr_extract_subsets.cc @@ -61,29 +61,29 @@ static grib_accessor_class _grib_accessor_class_bufr_extract_subsets = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - 0, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + 0, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ 0, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ &get_native_type, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - &pack_long, /* grib_pack procedures long */ - 0, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - 0, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + &pack_long, /* pack_long */ + 0, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + 0, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -92,10 +92,10 @@ static grib_accessor_class _grib_accessor_class_bufr_extract_subsets = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -107,7 +107,7 @@ grib_accessor_class* grib_accessor_class_bufr_extract_subsets = &_grib_accessor_ //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_bufr_group.cc b/src/grib_accessor_class_bufr_group.cc index cad594c7c..bffa53fe6 100644 --- a/src/grib_accessor_class_bufr_group.cc +++ b/src/grib_accessor_class_bufr_group.cc @@ -57,29 +57,29 @@ static grib_accessor_class _grib_accessor_class_bufr_group = { 0, /* init_class */ 0, /* init */ 0, /* post_init */ - 0, /* free mem */ - &dump, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + &dump, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ 0, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - 0, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + 0, /* pack_long */ + 0, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + 0, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -88,10 +88,10 @@ static grib_accessor_class _grib_accessor_class_bufr_group = { 0, /* nearest_smaller_value */ &next, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -103,7 +103,7 @@ grib_accessor_class* grib_accessor_class_bufr_group = &_grib_accessor_class_bufr //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_bufr_simple_thinning.cc b/src/grib_accessor_class_bufr_simple_thinning.cc index 3722ce100..17404fa6d 100644 --- a/src/grib_accessor_class_bufr_simple_thinning.cc +++ b/src/grib_accessor_class_bufr_simple_thinning.cc @@ -65,29 +65,29 @@ static grib_accessor_class _grib_accessor_class_bufr_simple_thinning = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - 0, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + 0, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ 0, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ &get_native_type, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - &pack_long, /* grib_pack procedures long */ - 0, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - 0, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + &pack_long, /* pack_long */ + 0, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + 0, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -96,10 +96,10 @@ static grib_accessor_class _grib_accessor_class_bufr_simple_thinning = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -111,7 +111,7 @@ grib_accessor_class* grib_accessor_class_bufr_simple_thinning = &_grib_accessor_ //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_bufr_string_values.cc b/src/grib_accessor_class_bufr_string_values.cc index 40eac7014..a7e8a9690 100644 --- a/src/grib_accessor_class_bufr_string_values.cc +++ b/src/grib_accessor_class_bufr_string_values.cc @@ -73,29 +73,29 @@ static grib_accessor_class _grib_accessor_class_bufr_string_values = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - &destroy, /* free mem */ - &dump, /* describes himself */ - 0, /* get length of section */ + &destroy, /* destroy */ + &dump, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ &value_count, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - 0, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - &pack_string, /* grib_pack procedures string */ - &unpack_string, /* grib_unpack procedures string */ - &pack_string_array, /* grib_pack array procedures string */ - &unpack_string_array, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + 0, /* pack_long */ + 0, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + 0, /* unpack_double */ + 0, /* unpack_float */ + &pack_string, /* pack_string */ + &unpack_string, /* unpack_string */ + &pack_string_array, /* pack_string_array */ + &unpack_string_array, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -104,10 +104,10 @@ static grib_accessor_class _grib_accessor_class_bufr_string_values = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -119,7 +119,7 @@ grib_accessor_class* grib_accessor_class_bufr_string_values = &_grib_accessor_cl //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_bufrdc_expanded_descriptors.cc b/src/grib_accessor_class_bufrdc_expanded_descriptors.cc index 1e3505d2a..a887154ff 100644 --- a/src/grib_accessor_class_bufrdc_expanded_descriptors.cc +++ b/src/grib_accessor_class_bufrdc_expanded_descriptors.cc @@ -71,29 +71,29 @@ static grib_accessor_class _grib_accessor_class_bufrdc_expanded_descriptors = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - &destroy, /* free mem */ - &dump, /* describes himself */ - 0, /* get length of section */ + &destroy, /* destroy */ + &dump, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ &value_count, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - &unpack_long, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - 0, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - &unpack_string_array, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + 0, /* pack_long */ + &unpack_long, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + 0, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + &unpack_string_array, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -102,10 +102,10 @@ static grib_accessor_class _grib_accessor_class_bufrdc_expanded_descriptors = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -117,7 +117,7 @@ grib_accessor_class* grib_accessor_class_bufrdc_expanded_descriptors = &_grib_ac //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_bytes.cc b/src/grib_accessor_class_bytes.cc index a43359b61..c8499ecfd 100644 --- a/src/grib_accessor_class_bytes.cc +++ b/src/grib_accessor_class_bytes.cc @@ -55,29 +55,29 @@ static grib_accessor_class _grib_accessor_class_bytes = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - 0, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + 0, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ 0, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ &get_native_type, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - 0, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - &pack_string, /* grib_pack procedures string */ - &unpack_string, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + 0, /* pack_long */ + 0, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + 0, /* unpack_double */ + 0, /* unpack_float */ + &pack_string, /* pack_string */ + &unpack_string, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -86,10 +86,10 @@ static grib_accessor_class _grib_accessor_class_bytes = { 0, /* nearest_smaller_value */ 0, /* next accessor */ &compare, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -101,7 +101,7 @@ grib_accessor_class* grib_accessor_class_bytes = &_grib_accessor_class_bytes; //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_change_alternative_row_scanning.cc b/src/grib_accessor_class_change_alternative_row_scanning.cc index 90c0ec0d2..d4c2056c9 100644 --- a/src/grib_accessor_class_change_alternative_row_scanning.cc +++ b/src/grib_accessor_class_change_alternative_row_scanning.cc @@ -63,29 +63,29 @@ static grib_accessor_class _grib_accessor_class_change_alternative_row_scanning 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - 0, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + 0, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ 0, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ &get_native_type, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - &pack_long, /* grib_pack procedures long */ - &unpack_long, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - 0, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + &pack_long, /* pack_long */ + &unpack_long, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + 0, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -94,10 +94,10 @@ static grib_accessor_class _grib_accessor_class_change_alternative_row_scanning 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -109,7 +109,7 @@ grib_accessor_class* grib_accessor_class_change_alternative_row_scanning = &_gri //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_change_scanning_direction.cc b/src/grib_accessor_class_change_scanning_direction.cc index 6ebe8f7cb..832339e7a 100644 --- a/src/grib_accessor_class_change_scanning_direction.cc +++ b/src/grib_accessor_class_change_scanning_direction.cc @@ -71,29 +71,29 @@ static grib_accessor_class _grib_accessor_class_change_scanning_direction = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - 0, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + 0, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ 0, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ &get_native_type, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - &pack_long, /* grib_pack procedures long */ - &unpack_long, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - 0, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + &pack_long, /* pack_long */ + &unpack_long, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + 0, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -102,10 +102,10 @@ static grib_accessor_class _grib_accessor_class_change_scanning_direction = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -117,7 +117,7 @@ grib_accessor_class* grib_accessor_class_change_scanning_direction = &_grib_acce //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_check_internal_version.cc b/src/grib_accessor_class_check_internal_version.cc index fa765749a..91794ab1d 100644 --- a/src/grib_accessor_class_check_internal_version.cc +++ b/src/grib_accessor_class_check_internal_version.cc @@ -54,29 +54,29 @@ static grib_accessor_class _grib_accessor_class_check_internal_version = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - 0, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + 0, /* dump */ + 0, /* next_offset */ &string_length, /* get length of string */ &value_count, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - 0, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + 0, /* pack_long */ + 0, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + 0, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -85,10 +85,10 @@ static grib_accessor_class _grib_accessor_class_check_internal_version = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -100,7 +100,7 @@ grib_accessor_class* grib_accessor_class_check_internal_version = &_grib_accesso //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_closest_date.cc b/src/grib_accessor_class_closest_date.cc index 6f3172d85..fd1b68ae4 100644 --- a/src/grib_accessor_class_closest_date.cc +++ b/src/grib_accessor_class_closest_date.cc @@ -77,29 +77,29 @@ static grib_accessor_class _grib_accessor_class_closest_date = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - &dump, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + &dump, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ 0, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - &unpack_long, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - &unpack_double, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + 0, /* pack_long */ + &unpack_long, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + &unpack_double, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -108,10 +108,10 @@ static grib_accessor_class _grib_accessor_class_closest_date = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -123,7 +123,7 @@ grib_accessor_class* grib_accessor_class_closest_date = &_grib_accessor_class_cl //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_codeflag.cc b/src/grib_accessor_class_codeflag.cc index eac1d3fd9..376e84e06 100644 --- a/src/grib_accessor_class_codeflag.cc +++ b/src/grib_accessor_class_codeflag.cc @@ -63,29 +63,29 @@ static grib_accessor_class _grib_accessor_class_codeflag = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - &dump, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + &dump, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ &value_count, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - 0, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + 0, /* pack_long */ + 0, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + 0, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -94,10 +94,10 @@ static grib_accessor_class _grib_accessor_class_codeflag = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -109,7 +109,7 @@ grib_accessor_class* grib_accessor_class_codeflag = &_grib_accessor_class_codefl //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_codetable.cc b/src/grib_accessor_class_codetable.cc index db7e8b53c..93058b81b 100644 --- a/src/grib_accessor_class_codetable.cc +++ b/src/grib_accessor_class_codetable.cc @@ -107,29 +107,29 @@ static grib_accessor_class _grib_accessor_class_codetable = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - &destroy, /* free mem */ - &dump, /* describes himself */ - 0, /* get length of section */ + &destroy, /* destroy */ + &dump, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ &value_count, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ &get_native_type, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - &unpack_long, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - 0, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - &pack_string, /* grib_pack procedures string */ - &unpack_string, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + 0, /* pack_long */ + &unpack_long, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + 0, /* unpack_double */ + 0, /* unpack_float */ + &pack_string, /* pack_string */ + &unpack_string, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ &pack_expression, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -138,10 +138,10 @@ static grib_accessor_class _grib_accessor_class_codetable = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -153,7 +153,7 @@ grib_accessor_class* grib_accessor_class_codetable = &_grib_accessor_class_codet //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_codetable_title.cc b/src/grib_accessor_class_codetable_title.cc index 5b43c5076..d7ef6a6bc 100644 --- a/src/grib_accessor_class_codetable_title.cc +++ b/src/grib_accessor_class_codetable_title.cc @@ -55,29 +55,29 @@ static grib_accessor_class _grib_accessor_class_codetable_title = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - 0, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + 0, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ 0, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ &get_native_type, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - 0, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - &unpack_string, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + 0, /* pack_long */ + 0, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + 0, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + &unpack_string, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -86,10 +86,10 @@ static grib_accessor_class _grib_accessor_class_codetable_title = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -101,7 +101,7 @@ grib_accessor_class* grib_accessor_class_codetable_title = &_grib_accessor_class //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_codetable_units.cc b/src/grib_accessor_class_codetable_units.cc index af956a675..dee16e4e8 100644 --- a/src/grib_accessor_class_codetable_units.cc +++ b/src/grib_accessor_class_codetable_units.cc @@ -55,29 +55,29 @@ static grib_accessor_class _grib_accessor_class_codetable_units = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - 0, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + 0, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ 0, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ &get_native_type, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - 0, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - &unpack_string, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + 0, /* pack_long */ + 0, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + 0, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + &unpack_string, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -86,10 +86,10 @@ static grib_accessor_class _grib_accessor_class_codetable_units = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -101,7 +101,7 @@ grib_accessor_class* grib_accessor_class_codetable_units = &_grib_accessor_class //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_concept.cc b/src/grib_accessor_class_concept.cc index 6c14f2293..18c65db23 100644 --- a/src/grib_accessor_class_concept.cc +++ b/src/grib_accessor_class_concept.cc @@ -72,29 +72,29 @@ static grib_accessor_class _grib_accessor_class_concept = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - &destroy, /* free mem */ - &dump, /* describes himself */ - 0, /* get length of section */ + &destroy, /* destroy */ + &dump, /* dump */ + 0, /* next_offset */ &string_length, /* get length of string */ &value_count, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ &get_native_type, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - &pack_long, /* grib_pack procedures long */ - &unpack_long, /* grib_unpack procedures long */ - &pack_double, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - &unpack_double, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - &pack_string, /* grib_pack procedures string */ - &unpack_string, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + &pack_long, /* pack_long */ + &unpack_long, /* unpack_long */ + &pack_double, /* pack_double */ + 0, /* pack_float */ + &unpack_double, /* unpack_double */ + 0, /* unpack_float */ + &pack_string, /* pack_string */ + &unpack_string, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -103,10 +103,10 @@ static grib_accessor_class _grib_accessor_class_concept = { 0, /* nearest_smaller_value */ 0, /* next accessor */ &compare, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -118,7 +118,7 @@ grib_accessor_class* grib_accessor_class_concept = &_grib_accessor_class_concept //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_constant.cc b/src/grib_accessor_class_constant.cc index 259c89715..6509fa0eb 100644 --- a/src/grib_accessor_class_constant.cc +++ b/src/grib_accessor_class_constant.cc @@ -64,29 +64,29 @@ static grib_accessor_class _grib_accessor_class_constant = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - 0, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + 0, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ 0, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - &pack_long, /* grib_pack procedures long */ - 0, /* grib_unpack procedures long */ - &pack_double, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - 0, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - &pack_string, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - &pack_bytes, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + &pack_long, /* pack_long */ + 0, /* unpack_long */ + &pack_double, /* pack_double */ + 0, /* pack_float */ + 0, /* unpack_double */ + 0, /* unpack_float */ + &pack_string, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + &pack_bytes, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -95,10 +95,10 @@ static grib_accessor_class _grib_accessor_class_constant = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -110,7 +110,7 @@ grib_accessor_class* grib_accessor_class_constant = &_grib_accessor_class_consta //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_count_file.cc b/src/grib_accessor_class_count_file.cc index 84964a9dc..767a7c04b 100644 --- a/src/grib_accessor_class_count_file.cc +++ b/src/grib_accessor_class_count_file.cc @@ -56,29 +56,29 @@ static grib_accessor_class _grib_accessor_class_count_file = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - 0, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + 0, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ 0, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - &unpack_long, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - 0, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + 0, /* pack_long */ + &unpack_long, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + 0, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -87,10 +87,10 @@ static grib_accessor_class _grib_accessor_class_count_file = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -102,7 +102,7 @@ grib_accessor_class* grib_accessor_class_count_file = &_grib_accessor_class_coun //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_count_missing.cc b/src/grib_accessor_class_count_missing.cc index 42924144f..be7e56d45 100644 --- a/src/grib_accessor_class_count_missing.cc +++ b/src/grib_accessor_class_count_missing.cc @@ -63,29 +63,29 @@ static grib_accessor_class _grib_accessor_class_count_missing = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - 0, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + 0, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ &value_count, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - &unpack_long, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - 0, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + 0, /* pack_long */ + &unpack_long, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + 0, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -94,10 +94,10 @@ static grib_accessor_class _grib_accessor_class_count_missing = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -109,7 +109,7 @@ grib_accessor_class* grib_accessor_class_count_missing = &_grib_accessor_class_c //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_count_total.cc b/src/grib_accessor_class_count_total.cc index f66b3be7a..655c56cbe 100644 --- a/src/grib_accessor_class_count_total.cc +++ b/src/grib_accessor_class_count_total.cc @@ -58,29 +58,29 @@ static grib_accessor_class _grib_accessor_class_count_total = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - 0, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + 0, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ 0, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - &unpack_long, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - 0, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + 0, /* pack_long */ + &unpack_long, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + 0, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -89,10 +89,10 @@ static grib_accessor_class _grib_accessor_class_count_total = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -104,7 +104,7 @@ grib_accessor_class* grib_accessor_class_count_total = &_grib_accessor_class_cou //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_data_2order_packing.cc b/src/grib_accessor_class_data_2order_packing.cc index d0361361f..f57505682 100644 --- a/src/grib_accessor_class_data_2order_packing.cc +++ b/src/grib_accessor_class_data_2order_packing.cc @@ -110,29 +110,29 @@ static grib_accessor_class _grib_accessor_class_data_2order_packing = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - 0, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + 0, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ &value_count, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_unpack procedures long */ - &pack_double, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - &unpack_double, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + 0, /* pack_long */ + 0, /* unpack_long */ + &pack_double, /* pack_double */ + 0, /* pack_float */ + &unpack_double, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -141,10 +141,10 @@ static grib_accessor_class _grib_accessor_class_data_2order_packing = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -156,7 +156,7 @@ grib_accessor_class* grib_accessor_class_data_2order_packing = &_grib_accessor_c //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_data_apply_bitmap.cc b/src/grib_accessor_class_data_apply_bitmap.cc index 703c4c83e..b187dec39 100644 --- a/src/grib_accessor_class_data_apply_bitmap.cc +++ b/src/grib_accessor_class_data_apply_bitmap.cc @@ -75,29 +75,29 @@ static grib_accessor_class _grib_accessor_class_data_apply_bitmap = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - &dump, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + &dump, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ &value_count, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ &get_native_type, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_unpack procedures long */ - &pack_double, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - &unpack_double, /* grib_unpack procedures double */ - &unpack_float, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + 0, /* pack_long */ + 0, /* unpack_long */ + &pack_double, /* pack_double */ + 0, /* pack_float */ + &unpack_double, /* unpack_double */ + &unpack_float, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -106,10 +106,10 @@ static grib_accessor_class _grib_accessor_class_data_apply_bitmap = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - &unpack_double_element, /* unpack only ith value */ - 0, /* unpack only ith value */ - &unpack_double_element_set, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + &unpack_double_element, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + &unpack_double_element_set, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -121,7 +121,7 @@ grib_accessor_class* grib_accessor_class_data_apply_bitmap = &_grib_accessor_cla //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_data_apply_boustrophedonic.cc b/src/grib_accessor_class_data_apply_boustrophedonic.cc index 29c9ebdf8..4177e8ef6 100644 --- a/src/grib_accessor_class_data_apply_boustrophedonic.cc +++ b/src/grib_accessor_class_data_apply_boustrophedonic.cc @@ -73,29 +73,29 @@ static grib_accessor_class _grib_accessor_class_data_apply_boustrophedonic = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - &dump, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + &dump, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ &value_count, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ &get_native_type, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_unpack procedures long */ - &pack_double, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - &unpack_double, /* grib_unpack procedures double */ - &unpack_float, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + 0, /* pack_long */ + 0, /* unpack_long */ + &pack_double, /* pack_double */ + 0, /* pack_float */ + &unpack_double, /* unpack_double */ + &unpack_float, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -104,10 +104,10 @@ static grib_accessor_class _grib_accessor_class_data_apply_boustrophedonic = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - &unpack_double_element, /* unpack only ith value */ - 0, /* unpack only ith value */ - &unpack_double_element_set, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + &unpack_double_element, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + &unpack_double_element_set, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -119,7 +119,7 @@ grib_accessor_class* grib_accessor_class_data_apply_boustrophedonic = &_grib_acc //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_data_apply_boustrophedonic_bitmap.cc b/src/grib_accessor_class_data_apply_boustrophedonic_bitmap.cc index 64dfe9b1e..5da706cbd 100644 --- a/src/grib_accessor_class_data_apply_boustrophedonic_bitmap.cc +++ b/src/grib_accessor_class_data_apply_boustrophedonic_bitmap.cc @@ -76,29 +76,29 @@ static grib_accessor_class _grib_accessor_class_data_apply_boustrophedonic_bitma 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - &dump, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + &dump, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ &value_count, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ &get_native_type, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_unpack procedures long */ - &pack_double, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - &unpack_double, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + 0, /* pack_long */ + 0, /* unpack_long */ + &pack_double, /* pack_double */ + 0, /* pack_float */ + &unpack_double, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -107,10 +107,10 @@ static grib_accessor_class _grib_accessor_class_data_apply_boustrophedonic_bitma 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - &unpack_double_element, /* unpack only ith value */ - 0, /* unpack only ith value */ - &unpack_double_element_set, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + &unpack_double_element, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + &unpack_double_element_set, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -122,7 +122,7 @@ grib_accessor_class* grib_accessor_class_data_apply_boustrophedonic_bitmap = &_g //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_data_apply_gdsnotpresent.cc b/src/grib_accessor_class_data_apply_gdsnotpresent.cc index f81da3b05..4de0cb09c 100644 --- a/src/grib_accessor_class_data_apply_gdsnotpresent.cc +++ b/src/grib_accessor_class_data_apply_gdsnotpresent.cc @@ -80,29 +80,29 @@ static grib_accessor_class _grib_accessor_class_data_apply_gdsnotpresent = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - &dump, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + &dump, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ &value_count, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ &get_native_type, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_unpack procedures long */ - &pack_double, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - &unpack_double, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + 0, /* pack_long */ + 0, /* unpack_long */ + &pack_double, /* pack_double */ + 0, /* pack_float */ + &unpack_double, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -111,10 +111,10 @@ static grib_accessor_class _grib_accessor_class_data_apply_gdsnotpresent = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -126,7 +126,7 @@ grib_accessor_class* grib_accessor_class_data_apply_gdsnotpresent = &_grib_acces //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_data_ccsds_packing.cc b/src/grib_accessor_class_data_ccsds_packing.cc index d9ca25fe8..45d4e6f7d 100644 --- a/src/grib_accessor_class_data_ccsds_packing.cc +++ b/src/grib_accessor_class_data_ccsds_packing.cc @@ -89,29 +89,29 @@ static grib_accessor_class _grib_accessor_class_data_ccsds_packing = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - 0, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + 0, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ &value_count, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_unpack procedures long */ - &pack_double, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - &unpack_double, /* grib_unpack procedures double */ - &unpack_float, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + 0, /* pack_long */ + 0, /* unpack_long */ + &pack_double, /* pack_double */ + 0, /* pack_float */ + &unpack_double, /* unpack_double */ + &unpack_float, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -120,10 +120,10 @@ static grib_accessor_class _grib_accessor_class_data_ccsds_packing = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - &unpack_double_element, /* unpack only ith value */ - 0, /* unpack only ith value */ - &unpack_double_element_set, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + &unpack_double_element, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + &unpack_double_element_set, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -135,7 +135,7 @@ grib_accessor_class* grib_accessor_class_data_ccsds_packing = &_grib_accessor_cl //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_data_complex_packing.cc b/src/grib_accessor_class_data_complex_packing.cc index 2e99ce342..08919dee4 100644 --- a/src/grib_accessor_class_data_complex_packing.cc +++ b/src/grib_accessor_class_data_complex_packing.cc @@ -97,29 +97,29 @@ static grib_accessor_class _grib_accessor_class_data_complex_packing = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - 0, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + 0, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ &value_count, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_unpack procedures long */ - &pack_double, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - &unpack_double, /* grib_unpack procedures double */ - &unpack_float, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + 0, /* pack_long */ + 0, /* unpack_long */ + &pack_double, /* pack_double */ + 0, /* pack_float */ + &unpack_double, /* unpack_double */ + &unpack_float, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -128,10 +128,10 @@ static grib_accessor_class _grib_accessor_class_data_complex_packing = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -143,7 +143,7 @@ grib_accessor_class* grib_accessor_class_data_complex_packing = &_grib_accessor_ //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_data_dummy_field.cc b/src/grib_accessor_class_data_dummy_field.cc index 8856f7155..61391b800 100644 --- a/src/grib_accessor_class_data_dummy_field.cc +++ b/src/grib_accessor_class_data_dummy_field.cc @@ -85,29 +85,29 @@ static grib_accessor_class _grib_accessor_class_data_dummy_field = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - 0, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + 0, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ &value_count, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_unpack procedures long */ - &pack_double, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - &unpack_double, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + 0, /* pack_long */ + 0, /* unpack_long */ + &pack_double, /* pack_double */ + 0, /* pack_float */ + &unpack_double, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -116,10 +116,10 @@ static grib_accessor_class _grib_accessor_class_data_dummy_field = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -131,7 +131,7 @@ grib_accessor_class* grib_accessor_class_data_dummy_field = &_grib_accessor_clas //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_data_g1complex_packing.cc b/src/grib_accessor_class_data_g1complex_packing.cc index dde172c77..9cc256d6a 100644 --- a/src/grib_accessor_class_data_g1complex_packing.cc +++ b/src/grib_accessor_class_data_g1complex_packing.cc @@ -92,29 +92,29 @@ static grib_accessor_class _grib_accessor_class_data_g1complex_packing = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - 0, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + 0, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ 0, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_unpack procedures long */ - &pack_double, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - 0, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + 0, /* pack_long */ + 0, /* unpack_long */ + &pack_double, /* pack_double */ + 0, /* pack_float */ + 0, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -123,10 +123,10 @@ static grib_accessor_class _grib_accessor_class_data_g1complex_packing = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -138,7 +138,7 @@ grib_accessor_class* grib_accessor_class_data_g1complex_packing = &_grib_accesso //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_data_g1second_order_constant_width_packing.cc b/src/grib_accessor_class_data_g1second_order_constant_width_packing.cc index 77653a898..357491283 100644 --- a/src/grib_accessor_class_data_g1second_order_constant_width_packing.cc +++ b/src/grib_accessor_class_data_g1second_order_constant_width_packing.cc @@ -111,29 +111,29 @@ static grib_accessor_class _grib_accessor_class_data_g1second_order_constant_wid 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - 0, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + 0, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ &value_count, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_unpack procedures long */ - &pack_double, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - &unpack_double, /* grib_unpack procedures double */ - &unpack_float, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + 0, /* pack_long */ + 0, /* unpack_long */ + &pack_double, /* pack_double */ + 0, /* pack_float */ + &unpack_double, /* unpack_double */ + &unpack_float, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -142,10 +142,10 @@ static grib_accessor_class _grib_accessor_class_data_g1second_order_constant_wid 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - &unpack_double_element, /* unpack only ith value */ - 0, /* unpack only ith value */ - &unpack_double_element_set, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + &unpack_double_element, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + &unpack_double_element_set, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -157,7 +157,7 @@ grib_accessor_class* grib_accessor_class_data_g1second_order_constant_width_pack //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_data_g1second_order_general_extended_packing.cc b/src/grib_accessor_class_data_g1second_order_general_extended_packing.cc index 74adb28bc..41567804a 100644 --- a/src/grib_accessor_class_data_g1second_order_general_extended_packing.cc +++ b/src/grib_accessor_class_data_g1second_order_general_extended_packing.cc @@ -131,29 +131,29 @@ static grib_accessor_class _grib_accessor_class_data_g1second_order_general_exte 0, /* init_class */ &init, /* init */ 0, /* post_init */ - &destroy, /* free mem */ - 0, /* describes himself */ - 0, /* get length of section */ + &destroy, /* destroy */ + 0, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ &value_count, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_unpack procedures long */ - &pack_double, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - &unpack_double, /* grib_unpack procedures double */ - &unpack_float, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + 0, /* pack_long */ + 0, /* unpack_long */ + &pack_double, /* pack_double */ + 0, /* pack_float */ + &unpack_double, /* unpack_double */ + &unpack_float, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -162,10 +162,10 @@ static grib_accessor_class _grib_accessor_class_data_g1second_order_general_exte 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - &unpack_double_element, /* unpack only ith value */ - 0, /* unpack only ith value */ - &unpack_double_element_set, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + &unpack_double_element, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + &unpack_double_element_set, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -177,7 +177,7 @@ grib_accessor_class* grib_accessor_class_data_g1second_order_general_extended_pa //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_data_g1second_order_general_packing.cc b/src/grib_accessor_class_data_g1second_order_general_packing.cc index c4235f167..856a68930 100644 --- a/src/grib_accessor_class_data_g1second_order_general_packing.cc +++ b/src/grib_accessor_class_data_g1second_order_general_packing.cc @@ -108,29 +108,29 @@ static grib_accessor_class _grib_accessor_class_data_g1second_order_general_pack 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - 0, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + 0, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ &value_count, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_unpack procedures long */ - &pack_double, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - &unpack_double, /* grib_unpack procedures double */ - &unpack_float, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + 0, /* pack_long */ + 0, /* unpack_long */ + &pack_double, /* pack_double */ + 0, /* pack_float */ + &unpack_double, /* unpack_double */ + &unpack_float, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -139,10 +139,10 @@ static grib_accessor_class _grib_accessor_class_data_g1second_order_general_pack 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -154,7 +154,7 @@ grib_accessor_class* grib_accessor_class_data_g1second_order_general_packing = & //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_data_g1second_order_row_by_row_packing.cc b/src/grib_accessor_class_data_g1second_order_row_by_row_packing.cc index a336e7193..9f51021b7 100644 --- a/src/grib_accessor_class_data_g1second_order_row_by_row_packing.cc +++ b/src/grib_accessor_class_data_g1second_order_row_by_row_packing.cc @@ -108,29 +108,29 @@ static grib_accessor_class _grib_accessor_class_data_g1second_order_row_by_row_p 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - 0, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + 0, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ &value_count, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_unpack procedures long */ - &pack_double, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - &unpack_double, /* grib_unpack procedures double */ - &unpack_float, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + 0, /* pack_long */ + 0, /* unpack_long */ + &pack_double, /* pack_double */ + 0, /* pack_float */ + &unpack_double, /* unpack_double */ + &unpack_float, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -139,10 +139,10 @@ static grib_accessor_class _grib_accessor_class_data_g1second_order_row_by_row_p 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -154,7 +154,7 @@ grib_accessor_class* grib_accessor_class_data_g1second_order_row_by_row_packing //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_data_g1secondary_bitmap.cc b/src/grib_accessor_class_data_g1secondary_bitmap.cc index d2d9b6042..31ed7bef3 100644 --- a/src/grib_accessor_class_data_g1secondary_bitmap.cc +++ b/src/grib_accessor_class_data_g1secondary_bitmap.cc @@ -61,29 +61,29 @@ static grib_accessor_class _grib_accessor_class_data_g1secondary_bitmap = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - 0, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + 0, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ &value_count, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_unpack procedures long */ - &pack_double, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - 0, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + 0, /* pack_long */ + 0, /* unpack_long */ + &pack_double, /* pack_double */ + 0, /* pack_float */ + 0, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -92,10 +92,10 @@ static grib_accessor_class _grib_accessor_class_data_g1secondary_bitmap = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -107,7 +107,7 @@ grib_accessor_class* grib_accessor_class_data_g1secondary_bitmap = &_grib_access //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_data_g1shsimple_packing.cc b/src/grib_accessor_class_data_g1shsimple_packing.cc index 9c5d64cf5..0f5e67328 100644 --- a/src/grib_accessor_class_data_g1shsimple_packing.cc +++ b/src/grib_accessor_class_data_g1shsimple_packing.cc @@ -56,29 +56,29 @@ static grib_accessor_class _grib_accessor_class_data_g1shsimple_packing = { 0, /* init_class */ 0, /* init */ 0, /* post_init */ - 0, /* free mem */ - 0, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + 0, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ &value_count, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - &unpack_double, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + 0, /* pack_long */ + 0, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + &unpack_double, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -87,10 +87,10 @@ static grib_accessor_class _grib_accessor_class_data_g1shsimple_packing = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -102,7 +102,7 @@ grib_accessor_class* grib_accessor_class_data_g1shsimple_packing = &_grib_access //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_data_g1simple_packing.cc b/src/grib_accessor_class_data_g1simple_packing.cc index f639155a1..168c0e869 100644 --- a/src/grib_accessor_class_data_g1simple_packing.cc +++ b/src/grib_accessor_class_data_g1simple_packing.cc @@ -80,29 +80,29 @@ static grib_accessor_class _grib_accessor_class_data_g1simple_packing = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - 0, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + 0, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ &value_count, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_unpack procedures long */ - &pack_double, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - 0, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + 0, /* pack_long */ + 0, /* unpack_long */ + &pack_double, /* pack_double */ + 0, /* pack_float */ + 0, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -111,10 +111,10 @@ static grib_accessor_class _grib_accessor_class_data_g1simple_packing = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -126,7 +126,7 @@ grib_accessor_class* grib_accessor_class_data_g1simple_packing = &_grib_accessor //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_data_g22order_packing.cc b/src/grib_accessor_class_data_g22order_packing.cc index a071ec2be..6c1297f0c 100644 --- a/src/grib_accessor_class_data_g22order_packing.cc +++ b/src/grib_accessor_class_data_g22order_packing.cc @@ -111,29 +111,29 @@ static grib_accessor_class _grib_accessor_class_data_g22order_packing = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - 0, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + 0, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ &value_count, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_unpack procedures long */ - &pack_double, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - &unpack_double, /* grib_unpack procedures double */ - &unpack_float, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + 0, /* pack_long */ + 0, /* unpack_long */ + &pack_double, /* pack_double */ + 0, /* pack_float */ + &unpack_double, /* unpack_double */ + &unpack_float, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -142,10 +142,10 @@ static grib_accessor_class _grib_accessor_class_data_g22order_packing = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - &unpack_double_element, /* unpack only ith value */ - 0, /* unpack only ith value */ - &unpack_double_element_set, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + &unpack_double_element, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + &unpack_double_element_set, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -157,7 +157,7 @@ grib_accessor_class* grib_accessor_class_data_g22order_packing = &_grib_accessor //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_data_g2bifourier_packing.cc b/src/grib_accessor_class_data_g2bifourier_packing.cc index 8052c9a81..cc4bcfc22 100644 --- a/src/grib_accessor_class_data_g2bifourier_packing.cc +++ b/src/grib_accessor_class_data_g2bifourier_packing.cc @@ -106,29 +106,29 @@ static grib_accessor_class _grib_accessor_class_data_g2bifourier_packing = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - 0, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + 0, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ &value_count, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_unpack procedures long */ - &pack_double, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - &unpack_double, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + 0, /* pack_long */ + 0, /* unpack_long */ + &pack_double, /* pack_double */ + 0, /* pack_float */ + &unpack_double, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -137,10 +137,10 @@ static grib_accessor_class _grib_accessor_class_data_g2bifourier_packing = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -152,7 +152,7 @@ grib_accessor_class* grib_accessor_class_data_g2bifourier_packing = &_grib_acces //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_data_g2complex_packing.cc b/src/grib_accessor_class_data_g2complex_packing.cc index 597eeefd0..d6a0b50e8 100644 --- a/src/grib_accessor_class_data_g2complex_packing.cc +++ b/src/grib_accessor_class_data_g2complex_packing.cc @@ -85,29 +85,29 @@ static grib_accessor_class _grib_accessor_class_data_g2complex_packing = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - 0, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + 0, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ &value_count, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_unpack procedures long */ - &pack_double, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - 0, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + 0, /* pack_long */ + 0, /* unpack_long */ + &pack_double, /* pack_double */ + 0, /* pack_float */ + 0, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -116,10 +116,10 @@ static grib_accessor_class _grib_accessor_class_data_g2complex_packing = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -131,7 +131,7 @@ grib_accessor_class* grib_accessor_class_data_g2complex_packing = &_grib_accesso //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_data_g2secondary_bitmap.cc b/src/grib_accessor_class_data_g2secondary_bitmap.cc index 256eb1ee4..f53c571b5 100644 --- a/src/grib_accessor_class_data_g2secondary_bitmap.cc +++ b/src/grib_accessor_class_data_g2secondary_bitmap.cc @@ -61,29 +61,29 @@ static grib_accessor_class _grib_accessor_class_data_g2secondary_bitmap = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - 0, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + 0, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ &value_count, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_unpack procedures long */ - &pack_double, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - 0, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + 0, /* pack_long */ + 0, /* unpack_long */ + &pack_double, /* pack_double */ + 0, /* pack_float */ + 0, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -92,10 +92,10 @@ static grib_accessor_class _grib_accessor_class_data_g2secondary_bitmap = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -107,7 +107,7 @@ grib_accessor_class* grib_accessor_class_data_g2secondary_bitmap = &_grib_access //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_data_g2shsimple_packing.cc b/src/grib_accessor_class_data_g2shsimple_packing.cc index 174769099..7e3b2518c 100644 --- a/src/grib_accessor_class_data_g2shsimple_packing.cc +++ b/src/grib_accessor_class_data_g2shsimple_packing.cc @@ -64,29 +64,29 @@ static grib_accessor_class _grib_accessor_class_data_g2shsimple_packing = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - 0, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + 0, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ &value_count, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_unpack procedures long */ - &pack_double, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - &unpack_double, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + 0, /* pack_long */ + 0, /* unpack_long */ + &pack_double, /* pack_double */ + 0, /* pack_float */ + &unpack_double, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -95,10 +95,10 @@ static grib_accessor_class _grib_accessor_class_data_g2shsimple_packing = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -110,7 +110,7 @@ grib_accessor_class* grib_accessor_class_data_g2shsimple_packing = &_grib_access //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_data_g2simple_packing.cc b/src/grib_accessor_class_data_g2simple_packing.cc index 05617c6f3..ab96dae61 100644 --- a/src/grib_accessor_class_data_g2simple_packing.cc +++ b/src/grib_accessor_class_data_g2simple_packing.cc @@ -74,29 +74,29 @@ static grib_accessor_class _grib_accessor_class_data_g2simple_packing = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - 0, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + 0, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ &value_count, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_unpack procedures long */ - &pack_double, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - 0, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - &pack_bytes, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + 0, /* pack_long */ + 0, /* unpack_long */ + &pack_double, /* pack_double */ + 0, /* pack_float */ + 0, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + &pack_bytes, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -105,10 +105,10 @@ static grib_accessor_class _grib_accessor_class_data_g2simple_packing = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -120,7 +120,7 @@ grib_accessor_class* grib_accessor_class_data_g2simple_packing = &_grib_accessor //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_data_g2simple_packing_with_preprocessing.cc b/src/grib_accessor_class_data_g2simple_packing_with_preprocessing.cc index 566a0d147..3cc885d9f 100644 --- a/src/grib_accessor_class_data_g2simple_packing_with_preprocessing.cc +++ b/src/grib_accessor_class_data_g2simple_packing_with_preprocessing.cc @@ -81,29 +81,29 @@ static grib_accessor_class _grib_accessor_class_data_g2simple_packing_with_prepr 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - 0, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + 0, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ &value_count, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_unpack procedures long */ - &pack_double, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - &unpack_double, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + 0, /* pack_long */ + 0, /* unpack_long */ + &pack_double, /* pack_double */ + 0, /* pack_float */ + &unpack_double, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -112,10 +112,10 @@ static grib_accessor_class _grib_accessor_class_data_g2simple_packing_with_prepr 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -127,7 +127,7 @@ grib_accessor_class* grib_accessor_class_data_g2simple_packing_with_preprocessin //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_data_jpeg2000_packing.cc b/src/grib_accessor_class_data_jpeg2000_packing.cc index 6c081b3df..fa62b303e 100644 --- a/src/grib_accessor_class_data_jpeg2000_packing.cc +++ b/src/grib_accessor_class_data_jpeg2000_packing.cc @@ -96,29 +96,29 @@ static grib_accessor_class _grib_accessor_class_data_jpeg2000_packing = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - 0, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + 0, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ &value_count, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_unpack procedures long */ - &pack_double, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - &unpack_double, /* grib_unpack procedures double */ - &unpack_float, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + 0, /* pack_long */ + 0, /* unpack_long */ + &pack_double, /* pack_double */ + 0, /* pack_float */ + &unpack_double, /* unpack_double */ + &unpack_float, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -127,10 +127,10 @@ static grib_accessor_class _grib_accessor_class_data_jpeg2000_packing = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - &unpack_double_element, /* unpack only ith value */ - 0, /* unpack only ith value */ - &unpack_double_element_set, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + &unpack_double_element, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + &unpack_double_element_set, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -142,7 +142,7 @@ grib_accessor_class* grib_accessor_class_data_jpeg2000_packing = &_grib_accessor //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_data_png_packing.cc b/src/grib_accessor_class_data_png_packing.cc index fa891bd99..e923d2721 100644 --- a/src/grib_accessor_class_data_png_packing.cc +++ b/src/grib_accessor_class_data_png_packing.cc @@ -88,29 +88,29 @@ static grib_accessor_class _grib_accessor_class_data_png_packing = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - 0, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + 0, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ &value_count, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_unpack procedures long */ - &pack_double, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - &unpack_double, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + 0, /* pack_long */ + 0, /* unpack_long */ + &pack_double, /* pack_double */ + 0, /* pack_float */ + &unpack_double, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -119,10 +119,10 @@ static grib_accessor_class _grib_accessor_class_data_png_packing = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - &unpack_double_element, /* unpack only ith value */ - 0, /* unpack only ith value */ - &unpack_double_element_set, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + &unpack_double_element, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + &unpack_double_element_set, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -134,7 +134,7 @@ grib_accessor_class* grib_accessor_class_data_png_packing = &_grib_accessor_clas //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_data_raw_packing.cc b/src/grib_accessor_class_data_raw_packing.cc index 0fb40d54f..b44094719 100644 --- a/src/grib_accessor_class_data_raw_packing.cc +++ b/src/grib_accessor_class_data_raw_packing.cc @@ -75,29 +75,29 @@ static grib_accessor_class _grib_accessor_class_data_raw_packing = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - 0, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + 0, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ &value_count, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_unpack procedures long */ - &pack_double, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - &unpack_double, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + 0, /* pack_long */ + 0, /* unpack_long */ + &pack_double, /* pack_double */ + 0, /* pack_float */ + &unpack_double, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -106,10 +106,10 @@ static grib_accessor_class _grib_accessor_class_data_raw_packing = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - &unpack_double_element, /* unpack only ith value */ - 0, /* unpack only ith value */ - &unpack_double_element_set, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + &unpack_double_element, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + &unpack_double_element_set, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -121,7 +121,7 @@ grib_accessor_class* grib_accessor_class_data_raw_packing = &_grib_accessor_clas //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_data_run_length_packing.cc b/src/grib_accessor_class_data_run_length_packing.cc index ce3515796..f1aa0133c 100644 --- a/src/grib_accessor_class_data_run_length_packing.cc +++ b/src/grib_accessor_class_data_run_length_packing.cc @@ -75,29 +75,29 @@ static grib_accessor_class _grib_accessor_class_data_run_length_packing = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - 0, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + 0, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ &value_count, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_unpack procedures long */ - &pack_double, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - &unpack_double, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + 0, /* pack_long */ + 0, /* unpack_long */ + &pack_double, /* pack_double */ + 0, /* pack_float */ + &unpack_double, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -106,10 +106,10 @@ static grib_accessor_class _grib_accessor_class_data_run_length_packing = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -121,7 +121,7 @@ grib_accessor_class* grib_accessor_class_data_run_length_packing = &_grib_access //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_data_secondary_bitmap.cc b/src/grib_accessor_class_data_secondary_bitmap.cc index 4a81dbd2c..29d0f9f04 100644 --- a/src/grib_accessor_class_data_secondary_bitmap.cc +++ b/src/grib_accessor_class_data_secondary_bitmap.cc @@ -63,29 +63,29 @@ static grib_accessor_class _grib_accessor_class_data_secondary_bitmap = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - &dump, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + &dump, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ 0, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ &get_native_type, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - &unpack_double, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + 0, /* pack_long */ + 0, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + &unpack_double, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -94,10 +94,10 @@ static grib_accessor_class _grib_accessor_class_data_secondary_bitmap = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -109,7 +109,7 @@ grib_accessor_class* grib_accessor_class_data_secondary_bitmap = &_grib_accessor //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_data_sh_packed.cc b/src/grib_accessor_class_data_sh_packed.cc index efaf12005..986cff981 100644 --- a/src/grib_accessor_class_data_sh_packed.cc +++ b/src/grib_accessor_class_data_sh_packed.cc @@ -93,29 +93,29 @@ static grib_accessor_class _grib_accessor_class_data_sh_packed = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - 0, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + 0, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ &value_count, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - &unpack_double, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + 0, /* pack_long */ + 0, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + &unpack_double, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -124,10 +124,10 @@ static grib_accessor_class _grib_accessor_class_data_sh_packed = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -139,7 +139,7 @@ grib_accessor_class* grib_accessor_class_data_sh_packed = &_grib_accessor_class_ //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_data_sh_unpacked.cc b/src/grib_accessor_class_data_sh_unpacked.cc index 492c4fe61..a72e57ada 100644 --- a/src/grib_accessor_class_data_sh_unpacked.cc +++ b/src/grib_accessor_class_data_sh_unpacked.cc @@ -93,29 +93,29 @@ static grib_accessor_class _grib_accessor_class_data_sh_unpacked = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - 0, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + 0, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ &value_count, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - &unpack_double, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + 0, /* pack_long */ + 0, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + &unpack_double, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -124,10 +124,10 @@ static grib_accessor_class _grib_accessor_class_data_sh_unpacked = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -139,7 +139,7 @@ grib_accessor_class* grib_accessor_class_data_sh_unpacked = &_grib_accessor_clas //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_data_shsimple_packing.cc b/src/grib_accessor_class_data_shsimple_packing.cc index 9353f3de3..6e7c2c095 100644 --- a/src/grib_accessor_class_data_shsimple_packing.cc +++ b/src/grib_accessor_class_data_shsimple_packing.cc @@ -61,29 +61,29 @@ static grib_accessor_class _grib_accessor_class_data_shsimple_packing = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - &dump, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + &dump, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ 0, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ &get_native_type, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_unpack procedures long */ - &pack_double, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - 0, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + 0, /* pack_long */ + 0, /* unpack_long */ + &pack_double, /* pack_double */ + 0, /* pack_float */ + 0, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -92,10 +92,10 @@ static grib_accessor_class _grib_accessor_class_data_shsimple_packing = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -107,7 +107,7 @@ grib_accessor_class* grib_accessor_class_data_shsimple_packing = &_grib_accessor //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_data_simple_packing.cc b/src/grib_accessor_class_data_simple_packing.cc index 4d3c8c2b9..67c0d9a30 100644 --- a/src/grib_accessor_class_data_simple_packing.cc +++ b/src/grib_accessor_class_data_simple_packing.cc @@ -95,29 +95,29 @@ static grib_accessor_class _grib_accessor_class_data_simple_packing = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - 0, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + 0, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ &value_count, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_unpack procedures long */ - &pack_double, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - &unpack_double, /* grib_unpack procedures double */ - &unpack_float, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + 0, /* pack_long */ + 0, /* unpack_long */ + &pack_double, /* pack_double */ + 0, /* pack_float */ + &unpack_double, /* unpack_double */ + &unpack_float, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -126,10 +126,10 @@ static grib_accessor_class _grib_accessor_class_data_simple_packing = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - &unpack_double_element, /* unpack only ith value */ - 0, /* unpack only ith value */ - &unpack_double_element_set, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + &unpack_double_element, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + &unpack_double_element_set, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ &unpack_double_subarray, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -141,7 +141,7 @@ grib_accessor_class* grib_accessor_class_data_simple_packing = &_grib_accessor_c //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_decimal_precision.cc b/src/grib_accessor_class_decimal_precision.cc index 5532e1679..1b91dc142 100644 --- a/src/grib_accessor_class_decimal_precision.cc +++ b/src/grib_accessor_class_decimal_precision.cc @@ -65,29 +65,29 @@ static grib_accessor_class _grib_accessor_class_decimal_precision = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - 0, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + 0, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ 0, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - &pack_long, /* grib_pack procedures long */ - &unpack_long, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - 0, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + &pack_long, /* pack_long */ + &unpack_long, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + 0, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -96,10 +96,10 @@ static grib_accessor_class _grib_accessor_class_decimal_precision = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -111,7 +111,7 @@ grib_accessor_class* grib_accessor_class_decimal_precision = &_grib_accessor_cla //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_dictionary.cc b/src/grib_accessor_class_dictionary.cc index d5776b858..aa543e34f 100644 --- a/src/grib_accessor_class_dictionary.cc +++ b/src/grib_accessor_class_dictionary.cc @@ -68,29 +68,29 @@ static grib_accessor_class _grib_accessor_class_dictionary = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - &dump, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + &dump, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ &value_count, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ &get_native_type, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - &unpack_long, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - &unpack_double, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - &unpack_string, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + 0, /* pack_long */ + &unpack_long, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + &unpack_double, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + &unpack_string, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -99,10 +99,10 @@ static grib_accessor_class _grib_accessor_class_dictionary = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -114,7 +114,7 @@ grib_accessor_class* grib_accessor_class_dictionary = &_grib_accessor_class_dict //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_dirty.cc b/src/grib_accessor_class_dirty.cc index 53284c311..c3c95e913 100644 --- a/src/grib_accessor_class_dirty.cc +++ b/src/grib_accessor_class_dirty.cc @@ -60,29 +60,29 @@ static grib_accessor_class _grib_accessor_class_dirty = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - 0, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + 0, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ 0, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - &pack_long, /* grib_pack procedures long */ - &unpack_long, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - 0, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + &pack_long, /* pack_long */ + &unpack_long, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + 0, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -91,10 +91,10 @@ static grib_accessor_class _grib_accessor_class_dirty = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -106,7 +106,7 @@ grib_accessor_class* grib_accessor_class_dirty = &_grib_accessor_class_dirty; //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_divdouble.cc b/src/grib_accessor_class_divdouble.cc index 0330b49fc..769965405 100644 --- a/src/grib_accessor_class_divdouble.cc +++ b/src/grib_accessor_class_divdouble.cc @@ -61,29 +61,29 @@ static grib_accessor_class _grib_accessor_class_divdouble = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - 0, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + 0, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ 0, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - &unpack_double, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + 0, /* pack_long */ + 0, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + &unpack_double, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -92,10 +92,10 @@ static grib_accessor_class _grib_accessor_class_divdouble = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -107,7 +107,7 @@ grib_accessor_class* grib_accessor_class_divdouble = &_grib_accessor_class_divdo //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_double.cc b/src/grib_accessor_class_double.cc index d6891d27c..cb5831fb9 100644 --- a/src/grib_accessor_class_double.cc +++ b/src/grib_accessor_class_double.cc @@ -61,29 +61,29 @@ static grib_accessor_class _grib_accessor_class_double = { 0, /* init_class */ 0, /* init */ 0, /* post_init */ - 0, /* free mem */ - &dump, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + &dump, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ 0, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ &get_native_type, /* get native type */ 0, /* get sub_section */ - &pack_missing, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - 0, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - &unpack_string, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + &pack_missing, /* pack_missing */ + 0, /* is_missing */ + 0, /* pack_long */ + 0, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + 0, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + &unpack_string, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -92,10 +92,10 @@ static grib_accessor_class _grib_accessor_class_double = { 0, /* nearest_smaller_value */ 0, /* next accessor */ &compare, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -107,7 +107,7 @@ grib_accessor_class* grib_accessor_class_double = &_grib_accessor_class_double; //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_element.cc b/src/grib_accessor_class_element.cc index 9c61de39e..e72b8fedc 100644 --- a/src/grib_accessor_class_element.cc +++ b/src/grib_accessor_class_element.cc @@ -63,29 +63,29 @@ static grib_accessor_class _grib_accessor_class_element = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - 0, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + 0, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ 0, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - &pack_long, /* grib_pack procedures long */ - &unpack_long, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - 0, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + &pack_long, /* pack_long */ + &unpack_long, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + 0, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -94,10 +94,10 @@ static grib_accessor_class _grib_accessor_class_element = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -109,7 +109,7 @@ grib_accessor_class* grib_accessor_class_element = &_grib_accessor_class_element //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_evaluate.cc b/src/grib_accessor_class_evaluate.cc index 6a22ea744..dbeed30aa 100644 --- a/src/grib_accessor_class_evaluate.cc +++ b/src/grib_accessor_class_evaluate.cc @@ -56,29 +56,29 @@ static grib_accessor_class _grib_accessor_class_evaluate = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - 0, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + 0, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ 0, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - &pack_long, /* grib_pack procedures long */ - &unpack_long, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - 0, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + &pack_long, /* pack_long */ + &unpack_long, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + 0, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -87,10 +87,10 @@ static grib_accessor_class _grib_accessor_class_evaluate = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -102,7 +102,7 @@ grib_accessor_class* grib_accessor_class_evaluate = &_grib_accessor_class_evalua //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_expanded_descriptors.cc b/src/grib_accessor_class_expanded_descriptors.cc index 9377ed2bd..5580dadcf 100644 --- a/src/grib_accessor_class_expanded_descriptors.cc +++ b/src/grib_accessor_class_expanded_descriptors.cc @@ -87,29 +87,29 @@ static grib_accessor_class _grib_accessor_class_expanded_descriptors = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - &destroy, /* free mem */ - &dump, /* describes himself */ - 0, /* get length of section */ + &destroy, /* destroy */ + &dump, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ &value_count, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ &get_native_type, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - &pack_long, /* grib_pack procedures long */ - &unpack_long, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - &unpack_double, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + &pack_long, /* pack_long */ + &unpack_long, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + &unpack_double, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -118,10 +118,10 @@ static grib_accessor_class _grib_accessor_class_expanded_descriptors = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -133,7 +133,7 @@ grib_accessor_class* grib_accessor_class_expanded_descriptors = &_grib_accessor_ //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_forward.cc b/src/grib_accessor_class_forward.cc index 9db717924..bd4033084 100644 --- a/src/grib_accessor_class_forward.cc +++ b/src/grib_accessor_class_forward.cc @@ -51,29 +51,29 @@ static grib_accessor_class _grib_accessor_class_forward = { 0, /* init_class */ 0, /* init */ 0, /* post_init */ - 0, /* free mem */ - &dump, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + &dump, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ 0, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - 0, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + 0, /* pack_long */ + 0, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + 0, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -82,10 +82,10 @@ static grib_accessor_class _grib_accessor_class_forward = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -97,7 +97,7 @@ grib_accessor_class* grib_accessor_class_forward = &_grib_accessor_class_forward //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_from_scale_factor_scaled_value.cc b/src/grib_accessor_class_from_scale_factor_scaled_value.cc index f6c3b1ffc..edf8b1d48 100644 --- a/src/grib_accessor_class_from_scale_factor_scaled_value.cc +++ b/src/grib_accessor_class_from_scale_factor_scaled_value.cc @@ -66,29 +66,29 @@ static grib_accessor_class _grib_accessor_class_from_scale_factor_scaled_value = 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - 0, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + 0, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ &value_count, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - &is_missing, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_unpack procedures long */ - &pack_double, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - &unpack_double, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + &is_missing, /* is_missing */ + 0, /* pack_long */ + 0, /* unpack_long */ + &pack_double, /* pack_double */ + 0, /* pack_float */ + &unpack_double, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -97,10 +97,10 @@ static grib_accessor_class _grib_accessor_class_from_scale_factor_scaled_value = 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -112,7 +112,7 @@ grib_accessor_class* grib_accessor_class_from_scale_factor_scaled_value = &_grib //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_g1_half_byte_codeflag.cc b/src/grib_accessor_class_g1_half_byte_codeflag.cc index ecd58b08e..cb2d6d489 100644 --- a/src/grib_accessor_class_g1_half_byte_codeflag.cc +++ b/src/grib_accessor_class_g1_half_byte_codeflag.cc @@ -59,29 +59,29 @@ static grib_accessor_class _grib_accessor_class_g1_half_byte_codeflag = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - &dump, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + &dump, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ 0, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ &get_native_type, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - &pack_long, /* grib_pack procedures long */ - &unpack_long, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - 0, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + &pack_long, /* pack_long */ + &unpack_long, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + 0, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -90,10 +90,10 @@ static grib_accessor_class _grib_accessor_class_g1_half_byte_codeflag = { 0, /* nearest_smaller_value */ 0, /* next accessor */ &compare, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -105,7 +105,7 @@ grib_accessor_class* grib_accessor_class_g1_half_byte_codeflag = &_grib_accessor //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_g1_message_length.cc b/src/grib_accessor_class_g1_message_length.cc index e7ffb21b2..2e7ed7d07 100644 --- a/src/grib_accessor_class_g1_message_length.cc +++ b/src/grib_accessor_class_g1_message_length.cc @@ -59,29 +59,29 @@ static grib_accessor_class _grib_accessor_class_g1_message_length = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - 0, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + 0, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ 0, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - &pack_long, /* grib_pack procedures long */ - &unpack_long, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - 0, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + &pack_long, /* pack_long */ + &unpack_long, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + 0, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -90,10 +90,10 @@ static grib_accessor_class _grib_accessor_class_g1_message_length = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -105,7 +105,7 @@ grib_accessor_class* grib_accessor_class_g1_message_length = &_grib_accessor_cla //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_g1_section4_length.cc b/src/grib_accessor_class_g1_section4_length.cc index 91cc62f1a..878d770ae 100644 --- a/src/grib_accessor_class_g1_section4_length.cc +++ b/src/grib_accessor_class_g1_section4_length.cc @@ -59,29 +59,29 @@ static grib_accessor_class _grib_accessor_class_g1_section4_length = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - 0, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + 0, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ 0, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - &pack_long, /* grib_pack procedures long */ - &unpack_long, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - 0, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + &pack_long, /* pack_long */ + &unpack_long, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + 0, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -90,10 +90,10 @@ static grib_accessor_class _grib_accessor_class_g1_section4_length = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -105,7 +105,7 @@ grib_accessor_class* grib_accessor_class_g1_section4_length = &_grib_accessor_cl //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_g1area.cc b/src/grib_accessor_class_g1area.cc index 28a6f18f4..842e23954 100644 --- a/src/grib_accessor_class_g1area.cc +++ b/src/grib_accessor_class_g1area.cc @@ -67,29 +67,29 @@ static grib_accessor_class _grib_accessor_class_g1area = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - &dump, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + &dump, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ 0, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_unpack procedures long */ - &pack_double, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - &unpack_double, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - &unpack_string, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + 0, /* pack_long */ + 0, /* unpack_long */ + &pack_double, /* pack_double */ + 0, /* pack_float */ + &unpack_double, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + &unpack_string, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -98,10 +98,10 @@ static grib_accessor_class _grib_accessor_class_g1area = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -113,7 +113,7 @@ grib_accessor_class* grib_accessor_class_g1area = &_grib_accessor_class_g1area; //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_g1bitmap.cc b/src/grib_accessor_class_g1bitmap.cc index 005a58ab8..6040f5e55 100644 --- a/src/grib_accessor_class_g1bitmap.cc +++ b/src/grib_accessor_class_g1bitmap.cc @@ -63,29 +63,29 @@ static grib_accessor_class _grib_accessor_class_g1bitmap = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - 0, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + 0, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ &value_count, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_unpack procedures long */ - &pack_double, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - 0, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - &unpack_bytes, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + 0, /* pack_long */ + 0, /* unpack_long */ + &pack_double, /* pack_double */ + 0, /* pack_float */ + 0, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + &unpack_bytes, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -94,10 +94,10 @@ static grib_accessor_class _grib_accessor_class_g1bitmap = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -109,7 +109,7 @@ grib_accessor_class* grib_accessor_class_g1bitmap = &_grib_accessor_class_g1bitm //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_g1date.cc b/src/grib_accessor_class_g1date.cc index 13dd3b334..f5345f1b5 100644 --- a/src/grib_accessor_class_g1date.cc +++ b/src/grib_accessor_class_g1date.cc @@ -70,29 +70,29 @@ static grib_accessor_class _grib_accessor_class_g1date = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - &dump, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + &dump, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ &value_count, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - &pack_long, /* grib_pack procedures long */ - &unpack_long, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - 0, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - &unpack_string, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + &pack_long, /* pack_long */ + &unpack_long, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + 0, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + &unpack_string, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -101,10 +101,10 @@ static grib_accessor_class _grib_accessor_class_g1date = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -116,7 +116,7 @@ grib_accessor_class* grib_accessor_class_g1date = &_grib_accessor_class_g1date; //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_g1day_of_the_year_date.cc b/src/grib_accessor_class_g1day_of_the_year_date.cc index 3f2060170..ebb5b7109 100644 --- a/src/grib_accessor_class_g1day_of_the_year_date.cc +++ b/src/grib_accessor_class_g1day_of_the_year_date.cc @@ -61,29 +61,29 @@ static grib_accessor_class _grib_accessor_class_g1day_of_the_year_date = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - &dump, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + &dump, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ 0, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - 0, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - &unpack_string, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + 0, /* pack_long */ + 0, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + 0, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + &unpack_string, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -92,10 +92,10 @@ static grib_accessor_class _grib_accessor_class_g1day_of_the_year_date = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -107,7 +107,7 @@ grib_accessor_class* grib_accessor_class_g1day_of_the_year_date = &_grib_accesso //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_g1end_of_interval_monthly.cc b/src/grib_accessor_class_g1end_of_interval_monthly.cc index 6f394c8cb..400ce91b6 100644 --- a/src/grib_accessor_class_g1end_of_interval_monthly.cc +++ b/src/grib_accessor_class_g1end_of_interval_monthly.cc @@ -62,29 +62,29 @@ static grib_accessor_class _grib_accessor_class_g1end_of_interval_monthly = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - &destroy, /* free mem */ - 0, /* describes himself */ - 0, /* get length of section */ + &destroy, /* destroy */ + 0, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ &value_count, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - &unpack_double, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + 0, /* pack_long */ + 0, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + &unpack_double, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -93,10 +93,10 @@ static grib_accessor_class _grib_accessor_class_g1end_of_interval_monthly = { 0, /* nearest_smaller_value */ 0, /* next accessor */ &compare, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -108,7 +108,7 @@ grib_accessor_class* grib_accessor_class_g1end_of_interval_monthly = &_grib_acce //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_g1fcperiod.cc b/src/grib_accessor_class_g1fcperiod.cc index 7b9abf3dc..33451dc78 100644 --- a/src/grib_accessor_class_g1fcperiod.cc +++ b/src/grib_accessor_class_g1fcperiod.cc @@ -63,29 +63,29 @@ static grib_accessor_class _grib_accessor_class_g1fcperiod = { 0, /* init_class */ 0, /* init */ 0, /* post_init */ - 0, /* free mem */ - 0, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + 0, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ 0, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - 0, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - &unpack_string, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + 0, /* pack_long */ + 0, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + 0, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + &unpack_string, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -94,10 +94,10 @@ static grib_accessor_class _grib_accessor_class_g1fcperiod = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -109,7 +109,7 @@ grib_accessor_class* grib_accessor_class_g1fcperiod = &_grib_accessor_class_g1fc //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_g1forecastmonth.cc b/src/grib_accessor_class_g1forecastmonth.cc index 57016b9f0..eea9d7fcc 100644 --- a/src/grib_accessor_class_g1forecastmonth.cc +++ b/src/grib_accessor_class_g1forecastmonth.cc @@ -68,29 +68,29 @@ static grib_accessor_class _grib_accessor_class_g1forecastmonth = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - &dump, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + &dump, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ 0, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - &pack_long, /* grib_pack procedures long */ - &unpack_long, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - 0, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + &pack_long, /* pack_long */ + &unpack_long, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + 0, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -99,10 +99,10 @@ static grib_accessor_class _grib_accessor_class_g1forecastmonth = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -114,7 +114,7 @@ grib_accessor_class* grib_accessor_class_g1forecastmonth = &_grib_accessor_class //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_g1monthlydate.cc b/src/grib_accessor_class_g1monthlydate.cc index 3c78af250..350815e65 100644 --- a/src/grib_accessor_class_g1monthlydate.cc +++ b/src/grib_accessor_class_g1monthlydate.cc @@ -62,29 +62,29 @@ static grib_accessor_class _grib_accessor_class_g1monthlydate = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - &dump, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + &dump, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ 0, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - &unpack_long, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - 0, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + 0, /* pack_long */ + &unpack_long, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + 0, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -93,10 +93,10 @@ static grib_accessor_class _grib_accessor_class_g1monthlydate = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -108,7 +108,7 @@ grib_accessor_class* grib_accessor_class_g1monthlydate = &_grib_accessor_class_g //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_g1number_of_coded_values_sh_complex.cc b/src/grib_accessor_class_g1number_of_coded_values_sh_complex.cc index a28f8431e..742ca0d79 100644 --- a/src/grib_accessor_class_g1number_of_coded_values_sh_complex.cc +++ b/src/grib_accessor_class_g1number_of_coded_values_sh_complex.cc @@ -72,29 +72,29 @@ static grib_accessor_class _grib_accessor_class_g1number_of_coded_values_sh_comp 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - 0, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + 0, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ 0, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - &unpack_long, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - 0, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + 0, /* pack_long */ + &unpack_long, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + 0, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -103,10 +103,10 @@ static grib_accessor_class _grib_accessor_class_g1number_of_coded_values_sh_comp 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -118,7 +118,7 @@ grib_accessor_class* grib_accessor_class_g1number_of_coded_values_sh_complex = & //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_g1number_of_coded_values_sh_simple.cc b/src/grib_accessor_class_g1number_of_coded_values_sh_simple.cc index 74e78fc51..7ba17c547 100644 --- a/src/grib_accessor_class_g1number_of_coded_values_sh_simple.cc +++ b/src/grib_accessor_class_g1number_of_coded_values_sh_simple.cc @@ -66,29 +66,29 @@ static grib_accessor_class _grib_accessor_class_g1number_of_coded_values_sh_simp 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - 0, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + 0, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ 0, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - &unpack_long, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - 0, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + 0, /* pack_long */ + &unpack_long, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + 0, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -97,10 +97,10 @@ static grib_accessor_class _grib_accessor_class_g1number_of_coded_values_sh_simp 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -112,7 +112,7 @@ grib_accessor_class* grib_accessor_class_g1number_of_coded_values_sh_simple = &_ //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_g1step_range.cc b/src/grib_accessor_class_g1step_range.cc index 4bae8a8be..50b8abc49 100644 --- a/src/grib_accessor_class_g1step_range.cc +++ b/src/grib_accessor_class_g1step_range.cc @@ -86,29 +86,29 @@ static grib_accessor_class _grib_accessor_class_g1step_range = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - &destroy, /* free mem */ - &dump, /* describes himself */ - 0, /* get length of section */ + &destroy, /* destroy */ + &dump, /* dump */ + 0, /* next_offset */ &string_length, /* get length of string */ &value_count, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ &get_native_type, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - &pack_long, /* grib_pack procedures long */ - &unpack_long, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - 0, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - &pack_string, /* grib_pack procedures string */ - &unpack_string, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + &pack_long, /* pack_long */ + &unpack_long, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + 0, /* unpack_double */ + 0, /* unpack_float */ + &pack_string, /* pack_string */ + &unpack_string, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -117,10 +117,10 @@ static grib_accessor_class _grib_accessor_class_g1step_range = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -132,7 +132,7 @@ grib_accessor_class* grib_accessor_class_g1step_range = &_grib_accessor_class_g1 //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_g1verificationdate.cc b/src/grib_accessor_class_g1verificationdate.cc index 3fe1f1f69..76e74c789 100644 --- a/src/grib_accessor_class_g1verificationdate.cc +++ b/src/grib_accessor_class_g1verificationdate.cc @@ -61,29 +61,29 @@ static grib_accessor_class _grib_accessor_class_g1verificationdate = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - &dump, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + &dump, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ 0, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - &unpack_long, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - 0, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + 0, /* pack_long */ + &unpack_long, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + 0, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -92,10 +92,10 @@ static grib_accessor_class _grib_accessor_class_g1verificationdate = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -107,7 +107,7 @@ grib_accessor_class* grib_accessor_class_g1verificationdate = &_grib_accessor_cl //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_g2_aerosol.cc b/src/grib_accessor_class_g2_aerosol.cc index e78cc4313..0e331ae17 100644 --- a/src/grib_accessor_class_g2_aerosol.cc +++ b/src/grib_accessor_class_g2_aerosol.cc @@ -64,29 +64,29 @@ static grib_accessor_class _grib_accessor_class_g2_aerosol = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - 0, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + 0, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ &value_count, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - &pack_long, /* grib_pack procedures long */ - &unpack_long, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - 0, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + &pack_long, /* pack_long */ + &unpack_long, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + 0, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -95,10 +95,10 @@ static grib_accessor_class _grib_accessor_class_g2_aerosol = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -110,7 +110,7 @@ grib_accessor_class* grib_accessor_class_g2_aerosol = &_grib_accessor_class_g2_a //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_g2_chemical.cc b/src/grib_accessor_class_g2_chemical.cc index 8ab18cb23..48e97d659 100644 --- a/src/grib_accessor_class_g2_chemical.cc +++ b/src/grib_accessor_class_g2_chemical.cc @@ -64,29 +64,29 @@ static grib_accessor_class _grib_accessor_class_g2_chemical = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - 0, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + 0, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ &value_count, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - &pack_long, /* grib_pack procedures long */ - &unpack_long, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - 0, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + &pack_long, /* pack_long */ + &unpack_long, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + 0, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -95,10 +95,10 @@ static grib_accessor_class _grib_accessor_class_g2_chemical = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -110,7 +110,7 @@ grib_accessor_class* grib_accessor_class_g2_chemical = &_grib_accessor_class_g2_ //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_g2_eps.cc b/src/grib_accessor_class_g2_eps.cc index a04233571..2b2293b33 100644 --- a/src/grib_accessor_class_g2_eps.cc +++ b/src/grib_accessor_class_g2_eps.cc @@ -69,29 +69,29 @@ static grib_accessor_class _grib_accessor_class_g2_eps = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - 0, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + 0, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ &value_count, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - &pack_long, /* grib_pack procedures long */ - &unpack_long, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - 0, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + &pack_long, /* pack_long */ + &unpack_long, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + 0, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -100,10 +100,10 @@ static grib_accessor_class _grib_accessor_class_g2_eps = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -115,7 +115,7 @@ grib_accessor_class* grib_accessor_class_g2_eps = &_grib_accessor_class_g2_eps; //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_g2_mars_labeling.cc b/src/grib_accessor_class_g2_mars_labeling.cc index 922b79194..bcf37f640 100644 --- a/src/grib_accessor_class_g2_mars_labeling.cc +++ b/src/grib_accessor_class_g2_mars_labeling.cc @@ -84,29 +84,29 @@ static grib_accessor_class _grib_accessor_class_g2_mars_labeling = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - 0, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + 0, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ &value_count, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ &get_native_type, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - &pack_long, /* grib_pack procedures long */ - &unpack_long, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - 0, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - &pack_string, /* grib_pack procedures string */ - &unpack_string, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + &pack_long, /* pack_long */ + &unpack_long, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + 0, /* unpack_double */ + 0, /* unpack_float */ + &pack_string, /* pack_string */ + &unpack_string, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -115,10 +115,10 @@ static grib_accessor_class _grib_accessor_class_g2_mars_labeling = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -130,7 +130,7 @@ grib_accessor_class* grib_accessor_class_g2_mars_labeling = &_grib_accessor_clas //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_g2bitmap.cc b/src/grib_accessor_class_g2bitmap.cc index f3a891dad..5ccbef31e 100644 --- a/src/grib_accessor_class_g2bitmap.cc +++ b/src/grib_accessor_class_g2bitmap.cc @@ -62,29 +62,29 @@ static grib_accessor_class _grib_accessor_class_g2bitmap = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - 0, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + 0, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ &value_count, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_unpack procedures long */ - &pack_double, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - 0, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + 0, /* pack_long */ + 0, /* unpack_long */ + &pack_double, /* pack_double */ + 0, /* pack_float */ + 0, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -93,10 +93,10 @@ static grib_accessor_class _grib_accessor_class_g2bitmap = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -108,7 +108,7 @@ grib_accessor_class* grib_accessor_class_g2bitmap = &_grib_accessor_class_g2bitm //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_g2bitmap_present.cc b/src/grib_accessor_class_g2bitmap_present.cc index a81b6ddcc..7e7fcc13a 100644 --- a/src/grib_accessor_class_g2bitmap_present.cc +++ b/src/grib_accessor_class_g2bitmap_present.cc @@ -60,29 +60,29 @@ static grib_accessor_class _grib_accessor_class_g2bitmap_present = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - 0, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + 0, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ 0, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - &pack_long, /* grib_pack procedures long */ - &unpack_long, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - 0, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + &pack_long, /* pack_long */ + &unpack_long, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + 0, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -91,10 +91,10 @@ static grib_accessor_class _grib_accessor_class_g2bitmap_present = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -106,7 +106,7 @@ grib_accessor_class* grib_accessor_class_g2bitmap_present = &_grib_accessor_clas //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_g2date.cc b/src/grib_accessor_class_g2date.cc index 101d4b493..155716698 100644 --- a/src/grib_accessor_class_g2date.cc +++ b/src/grib_accessor_class_g2date.cc @@ -63,29 +63,29 @@ static grib_accessor_class _grib_accessor_class_g2date = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - &dump, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + &dump, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ 0, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - &pack_long, /* grib_pack procedures long */ - &unpack_long, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - 0, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + &pack_long, /* pack_long */ + &unpack_long, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + 0, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -94,10 +94,10 @@ static grib_accessor_class _grib_accessor_class_g2date = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -109,7 +109,7 @@ grib_accessor_class* grib_accessor_class_g2date = &_grib_accessor_class_g2date; //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_g2end_step.cc b/src/grib_accessor_class_g2end_step.cc index b7224fa5f..f25b6b9e5 100644 --- a/src/grib_accessor_class_g2end_step.cc +++ b/src/grib_accessor_class_g2end_step.cc @@ -95,29 +95,29 @@ static grib_accessor_class _grib_accessor_class_g2end_step = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - &dump, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + &dump, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ 0, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - &pack_long, /* grib_pack procedures long */ - &unpack_long, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - 0, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + &pack_long, /* pack_long */ + &unpack_long, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + 0, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -126,10 +126,10 @@ static grib_accessor_class _grib_accessor_class_g2end_step = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -141,7 +141,7 @@ grib_accessor_class* grib_accessor_class_g2end_step = &_grib_accessor_class_g2en //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_g2grid.cc b/src/grib_accessor_class_g2grid.cc index dd8d89ebb..69a8bb6bf 100644 --- a/src/grib_accessor_class_g2grid.cc +++ b/src/grib_accessor_class_g2grid.cc @@ -76,29 +76,29 @@ static grib_accessor_class _grib_accessor_class_g2grid = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - 0, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + 0, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ &value_count, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_unpack procedures long */ - &pack_double, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - &unpack_double, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + 0, /* pack_long */ + 0, /* unpack_long */ + &pack_double, /* pack_double */ + 0, /* pack_float */ + &unpack_double, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -107,10 +107,10 @@ static grib_accessor_class _grib_accessor_class_g2grid = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -122,7 +122,7 @@ grib_accessor_class* grib_accessor_class_g2grid = &_grib_accessor_class_g2grid; //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_g2latlon.cc b/src/grib_accessor_class_g2latlon.cc index ef7529f00..8ba8bd4c6 100644 --- a/src/grib_accessor_class_g2latlon.cc +++ b/src/grib_accessor_class_g2latlon.cc @@ -67,29 +67,29 @@ static grib_accessor_class _grib_accessor_class_g2latlon = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - 0, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + 0, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ 0, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - &pack_missing, /* grib_pack procedures long */ - &is_missing, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_unpack procedures long */ - &pack_double, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - &unpack_double, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + &pack_missing, /* pack_missing */ + &is_missing, /* is_missing */ + 0, /* pack_long */ + 0, /* unpack_long */ + &pack_double, /* pack_double */ + 0, /* pack_float */ + &unpack_double, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -98,10 +98,10 @@ static grib_accessor_class _grib_accessor_class_g2latlon = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -113,7 +113,7 @@ grib_accessor_class* grib_accessor_class_g2latlon = &_grib_accessor_class_g2latl //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_g2level.cc b/src/grib_accessor_class_g2level.cc index 563ae7623..b6f401cf5 100644 --- a/src/grib_accessor_class_g2level.cc +++ b/src/grib_accessor_class_g2level.cc @@ -67,29 +67,29 @@ static grib_accessor_class _grib_accessor_class_g2level = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - &dump, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + &dump, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ 0, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - &is_missing, /* grib_pack procedures long */ - &pack_long, /* grib_pack procedures long */ - &unpack_long, /* grib_unpack procedures long */ - &pack_double, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - &unpack_double, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + &is_missing, /* is_missing */ + &pack_long, /* pack_long */ + &unpack_long, /* unpack_long */ + &pack_double, /* pack_double */ + 0, /* pack_float */ + &unpack_double, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -98,10 +98,10 @@ static grib_accessor_class _grib_accessor_class_g2level = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -113,7 +113,7 @@ grib_accessor_class* grib_accessor_class_g2level = &_grib_accessor_class_g2level //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_g2lon.cc b/src/grib_accessor_class_g2lon.cc index fba404475..db02085e6 100644 --- a/src/grib_accessor_class_g2lon.cc +++ b/src/grib_accessor_class_g2lon.cc @@ -60,29 +60,29 @@ static grib_accessor_class _grib_accessor_class_g2lon = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - 0, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + 0, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ 0, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_unpack procedures long */ - &pack_double, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - &unpack_double, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + 0, /* pack_long */ + 0, /* unpack_long */ + &pack_double, /* pack_double */ + 0, /* pack_float */ + &unpack_double, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -91,10 +91,10 @@ static grib_accessor_class _grib_accessor_class_g2lon = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -106,7 +106,7 @@ grib_accessor_class* grib_accessor_class_g2lon = &_grib_accessor_class_g2lon; //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_g2step_range.cc b/src/grib_accessor_class_g2step_range.cc index 014ac5e06..dbd7489ec 100644 --- a/src/grib_accessor_class_g2step_range.cc +++ b/src/grib_accessor_class_g2step_range.cc @@ -69,29 +69,29 @@ static grib_accessor_class _grib_accessor_class_g2step_range = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - &dump, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + &dump, /* dump */ + 0, /* next_offset */ &string_length, /* get length of string */ &value_count, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ &get_native_type, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - &pack_long, /* grib_pack procedures long */ - &unpack_long, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - 0, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - &pack_string, /* grib_pack procedures string */ - &unpack_string, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + &pack_long, /* pack_long */ + &unpack_long, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + 0, /* unpack_double */ + 0, /* unpack_float */ + &pack_string, /* pack_string */ + &unpack_string, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -100,10 +100,10 @@ static grib_accessor_class _grib_accessor_class_g2step_range = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -115,7 +115,7 @@ grib_accessor_class* grib_accessor_class_g2step_range = &_grib_accessor_class_g2 //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_gaussian_grid_name.cc b/src/grib_accessor_class_gaussian_grid_name.cc index 6979297ee..0207170ce 100644 --- a/src/grib_accessor_class_gaussian_grid_name.cc +++ b/src/grib_accessor_class_gaussian_grid_name.cc @@ -60,29 +60,29 @@ static grib_accessor_class _grib_accessor_class_gaussian_grid_name = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - 0, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + 0, /* dump */ + 0, /* next_offset */ &string_length, /* get length of string */ 0, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ &get_native_type, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - 0, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - &unpack_string, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + 0, /* pack_long */ + 0, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + 0, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + &unpack_string, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -91,10 +91,10 @@ static grib_accessor_class _grib_accessor_class_gaussian_grid_name = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -106,7 +106,7 @@ grib_accessor_class* grib_accessor_class_gaussian_grid_name = &_grib_accessor_cl //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_gds_is_present.cc b/src/grib_accessor_class_gds_is_present.cc index f54793de9..2601e3cd5 100644 --- a/src/grib_accessor_class_gds_is_present.cc +++ b/src/grib_accessor_class_gds_is_present.cc @@ -66,29 +66,29 @@ static grib_accessor_class _grib_accessor_class_gds_is_present = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - 0, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + 0, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ 0, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - &pack_long, /* grib_pack procedures long */ - &unpack_long, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - 0, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + &pack_long, /* pack_long */ + &unpack_long, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + 0, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -97,10 +97,10 @@ static grib_accessor_class _grib_accessor_class_gds_is_present = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -112,7 +112,7 @@ grib_accessor_class* grib_accessor_class_gds_is_present = &_grib_accessor_class_ //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_gds_not_present_bitmap.cc b/src/grib_accessor_class_gds_not_present_bitmap.cc index e73478d4b..95651ed35 100644 --- a/src/grib_accessor_class_gds_not_present_bitmap.cc +++ b/src/grib_accessor_class_gds_not_present_bitmap.cc @@ -71,29 +71,29 @@ static grib_accessor_class _grib_accessor_class_gds_not_present_bitmap = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - 0, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + 0, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ &value_count, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_unpack procedures long */ - &pack_double, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - &unpack_double, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + 0, /* pack_long */ + 0, /* unpack_long */ + &pack_double, /* pack_double */ + 0, /* pack_float */ + &unpack_double, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -102,10 +102,10 @@ static grib_accessor_class _grib_accessor_class_gds_not_present_bitmap = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -117,7 +117,7 @@ grib_accessor_class* grib_accessor_class_gds_not_present_bitmap = &_grib_accesso //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_gen.cc b/src/grib_accessor_class_gen.cc index b7bf616ea..fb69ac0ad 100644 --- a/src/grib_accessor_class_gen.cc +++ b/src/grib_accessor_class_gen.cc @@ -100,29 +100,29 @@ static grib_accessor_class _grib_accessor_class_gen = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - &destroy, /* free mem */ - &dump, /* describes himself */ - &next_offset, /* get length of section */ + &destroy, /* destroy */ + &dump, /* dump */ + &next_offset, /* next_offset */ &string_length, /* get length of string */ &value_count, /* get number of values */ &byte_count, /* get number of bytes */ &byte_offset, /* get offset to bytes */ &get_native_type, /* get native type */ &sub_section, /* get sub_section */ - 0, /* grib_pack procedures long */ - &is_missing, /* grib_pack procedures long */ - &pack_long, /* grib_pack procedures long */ - &unpack_long, /* grib_unpack procedures long */ - &pack_double, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - &unpack_double, /* grib_unpack procedures double */ - &unpack_float, /* grib_unpack procedures float */ - &pack_string, /* grib_pack procedures string */ - &unpack_string, /* grib_unpack procedures string */ - &pack_string_array, /* grib_pack array procedures string */ - &unpack_string_array, /* grib_unpack array procedures string */ - &pack_bytes, /* grib_pack procedures bytes */ - &unpack_bytes, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + &is_missing, /* is_missing */ + &pack_long, /* pack_long */ + &unpack_long, /* unpack_long */ + &pack_double, /* pack_double */ + 0, /* pack_float */ + &unpack_double, /* unpack_double */ + &unpack_float, /* unpack_float */ + &pack_string, /* pack_string */ + &unpack_string, /* unpack_string */ + &pack_string_array, /* pack_string_array */ + &unpack_string_array, /* unpack_string_array */ + &pack_bytes, /* pack_bytes */ + &unpack_bytes, /* unpack_bytes */ &pack_expression, /* pack_expression */ ¬ify_change, /* notify_change */ &update_size, /* update_size */ @@ -131,10 +131,10 @@ static grib_accessor_class _grib_accessor_class_gen = { 0, /* nearest_smaller_value */ &next, /* next accessor */ &compare, /* compare vs. another accessor */ - &unpack_double_element, /* unpack only ith value */ - 0, /* unpack only ith value */ - &unpack_double_element_set, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + &unpack_double_element, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + &unpack_double_element_set, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ &unpack_double_subarray, /* unpack a subarray */ &clear, /* clear */ &make_clone, /* clone accessor */ @@ -146,7 +146,7 @@ grib_accessor_class* grib_accessor_class_gen = &_grib_accessor_class_gen; //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_getenv.cc b/src/grib_accessor_class_getenv.cc index 05a81f81c..f236be739 100644 --- a/src/grib_accessor_class_getenv.cc +++ b/src/grib_accessor_class_getenv.cc @@ -62,29 +62,29 @@ static grib_accessor_class _grib_accessor_class_getenv = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - 0, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + 0, /* dump */ + 0, /* next_offset */ &string_length, /* get length of string */ &value_count, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - 0, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - &pack_string, /* grib_pack procedures string */ - &unpack_string, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + 0, /* pack_long */ + 0, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + 0, /* unpack_double */ + 0, /* unpack_float */ + &pack_string, /* pack_string */ + &unpack_string, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -93,10 +93,10 @@ static grib_accessor_class _grib_accessor_class_getenv = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -108,7 +108,7 @@ grib_accessor_class* grib_accessor_class_getenv = &_grib_accessor_class_getenv; //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_global_gaussian.cc b/src/grib_accessor_class_global_gaussian.cc index 3472333a9..361b0002e 100644 --- a/src/grib_accessor_class_global_gaussian.cc +++ b/src/grib_accessor_class_global_gaussian.cc @@ -77,29 +77,29 @@ static grib_accessor_class _grib_accessor_class_global_gaussian = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - 0, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + 0, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ 0, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - &pack_long, /* grib_pack procedures long */ - &unpack_long, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - 0, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + &pack_long, /* pack_long */ + &unpack_long, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + 0, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -108,10 +108,10 @@ static grib_accessor_class _grib_accessor_class_global_gaussian = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -123,7 +123,7 @@ grib_accessor_class* grib_accessor_class_global_gaussian = &_grib_accessor_class //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_group.cc b/src/grib_accessor_class_group.cc index ead0b6cdf..aeda32ec4 100644 --- a/src/grib_accessor_class_group.cc +++ b/src/grib_accessor_class_group.cc @@ -75,29 +75,29 @@ static grib_accessor_class _grib_accessor_class_group = { 0, /* init_class */ &init, /* init */ &post_init, /* post_init */ - 0, /* free mem */ - &dump, /* describes himself */ - &next_offset, /* get length of section */ + 0, /* destroy */ + &dump, /* dump */ + &next_offset, /* next_offset */ &string_length, /* get length of string */ &value_count, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ &get_native_type, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - &pack_long, /* grib_pack procedures long */ - &unpack_long, /* grib_unpack procedures long */ - &pack_double, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - &unpack_double, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - &pack_string, /* grib_pack procedures string */ - &unpack_string, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + &pack_long, /* pack_long */ + &unpack_long, /* unpack_long */ + &pack_double, /* pack_double */ + 0, /* pack_float */ + &unpack_double, /* unpack_double */ + 0, /* unpack_float */ + &pack_string, /* pack_string */ + &unpack_string, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -106,10 +106,10 @@ static grib_accessor_class _grib_accessor_class_group = { 0, /* nearest_smaller_value */ 0, /* next accessor */ &compare, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -121,7 +121,7 @@ grib_accessor_class* grib_accessor_class_group = &_grib_accessor_class_group; //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_gts_header.cc b/src/grib_accessor_class_gts_header.cc index 45a43ddba..8d55109a0 100644 --- a/src/grib_accessor_class_gts_header.cc +++ b/src/grib_accessor_class_gts_header.cc @@ -60,29 +60,29 @@ static grib_accessor_class _grib_accessor_class_gts_header = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - 0, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + 0, /* dump */ + 0, /* next_offset */ &string_length, /* get length of string */ &value_count, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - 0, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - &pack_string, /* grib_pack procedures string */ - &unpack_string, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + 0, /* pack_long */ + 0, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + 0, /* unpack_double */ + 0, /* unpack_float */ + &pack_string, /* pack_string */ + &unpack_string, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -91,10 +91,10 @@ static grib_accessor_class _grib_accessor_class_gts_header = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -106,7 +106,7 @@ grib_accessor_class* grib_accessor_class_gts_header = &_grib_accessor_class_gts_ //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_hash_array.cc b/src/grib_accessor_class_hash_array.cc index e31653ec8..2d11202de 100644 --- a/src/grib_accessor_class_hash_array.cc +++ b/src/grib_accessor_class_hash_array.cc @@ -76,29 +76,29 @@ static grib_accessor_class _grib_accessor_class_hash_array = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - &destroy, /* free mem */ - &dump, /* describes himself */ - 0, /* get length of section */ + &destroy, /* destroy */ + &dump, /* dump */ + 0, /* next_offset */ &string_length, /* get length of string */ &value_count, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ &get_native_type, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - &pack_long, /* grib_pack procedures long */ - &unpack_long, /* grib_unpack procedures long */ - &pack_double, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - &unpack_double, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - &pack_string, /* grib_pack procedures string */ - &unpack_string, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + &pack_long, /* pack_long */ + &unpack_long, /* unpack_long */ + &pack_double, /* pack_double */ + 0, /* pack_float */ + &unpack_double, /* unpack_double */ + 0, /* unpack_float */ + &pack_string, /* pack_string */ + &unpack_string, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -107,10 +107,10 @@ static grib_accessor_class _grib_accessor_class_hash_array = { 0, /* nearest_smaller_value */ 0, /* next accessor */ &compare, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -122,7 +122,7 @@ grib_accessor_class* grib_accessor_class_hash_array = &_grib_accessor_class_hash //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_headers_only.cc b/src/grib_accessor_class_headers_only.cc index c25d0e8dc..152ee2407 100644 --- a/src/grib_accessor_class_headers_only.cc +++ b/src/grib_accessor_class_headers_only.cc @@ -52,29 +52,29 @@ static grib_accessor_class _grib_accessor_class_headers_only = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - 0, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + 0, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ 0, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ &get_native_type, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - &unpack_long, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - 0, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + 0, /* pack_long */ + &unpack_long, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + 0, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -83,10 +83,10 @@ static grib_accessor_class _grib_accessor_class_headers_only = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -98,7 +98,7 @@ grib_accessor_class* grib_accessor_class_headers_only = &_grib_accessor_class_he //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_ibmfloat.cc b/src/grib_accessor_class_ibmfloat.cc index 474ceb8a3..1269b0ffe 100644 --- a/src/grib_accessor_class_ibmfloat.cc +++ b/src/grib_accessor_class_ibmfloat.cc @@ -73,29 +73,29 @@ static grib_accessor_class _grib_accessor_class_ibmfloat = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - 0, /* describes himself */ - &next_offset, /* get length of section */ + 0, /* destroy */ + 0, /* dump */ + &next_offset, /* next_offset */ 0, /* get length of string */ &value_count, /* get number of values */ &byte_count, /* get number of bytes */ &byte_offset, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_unpack procedures long */ - &pack_double, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - &unpack_double, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + 0, /* pack_long */ + 0, /* unpack_long */ + &pack_double, /* pack_double */ + 0, /* pack_float */ + &unpack_double, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ &update_size, /* update_size */ @@ -104,10 +104,10 @@ static grib_accessor_class _grib_accessor_class_ibmfloat = { &nearest_smaller_value, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -119,7 +119,7 @@ grib_accessor_class* grib_accessor_class_ibmfloat = &_grib_accessor_class_ibmflo //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_ieeefloat.cc b/src/grib_accessor_class_ieeefloat.cc index 96e20d0fc..c567e5c05 100644 --- a/src/grib_accessor_class_ieeefloat.cc +++ b/src/grib_accessor_class_ieeefloat.cc @@ -62,29 +62,29 @@ static grib_accessor_class _grib_accessor_class_ieeefloat = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - 0, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + 0, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ &value_count, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_unpack procedures long */ - &pack_double, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - &unpack_double, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + 0, /* pack_long */ + 0, /* unpack_long */ + &pack_double, /* pack_double */ + 0, /* pack_float */ + &unpack_double, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ &update_size, /* update_size */ @@ -93,10 +93,10 @@ static grib_accessor_class _grib_accessor_class_ieeefloat = { &nearest_smaller_value, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -108,7 +108,7 @@ grib_accessor_class* grib_accessor_class_ieeefloat = &_grib_accessor_class_ieeef //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_ifs_param.cc b/src/grib_accessor_class_ifs_param.cc index a24fadabc..5fc275f63 100644 --- a/src/grib_accessor_class_ifs_param.cc +++ b/src/grib_accessor_class_ifs_param.cc @@ -63,29 +63,29 @@ static grib_accessor_class _grib_accessor_class_ifs_param = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - 0, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + 0, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ 0, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ &get_native_type, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - &pack_long, /* grib_pack procedures long */ - &unpack_long, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - 0, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + &pack_long, /* pack_long */ + &unpack_long, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + 0, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -94,10 +94,10 @@ static grib_accessor_class _grib_accessor_class_ifs_param = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -109,7 +109,7 @@ grib_accessor_class* grib_accessor_class_ifs_param = &_grib_accessor_class_ifs_p //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_int16.cc b/src/grib_accessor_class_int16.cc index c216130f6..5906a65b7 100644 --- a/src/grib_accessor_class_int16.cc +++ b/src/grib_accessor_class_int16.cc @@ -53,29 +53,29 @@ static grib_accessor_class _grib_accessor_class_int16 = { 0, /* init_class */ 0, /* init */ 0, /* post_init */ - 0, /* free mem */ - 0, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + 0, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ 0, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - &pack_long, /* grib_pack procedures long */ - &unpack_long, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - 0, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + &pack_long, /* pack_long */ + &unpack_long, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + 0, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -84,10 +84,10 @@ static grib_accessor_class _grib_accessor_class_int16 = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -99,7 +99,7 @@ grib_accessor_class* grib_accessor_class_int16 = &_grib_accessor_class_int16; //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_int16_little_endian.cc b/src/grib_accessor_class_int16_little_endian.cc index 7c869a238..8230e8042 100644 --- a/src/grib_accessor_class_int16_little_endian.cc +++ b/src/grib_accessor_class_int16_little_endian.cc @@ -53,29 +53,29 @@ static grib_accessor_class _grib_accessor_class_int16_little_endian = { 0, /* init_class */ 0, /* init */ 0, /* post_init */ - 0, /* free mem */ - 0, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + 0, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ 0, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - &pack_long, /* grib_pack procedures long */ - &unpack_long, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - 0, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + &pack_long, /* pack_long */ + &unpack_long, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + 0, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -84,10 +84,10 @@ static grib_accessor_class _grib_accessor_class_int16_little_endian = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -99,7 +99,7 @@ grib_accessor_class* grib_accessor_class_int16_little_endian = &_grib_accessor_c //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_int32.cc b/src/grib_accessor_class_int32.cc index 1087662fa..e3b9834e0 100644 --- a/src/grib_accessor_class_int32.cc +++ b/src/grib_accessor_class_int32.cc @@ -53,29 +53,29 @@ static grib_accessor_class _grib_accessor_class_int32 = { 0, /* init_class */ 0, /* init */ 0, /* post_init */ - 0, /* free mem */ - 0, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + 0, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ 0, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - &pack_long, /* grib_pack procedures long */ - &unpack_long, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - 0, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + &pack_long, /* pack_long */ + &unpack_long, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + 0, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -84,10 +84,10 @@ static grib_accessor_class _grib_accessor_class_int32 = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -99,7 +99,7 @@ grib_accessor_class* grib_accessor_class_int32 = &_grib_accessor_class_int32; //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_int32_little_endian.cc b/src/grib_accessor_class_int32_little_endian.cc index 3b7f5dc3f..4813d9b01 100644 --- a/src/grib_accessor_class_int32_little_endian.cc +++ b/src/grib_accessor_class_int32_little_endian.cc @@ -53,29 +53,29 @@ static grib_accessor_class _grib_accessor_class_int32_little_endian = { 0, /* init_class */ 0, /* init */ 0, /* post_init */ - 0, /* free mem */ - 0, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + 0, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ 0, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - &pack_long, /* grib_pack procedures long */ - &unpack_long, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - 0, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + &pack_long, /* pack_long */ + &unpack_long, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + 0, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -84,10 +84,10 @@ static grib_accessor_class _grib_accessor_class_int32_little_endian = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -99,7 +99,7 @@ grib_accessor_class* grib_accessor_class_int32_little_endian = &_grib_accessor_c //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_int64.cc b/src/grib_accessor_class_int64.cc index 4341a6ce5..2f32552b4 100644 --- a/src/grib_accessor_class_int64.cc +++ b/src/grib_accessor_class_int64.cc @@ -53,29 +53,29 @@ static grib_accessor_class _grib_accessor_class_int64 = { 0, /* init_class */ 0, /* init */ 0, /* post_init */ - 0, /* free mem */ - 0, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + 0, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ 0, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - &pack_long, /* grib_pack procedures long */ - &unpack_long, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - 0, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + &pack_long, /* pack_long */ + &unpack_long, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + 0, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -84,10 +84,10 @@ static grib_accessor_class _grib_accessor_class_int64 = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -99,7 +99,7 @@ grib_accessor_class* grib_accessor_class_int64 = &_grib_accessor_class_int64; //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_int64_little_endian.cc b/src/grib_accessor_class_int64_little_endian.cc index 8b5debfe7..4212db3c0 100644 --- a/src/grib_accessor_class_int64_little_endian.cc +++ b/src/grib_accessor_class_int64_little_endian.cc @@ -53,29 +53,29 @@ static grib_accessor_class _grib_accessor_class_int64_little_endian = { 0, /* init_class */ 0, /* init */ 0, /* post_init */ - 0, /* free mem */ - 0, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + 0, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ 0, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - &pack_long, /* grib_pack procedures long */ - &unpack_long, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - 0, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + &pack_long, /* pack_long */ + &unpack_long, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + 0, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -84,10 +84,10 @@ static grib_accessor_class _grib_accessor_class_int64_little_endian = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -99,7 +99,7 @@ grib_accessor_class* grib_accessor_class_int64_little_endian = &_grib_accessor_c //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_int8.cc b/src/grib_accessor_class_int8.cc index bbd8fd16c..b45b912f6 100644 --- a/src/grib_accessor_class_int8.cc +++ b/src/grib_accessor_class_int8.cc @@ -53,29 +53,29 @@ static grib_accessor_class _grib_accessor_class_int8 = { 0, /* init_class */ 0, /* init */ 0, /* post_init */ - 0, /* free mem */ - 0, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + 0, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ 0, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - &pack_long, /* grib_pack procedures long */ - &unpack_long, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - 0, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + &pack_long, /* pack_long */ + &unpack_long, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + 0, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -84,10 +84,10 @@ static grib_accessor_class _grib_accessor_class_int8 = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -99,7 +99,7 @@ grib_accessor_class* grib_accessor_class_int8 = &_grib_accessor_class_int8; //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_iterator.cc b/src/grib_accessor_class_iterator.cc index 4a89437e2..ec0ff29d1 100644 --- a/src/grib_accessor_class_iterator.cc +++ b/src/grib_accessor_class_iterator.cc @@ -57,29 +57,29 @@ static grib_accessor_class _grib_accessor_class_iterator = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - &dump, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + &dump, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ 0, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - 0, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + 0, /* pack_long */ + 0, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + 0, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -88,10 +88,10 @@ static grib_accessor_class _grib_accessor_class_iterator = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -103,7 +103,7 @@ grib_accessor_class* grib_accessor_class_iterator = &_grib_accessor_class_iterat //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_julian_date.cc b/src/grib_accessor_class_julian_date.cc index 2c4a08456..e53b81455 100644 --- a/src/grib_accessor_class_julian_date.cc +++ b/src/grib_accessor_class_julian_date.cc @@ -83,29 +83,29 @@ static grib_accessor_class _grib_accessor_class_julian_date = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - &dump, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + &dump, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ 0, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - &pack_long, /* grib_pack procedures long */ - &unpack_long, /* grib_unpack procedures long */ - &pack_double, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - &unpack_double, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - &pack_string, /* grib_pack procedures string */ - &unpack_string, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + &pack_long, /* pack_long */ + &unpack_long, /* unpack_long */ + &pack_double, /* pack_double */ + 0, /* pack_float */ + &unpack_double, /* unpack_double */ + 0, /* unpack_float */ + &pack_string, /* pack_string */ + &unpack_string, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ &pack_expression, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -114,10 +114,10 @@ static grib_accessor_class _grib_accessor_class_julian_date = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -129,7 +129,7 @@ grib_accessor_class* grib_accessor_class_julian_date = &_grib_accessor_class_jul //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_julian_day.cc b/src/grib_accessor_class_julian_day.cc index 59b3c105a..74367f5e9 100644 --- a/src/grib_accessor_class_julian_day.cc +++ b/src/grib_accessor_class_julian_day.cc @@ -68,29 +68,29 @@ static grib_accessor_class _grib_accessor_class_julian_day = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - &dump, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + &dump, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ 0, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - &pack_long, /* grib_pack procedures long */ - &unpack_long, /* grib_unpack procedures long */ - &pack_double, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - &unpack_double, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + &pack_long, /* pack_long */ + &unpack_long, /* unpack_long */ + &pack_double, /* pack_double */ + 0, /* pack_float */ + &unpack_double, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -99,10 +99,10 @@ static grib_accessor_class _grib_accessor_class_julian_day = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -114,7 +114,7 @@ grib_accessor_class* grib_accessor_class_julian_day = &_grib_accessor_class_juli //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_ksec1expver.cc b/src/grib_accessor_class_ksec1expver.cc index 8107ecfd2..4cb19a4a1 100644 --- a/src/grib_accessor_class_ksec1expver.cc +++ b/src/grib_accessor_class_ksec1expver.cc @@ -57,29 +57,29 @@ static grib_accessor_class _grib_accessor_class_ksec1expver = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - 0, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + 0, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ 0, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - &pack_long, /* grib_pack procedures long */ - &unpack_long, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - 0, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - &pack_string, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + &pack_long, /* pack_long */ + &unpack_long, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + 0, /* unpack_double */ + 0, /* unpack_float */ + &pack_string, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -88,10 +88,10 @@ static grib_accessor_class _grib_accessor_class_ksec1expver = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -103,7 +103,7 @@ grib_accessor_class* grib_accessor_class_ksec1expver = &_grib_accessor_class_kse //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_label.cc b/src/grib_accessor_class_label.cc index 08b964bed..a38848761 100644 --- a/src/grib_accessor_class_label.cc +++ b/src/grib_accessor_class_label.cc @@ -55,29 +55,29 @@ static grib_accessor_class _grib_accessor_class_label = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - &dump, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + &dump, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ 0, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ &get_native_type, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - 0, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - &unpack_string, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + 0, /* pack_long */ + 0, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + 0, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + &unpack_string, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -86,10 +86,10 @@ static grib_accessor_class _grib_accessor_class_label = { 0, /* nearest_smaller_value */ 0, /* next accessor */ &compare, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -101,7 +101,7 @@ grib_accessor_class* grib_accessor_class_label = &_grib_accessor_class_label; //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_laplacian.cc b/src/grib_accessor_class_laplacian.cc index 6ab032519..1dbc4b670 100644 --- a/src/grib_accessor_class_laplacian.cc +++ b/src/grib_accessor_class_laplacian.cc @@ -72,29 +72,29 @@ static grib_accessor_class _grib_accessor_class_laplacian = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - 0, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + 0, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ 0, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - &is_missing, /* grib_pack procedures long */ - &pack_long, /* grib_pack procedures long */ - 0, /* grib_unpack procedures long */ - &pack_double, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - &unpack_double, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + &is_missing, /* is_missing */ + &pack_long, /* pack_long */ + 0, /* unpack_long */ + &pack_double, /* pack_double */ + 0, /* pack_float */ + &unpack_double, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -103,10 +103,10 @@ static grib_accessor_class _grib_accessor_class_laplacian = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -118,7 +118,7 @@ grib_accessor_class* grib_accessor_class_laplacian = &_grib_accessor_class_lapla //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_latitudes.cc b/src/grib_accessor_class_latitudes.cc index d99b9b8b3..b4a99110c 100644 --- a/src/grib_accessor_class_latitudes.cc +++ b/src/grib_accessor_class_latitudes.cc @@ -65,29 +65,29 @@ static grib_accessor_class _grib_accessor_class_latitudes = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - 0, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + 0, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ &value_count, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - &unpack_double, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + 0, /* pack_long */ + 0, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + &unpack_double, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -96,10 +96,10 @@ static grib_accessor_class _grib_accessor_class_latitudes = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -111,7 +111,7 @@ grib_accessor_class* grib_accessor_class_latitudes = &_grib_accessor_class_latit //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_latlon_increment.cc b/src/grib_accessor_class_latlon_increment.cc index fa83b003a..7716072bd 100644 --- a/src/grib_accessor_class_latlon_increment.cc +++ b/src/grib_accessor_class_latlon_increment.cc @@ -73,29 +73,29 @@ static grib_accessor_class _grib_accessor_class_latlon_increment = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - 0, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + 0, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ 0, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - &is_missing, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_unpack procedures long */ - &pack_double, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - &unpack_double, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + &is_missing, /* is_missing */ + 0, /* pack_long */ + 0, /* unpack_long */ + &pack_double, /* pack_double */ + 0, /* pack_float */ + &unpack_double, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -104,10 +104,10 @@ static grib_accessor_class _grib_accessor_class_latlon_increment = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -119,7 +119,7 @@ grib_accessor_class* grib_accessor_class_latlon_increment = &_grib_accessor_clas //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_latlonvalues.cc b/src/grib_accessor_class_latlonvalues.cc index 01c1c8b92..140f52266 100644 --- a/src/grib_accessor_class_latlonvalues.cc +++ b/src/grib_accessor_class_latlonvalues.cc @@ -57,29 +57,29 @@ static grib_accessor_class _grib_accessor_class_latlonvalues = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - 0, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + 0, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ &value_count, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - &unpack_double, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + 0, /* pack_long */ + 0, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + &unpack_double, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -88,10 +88,10 @@ static grib_accessor_class _grib_accessor_class_latlonvalues = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -103,7 +103,7 @@ grib_accessor_class* grib_accessor_class_latlonvalues = &_grib_accessor_class_la //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_library_version.cc b/src/grib_accessor_class_library_version.cc index 9f7a091b9..ef6170715 100644 --- a/src/grib_accessor_class_library_version.cc +++ b/src/grib_accessor_class_library_version.cc @@ -53,29 +53,29 @@ static grib_accessor_class _grib_accessor_class_library_version = { 0, /* init_class */ 0, /* init */ 0, /* post_init */ - 0, /* free mem */ - 0, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + 0, /* dump */ + 0, /* next_offset */ &string_length, /* get length of string */ &value_count, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - 0, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - &unpack_string, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + 0, /* pack_long */ + 0, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + 0, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + &unpack_string, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -84,10 +84,10 @@ static grib_accessor_class _grib_accessor_class_library_version = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -99,7 +99,7 @@ grib_accessor_class* grib_accessor_class_library_version = &_grib_accessor_class //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_local_definition.cc b/src/grib_accessor_class_local_definition.cc index df5a343b4..635abe14e 100644 --- a/src/grib_accessor_class_local_definition.cc +++ b/src/grib_accessor_class_local_definition.cc @@ -80,29 +80,29 @@ static grib_accessor_class _grib_accessor_class_local_definition = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - 0, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + 0, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ &value_count, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - &pack_long, /* grib_pack procedures long */ - &unpack_long, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - 0, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + &pack_long, /* pack_long */ + &unpack_long, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + 0, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -111,10 +111,10 @@ static grib_accessor_class _grib_accessor_class_local_definition = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -126,7 +126,7 @@ grib_accessor_class* grib_accessor_class_local_definition = &_grib_accessor_clas //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_long.cc b/src/grib_accessor_class_long.cc index a0184a744..7fbe9e0d6 100644 --- a/src/grib_accessor_class_long.cc +++ b/src/grib_accessor_class_long.cc @@ -60,29 +60,29 @@ static grib_accessor_class _grib_accessor_class_long = { 0, /* init_class */ 0, /* init */ 0, /* post_init */ - 0, /* free mem */ - &dump, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + &dump, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ 0, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ &get_native_type, /* get native type */ 0, /* get sub_section */ - &pack_missing, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - &unpack_double, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - &pack_string, /* grib_pack procedures string */ - &unpack_string, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + &pack_missing, /* pack_missing */ + 0, /* is_missing */ + 0, /* pack_long */ + 0, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + &unpack_double, /* unpack_double */ + 0, /* unpack_float */ + &pack_string, /* pack_string */ + &unpack_string, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -91,10 +91,10 @@ static grib_accessor_class _grib_accessor_class_long = { 0, /* nearest_smaller_value */ 0, /* next accessor */ &compare, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -106,7 +106,7 @@ grib_accessor_class* grib_accessor_class_long = &_grib_accessor_class_long; //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_long_vector.cc b/src/grib_accessor_class_long_vector.cc index a60a80df8..ffd29f339 100644 --- a/src/grib_accessor_class_long_vector.cc +++ b/src/grib_accessor_class_long_vector.cc @@ -69,29 +69,29 @@ static grib_accessor_class _grib_accessor_class_long_vector = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - 0, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + 0, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ 0, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ &get_native_type, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - &pack_long, /* grib_pack procedures long */ - &unpack_long, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - &unpack_double, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + &pack_long, /* pack_long */ + &unpack_long, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + &unpack_double, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -100,10 +100,10 @@ static grib_accessor_class _grib_accessor_class_long_vector = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -115,7 +115,7 @@ grib_accessor_class* grib_accessor_class_long_vector = &_grib_accessor_class_lon //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_longitudes.cc b/src/grib_accessor_class_longitudes.cc index d1a201db9..6b929cf05 100644 --- a/src/grib_accessor_class_longitudes.cc +++ b/src/grib_accessor_class_longitudes.cc @@ -65,29 +65,29 @@ static grib_accessor_class _grib_accessor_class_longitudes = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - 0, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + 0, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ &value_count, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - &unpack_double, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + 0, /* pack_long */ + 0, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + &unpack_double, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -96,10 +96,10 @@ static grib_accessor_class _grib_accessor_class_longitudes = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -111,7 +111,7 @@ grib_accessor_class* grib_accessor_class_longitudes = &_grib_accessor_class_long //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_lookup.cc b/src/grib_accessor_class_lookup.cc index 038c75431..2e174bdf2 100644 --- a/src/grib_accessor_class_lookup.cc +++ b/src/grib_accessor_class_lookup.cc @@ -70,29 +70,29 @@ static grib_accessor_class _grib_accessor_class_lookup = { 0, /* init_class */ &init, /* init */ &post_init, /* post_init */ - 0, /* free mem */ - &dump, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + &dump, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ 0, /* get number of values */ &byte_count, /* get number of bytes */ &byte_offset, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - &pack_long, /* grib_pack procedures long */ - &unpack_long, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - 0, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - &unpack_string, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + &pack_long, /* pack_long */ + &unpack_long, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + 0, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + &unpack_string, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ ¬ify_change, /* notify_change */ 0, /* update_size */ @@ -101,10 +101,10 @@ static grib_accessor_class _grib_accessor_class_lookup = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -116,7 +116,7 @@ grib_accessor_class* grib_accessor_class_lookup = &_grib_accessor_class_lookup; //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_mars_param.cc b/src/grib_accessor_class_mars_param.cc index e071e1fb3..636993f49 100644 --- a/src/grib_accessor_class_mars_param.cc +++ b/src/grib_accessor_class_mars_param.cc @@ -61,29 +61,29 @@ static grib_accessor_class _grib_accessor_class_mars_param = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - 0, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + 0, /* dump */ + 0, /* next_offset */ &string_length, /* get length of string */ 0, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - 0, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - &pack_string, /* grib_pack procedures string */ - &unpack_string, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + 0, /* pack_long */ + 0, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + 0, /* unpack_double */ + 0, /* unpack_float */ + &pack_string, /* pack_string */ + &unpack_string, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -92,10 +92,10 @@ static grib_accessor_class _grib_accessor_class_mars_param = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -107,7 +107,7 @@ grib_accessor_class* grib_accessor_class_mars_param = &_grib_accessor_class_mars //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_mars_step.cc b/src/grib_accessor_class_mars_step.cc index 695e2f88e..e9d030383 100644 --- a/src/grib_accessor_class_mars_step.cc +++ b/src/grib_accessor_class_mars_step.cc @@ -65,29 +65,29 @@ static grib_accessor_class _grib_accessor_class_mars_step = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - 0, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + 0, /* dump */ + 0, /* next_offset */ &string_length, /* get length of string */ &value_count, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ &get_native_type, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - &pack_long, /* grib_pack procedures long */ - &unpack_long, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - 0, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - &pack_string, /* grib_pack procedures string */ - &unpack_string, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + &pack_long, /* pack_long */ + &unpack_long, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + 0, /* unpack_double */ + 0, /* unpack_float */ + &pack_string, /* pack_string */ + &unpack_string, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -96,10 +96,10 @@ static grib_accessor_class _grib_accessor_class_mars_step = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -111,7 +111,7 @@ grib_accessor_class* grib_accessor_class_mars_step = &_grib_accessor_class_mars_ //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_md5.cc b/src/grib_accessor_class_md5.cc index 6a9cf39b8..05f5ec9f6 100644 --- a/src/grib_accessor_class_md5.cc +++ b/src/grib_accessor_class_md5.cc @@ -63,29 +63,29 @@ static grib_accessor_class _grib_accessor_class_md5 = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - &destroy, /* free mem */ - 0, /* describes himself */ - 0, /* get length of section */ + &destroy, /* destroy */ + 0, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ &value_count, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ &get_native_type, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - 0, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - &unpack_string, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + 0, /* pack_long */ + 0, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + 0, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + &unpack_string, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -94,10 +94,10 @@ static grib_accessor_class _grib_accessor_class_md5 = { 0, /* nearest_smaller_value */ 0, /* next accessor */ &compare, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -109,7 +109,7 @@ grib_accessor_class* grib_accessor_class_md5 = &_grib_accessor_class_md5; //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_message.cc b/src/grib_accessor_class_message.cc index 1365c0d82..0b02df2f5 100644 --- a/src/grib_accessor_class_message.cc +++ b/src/grib_accessor_class_message.cc @@ -63,29 +63,29 @@ static grib_accessor_class _grib_accessor_class_message = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - 0, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + 0, /* dump */ + 0, /* next_offset */ &string_length, /* get length of string */ &value_count, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - 0, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - &unpack_string, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + 0, /* pack_long */ + 0, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + 0, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + &unpack_string, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ &update_size, /* update_size */ @@ -94,10 +94,10 @@ static grib_accessor_class _grib_accessor_class_message = { 0, /* nearest_smaller_value */ 0, /* next accessor */ &compare, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -109,7 +109,7 @@ grib_accessor_class* grib_accessor_class_message = &_grib_accessor_class_message //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_message_copy.cc b/src/grib_accessor_class_message_copy.cc index daa91ef3c..127e8092f 100644 --- a/src/grib_accessor_class_message_copy.cc +++ b/src/grib_accessor_class_message_copy.cc @@ -58,29 +58,29 @@ static grib_accessor_class _grib_accessor_class_message_copy = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - &dump, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + &dump, /* dump */ + 0, /* next_offset */ &string_length, /* get length of string */ 0, /* get number of values */ &byte_count, /* get number of bytes */ 0, /* get offset to bytes */ &get_native_type, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - 0, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - &unpack_string, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + 0, /* pack_long */ + 0, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + 0, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + &unpack_string, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -89,10 +89,10 @@ static grib_accessor_class _grib_accessor_class_message_copy = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -104,7 +104,7 @@ grib_accessor_class* grib_accessor_class_message_copy = &_grib_accessor_class_me //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_missing.cc b/src/grib_accessor_class_missing.cc index 72b308e4e..a0e0bdbbd 100644 --- a/src/grib_accessor_class_missing.cc +++ b/src/grib_accessor_class_missing.cc @@ -79,29 +79,29 @@ static grib_accessor_class _grib_accessor_class_missing = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - &destroy, /* free mem */ - &dump, /* describes himself */ - &next_offset, /* get length of section */ + &destroy, /* destroy */ + &dump, /* dump */ + &next_offset, /* next_offset */ 0, /* get length of string */ &value_count, /* get number of values */ &byte_count, /* get number of bytes */ &byte_offset, /* get offset to bytes */ &get_native_type, /* get native type */ &sub_section, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - &pack_long, /* grib_pack procedures long */ - &unpack_long, /* grib_unpack procedures long */ - &pack_double, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - &unpack_double, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - &pack_string, /* grib_pack procedures string */ - &unpack_string, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - &pack_bytes, /* grib_pack procedures bytes */ - &unpack_bytes, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + &pack_long, /* pack_long */ + &unpack_long, /* unpack_long */ + &pack_double, /* pack_double */ + 0, /* pack_float */ + &unpack_double, /* unpack_double */ + 0, /* unpack_float */ + &pack_string, /* pack_string */ + &unpack_string, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + &pack_bytes, /* pack_bytes */ + &unpack_bytes, /* unpack_bytes */ &pack_expression, /* pack_expression */ ¬ify_change, /* notify_change */ &update_size, /* update_size */ @@ -110,10 +110,10 @@ static grib_accessor_class _grib_accessor_class_missing = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -125,7 +125,7 @@ grib_accessor_class* grib_accessor_class_missing = &_grib_accessor_class_missing //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_nearest.cc b/src/grib_accessor_class_nearest.cc index bf3214947..f04fb901c 100644 --- a/src/grib_accessor_class_nearest.cc +++ b/src/grib_accessor_class_nearest.cc @@ -53,29 +53,29 @@ static grib_accessor_class _grib_accessor_class_nearest = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - &dump, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + &dump, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ 0, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - 0, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + 0, /* pack_long */ + 0, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + 0, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -84,10 +84,10 @@ static grib_accessor_class _grib_accessor_class_nearest = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -99,7 +99,7 @@ grib_accessor_class* grib_accessor_class_nearest = &_grib_accessor_class_nearest //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_non_alpha.cc b/src/grib_accessor_class_non_alpha.cc index 986125053..bfdcc02d3 100644 --- a/src/grib_accessor_class_non_alpha.cc +++ b/src/grib_accessor_class_non_alpha.cc @@ -72,29 +72,29 @@ static grib_accessor_class _grib_accessor_class_non_alpha = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - &dump, /* describes himself */ - &next_offset, /* get length of section */ + 0, /* destroy */ + &dump, /* dump */ + &next_offset, /* next_offset */ &string_length, /* get length of string */ &value_count, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ &get_native_type, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - &pack_long, /* grib_pack procedures long */ - &unpack_long, /* grib_unpack procedures long */ - &pack_double, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - &unpack_double, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - &pack_string, /* grib_pack procedures string */ - &unpack_string, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + &pack_long, /* pack_long */ + &unpack_long, /* unpack_long */ + &pack_double, /* pack_double */ + 0, /* pack_float */ + &unpack_double, /* unpack_double */ + 0, /* unpack_float */ + &pack_string, /* pack_string */ + &unpack_string, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -103,10 +103,10 @@ static grib_accessor_class _grib_accessor_class_non_alpha = { 0, /* nearest_smaller_value */ 0, /* next accessor */ &compare, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -118,7 +118,7 @@ grib_accessor_class* grib_accessor_class_non_alpha = &_grib_accessor_class_non_a //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_number_of_coded_values.cc b/src/grib_accessor_class_number_of_coded_values.cc index 05b79d43c..6d49b5183 100644 --- a/src/grib_accessor_class_number_of_coded_values.cc +++ b/src/grib_accessor_class_number_of_coded_values.cc @@ -66,29 +66,29 @@ static grib_accessor_class _grib_accessor_class_number_of_coded_values = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - 0, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + 0, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ 0, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - &unpack_long, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - 0, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + 0, /* pack_long */ + &unpack_long, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + 0, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -97,10 +97,10 @@ static grib_accessor_class _grib_accessor_class_number_of_coded_values = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -112,7 +112,7 @@ grib_accessor_class* grib_accessor_class_number_of_coded_values = &_grib_accesso //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_number_of_points.cc b/src/grib_accessor_class_number_of_points.cc index 3d5205125..938970ad7 100644 --- a/src/grib_accessor_class_number_of_points.cc +++ b/src/grib_accessor_class_number_of_points.cc @@ -64,29 +64,29 @@ static grib_accessor_class _grib_accessor_class_number_of_points = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - 0, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + 0, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ 0, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - &unpack_long, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - 0, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + 0, /* pack_long */ + &unpack_long, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + 0, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -95,10 +95,10 @@ static grib_accessor_class _grib_accessor_class_number_of_points = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -110,7 +110,7 @@ grib_accessor_class* grib_accessor_class_number_of_points = &_grib_accessor_clas //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_number_of_points_gaussian.cc b/src/grib_accessor_class_number_of_points_gaussian.cc index 95d77735a..d8f3f0c2d 100644 --- a/src/grib_accessor_class_number_of_points_gaussian.cc +++ b/src/grib_accessor_class_number_of_points_gaussian.cc @@ -78,29 +78,29 @@ static grib_accessor_class _grib_accessor_class_number_of_points_gaussian = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - 0, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + 0, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ 0, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - &unpack_long, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - 0, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + 0, /* pack_long */ + &unpack_long, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + 0, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -109,10 +109,10 @@ static grib_accessor_class _grib_accessor_class_number_of_points_gaussian = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -124,7 +124,7 @@ grib_accessor_class* grib_accessor_class_number_of_points_gaussian = &_grib_acce //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_number_of_values.cc b/src/grib_accessor_class_number_of_values.cc index b1d9cfa50..d853a9cb9 100644 --- a/src/grib_accessor_class_number_of_values.cc +++ b/src/grib_accessor_class_number_of_values.cc @@ -68,29 +68,29 @@ static grib_accessor_class _grib_accessor_class_number_of_values = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - 0, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + 0, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ 0, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - &unpack_long, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - 0, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + 0, /* pack_long */ + &unpack_long, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + 0, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -99,10 +99,10 @@ static grib_accessor_class _grib_accessor_class_number_of_values = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -114,7 +114,7 @@ grib_accessor_class* grib_accessor_class_number_of_values = &_grib_accessor_clas //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_number_of_values_data_raw_packing.cc b/src/grib_accessor_class_number_of_values_data_raw_packing.cc index 16c29d7ab..5d038d7ff 100644 --- a/src/grib_accessor_class_number_of_values_data_raw_packing.cc +++ b/src/grib_accessor_class_number_of_values_data_raw_packing.cc @@ -70,29 +70,29 @@ static grib_accessor_class _grib_accessor_class_number_of_values_data_raw_packin 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - 0, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + 0, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ 0, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ &get_native_type, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - &unpack_long, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - 0, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + 0, /* pack_long */ + &unpack_long, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + 0, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -101,10 +101,10 @@ static grib_accessor_class _grib_accessor_class_number_of_values_data_raw_packin 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -116,7 +116,7 @@ grib_accessor_class* grib_accessor_class_number_of_values_data_raw_packing = &_g //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_octahedral_gaussian.cc b/src/grib_accessor_class_octahedral_gaussian.cc index 9839224ce..355879545 100644 --- a/src/grib_accessor_class_octahedral_gaussian.cc +++ b/src/grib_accessor_class_octahedral_gaussian.cc @@ -64,29 +64,29 @@ static grib_accessor_class _grib_accessor_class_octahedral_gaussian = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - 0, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + 0, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ 0, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - &pack_long, /* grib_pack procedures long */ - &unpack_long, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - 0, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + &pack_long, /* pack_long */ + &unpack_long, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + 0, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -95,10 +95,10 @@ static grib_accessor_class _grib_accessor_class_octahedral_gaussian = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -110,7 +110,7 @@ grib_accessor_class* grib_accessor_class_octahedral_gaussian = &_grib_accessor_c //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_octet_number.cc b/src/grib_accessor_class_octet_number.cc index 6be7f6efb..917da92d3 100644 --- a/src/grib_accessor_class_octet_number.cc +++ b/src/grib_accessor_class_octet_number.cc @@ -62,29 +62,29 @@ static grib_accessor_class _grib_accessor_class_octet_number = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - 0, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + 0, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ 0, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - &pack_long, /* grib_pack procedures long */ - &unpack_long, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - 0, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + &pack_long, /* pack_long */ + &unpack_long, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + 0, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -93,10 +93,10 @@ static grib_accessor_class _grib_accessor_class_octet_number = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -108,7 +108,7 @@ grib_accessor_class* grib_accessor_class_octet_number = &_grib_accessor_class_oc //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_offset_file.cc b/src/grib_accessor_class_offset_file.cc index 6acfee894..3fb90643c 100644 --- a/src/grib_accessor_class_offset_file.cc +++ b/src/grib_accessor_class_offset_file.cc @@ -58,29 +58,29 @@ static grib_accessor_class _grib_accessor_class_offset_file = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - 0, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + 0, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ 0, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - &unpack_double, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - &unpack_string, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + 0, /* pack_long */ + 0, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + &unpack_double, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + &unpack_string, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -89,10 +89,10 @@ static grib_accessor_class _grib_accessor_class_offset_file = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -104,7 +104,7 @@ grib_accessor_class* grib_accessor_class_offset_file = &_grib_accessor_class_off //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_offset_values.cc b/src/grib_accessor_class_offset_values.cc index 145506dc5..0a65f0c4c 100644 --- a/src/grib_accessor_class_offset_values.cc +++ b/src/grib_accessor_class_offset_values.cc @@ -61,29 +61,29 @@ static grib_accessor_class _grib_accessor_class_offset_values = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - 0, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + 0, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ 0, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_unpack procedures long */ - &pack_double, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - &unpack_double, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + 0, /* pack_long */ + 0, /* unpack_long */ + &pack_double, /* pack_double */ + 0, /* pack_float */ + &unpack_double, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -92,10 +92,10 @@ static grib_accessor_class _grib_accessor_class_offset_values = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -107,7 +107,7 @@ grib_accessor_class* grib_accessor_class_offset_values = &_grib_accessor_class_o //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_pack_bufr_values.cc b/src/grib_accessor_class_pack_bufr_values.cc index 006aea4ec..1d8d52d5a 100644 --- a/src/grib_accessor_class_pack_bufr_values.cc +++ b/src/grib_accessor_class_pack_bufr_values.cc @@ -67,29 +67,29 @@ static grib_accessor_class _grib_accessor_class_pack_bufr_values = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - &destroy, /* free mem */ - &dump, /* describes himself */ - 0, /* get length of section */ + &destroy, /* destroy */ + &dump, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ &value_count, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ &get_native_type, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - &pack_long, /* grib_pack procedures long */ - &unpack_long, /* grib_unpack procedures long */ - &pack_double, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - &unpack_double, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - &unpack_string, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - &unpack_string_array, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + &pack_long, /* pack_long */ + &unpack_long, /* unpack_long */ + &pack_double, /* pack_double */ + 0, /* pack_float */ + &unpack_double, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + &unpack_string, /* unpack_string */ + 0, /* pack_string_array */ + &unpack_string_array, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -98,10 +98,10 @@ static grib_accessor_class _grib_accessor_class_pack_bufr_values = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -113,7 +113,7 @@ grib_accessor_class* grib_accessor_class_pack_bufr_values = &_grib_accessor_clas //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_pad.cc b/src/grib_accessor_class_pad.cc index a4db1e58f..07d33bb42 100644 --- a/src/grib_accessor_class_pad.cc +++ b/src/grib_accessor_class_pad.cc @@ -60,29 +60,29 @@ static grib_accessor_class _grib_accessor_class_pad = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - 0, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + 0, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ 0, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - 0, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + 0, /* pack_long */ + 0, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + 0, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -91,10 +91,10 @@ static grib_accessor_class _grib_accessor_class_pad = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -106,7 +106,7 @@ grib_accessor_class* grib_accessor_class_pad = &_grib_accessor_class_pad; //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_padding.cc b/src/grib_accessor_class_padding.cc index d066678c6..e8d299df3 100644 --- a/src/grib_accessor_class_padding.cc +++ b/src/grib_accessor_class_padding.cc @@ -62,29 +62,29 @@ static grib_accessor_class _grib_accessor_class_padding = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - 0, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + 0, /* dump */ + 0, /* next_offset */ &string_length, /* get length of string */ &value_count, /* get number of values */ &byte_count, /* get number of bytes */ 0, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - 0, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + 0, /* pack_long */ + 0, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + 0, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ &update_size, /* update_size */ @@ -93,10 +93,10 @@ static grib_accessor_class _grib_accessor_class_padding = { 0, /* nearest_smaller_value */ 0, /* next accessor */ &compare, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -108,7 +108,7 @@ grib_accessor_class* grib_accessor_class_padding = &_grib_accessor_class_padding //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_padto.cc b/src/grib_accessor_class_padto.cc index 56662671b..27cc1a609 100644 --- a/src/grib_accessor_class_padto.cc +++ b/src/grib_accessor_class_padto.cc @@ -60,29 +60,29 @@ static grib_accessor_class _grib_accessor_class_padto = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - &dump, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + &dump, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ 0, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - 0, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + 0, /* pack_long */ + 0, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + 0, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -91,10 +91,10 @@ static grib_accessor_class _grib_accessor_class_padto = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -106,7 +106,7 @@ grib_accessor_class* grib_accessor_class_padto = &_grib_accessor_class_padto; //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_padtoeven.cc b/src/grib_accessor_class_padtoeven.cc index fe79deb22..f01e3a0b7 100644 --- a/src/grib_accessor_class_padtoeven.cc +++ b/src/grib_accessor_class_padtoeven.cc @@ -62,29 +62,29 @@ static grib_accessor_class _grib_accessor_class_padtoeven = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - 0, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + 0, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ 0, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - 0, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + 0, /* pack_long */ + 0, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + 0, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -93,10 +93,10 @@ static grib_accessor_class _grib_accessor_class_padtoeven = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -108,7 +108,7 @@ grib_accessor_class* grib_accessor_class_padtoeven = &_grib_accessor_class_padto //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_padtomultiple.cc b/src/grib_accessor_class_padtomultiple.cc index b996376ca..e6974c11d 100644 --- a/src/grib_accessor_class_padtomultiple.cc +++ b/src/grib_accessor_class_padtomultiple.cc @@ -62,29 +62,29 @@ static grib_accessor_class _grib_accessor_class_padtomultiple = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - 0, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + 0, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ 0, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - 0, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + 0, /* pack_long */ + 0, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + 0, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -93,10 +93,10 @@ static grib_accessor_class _grib_accessor_class_padtomultiple = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -108,7 +108,7 @@ grib_accessor_class* grib_accessor_class_padtomultiple = &_grib_accessor_class_p //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_position.cc b/src/grib_accessor_class_position.cc index 8ea04b97f..061dd9c7a 100644 --- a/src/grib_accessor_class_position.cc +++ b/src/grib_accessor_class_position.cc @@ -62,29 +62,29 @@ static grib_accessor_class _grib_accessor_class_position = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - &dump, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + &dump, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ 0, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ &get_native_type, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - &unpack_long, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - 0, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + 0, /* pack_long */ + &unpack_long, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + 0, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -93,10 +93,10 @@ static grib_accessor_class _grib_accessor_class_position = { 0, /* nearest_smaller_value */ 0, /* next accessor */ &compare, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -108,7 +108,7 @@ grib_accessor_class* grib_accessor_class_position = &_grib_accessor_class_positi //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_proj_string.cc b/src/grib_accessor_class_proj_string.cc index f3be3ef7e..da7f77d0f 100644 --- a/src/grib_accessor_class_proj_string.cc +++ b/src/grib_accessor_class_proj_string.cc @@ -57,29 +57,29 @@ static grib_accessor_class _grib_accessor_class_proj_string = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - 0, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + 0, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ 0, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ &get_native_type, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - 0, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - &unpack_string, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + 0, /* pack_long */ + 0, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + 0, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + &unpack_string, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -88,10 +88,10 @@ static grib_accessor_class _grib_accessor_class_proj_string = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -103,7 +103,7 @@ grib_accessor_class* grib_accessor_class_proj_string = &_grib_accessor_class_pro //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_raw.cc b/src/grib_accessor_class_raw.cc index 3b8e31d52..d078ac57d 100644 --- a/src/grib_accessor_class_raw.cc +++ b/src/grib_accessor_class_raw.cc @@ -64,29 +64,29 @@ static grib_accessor_class _grib_accessor_class_raw = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - 0, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + 0, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ &value_count, /* get number of values */ &byte_count, /* get number of bytes */ 0, /* get offset to bytes */ &get_native_type, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - 0, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - &pack_bytes, /* grib_pack procedures bytes */ - &unpack_bytes, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + 0, /* pack_long */ + 0, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + 0, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + &pack_bytes, /* pack_bytes */ + &unpack_bytes, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ &update_size, /* update_size */ @@ -95,10 +95,10 @@ static grib_accessor_class _grib_accessor_class_raw = { 0, /* nearest_smaller_value */ 0, /* next accessor */ &compare, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -110,7 +110,7 @@ grib_accessor_class* grib_accessor_class_raw = &_grib_accessor_class_raw; //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_rdbtime_guess_date.cc b/src/grib_accessor_class_rdbtime_guess_date.cc index 76ab4a989..130ede124 100644 --- a/src/grib_accessor_class_rdbtime_guess_date.cc +++ b/src/grib_accessor_class_rdbtime_guess_date.cc @@ -66,29 +66,29 @@ static grib_accessor_class _grib_accessor_class_rdbtime_guess_date = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - &dump, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + &dump, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ 0, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - &pack_long, /* grib_pack procedures long */ - &unpack_long, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - 0, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + &pack_long, /* pack_long */ + &unpack_long, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + 0, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -97,10 +97,10 @@ static grib_accessor_class _grib_accessor_class_rdbtime_guess_date = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -112,7 +112,7 @@ grib_accessor_class* grib_accessor_class_rdbtime_guess_date = &_grib_accessor_cl //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_reference_value_error.cc b/src/grib_accessor_class_reference_value_error.cc index b68066169..3dc73b09c 100644 --- a/src/grib_accessor_class_reference_value_error.cc +++ b/src/grib_accessor_class_reference_value_error.cc @@ -62,29 +62,29 @@ static grib_accessor_class _grib_accessor_class_reference_value_error = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - 0, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + 0, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ 0, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - &unpack_double, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + 0, /* pack_long */ + 0, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + &unpack_double, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -93,10 +93,10 @@ static grib_accessor_class _grib_accessor_class_reference_value_error = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -108,7 +108,7 @@ grib_accessor_class* grib_accessor_class_reference_value_error = &_grib_accessor //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_round.cc b/src/grib_accessor_class_round.cc index 3ce251652..629dcd359 100644 --- a/src/grib_accessor_class_round.cc +++ b/src/grib_accessor_class_round.cc @@ -55,29 +55,29 @@ static grib_accessor_class _grib_accessor_class_round = { 0, /* init_class */ 0, /* init */ 0, /* post_init */ - 0, /* free mem */ - 0, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + 0, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ 0, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - &unpack_double, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - &unpack_string, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + 0, /* pack_long */ + 0, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + &unpack_double, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + &unpack_string, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -86,10 +86,10 @@ static grib_accessor_class _grib_accessor_class_round = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -101,7 +101,7 @@ grib_accessor_class* grib_accessor_class_round = &_grib_accessor_class_round; //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_scale.cc b/src/grib_accessor_class_scale.cc index 80527d7a6..e195a8c6c 100644 --- a/src/grib_accessor_class_scale.cc +++ b/src/grib_accessor_class_scale.cc @@ -70,29 +70,29 @@ static grib_accessor_class _grib_accessor_class_scale = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - 0, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + 0, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ 0, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - &is_missing, /* grib_pack procedures long */ - &pack_long, /* grib_pack procedures long */ - 0, /* grib_unpack procedures long */ - &pack_double, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - &unpack_double, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + &is_missing, /* is_missing */ + &pack_long, /* pack_long */ + 0, /* unpack_long */ + &pack_double, /* pack_double */ + 0, /* pack_float */ + &unpack_double, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -101,10 +101,10 @@ static grib_accessor_class _grib_accessor_class_scale = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -116,7 +116,7 @@ grib_accessor_class* grib_accessor_class_scale = &_grib_accessor_class_scale; //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_scale_values.cc b/src/grib_accessor_class_scale_values.cc index e87ecc36a..96efcab0f 100644 --- a/src/grib_accessor_class_scale_values.cc +++ b/src/grib_accessor_class_scale_values.cc @@ -61,29 +61,29 @@ static grib_accessor_class _grib_accessor_class_scale_values = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - 0, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + 0, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ 0, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_unpack procedures long */ - &pack_double, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - &unpack_double, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + 0, /* pack_long */ + 0, /* unpack_long */ + &pack_double, /* pack_double */ + 0, /* pack_float */ + &unpack_double, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -92,10 +92,10 @@ static grib_accessor_class _grib_accessor_class_scale_values = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -107,7 +107,7 @@ grib_accessor_class* grib_accessor_class_scale_values = &_grib_accessor_class_sc //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_second_order_bits_per_value.cc b/src/grib_accessor_class_second_order_bits_per_value.cc index f38c57594..c8fb9f3a3 100644 --- a/src/grib_accessor_class_second_order_bits_per_value.cc +++ b/src/grib_accessor_class_second_order_bits_per_value.cc @@ -66,29 +66,29 @@ static grib_accessor_class _grib_accessor_class_second_order_bits_per_value = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - 0, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + 0, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ 0, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - &pack_long, /* grib_pack procedures long */ - &unpack_long, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - 0, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + &pack_long, /* pack_long */ + &unpack_long, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + 0, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -97,10 +97,10 @@ static grib_accessor_class _grib_accessor_class_second_order_bits_per_value = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -112,7 +112,7 @@ grib_accessor_class* grib_accessor_class_second_order_bits_per_value = &_grib_ac //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_section.cc b/src/grib_accessor_class_section.cc index 21ff77c62..551a7d95e 100644 --- a/src/grib_accessor_class_section.cc +++ b/src/grib_accessor_class_section.cc @@ -63,29 +63,29 @@ static grib_accessor_class _grib_accessor_class_section = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - &destroy, /* free mem */ - &dump, /* describes himself */ - &next_offset, /* get length of section */ + &destroy, /* destroy */ + &dump, /* dump */ + &next_offset, /* next_offset */ 0, /* get length of string */ 0, /* get number of values */ &byte_count, /* get number of bytes */ 0, /* get offset to bytes */ &get_native_type, /* get native type */ &sub_section, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - 0, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + 0, /* pack_long */ + 0, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + 0, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ &update_size, /* update_size */ @@ -94,10 +94,10 @@ static grib_accessor_class _grib_accessor_class_section = { 0, /* nearest_smaller_value */ &next, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -109,7 +109,7 @@ grib_accessor_class* grib_accessor_class_section = &_grib_accessor_class_section //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_section_length.cc b/src/grib_accessor_class_section_length.cc index 601964a70..5cbc8eb04 100644 --- a/src/grib_accessor_class_section_length.cc +++ b/src/grib_accessor_class_section_length.cc @@ -57,29 +57,29 @@ static grib_accessor_class _grib_accessor_class_section_length = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - &dump, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + &dump, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ &value_count, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - 0, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + 0, /* pack_long */ + 0, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + 0, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -88,10 +88,10 @@ static grib_accessor_class _grib_accessor_class_section_length = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -103,7 +103,7 @@ grib_accessor_class* grib_accessor_class_section_length = &_grib_accessor_class_ //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_section_padding.cc b/src/grib_accessor_class_section_padding.cc index 1cfbd9d1f..553899a1b 100644 --- a/src/grib_accessor_class_section_padding.cc +++ b/src/grib_accessor_class_section_padding.cc @@ -55,29 +55,29 @@ static grib_accessor_class _grib_accessor_class_section_padding = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - 0, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + 0, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ 0, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - 0, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + 0, /* pack_long */ + 0, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + 0, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -86,10 +86,10 @@ static grib_accessor_class _grib_accessor_class_section_padding = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -101,7 +101,7 @@ grib_accessor_class* grib_accessor_class_section_padding = &_grib_accessor_class //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_section_pointer.cc b/src/grib_accessor_class_section_pointer.cc index e5c085e23..c967f001e 100644 --- a/src/grib_accessor_class_section_pointer.cc +++ b/src/grib_accessor_class_section_pointer.cc @@ -61,29 +61,29 @@ static grib_accessor_class _grib_accessor_class_section_pointer = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - 0, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + 0, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ 0, /* get number of values */ &byte_count, /* get number of bytes */ &byte_offset, /* get offset to bytes */ &get_native_type, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - 0, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - &unpack_string, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + 0, /* pack_long */ + 0, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + 0, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + &unpack_string, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -92,10 +92,10 @@ static grib_accessor_class _grib_accessor_class_section_pointer = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -107,7 +107,7 @@ grib_accessor_class* grib_accessor_class_section_pointer = &_grib_accessor_class //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_select_step_template.cc b/src/grib_accessor_class_select_step_template.cc index efd61b831..6ec5a1777 100644 --- a/src/grib_accessor_class_select_step_template.cc +++ b/src/grib_accessor_class_select_step_template.cc @@ -63,29 +63,29 @@ static grib_accessor_class _grib_accessor_class_select_step_template = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - 0, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + 0, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ &value_count, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - &pack_long, /* grib_pack procedures long */ - &unpack_long, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - 0, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + &pack_long, /* pack_long */ + &unpack_long, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + 0, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -94,10 +94,10 @@ static grib_accessor_class _grib_accessor_class_select_step_template = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -109,7 +109,7 @@ grib_accessor_class* grib_accessor_class_select_step_template = &_grib_accessor_ //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_sexagesimal2decimal.cc b/src/grib_accessor_class_sexagesimal2decimal.cc index c9b4a017c..d13583433 100644 --- a/src/grib_accessor_class_sexagesimal2decimal.cc +++ b/src/grib_accessor_class_sexagesimal2decimal.cc @@ -63,29 +63,29 @@ static grib_accessor_class _grib_accessor_class_sexagesimal2decimal = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - &dump, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + &dump, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ 0, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ &get_native_type, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - 0, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - &unpack_string, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + 0, /* pack_long */ + 0, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + 0, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + &unpack_string, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -94,10 +94,10 @@ static grib_accessor_class _grib_accessor_class_sexagesimal2decimal = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -109,7 +109,7 @@ grib_accessor_class* grib_accessor_class_sexagesimal2decimal = &_grib_accessor_c //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_signed.cc b/src/grib_accessor_class_signed.cc index fd0eeaed3..1d7ed6b6b 100644 --- a/src/grib_accessor_class_signed.cc +++ b/src/grib_accessor_class_signed.cc @@ -71,29 +71,29 @@ static grib_accessor_class _grib_accessor_class_signed = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - &dump, /* describes himself */ - &next_offset, /* get length of section */ + 0, /* destroy */ + &dump, /* dump */ + &next_offset, /* next_offset */ 0, /* get length of string */ &value_count, /* get number of values */ &byte_count, /* get number of bytes */ &byte_offset, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - &is_missing, /* grib_pack procedures long */ - &pack_long, /* grib_pack procedures long */ - &unpack_long, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - 0, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + &is_missing, /* is_missing */ + &pack_long, /* pack_long */ + &unpack_long, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + 0, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ &update_size, /* update_size */ @@ -102,10 +102,10 @@ static grib_accessor_class _grib_accessor_class_signed = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -117,7 +117,7 @@ grib_accessor_class* grib_accessor_class_signed = &_grib_accessor_class_signed; //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_signed_bits.cc b/src/grib_accessor_class_signed_bits.cc index 1530a17cd..ebd0cafc6 100644 --- a/src/grib_accessor_class_signed_bits.cc +++ b/src/grib_accessor_class_signed_bits.cc @@ -70,29 +70,29 @@ static grib_accessor_class _grib_accessor_class_signed_bits = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - &dump, /* describes himself */ - &next_offset, /* get length of section */ + 0, /* destroy */ + &dump, /* dump */ + &next_offset, /* next_offset */ 0, /* get length of string */ &value_count, /* get number of values */ &byte_count, /* get number of bytes */ &byte_offset, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - &pack_long, /* grib_pack procedures long */ - &unpack_long, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - 0, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + &pack_long, /* pack_long */ + &unpack_long, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + 0, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ &update_size, /* update_size */ @@ -101,10 +101,10 @@ static grib_accessor_class _grib_accessor_class_signed_bits = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -116,7 +116,7 @@ grib_accessor_class* grib_accessor_class_signed_bits = &_grib_accessor_class_sig //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_simple_packing_error.cc b/src/grib_accessor_class_simple_packing_error.cc index 8b0505413..6ad7a31c3 100644 --- a/src/grib_accessor_class_simple_packing_error.cc +++ b/src/grib_accessor_class_simple_packing_error.cc @@ -68,29 +68,29 @@ static grib_accessor_class _grib_accessor_class_simple_packing_error = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - 0, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + 0, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ 0, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - &unpack_double, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + 0, /* pack_long */ + 0, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + &unpack_double, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -99,10 +99,10 @@ static grib_accessor_class _grib_accessor_class_simple_packing_error = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -114,7 +114,7 @@ grib_accessor_class* grib_accessor_class_simple_packing_error = &_grib_accessor_ //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_size.cc b/src/grib_accessor_class_size.cc index e69df3a56..7bea5b7d3 100644 --- a/src/grib_accessor_class_size.cc +++ b/src/grib_accessor_class_size.cc @@ -54,29 +54,29 @@ static grib_accessor_class _grib_accessor_class_size = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - 0, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + 0, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ 0, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - &unpack_long, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - 0, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + 0, /* pack_long */ + &unpack_long, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + 0, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -85,10 +85,10 @@ static grib_accessor_class _grib_accessor_class_size = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -100,7 +100,7 @@ grib_accessor_class* grib_accessor_class_size = &_grib_accessor_class_size; //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_smart_table.cc b/src/grib_accessor_class_smart_table.cc index ea3f680e3..f23ef85f2 100644 --- a/src/grib_accessor_class_smart_table.cc +++ b/src/grib_accessor_class_smart_table.cc @@ -89,29 +89,29 @@ static grib_accessor_class _grib_accessor_class_smart_table = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - &destroy, /* free mem */ - &dump, /* describes himself */ - 0, /* get length of section */ + &destroy, /* destroy */ + &dump, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ &value_count, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ &get_native_type, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - &unpack_long, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - 0, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - &unpack_string, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + 0, /* pack_long */ + &unpack_long, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + 0, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + &unpack_string, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -120,10 +120,10 @@ static grib_accessor_class _grib_accessor_class_smart_table = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -135,7 +135,7 @@ grib_accessor_class* grib_accessor_class_smart_table = &_grib_accessor_class_sma //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_smart_table_column.cc b/src/grib_accessor_class_smart_table_column.cc index 234a54971..d1dd0009c 100644 --- a/src/grib_accessor_class_smart_table_column.cc +++ b/src/grib_accessor_class_smart_table_column.cc @@ -62,29 +62,29 @@ static grib_accessor_class _grib_accessor_class_smart_table_column = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - &destroy, /* free mem */ - &dump, /* describes himself */ - 0, /* get length of section */ + &destroy, /* destroy */ + &dump, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ &value_count, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ &get_native_type, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - &unpack_long, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - 0, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - &unpack_string_array, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + 0, /* pack_long */ + &unpack_long, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + 0, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + &unpack_string_array, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -93,10 +93,10 @@ static grib_accessor_class _grib_accessor_class_smart_table_column = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -108,7 +108,7 @@ grib_accessor_class* grib_accessor_class_smart_table_column = &_grib_accessor_cl //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_spd.cc b/src/grib_accessor_class_spd.cc index abab36ee8..e5a59e6d2 100644 --- a/src/grib_accessor_class_spd.cc +++ b/src/grib_accessor_class_spd.cc @@ -70,29 +70,29 @@ static grib_accessor_class _grib_accessor_class_spd = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - &dump, /* describes himself */ - &next_offset, /* get length of section */ + 0, /* destroy */ + &dump, /* dump */ + &next_offset, /* next_offset */ 0, /* get length of string */ &value_count, /* get number of values */ &byte_count, /* get number of bytes */ &byte_offset, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - &pack_long, /* grib_pack procedures long */ - &unpack_long, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - 0, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + &pack_long, /* pack_long */ + &unpack_long, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + 0, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ &update_size, /* update_size */ @@ -101,10 +101,10 @@ static grib_accessor_class _grib_accessor_class_spd = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -116,7 +116,7 @@ grib_accessor_class* grib_accessor_class_spd = &_grib_accessor_class_spd; //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_spectral_truncation.cc b/src/grib_accessor_class_spectral_truncation.cc index 92aad01cb..730e5fe4e 100644 --- a/src/grib_accessor_class_spectral_truncation.cc +++ b/src/grib_accessor_class_spectral_truncation.cc @@ -66,29 +66,29 @@ static grib_accessor_class _grib_accessor_class_spectral_truncation = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - 0, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + 0, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ 0, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - &unpack_long, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - 0, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + 0, /* pack_long */ + &unpack_long, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + 0, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -97,10 +97,10 @@ static grib_accessor_class _grib_accessor_class_spectral_truncation = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -112,7 +112,7 @@ grib_accessor_class* grib_accessor_class_spectral_truncation = &_grib_accessor_c //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_sprintf.cc b/src/grib_accessor_class_sprintf.cc index a0e12f14e..e735e758a 100644 --- a/src/grib_accessor_class_sprintf.cc +++ b/src/grib_accessor_class_sprintf.cc @@ -58,29 +58,29 @@ static grib_accessor_class _grib_accessor_class_sprintf = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - 0, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + 0, /* dump */ + 0, /* next_offset */ &string_length, /* get length of string */ &value_count, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - 0, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - &pack_string, /* grib_pack procedures string */ - &unpack_string, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + 0, /* pack_long */ + 0, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + 0, /* unpack_double */ + 0, /* unpack_float */ + &pack_string, /* pack_string */ + &unpack_string, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -89,10 +89,10 @@ static grib_accessor_class _grib_accessor_class_sprintf = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -104,7 +104,7 @@ grib_accessor_class* grib_accessor_class_sprintf = &_grib_accessor_class_sprintf //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_statistics.cc b/src/grib_accessor_class_statistics.cc index 190534e5d..cb90519fe 100644 --- a/src/grib_accessor_class_statistics.cc +++ b/src/grib_accessor_class_statistics.cc @@ -71,29 +71,29 @@ static grib_accessor_class _grib_accessor_class_statistics = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - &destroy, /* free mem */ - 0, /* describes himself */ - 0, /* get length of section */ + &destroy, /* destroy */ + 0, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ &value_count, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - &unpack_double, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - &unpack_string, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + 0, /* pack_long */ + 0, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + &unpack_double, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + &unpack_string, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -102,10 +102,10 @@ static grib_accessor_class _grib_accessor_class_statistics = { 0, /* nearest_smaller_value */ 0, /* next accessor */ &compare, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -117,7 +117,7 @@ grib_accessor_class* grib_accessor_class_statistics = &_grib_accessor_class_stat //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_statistics_spectral.cc b/src/grib_accessor_class_statistics_spectral.cc index ecac294cb..205a9bc8c 100644 --- a/src/grib_accessor_class_statistics_spectral.cc +++ b/src/grib_accessor_class_statistics_spectral.cc @@ -75,29 +75,29 @@ static grib_accessor_class _grib_accessor_class_statistics_spectral = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - &destroy, /* free mem */ - 0, /* describes himself */ - 0, /* get length of section */ + &destroy, /* destroy */ + 0, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ &value_count, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - &unpack_double, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + 0, /* pack_long */ + 0, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + &unpack_double, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -106,10 +106,10 @@ static grib_accessor_class _grib_accessor_class_statistics_spectral = { 0, /* nearest_smaller_value */ 0, /* next accessor */ &compare, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -121,7 +121,7 @@ grib_accessor_class* grib_accessor_class_statistics_spectral = &_grib_accessor_c //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_step_human_readable.cc b/src/grib_accessor_class_step_human_readable.cc index e6aef5352..e1da574c1 100644 --- a/src/grib_accessor_class_step_human_readable.cc +++ b/src/grib_accessor_class_step_human_readable.cc @@ -57,29 +57,29 @@ static grib_accessor_class _grib_accessor_class_step_human_readable = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - 0, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + 0, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ 0, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ &get_native_type, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - 0, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - &unpack_string, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + 0, /* pack_long */ + 0, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + 0, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + &unpack_string, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -88,10 +88,10 @@ static grib_accessor_class _grib_accessor_class_step_human_readable = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -103,7 +103,7 @@ grib_accessor_class* grib_accessor_class_step_human_readable = &_grib_accessor_c //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_step_in_units.cc b/src/grib_accessor_class_step_in_units.cc index 48998c361..38fcd03e3 100644 --- a/src/grib_accessor_class_step_in_units.cc +++ b/src/grib_accessor_class_step_in_units.cc @@ -66,29 +66,29 @@ static grib_accessor_class _grib_accessor_class_step_in_units = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - &dump, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + &dump, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ 0, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - &pack_long, /* grib_pack procedures long */ - &unpack_long, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - 0, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + &pack_long, /* pack_long */ + &unpack_long, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + 0, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -97,10 +97,10 @@ static grib_accessor_class _grib_accessor_class_step_in_units = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -112,7 +112,7 @@ grib_accessor_class* grib_accessor_class_step_in_units = &_grib_accessor_class_s //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_sum.cc b/src/grib_accessor_class_sum.cc index dbf20d867..a3a330f27 100644 --- a/src/grib_accessor_class_sum.cc +++ b/src/grib_accessor_class_sum.cc @@ -64,29 +64,29 @@ static grib_accessor_class _grib_accessor_class_sum = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - 0, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + 0, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ &value_count, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - &unpack_long, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - &unpack_double, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + 0, /* pack_long */ + &unpack_long, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + &unpack_double, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -95,10 +95,10 @@ static grib_accessor_class _grib_accessor_class_sum = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -110,7 +110,7 @@ grib_accessor_class* grib_accessor_class_sum = &_grib_accessor_class_sum; //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_suppressed.cc b/src/grib_accessor_class_suppressed.cc index f2c551592..fc868673c 100644 --- a/src/grib_accessor_class_suppressed.cc +++ b/src/grib_accessor_class_suppressed.cc @@ -65,29 +65,29 @@ static grib_accessor_class _grib_accessor_class_suppressed = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - 0, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + 0, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ &value_count, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ &get_native_type, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - &pack_long, /* grib_pack procedures long */ - &unpack_long, /* grib_unpack procedures long */ - &pack_double, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - &unpack_double, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - &pack_string, /* grib_pack procedures string */ - &unpack_string, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + &pack_long, /* pack_long */ + &unpack_long, /* unpack_long */ + &pack_double, /* pack_double */ + 0, /* pack_float */ + &unpack_double, /* unpack_double */ + 0, /* unpack_float */ + &pack_string, /* pack_string */ + &unpack_string, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -96,10 +96,10 @@ static grib_accessor_class _grib_accessor_class_suppressed = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -111,7 +111,7 @@ grib_accessor_class* grib_accessor_class_suppressed = &_grib_accessor_class_supp //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_time.cc b/src/grib_accessor_class_time.cc index 89554f9e2..bdf574cff 100644 --- a/src/grib_accessor_class_time.cc +++ b/src/grib_accessor_class_time.cc @@ -64,29 +64,29 @@ static grib_accessor_class _grib_accessor_class_time = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - &dump, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + &dump, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ 0, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - &pack_long, /* grib_pack procedures long */ - &unpack_long, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - 0, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - &unpack_string, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + &pack_long, /* pack_long */ + &unpack_long, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + 0, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + &unpack_string, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -95,10 +95,10 @@ static grib_accessor_class _grib_accessor_class_time = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -110,7 +110,7 @@ grib_accessor_class* grib_accessor_class_time = &_grib_accessor_class_time; //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_times.cc b/src/grib_accessor_class_times.cc index 40467c5c2..6e8085971 100644 --- a/src/grib_accessor_class_times.cc +++ b/src/grib_accessor_class_times.cc @@ -64,29 +64,29 @@ static grib_accessor_class _grib_accessor_class_times = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - 0, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + 0, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ &value_count, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - &pack_long, /* grib_pack procedures long */ - &unpack_long, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - 0, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + &pack_long, /* pack_long */ + &unpack_long, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + 0, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -95,10 +95,10 @@ static grib_accessor_class _grib_accessor_class_times = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -110,7 +110,7 @@ grib_accessor_class* grib_accessor_class_times = &_grib_accessor_class_times; //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_to_double.cc b/src/grib_accessor_class_to_double.cc index c8e44a28e..80168cf29 100644 --- a/src/grib_accessor_class_to_double.cc +++ b/src/grib_accessor_class_to_double.cc @@ -81,29 +81,29 @@ static grib_accessor_class _grib_accessor_class_to_double = { 0, /* init_class */ &init, /* init */ &post_init, /* post_init */ - 0, /* free mem */ - &dump, /* describes himself */ - &next_offset, /* get length of section */ + 0, /* destroy */ + &dump, /* dump */ + &next_offset, /* next_offset */ &string_length, /* get length of string */ &value_count, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ &get_native_type, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - &pack_long, /* grib_pack procedures long */ - &unpack_long, /* grib_unpack procedures long */ - &pack_double, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - &unpack_double, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - &pack_string, /* grib_pack procedures string */ - &unpack_string, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + &pack_long, /* pack_long */ + &unpack_long, /* unpack_long */ + &pack_double, /* pack_double */ + 0, /* pack_float */ + &unpack_double, /* unpack_double */ + 0, /* unpack_float */ + &pack_string, /* pack_string */ + &unpack_string, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -112,10 +112,10 @@ static grib_accessor_class _grib_accessor_class_to_double = { 0, /* nearest_smaller_value */ 0, /* next accessor */ &compare, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -127,7 +127,7 @@ grib_accessor_class* grib_accessor_class_to_double = &_grib_accessor_class_to_do //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_to_integer.cc b/src/grib_accessor_class_to_integer.cc index c53b01ad8..84251081f 100644 --- a/src/grib_accessor_class_to_integer.cc +++ b/src/grib_accessor_class_to_integer.cc @@ -79,29 +79,29 @@ static grib_accessor_class _grib_accessor_class_to_integer = { 0, /* init_class */ &init, /* init */ &post_init, /* post_init */ - 0, /* free mem */ - &dump, /* describes himself */ - &next_offset, /* get length of section */ + 0, /* destroy */ + &dump, /* dump */ + &next_offset, /* next_offset */ &string_length, /* get length of string */ &value_count, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ &get_native_type, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - &pack_long, /* grib_pack procedures long */ - &unpack_long, /* grib_unpack procedures long */ - &pack_double, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - &unpack_double, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - &pack_string, /* grib_pack procedures string */ - &unpack_string, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + &pack_long, /* pack_long */ + &unpack_long, /* unpack_long */ + &pack_double, /* pack_double */ + 0, /* pack_float */ + &unpack_double, /* unpack_double */ + 0, /* unpack_float */ + &pack_string, /* pack_string */ + &unpack_string, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -110,10 +110,10 @@ static grib_accessor_class _grib_accessor_class_to_integer = { 0, /* nearest_smaller_value */ 0, /* next accessor */ &compare, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -125,7 +125,7 @@ grib_accessor_class* grib_accessor_class_to_integer = &_grib_accessor_class_to_i //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_to_string.cc b/src/grib_accessor_class_to_string.cc index 215333fc6..e0ff98b53 100644 --- a/src/grib_accessor_class_to_string.cc +++ b/src/grib_accessor_class_to_string.cc @@ -79,29 +79,29 @@ static grib_accessor_class _grib_accessor_class_to_string = { 0, /* init_class */ &init, /* init */ &post_init, /* post_init */ - 0, /* free mem */ - &dump, /* describes himself */ - &next_offset, /* get length of section */ + 0, /* destroy */ + &dump, /* dump */ + &next_offset, /* next_offset */ &string_length, /* get length of string */ &value_count, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ &get_native_type, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - &pack_long, /* grib_pack procedures long */ - &unpack_long, /* grib_unpack procedures long */ - &pack_double, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - &unpack_double, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - &pack_string, /* grib_pack procedures string */ - &unpack_string, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + &pack_long, /* pack_long */ + &unpack_long, /* unpack_long */ + &pack_double, /* pack_double */ + 0, /* pack_float */ + &unpack_double, /* unpack_double */ + 0, /* unpack_float */ + &pack_string, /* pack_string */ + &unpack_string, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -110,10 +110,10 @@ static grib_accessor_class _grib_accessor_class_to_string = { 0, /* nearest_smaller_value */ 0, /* next accessor */ &compare, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -125,7 +125,7 @@ grib_accessor_class* grib_accessor_class_to_string = &_grib_accessor_class_to_st //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_transient.cc b/src/grib_accessor_class_transient.cc index d95962cb2..c84f83ffd 100644 --- a/src/grib_accessor_class_transient.cc +++ b/src/grib_accessor_class_transient.cc @@ -54,29 +54,29 @@ static grib_accessor_class _grib_accessor_class_transient = { 0, /* init_class */ 0, /* init */ 0, /* post_init */ - 0, /* free mem */ - 0, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + 0, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ 0, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - 0, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + 0, /* pack_long */ + 0, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + 0, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -85,10 +85,10 @@ static grib_accessor_class _grib_accessor_class_transient = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -100,7 +100,7 @@ grib_accessor_class* grib_accessor_class_transient = &_grib_accessor_class_trans //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_transient_darray.cc b/src/grib_accessor_class_transient_darray.cc index 1b7768b09..b26a97406 100644 --- a/src/grib_accessor_class_transient_darray.cc +++ b/src/grib_accessor_class_transient_darray.cc @@ -67,29 +67,29 @@ static grib_accessor_class _grib_accessor_class_transient_darray = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - &destroy, /* free mem */ - &dump, /* describes himself */ - 0, /* get length of section */ + &destroy, /* destroy */ + &dump, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ &value_count, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ &get_native_type, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - &pack_long, /* grib_pack procedures long */ - &unpack_long, /* grib_unpack procedures long */ - &pack_double, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - &unpack_double, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + &pack_long, /* pack_long */ + &unpack_long, /* unpack_long */ + &pack_double, /* pack_double */ + 0, /* pack_float */ + &unpack_double, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -98,10 +98,10 @@ static grib_accessor_class _grib_accessor_class_transient_darray = { 0, /* nearest_smaller_value */ 0, /* next accessor */ &compare, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -113,7 +113,7 @@ grib_accessor_class* grib_accessor_class_transient_darray = &_grib_accessor_clas //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_trim.cc b/src/grib_accessor_class_trim.cc index aa07f3118..1c5cdfc3e 100644 --- a/src/grib_accessor_class_trim.cc +++ b/src/grib_accessor_class_trim.cc @@ -61,29 +61,29 @@ static grib_accessor_class _grib_accessor_class_trim = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - 0, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + 0, /* dump */ + 0, /* next_offset */ &string_length, /* get length of string */ 0, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - 0, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - &pack_string, /* grib_pack procedures string */ - &unpack_string, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + 0, /* pack_long */ + 0, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + 0, /* unpack_double */ + 0, /* unpack_float */ + &pack_string, /* pack_string */ + &unpack_string, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -92,10 +92,10 @@ static grib_accessor_class _grib_accessor_class_trim = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -107,7 +107,7 @@ grib_accessor_class* grib_accessor_class_trim = &_grib_accessor_class_trim; //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_uint16.cc b/src/grib_accessor_class_uint16.cc index 873085e21..6f309c636 100644 --- a/src/grib_accessor_class_uint16.cc +++ b/src/grib_accessor_class_uint16.cc @@ -53,29 +53,29 @@ static grib_accessor_class _grib_accessor_class_uint16 = { 0, /* init_class */ 0, /* init */ 0, /* post_init */ - 0, /* free mem */ - 0, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + 0, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ 0, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - &pack_long, /* grib_pack procedures long */ - &unpack_long, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - 0, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + &pack_long, /* pack_long */ + &unpack_long, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + 0, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -84,10 +84,10 @@ static grib_accessor_class _grib_accessor_class_uint16 = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -99,7 +99,7 @@ grib_accessor_class* grib_accessor_class_uint16 = &_grib_accessor_class_uint16; //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_uint16_little_endian.cc b/src/grib_accessor_class_uint16_little_endian.cc index a21c1fb47..cc933dd3d 100644 --- a/src/grib_accessor_class_uint16_little_endian.cc +++ b/src/grib_accessor_class_uint16_little_endian.cc @@ -53,29 +53,29 @@ static grib_accessor_class _grib_accessor_class_uint16_little_endian = { 0, /* init_class */ 0, /* init */ 0, /* post_init */ - 0, /* free mem */ - 0, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + 0, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ 0, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - &pack_long, /* grib_pack procedures long */ - &unpack_long, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - 0, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + &pack_long, /* pack_long */ + &unpack_long, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + 0, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -84,10 +84,10 @@ static grib_accessor_class _grib_accessor_class_uint16_little_endian = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -99,7 +99,7 @@ grib_accessor_class* grib_accessor_class_uint16_little_endian = &_grib_accessor_ //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_uint32.cc b/src/grib_accessor_class_uint32.cc index aa8a54ece..74877feee 100644 --- a/src/grib_accessor_class_uint32.cc +++ b/src/grib_accessor_class_uint32.cc @@ -55,29 +55,29 @@ static grib_accessor_class _grib_accessor_class_uint32 = { 0, /* init_class */ 0, /* init */ 0, /* post_init */ - 0, /* free mem */ - 0, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + 0, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ 0, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ &get_native_type, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - &pack_long, /* grib_pack procedures long */ - &unpack_long, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - 0, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + &pack_long, /* pack_long */ + &unpack_long, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + 0, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -86,10 +86,10 @@ static grib_accessor_class _grib_accessor_class_uint32 = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -101,7 +101,7 @@ grib_accessor_class* grib_accessor_class_uint32 = &_grib_accessor_class_uint32; //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_uint32_little_endian.cc b/src/grib_accessor_class_uint32_little_endian.cc index 815568ab5..059542e2c 100644 --- a/src/grib_accessor_class_uint32_little_endian.cc +++ b/src/grib_accessor_class_uint32_little_endian.cc @@ -55,29 +55,29 @@ static grib_accessor_class _grib_accessor_class_uint32_little_endian = { 0, /* init_class */ 0, /* init */ 0, /* post_init */ - 0, /* free mem */ - 0, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + 0, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ 0, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ &get_native_type, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - &pack_long, /* grib_pack procedures long */ - &unpack_long, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - 0, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + &pack_long, /* pack_long */ + &unpack_long, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + 0, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -86,10 +86,10 @@ static grib_accessor_class _grib_accessor_class_uint32_little_endian = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -101,7 +101,7 @@ grib_accessor_class* grib_accessor_class_uint32_little_endian = &_grib_accessor_ //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_uint64.cc b/src/grib_accessor_class_uint64.cc index 5dadfb8c9..3e6e5aff0 100644 --- a/src/grib_accessor_class_uint64.cc +++ b/src/grib_accessor_class_uint64.cc @@ -55,29 +55,29 @@ static grib_accessor_class _grib_accessor_class_uint64 = { 0, /* init_class */ 0, /* init */ 0, /* post_init */ - 0, /* free mem */ - 0, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + 0, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ 0, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ &get_native_type, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - &pack_long, /* grib_pack procedures long */ - &unpack_long, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - 0, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + &pack_long, /* pack_long */ + &unpack_long, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + 0, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -86,10 +86,10 @@ static grib_accessor_class _grib_accessor_class_uint64 = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -101,7 +101,7 @@ grib_accessor_class* grib_accessor_class_uint64 = &_grib_accessor_class_uint64; //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_uint64_little_endian.cc b/src/grib_accessor_class_uint64_little_endian.cc index ad540c3a6..3949a1940 100644 --- a/src/grib_accessor_class_uint64_little_endian.cc +++ b/src/grib_accessor_class_uint64_little_endian.cc @@ -55,29 +55,29 @@ static grib_accessor_class _grib_accessor_class_uint64_little_endian = { 0, /* init_class */ 0, /* init */ 0, /* post_init */ - 0, /* free mem */ - 0, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + 0, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ 0, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ &get_native_type, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - &pack_long, /* grib_pack procedures long */ - &unpack_long, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - 0, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + &pack_long, /* pack_long */ + &unpack_long, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + 0, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -86,10 +86,10 @@ static grib_accessor_class _grib_accessor_class_uint64_little_endian = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -101,7 +101,7 @@ grib_accessor_class* grib_accessor_class_uint64_little_endian = &_grib_accessor_ //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_uint8.cc b/src/grib_accessor_class_uint8.cc index 330403663..446ee3335 100644 --- a/src/grib_accessor_class_uint8.cc +++ b/src/grib_accessor_class_uint8.cc @@ -55,29 +55,29 @@ static grib_accessor_class _grib_accessor_class_uint8 = { 0, /* init_class */ 0, /* init */ 0, /* post_init */ - 0, /* free mem */ - 0, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + 0, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ 0, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ &get_native_type, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - &pack_long, /* grib_pack procedures long */ - &unpack_long, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - 0, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + &pack_long, /* pack_long */ + &unpack_long, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + 0, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -86,10 +86,10 @@ static grib_accessor_class _grib_accessor_class_uint8 = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -101,7 +101,7 @@ grib_accessor_class* grib_accessor_class_uint8 = &_grib_accessor_class_uint8; //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_unexpanded_descriptors.cc b/src/grib_accessor_class_unexpanded_descriptors.cc index 0f8d31055..e7a2ce856 100644 --- a/src/grib_accessor_class_unexpanded_descriptors.cc +++ b/src/grib_accessor_class_unexpanded_descriptors.cc @@ -68,29 +68,29 @@ static grib_accessor_class _grib_accessor_class_unexpanded_descriptors = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - &dump, /* describes himself */ - &next_offset, /* get length of section */ + 0, /* destroy */ + &dump, /* dump */ + &next_offset, /* next_offset */ 0, /* get length of string */ &value_count, /* get number of values */ 0, /* get number of bytes */ &byte_offset, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - &pack_long, /* grib_pack procedures long */ - &unpack_long, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - 0, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + &pack_long, /* pack_long */ + &unpack_long, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + 0, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ &update_size, /* update_size */ @@ -99,10 +99,10 @@ static grib_accessor_class _grib_accessor_class_unexpanded_descriptors = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -114,7 +114,7 @@ grib_accessor_class* grib_accessor_class_unexpanded_descriptors = &_grib_accesso //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_unpack_bufr_values.cc b/src/grib_accessor_class_unpack_bufr_values.cc index 4e65fe6bf..d08df9011 100644 --- a/src/grib_accessor_class_unpack_bufr_values.cc +++ b/src/grib_accessor_class_unpack_bufr_values.cc @@ -67,29 +67,29 @@ static grib_accessor_class _grib_accessor_class_unpack_bufr_values = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - &destroy, /* free mem */ - &dump, /* describes himself */ - 0, /* get length of section */ + &destroy, /* destroy */ + &dump, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ &value_count, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ &get_native_type, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - &pack_long, /* grib_pack procedures long */ - &unpack_long, /* grib_unpack procedures long */ - &pack_double, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - &unpack_double, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - &unpack_string, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - &unpack_string_array, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + &pack_long, /* pack_long */ + &unpack_long, /* unpack_long */ + &pack_double, /* pack_double */ + 0, /* pack_float */ + &unpack_double, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + &unpack_string, /* unpack_string */ + 0, /* pack_string_array */ + &unpack_string_array, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -98,10 +98,10 @@ static grib_accessor_class _grib_accessor_class_unpack_bufr_values = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -113,7 +113,7 @@ grib_accessor_class* grib_accessor_class_unpack_bufr_values = &_grib_accessor_cl //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_unsigned.cc b/src/grib_accessor_class_unsigned.cc index fc3a6ccbb..82439a465 100644 --- a/src/grib_accessor_class_unsigned.cc +++ b/src/grib_accessor_class_unsigned.cc @@ -71,29 +71,29 @@ static grib_accessor_class _grib_accessor_class_unsigned = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - &destroy, /* free mem */ - &dump, /* describes himself */ - &next_offset, /* get length of section */ + &destroy, /* destroy */ + &dump, /* dump */ + &next_offset, /* next_offset */ 0, /* get length of string */ &value_count, /* get number of values */ &byte_count, /* get number of bytes */ &byte_offset, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - &is_missing, /* grib_pack procedures long */ - &pack_long, /* grib_pack procedures long */ - &unpack_long, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - 0, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + &is_missing, /* is_missing */ + &pack_long, /* pack_long */ + &unpack_long, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + 0, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ &update_size, /* update_size */ @@ -102,10 +102,10 @@ static grib_accessor_class _grib_accessor_class_unsigned = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -117,7 +117,7 @@ grib_accessor_class* grib_accessor_class_unsigned = &_grib_accessor_class_unsign //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_unsigned_bits.cc b/src/grib_accessor_class_unsigned_bits.cc index 375f3e1a0..9425058c0 100644 --- a/src/grib_accessor_class_unsigned_bits.cc +++ b/src/grib_accessor_class_unsigned_bits.cc @@ -70,29 +70,29 @@ static grib_accessor_class _grib_accessor_class_unsigned_bits = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - &dump, /* describes himself */ - &next_offset, /* get length of section */ + 0, /* destroy */ + &dump, /* dump */ + &next_offset, /* next_offset */ 0, /* get length of string */ &value_count, /* get number of values */ &byte_count, /* get number of bytes */ &byte_offset, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - &pack_long, /* grib_pack procedures long */ - &unpack_long, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - 0, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + &pack_long, /* pack_long */ + &unpack_long, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + 0, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ &update_size, /* update_size */ @@ -101,10 +101,10 @@ static grib_accessor_class _grib_accessor_class_unsigned_bits = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -116,7 +116,7 @@ grib_accessor_class* grib_accessor_class_unsigned_bits = &_grib_accessor_class_u //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_validity_date.cc b/src/grib_accessor_class_validity_date.cc index bbb804914..881478c0e 100644 --- a/src/grib_accessor_class_validity_date.cc +++ b/src/grib_accessor_class_validity_date.cc @@ -69,29 +69,29 @@ static grib_accessor_class _grib_accessor_class_validity_date = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - &dump, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + &dump, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ 0, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - &unpack_long, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - 0, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + 0, /* pack_long */ + &unpack_long, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + 0, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -100,10 +100,10 @@ static grib_accessor_class _grib_accessor_class_validity_date = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -115,7 +115,7 @@ grib_accessor_class* grib_accessor_class_validity_date = &_grib_accessor_class_v //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_validity_time.cc b/src/grib_accessor_class_validity_time.cc index 4840612a5..051518e69 100644 --- a/src/grib_accessor_class_validity_time.cc +++ b/src/grib_accessor_class_validity_time.cc @@ -67,29 +67,29 @@ static grib_accessor_class _grib_accessor_class_validity_time = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - &dump, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + &dump, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ 0, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - &unpack_long, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - 0, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + 0, /* pack_long */ + &unpack_long, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + 0, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -98,10 +98,10 @@ static grib_accessor_class _grib_accessor_class_validity_time = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -113,7 +113,7 @@ grib_accessor_class* grib_accessor_class_validity_time = &_grib_accessor_class_v //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_values.cc b/src/grib_accessor_class_values.cc index 633bfa051..9d4a03c10 100644 --- a/src/grib_accessor_class_values.cc +++ b/src/grib_accessor_class_values.cc @@ -77,29 +77,29 @@ static grib_accessor_class _grib_accessor_class_values = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - &dump, /* describes himself */ - &next_offset, /* get length of section */ + 0, /* destroy */ + &dump, /* dump */ + &next_offset, /* next_offset */ 0, /* get length of string */ 0, /* get number of values */ &byte_count, /* get number of bytes */ &byte_offset, /* get offset to bytes */ &get_native_type, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - &pack_long, /* grib_pack procedures long */ - 0, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - 0, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + &pack_long, /* pack_long */ + 0, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + 0, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ &update_size, /* update_size */ @@ -108,10 +108,10 @@ static grib_accessor_class _grib_accessor_class_values = { 0, /* nearest_smaller_value */ 0, /* next accessor */ &compare, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -123,7 +123,7 @@ grib_accessor_class* grib_accessor_class_values = &_grib_accessor_class_values; //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_variable.cc b/src/grib_accessor_class_variable.cc index 6b941674d..d78fe8174 100644 --- a/src/grib_accessor_class_variable.cc +++ b/src/grib_accessor_class_variable.cc @@ -77,29 +77,29 @@ static grib_accessor_class _grib_accessor_class_variable = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - &destroy, /* free mem */ - &dump, /* describes himself */ - 0, /* get length of section */ + &destroy, /* destroy */ + &dump, /* dump */ + 0, /* next_offset */ &string_length, /* get length of string */ &value_count, /* get number of values */ &byte_count, /* get number of bytes */ 0, /* get offset to bytes */ &get_native_type, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - &pack_long, /* grib_pack procedures long */ - &unpack_long, /* grib_unpack procedures long */ - &pack_double, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - &unpack_double, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - &pack_string, /* grib_pack procedures string */ - &unpack_string, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + &pack_long, /* pack_long */ + &unpack_long, /* unpack_long */ + &pack_double, /* pack_double */ + 0, /* pack_float */ + &unpack_double, /* unpack_double */ + 0, /* unpack_float */ + &pack_string, /* pack_string */ + &unpack_string, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -108,10 +108,10 @@ static grib_accessor_class _grib_accessor_class_variable = { 0, /* nearest_smaller_value */ 0, /* next accessor */ &compare, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ &make_clone, /* clone accessor */ @@ -123,7 +123,7 @@ grib_accessor_class* grib_accessor_class_variable = &_grib_accessor_class_variab //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_vector.cc b/src/grib_accessor_class_vector.cc index 0c459a042..e4c885268 100644 --- a/src/grib_accessor_class_vector.cc +++ b/src/grib_accessor_class_vector.cc @@ -65,29 +65,29 @@ static grib_accessor_class _grib_accessor_class_vector = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - 0, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + 0, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ 0, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - &unpack_double, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + 0, /* pack_long */ + 0, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + &unpack_double, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ 0, /* notify_change */ 0, /* update_size */ @@ -96,10 +96,10 @@ static grib_accessor_class _grib_accessor_class_vector = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -111,7 +111,7 @@ grib_accessor_class* grib_accessor_class_vector = &_grib_accessor_class_vector; //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_when.cc b/src/grib_accessor_class_when.cc index b97250033..f13833310 100644 --- a/src/grib_accessor_class_when.cc +++ b/src/grib_accessor_class_when.cc @@ -58,29 +58,29 @@ static grib_accessor_class _grib_accessor_class_when = { 0, /* init_class */ &init, /* init */ 0, /* post_init */ - 0, /* free mem */ - &dump, /* describes himself */ - 0, /* get length of section */ + 0, /* destroy */ + &dump, /* dump */ + 0, /* next_offset */ 0, /* get length of string */ 0, /* get number of values */ 0, /* get number of bytes */ 0, /* get offset to bytes */ 0, /* get native type */ 0, /* get sub_section */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_pack procedures long */ - 0, /* grib_unpack procedures long */ - 0, /* grib_pack procedures double */ - 0, /* grib_pack procedures float */ - 0, /* grib_unpack procedures double */ - 0, /* grib_unpack procedures float */ - 0, /* grib_pack procedures string */ - 0, /* grib_unpack procedures string */ - 0, /* grib_pack array procedures string */ - 0, /* grib_unpack array procedures string */ - 0, /* grib_pack procedures bytes */ - 0, /* grib_unpack procedures bytes */ + 0, /* pack_missing */ + 0, /* is_missing */ + 0, /* pack_long */ + 0, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + 0, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ 0, /* pack_expression */ ¬ify_change, /* notify_change */ 0, /* update_size */ @@ -89,10 +89,10 @@ static grib_accessor_class _grib_accessor_class_when = { 0, /* nearest_smaller_value */ 0, /* next accessor */ 0, /* compare vs. another accessor */ - 0, /* unpack only ith value */ - 0, /* unpack only ith value */ - 0, /* unpack a given set of elements */ - 0, /* unpack a given set of elements */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ 0, /* unpack a subarray */ 0, /* clear */ 0, /* clone accessor */ @@ -104,7 +104,7 @@ grib_accessor_class* grib_accessor_class_when = &_grib_accessor_class_when; //static void init_class(grib_accessor_class* c) //{ -//INIT +// INIT //} /* END_CLASS_IMP */ From 6a990d87ed6ad8606f5689ddf3fa2bfe818d0ca8 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 24 Apr 2023 14:59:46 +0100 Subject: [PATCH 111/378] Compiler warning: [-Wmaybe-uninitialized] --- src/grib_accessor_class_data_g22order_packing.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/grib_accessor_class_data_g22order_packing.cc b/src/grib_accessor_class_data_g22order_packing.cc index 6c1297f0c..25d736177 100644 --- a/src/grib_accessor_class_data_g22order_packing.cc +++ b/src/grib_accessor_class_data_g22order_packing.cc @@ -457,7 +457,7 @@ static unsigned char* mk_bms(grib_accessor* a, double* data, unsigned int* ndata static int post_process(grib_context* c, long* vals, long len, long order, long bias, const unsigned long extras[2]) { - unsigned long last, penultimate, j = 0; + unsigned long last, penultimate = 0, j = 0; Assert(order > 0); Assert(order <= 3); if (!vals) From a42a8547bcf9283b906c02f7fe7a65fd2ddf25c4 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 24 Apr 2023 11:47:14 +0000 Subject: [PATCH 112/378] Single-precision: support decoding of ibmfloat and ieeefloat keys --- src/grib_accessor_class_ibmfloat.cc | 30 +++++++++++++++++++++++++++- src/grib_accessor_class_ieeefloat.cc | 28 +++++++++++++++++++++++++- 2 files changed, 56 insertions(+), 2 deletions(-) diff --git a/src/grib_accessor_class_ibmfloat.cc b/src/grib_accessor_class_ibmfloat.cc index 1269b0ffe..b890b7c6a 100644 --- a/src/grib_accessor_class_ibmfloat.cc +++ b/src/grib_accessor_class_ibmfloat.cc @@ -21,6 +21,7 @@ CLASS = accessor SUPER = grib_accessor_class_double IMPLEMENTS = unpack_double;pack_double + IMPLEMENTS = unpack_float IMPLEMENTS = init IMPLEMENTS = next_offset IMPLEMENTS = byte_count @@ -45,6 +46,7 @@ or edit "accessor.class" and rerun ./make_class.pl static int pack_double(grib_accessor*, const double* val, size_t* len); static int unpack_double(grib_accessor*, double* val, size_t* len); +static int unpack_float(grib_accessor*, float* val, size_t* len); static long byte_count(grib_accessor*); static long byte_offset(grib_accessor*); static long next_offset(grib_accessor*); @@ -89,7 +91,7 @@ static grib_accessor_class _grib_accessor_class_ibmfloat = { &pack_double, /* pack_double */ 0, /* pack_float */ &unpack_double, /* unpack_double */ - 0, /* unpack_float */ + &unpack_float, /* unpack_float */ 0, /* pack_string */ 0, /* unpack_string */ 0, /* pack_string_array */ @@ -161,6 +163,32 @@ static int unpack_double(grib_accessor* a, double* val, size_t* len) return GRIB_SUCCESS; } +static int unpack_float(grib_accessor* a, float* val, size_t* len) +{ + unsigned long rlen = 0; + long count = 0; + int err = 0; + unsigned long i = 0; + long bitp = a->offset * 8; + + err = grib_value_count(a, &count); + if (err) + return err; + rlen = count; + + if (*len < rlen) { + grib_context_log(a->context, GRIB_LOG_ERROR, "Wrong size (%lu) for %s, it contains %lu values", *len, a->name, rlen); + *len = 0; + return GRIB_ARRAY_TOO_SMALL; + } + + for (i = 0; i < rlen; i++) + val[i] = (float)grib_long_to_ibm(grib_decode_unsigned_long(grib_handle_of_accessor(a)->buffer->data, &bitp, 32)); + + *len = rlen; + return GRIB_SUCCESS; +} + static int pack_double(grib_accessor* a, const double* val, size_t* len) { grib_accessor_ibmfloat* self = (grib_accessor_ibmfloat*)a; diff --git a/src/grib_accessor_class_ieeefloat.cc b/src/grib_accessor_class_ieeefloat.cc index c567e5c05..b7d371e4f 100644 --- a/src/grib_accessor_class_ieeefloat.cc +++ b/src/grib_accessor_class_ieeefloat.cc @@ -16,6 +16,7 @@ CLASS = accessor SUPER = grib_accessor_class_double IMPLEMENTS = unpack_double;pack_double + IMPLEMENTS = unpack_float IMPLEMENTS = init IMPLEMENTS = value_count MEMBERS = grib_arguments* arg @@ -37,6 +38,7 @@ or edit "accessor.class" and rerun ./make_class.pl static int pack_double(grib_accessor*, const double* val, size_t* len); static int unpack_double(grib_accessor*, double* val, size_t* len); +static int unpack_float(grib_accessor*, float* val, size_t* len); static int value_count(grib_accessor*, long*); static void init(grib_accessor*, const long, grib_arguments*); //static void init_class(grib_accessor_class*); @@ -78,7 +80,7 @@ static grib_accessor_class _grib_accessor_class_ieeefloat = { &pack_double, /* pack_double */ 0, /* pack_float */ &unpack_double, /* unpack_double */ - 0, /* unpack_float */ + &unpack_float, /* unpack_float */ 0, /* pack_string */ 0, /* unpack_string */ 0, /* pack_string_array */ @@ -203,6 +205,30 @@ static int unpack_double(grib_accessor* a, double* val, size_t* len) *len = rlen; return GRIB_SUCCESS; } + +static int unpack_float(grib_accessor* a, float* val, size_t* len) +{ + long rlen = 0; + int err = 0; + long i = 0; + long bitp = a->offset * 8; + + err = grib_value_count(a, &rlen); + if (err) + return err; + + if (*len < (size_t)rlen) { + grib_context_log(a->context, GRIB_LOG_ERROR, "Wrong size (%lu) for %s, it contains %ld values", *len, a->name, rlen); + *len = 0; + return GRIB_ARRAY_TOO_SMALL; + } + for (i = 0; i < rlen; i++) + val[i] = (float)grib_long_to_ieee(grib_decode_unsigned_long(grib_handle_of_accessor(a)->buffer->data, &bitp, 32)); + + *len = rlen; + return GRIB_SUCCESS; +} + static void update_size(grib_accessor* a, size_t s) { a->length = s; From 1ef77a8b47ca511bd5e3eb8969e6ea400cfde736 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 24 Apr 2023 16:43:59 +0100 Subject: [PATCH 113/378] ECC-1572: Fortran codes_get/grib_get fails to get array of 32-bit real numbers --- examples/F90/grib_get_pv.f90 | 2 +- src/grib_accessor_class_ibmfloat.cc | 5 +++-- src/grib_accessor_class_ieeefloat.cc | 5 +++-- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/examples/F90/grib_get_pv.f90 b/examples/F90/grib_get_pv.f90 index 230d81575..dadc90b05 100644 --- a/examples/F90/grib_get_pv.f90 +++ b/examples/F90/grib_get_pv.f90 @@ -16,7 +16,7 @@ program grib_get_pv integer :: infile integer :: igrib integer :: PVPresent, nb_pv - real(kind=8), dimension(:), allocatable :: pv + real(kind=4), dimension(:), allocatable :: pv call codes_open_file(infile, '../../data/reduced_gaussian_model_level.grib1', 'r') diff --git a/src/grib_accessor_class_ibmfloat.cc b/src/grib_accessor_class_ibmfloat.cc index b890b7c6a..f46e27d71 100644 --- a/src/grib_accessor_class_ibmfloat.cc +++ b/src/grib_accessor_class_ibmfloat.cc @@ -151,7 +151,7 @@ static int unpack_double(grib_accessor* a, double* val, size_t* len) rlen = count; if (*len < rlen) { - grib_context_log(a->context, GRIB_LOG_ERROR, "Wrong size (%lu) for %s, it contains %lu values", *len, a->name, rlen); + grib_context_log(a->context, GRIB_LOG_ERROR, "Wrong size (%zu) for %s, it contains %lu values", *len, a->name, rlen); *len = 0; return GRIB_ARRAY_TOO_SMALL; } @@ -163,6 +163,7 @@ static int unpack_double(grib_accessor* a, double* val, size_t* len) return GRIB_SUCCESS; } +// ECC-1572: TODO(masn) use templates static int unpack_float(grib_accessor* a, float* val, size_t* len) { unsigned long rlen = 0; @@ -177,7 +178,7 @@ static int unpack_float(grib_accessor* a, float* val, size_t* len) rlen = count; if (*len < rlen) { - grib_context_log(a->context, GRIB_LOG_ERROR, "Wrong size (%lu) for %s, it contains %lu values", *len, a->name, rlen); + grib_context_log(a->context, GRIB_LOG_ERROR, "Wrong size (%zu) for %s, it contains %lu values", *len, a->name, rlen); *len = 0; return GRIB_ARRAY_TOO_SMALL; } diff --git a/src/grib_accessor_class_ieeefloat.cc b/src/grib_accessor_class_ieeefloat.cc index b7d371e4f..3b18a8184 100644 --- a/src/grib_accessor_class_ieeefloat.cc +++ b/src/grib_accessor_class_ieeefloat.cc @@ -195,7 +195,7 @@ static int unpack_double(grib_accessor* a, double* val, size_t* len) return err; if (*len < (size_t)rlen) { - grib_context_log(a->context, GRIB_LOG_ERROR, "Wrong size (%lu) for %s, it contains %ld values", *len, a->name, rlen); + grib_context_log(a->context, GRIB_LOG_ERROR, "Wrong size (%zu) for %s, it contains %ld values", *len, a->name, rlen); *len = 0; return GRIB_ARRAY_TOO_SMALL; } @@ -206,6 +206,7 @@ static int unpack_double(grib_accessor* a, double* val, size_t* len) return GRIB_SUCCESS; } +// ECC-1572: TODO(masn) use templates static int unpack_float(grib_accessor* a, float* val, size_t* len) { long rlen = 0; @@ -218,7 +219,7 @@ static int unpack_float(grib_accessor* a, float* val, size_t* len) return err; if (*len < (size_t)rlen) { - grib_context_log(a->context, GRIB_LOG_ERROR, "Wrong size (%lu) for %s, it contains %ld values", *len, a->name, rlen); + grib_context_log(a->context, GRIB_LOG_ERROR, "Wrong size (%zu) for %s, it contains %ld values", *len, a->name, rlen); *len = 0; return GRIB_ARRAY_TOO_SMALL; } From f9613ee29b4ed40dad55546f3202c3a9b9d848cb Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 24 Apr 2023 20:15:08 +0000 Subject: [PATCH 114/378] Compiler warning: [-Wmaybe-uninitialized] --- src/grib_accessor_class_data_g22order_packing.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/grib_accessor_class_data_g22order_packing.cc b/src/grib_accessor_class_data_g22order_packing.cc index 25d736177..ae030eb9b 100644 --- a/src/grib_accessor_class_data_g22order_packing.cc +++ b/src/grib_accessor_class_data_g22order_packing.cc @@ -1454,7 +1454,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) // delta_delta(v, nndata, &vmn, &vmx, &extra_0, &extra_1); // single core version { - int last, last0, penultimate; + int last, last0, penultimate = 0; for (i = 0; i < nndata; i++) { if (v[i] != INT_MAX) { extra_0 = penultimate = v[i]; From 4f8d151dc34c645291b03684058cf89ad64ec8a4 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 26 Apr 2023 16:52:02 +0000 Subject: [PATCH 115/378] ECC-1572: part 2 --- fortran/grib_fortran.c | 25 ++++++++++++++++++++++--- src/grib_value.cc | 2 +- 2 files changed, 23 insertions(+), 4 deletions(-) diff --git a/fortran/grib_fortran.c b/fortran/grib_fortran.c index e3ce24556..b13ffb292 100644 --- a/fortran/grib_fortran.c +++ b/fortran/grib_fortran.c @@ -2770,11 +2770,30 @@ int grib_f_get_real4_array_(int* gid, char* key, float *val, int* size, int len) if(!h){ return GRIB_INVALID_GRIB; - }else{ - err = grib_get_float_array(h, cast_char(buf,key,len), val, &lsize); - *size = lsize; + } + + err = grib_get_float_array(h, cast_char(buf,key,len), val, &lsize); + if (err == GRIB_NOT_IMPLEMENTED) { + double* val8 = NULL; + size_t i = 0; + if(*size) + val8 = (double*)grib_context_malloc(h->context,(*size)*(sizeof(double))); + else + val8 = (double*)grib_context_malloc(h->context,sizeof(double)); + if(!val8) return GRIB_OUT_OF_MEMORY; + + err = grib_get_double_array(h, cast_char(buf,key,len), val8, &lsize); + if (err) { + grib_context_free(h->context,val8); + return err; + } + for(i=0;icontext,val8); return err; } + *size = lsize; + return err; } int grib_f_get_real4_array__(int* gid, char* key, float* val, int* size, int len){ return grib_f_get_real4_array_( gid, key, val, size, len); diff --git a/src/grib_value.cc b/src/grib_value.cc index 075a2c6a1..1c557a12d 100644 --- a/src/grib_value.cc +++ b/src/grib_value.cc @@ -1349,7 +1349,7 @@ int grib_get_float_array(const grib_handle* h, const char* name, float* val, siz //[> TODO: For now only GRIB supported... no BUFR keys <] if (h->product_kind != PRODUCT_GRIB) { - grib_context_log(h->context, GRIB_LOG_ERROR, "grib_get_float_array only supported for GRIB"); + //grib_context_log(h->context, GRIB_LOG_ERROR, "grib_get_float_array only supported for GRIB"); return GRIB_NOT_IMPLEMENTED; } Assert(name[0]!='/'); From 6489aa6d465013edfa586c05eb0dc303b4fd1796 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 28 Apr 2023 11:16:52 +0100 Subject: [PATCH 116/378] Single-precision support: Array of reals --- examples/F90/grib_get_pv.sh | 2 +- src/grib_accessor_class_ibmfloat.cc | 36 +++++++++------------------- src/grib_accessor_class_ieeefloat.cc | 34 ++++++++++---------------- 3 files changed, 24 insertions(+), 48 deletions(-) diff --git a/examples/F90/grib_get_pv.sh b/examples/F90/grib_get_pv.sh index c1b1e3537..1052fb34d 100755 --- a/examples/F90/grib_get_pv.sh +++ b/examples/F90/grib_get_pv.sh @@ -9,4 +9,4 @@ . ./include.ctest.sh -${examples_dir}/eccodes_f_grib_get_pv > /dev/null +${examples_dir}/eccodes_f_grib_get_pv diff --git a/src/grib_accessor_class_ibmfloat.cc b/src/grib_accessor_class_ibmfloat.cc index f46e27d71..1ea40c227 100644 --- a/src/grib_accessor_class_ibmfloat.cc +++ b/src/grib_accessor_class_ibmfloat.cc @@ -137,13 +137,16 @@ static void init(grib_accessor* a, const long len, grib_arguments* arg) Assert(a->length >= 0); } -static int unpack_double(grib_accessor* a, double* val, size_t* len) +template +static int unpack(grib_accessor* a, T* val, size_t* len) { + static_assert(std::is_floating_point::value, "Requires floating point numbers"); unsigned long rlen = 0; long count = 0; int err = 0; unsigned long i = 0; long bitp = a->offset * 8; + grib_handle* hand = grib_handle_of_accessor(a); err = grib_value_count(a, &count); if (err) @@ -157,37 +160,20 @@ static int unpack_double(grib_accessor* a, double* val, size_t* len) } for (i = 0; i < rlen; i++) - val[i] = grib_long_to_ibm(grib_decode_unsigned_long(grib_handle_of_accessor(a)->buffer->data, &bitp, 32)); + val[i] = (T)grib_long_to_ibm(grib_decode_unsigned_long(hand->buffer->data, &bitp, 32)); *len = rlen; return GRIB_SUCCESS; } -// ECC-1572: TODO(masn) use templates -static int unpack_float(grib_accessor* a, float* val, size_t* len) +static int unpack_double(grib_accessor* a, double* val, size_t* len) { - unsigned long rlen = 0; - long count = 0; - int err = 0; - unsigned long i = 0; - long bitp = a->offset * 8; - - err = grib_value_count(a, &count); - if (err) - return err; - rlen = count; - - if (*len < rlen) { - grib_context_log(a->context, GRIB_LOG_ERROR, "Wrong size (%zu) for %s, it contains %lu values", *len, a->name, rlen); - *len = 0; - return GRIB_ARRAY_TOO_SMALL; - } - - for (i = 0; i < rlen; i++) - val[i] = (float)grib_long_to_ibm(grib_decode_unsigned_long(grib_handle_of_accessor(a)->buffer->data, &bitp, 32)); + return unpack(a, val, len); +} - *len = rlen; - return GRIB_SUCCESS; +static int unpack_float(grib_accessor* a, float* val, size_t* len) +{ + return unpack(a, val, len); } static int pack_double(grib_accessor* a, const double* val, size_t* len) diff --git a/src/grib_accessor_class_ieeefloat.cc b/src/grib_accessor_class_ieeefloat.cc index 3b18a8184..91128a8c4 100644 --- a/src/grib_accessor_class_ieeefloat.cc +++ b/src/grib_accessor_class_ieeefloat.cc @@ -183,12 +183,15 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) return ret; } -static int unpack_double(grib_accessor* a, double* val, size_t* len) +template +static int unpack(grib_accessor* a, T* val, size_t* len) { + static_assert(std::is_floating_point::value, "Requires floating point numbers"); long rlen = 0; int err = 0; long i = 0; long bitp = a->offset * 8; + grib_handle* hand = grib_handle_of_accessor(a); err = grib_value_count(a, &rlen); if (err) @@ -199,35 +202,22 @@ static int unpack_double(grib_accessor* a, double* val, size_t* len) *len = 0; return GRIB_ARRAY_TOO_SMALL; } + for (i = 0; i < rlen; i++) - val[i] = grib_long_to_ieee(grib_decode_unsigned_long(grib_handle_of_accessor(a)->buffer->data, &bitp, 32)); + val[i] = (T)grib_long_to_ieee(grib_decode_unsigned_long(hand->buffer->data, &bitp, 32)); *len = rlen; return GRIB_SUCCESS; } -// ECC-1572: TODO(masn) use templates -static int unpack_float(grib_accessor* a, float* val, size_t* len) +static int unpack_double(grib_accessor* a, double* val, size_t* len) { - long rlen = 0; - int err = 0; - long i = 0; - long bitp = a->offset * 8; - - err = grib_value_count(a, &rlen); - if (err) - return err; - - if (*len < (size_t)rlen) { - grib_context_log(a->context, GRIB_LOG_ERROR, "Wrong size (%zu) for %s, it contains %ld values", *len, a->name, rlen); - *len = 0; - return GRIB_ARRAY_TOO_SMALL; - } - for (i = 0; i < rlen; i++) - val[i] = (float)grib_long_to_ieee(grib_decode_unsigned_long(grib_handle_of_accessor(a)->buffer->data, &bitp, 32)); + return unpack(a, val, len); +} - *len = rlen; - return GRIB_SUCCESS; +static int unpack_float(grib_accessor* a, float* val, size_t* len) +{ + return unpack(a, val, len); } static void update_size(grib_accessor* a, size_t s) From 00f00747beabfc0e3583553c23295a8f3943865c Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 28 Apr 2023 11:27:46 +0100 Subject: [PATCH 117/378] Add header file for std::is_floating_point --- src/grib_accessor_class_ibmfloat.cc | 1 + src/grib_accessor_class_ieeefloat.cc | 1 + 2 files changed, 2 insertions(+) diff --git a/src/grib_accessor_class_ibmfloat.cc b/src/grib_accessor_class_ibmfloat.cc index 1ea40c227..bb80cbdd9 100644 --- a/src/grib_accessor_class_ibmfloat.cc +++ b/src/grib_accessor_class_ibmfloat.cc @@ -13,6 +13,7 @@ *******************************/ #include "grib_api_internal.h" +#include /* This is used by make_class.pl diff --git a/src/grib_accessor_class_ieeefloat.cc b/src/grib_accessor_class_ieeefloat.cc index 91128a8c4..8187145f3 100644 --- a/src/grib_accessor_class_ieeefloat.cc +++ b/src/grib_accessor_class_ieeefloat.cc @@ -9,6 +9,7 @@ */ #include "grib_api_internal.h" +#include /* This is used by make_class.pl From fd4bd4847c2657cdf9cea808ec0a2ec2379e5701 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 28 Apr 2023 12:06:42 +0100 Subject: [PATCH 118/378] Compiler warnings --- src/grib_accessor_class_ibmfloat.cc | 29 ++++++++++++++-------------- src/grib_accessor_class_ieeefloat.cc | 10 +++++----- 2 files changed, 19 insertions(+), 20 deletions(-) diff --git a/src/grib_accessor_class_ibmfloat.cc b/src/grib_accessor_class_ibmfloat.cc index bb80cbdd9..762149fd1 100644 --- a/src/grib_accessor_class_ibmfloat.cc +++ b/src/grib_accessor_class_ibmfloat.cc @@ -8,10 +8,6 @@ * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. */ -/******************************** - * Enrico Fucile - *******************************/ - #include "grib_api_internal.h" #include @@ -130,7 +126,7 @@ grib_accessor_class* grib_accessor_class_ibmfloat = &_grib_accessor_class_ibmflo static void init(grib_accessor* a, const long len, grib_arguments* arg) { grib_accessor_ibmfloat* self = (grib_accessor_ibmfloat*)a; - long count = 0; + long count = 0; self->arg = arg; grib_value_count(a, &count); @@ -194,16 +190,17 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) } if (rlen == 1) { - /* - double x = 0; - grib_nearest_smaller_ibm_float(val[0],&x); - double y = grib_long_to_ibm(grib_ibm_to_long(val[0])); - printf("IBMFLOAT val=%.20f nearest_smaller_ibm_float=%.20f long_to_ibm=%.20f\n",val[0],x ,y); - */ + + //double x = 0; + //grib_nearest_smaller_ibm_float(val[0],&x); + //double y = grib_long_to_ibm(grib_ibm_to_long(val[0])); + //printf("IBMFLOAT val=%.20f nearest_smaller_ibm_float=%.20f long_to_ibm=%.20f\n",val[0],x ,y); + off = byte_offset(a) * 8; ret = grib_encode_unsigned_long(grib_handle_of_accessor(a)->buffer->data, grib_ibm_to_long(val[0]), &off, 32); if (*len > 1) - grib_context_log(a->context, GRIB_LOG_WARNING, "grib_accessor_unsigned : Trying to pack %d values in a scalar %s, packing first value", *len, a->name); + grib_context_log(a->context, GRIB_LOG_WARNING, "ibmfloat: Trying to pack %zu values in a scalar %s, packing first value", + *len, a->name); if (ret == GRIB_SUCCESS) len[0] = 1; return ret; @@ -238,7 +235,7 @@ static long byte_count(grib_accessor* a) static int value_count(grib_accessor* a, long* len) { grib_accessor_ibmfloat* self = (grib_accessor_ibmfloat*)a; - *len = 0; + *len = 0; if (!self->arg) { *len = 1; return 0; @@ -250,11 +247,13 @@ static long byte_offset(grib_accessor* a) { return a->offset; } + static void update_size(grib_accessor* a, size_t s) { - a->length = s; + a->length = (long)s; Assert(a->length >= 0); } + static long next_offset(grib_accessor* a) { return grib_byte_offset(a) + grib_byte_count(a); @@ -264,7 +263,7 @@ static int nearest_smaller_value(grib_accessor* a, double val, double* nearest) { int ret = 0; if (grib_nearest_smaller_ibm_float(val, nearest) == GRIB_INTERNAL_ERROR) { - grib_context_log(a->context, GRIB_LOG_ERROR, "grib_nearest_smaller_ibm_float overflow value=%g\n", val); + grib_context_log(a->context, GRIB_LOG_ERROR, "ibm_float:nearest_smaller_value overflow value=%g", val); grib_dump_content(grib_handle_of_accessor(a), stderr, "wmo", GRIB_DUMP_FLAG_HEXADECIMAL, 0); ret = GRIB_INTERNAL_ERROR; } diff --git a/src/grib_accessor_class_ieeefloat.cc b/src/grib_accessor_class_ieeefloat.cc index 8187145f3..8857484ba 100644 --- a/src/grib_accessor_class_ieeefloat.cc +++ b/src/grib_accessor_class_ieeefloat.cc @@ -123,14 +123,13 @@ static void init(grib_accessor* a, const long len, grib_arguments* arg) self->arg = arg; grib_value_count(a, &count); a->length = 4 * count; - Assert(a->length >= 0); } static int value_count(grib_accessor* a, long* len) { grib_accessor_ieeefloat* self = (grib_accessor_ieeefloat*)a; - *len = 0; + *len = 0; if (!self->arg) { *len = 1; @@ -144,7 +143,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) grib_accessor_ieeefloat* self = (grib_accessor_ieeefloat*)a; int ret = 0; unsigned long i = 0; - unsigned long rlen = *len; + unsigned long rlen = (unsigned long)*len; size_t buflen = 0; unsigned char* buf = NULL; long off = 0; @@ -159,7 +158,8 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) off = a->offset * 8; ret = grib_encode_unsigned_long(grib_handle_of_accessor(a)->buffer->data, grib_ieee_to_long(val[0]), &off, 32); if (*len > 1) - grib_context_log(a->context, GRIB_LOG_WARNING, "grib_accessor_unsigned : Trying to pack %d values in a scalar %s, packing first value", *len, a->name); + grib_context_log(a->context, GRIB_LOG_WARNING, "ieeefloat: Trying to pack %zu values in a scalar %s, packing first value", + *len, a->name); if (ret == GRIB_SUCCESS) len[0] = 1; return ret; @@ -223,7 +223,7 @@ static int unpack_float(grib_accessor* a, float* val, size_t* len) static void update_size(grib_accessor* a, size_t s) { - a->length = s; + a->length = (long)s; Assert(a->length >= 0); } From 1aa8016a544e3e2d50de570e66a2431981e15eb4 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 28 Apr 2023 14:44:16 +0100 Subject: [PATCH 119/378] Replace Asserts with proper error messages and exit codes --- src/grib_accessor_class_data_ccsds_packing.cc | 18 +++++++++++------- ...b_accessor_class_data_g2shsimple_packing.cc | 6 +++++- src/grib_accessor_class_data_simple_packing.cc | 8 +++++--- 3 files changed, 21 insertions(+), 11 deletions(-) diff --git a/src/grib_accessor_class_data_ccsds_packing.cc b/src/grib_accessor_class_data_ccsds_packing.cc index 45d4e6f7d..07f42539a 100644 --- a/src/grib_accessor_class_data_ccsds_packing.cc +++ b/src/grib_accessor_class_data_ccsds_packing.cc @@ -276,7 +276,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) #endif if (grib_get_nearest_smaller_value(hand, self->reference_value, val[0], &reference_value) != GRIB_SUCCESS) { grib_context_log(a->context, GRIB_LOG_ERROR, - "CCSDS %s: unable to find nearest_smaller_value of %g for %s", __func__, min, self->reference_value); + "data_ccsds_packing %s: unable to find nearest_smaller_value of %g for %s", __func__, min, self->reference_value); return GRIB_INTERNAL_ERROR; } if ((err = grib_set_double_internal(hand, self->reference_value, reference_value)) != GRIB_SUCCESS) @@ -303,13 +303,13 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) if (grib_get_nearest_smaller_value(hand, self->reference_value, min, &reference_value) != GRIB_SUCCESS) { grib_context_log(a->context, GRIB_LOG_ERROR, - "CCSDS %s: unable to find nearest_smaller_value of %g for %s", __func__, min, self->reference_value); + "data_ccsds_packing %s: unable to find nearest_smaller_value of %g for %s", __func__, min, self->reference_value); return GRIB_INTERNAL_ERROR; } if (reference_value > min) { grib_context_log(a->context, GRIB_LOG_ERROR, - "CCSDS %s: reference_value=%g min_value=%g diff=%g", __func__, reference_value, min, reference_value - min); + "data_ccsds_packing %s: reference_value=%g min_value=%g diff=%g", __func__, reference_value, min, reference_value - min); DebugAssert(reference_value <= min); return GRIB_INTERNAL_ERROR; } @@ -346,7 +346,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) } if (grib_get_nearest_smaller_value(hand, self->reference_value, min, &reference_value) != GRIB_SUCCESS) { grib_context_log(a->context, GRIB_LOG_ERROR, - "CCSDS %s: unable to find nearest_smaller_value of %g for %s", __func__, min, self->reference_value); + "data_ccsds_packing %s: unable to find nearest_smaller_value of %g for %s", __func__, min, self->reference_value); return GRIB_INTERNAL_ERROR; } d = grib_power(decimal_scale_factor, 10); @@ -377,7 +377,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) } // buflen = n_vals*(bits_per_value/8); - grib_context_log(a->context, GRIB_LOG_DEBUG,"CCSDS pack_double: packing %s, %d values", a->name, n_vals); + grib_context_log(a->context, GRIB_LOG_DEBUG,"data_ccsds_packing pack_double: packing %s, %d values", a->name, n_vals); // ECC-1431: GRIB2: CCSDS encoding failure AEC_STREAM_ERROR buflen += buflen / 20 + 256; @@ -394,7 +394,11 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) // Make sure we can decode it again double ref = 1e-100; grib_get_double_internal(hand, self->reference_value, &ref); - Assert(ref == reference_value); + if (ref != reference_value) { + grib_context_log(a->context, GRIB_LOG_ERROR, "data_ccsds_packing %s: %s (ref=%.10e != reference_value=%.10e)", + __func__, self->reference_value, ref, reference_value); + return GRIB_INTERNAL_ERROR; + } } if ((err = grib_set_long_internal(hand, self->binary_scale_factor, binary_scale_factor)) != GRIB_SUCCESS) @@ -419,7 +423,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) if (hand->context->debug) print_aec_stream_info(&strm, "pack_double"); if ((err = aec_buffer_encode(&strm)) != AEC_OK) { - grib_context_log(a->context, GRIB_LOG_ERROR, "CCSDS %s: aec_buffer_encode error %d (%s)", + grib_context_log(a->context, GRIB_LOG_ERROR, "data_ccsds_packing %s: aec_buffer_encode error %d (%s)", __func__, err, aec_get_error_message(err)); err = GRIB_ENCODING_ERROR; goto cleanup; diff --git a/src/grib_accessor_class_data_g2shsimple_packing.cc b/src/grib_accessor_class_data_g2shsimple_packing.cc index 7e3b2518c..2ad8cec87 100644 --- a/src/grib_accessor_class_data_g2shsimple_packing.cc +++ b/src/grib_accessor_class_data_g2shsimple_packing.cc @@ -182,7 +182,11 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) /* Make sure we can decode it again */ double ref = 1e-100; grib_get_double_internal(grib_handle_of_accessor(a), self->real_part, &ref); - Assert(ref == *val); + if (ref != *val) { + grib_context_log(a->context, GRIB_LOG_ERROR, "data_g2shsimple_packing %s: %s (ref=%.10e != *val=%.10e)", + __func__, self->real_part, ref, *val); + return GRIB_INTERNAL_ERROR; + } } val++; diff --git a/src/grib_accessor_class_data_simple_packing.cc b/src/grib_accessor_class_data_simple_packing.cc index 67c0d9a30..c1cf199a8 100644 --- a/src/grib_accessor_class_data_simple_packing.cc +++ b/src/grib_accessor_class_data_simple_packing.cc @@ -693,9 +693,11 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) /* Make sure we can decode it again */ double ref = 1e-100; grib_get_double_internal(gh, self->reference_value, &ref); - if (ref != reference_value) - printf("%.20e != %.20e", ref, reference_value); - Assert(ref == reference_value); + if (ref != reference_value) { + grib_context_log(a->context, GRIB_LOG_ERROR, "data_simple_packing %s: (ref=%.10e != reference_value=%.10e)", + __func__, ref, reference_value); + return GRIB_INTERNAL_ERROR; + } } large_constant_fields = grib_producing_large_constant_fields(gh, self->edition); From 3ce066b60a4628e19565ad3d70850b32de6ba1ee Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sat, 29 Apr 2023 12:32:39 +0100 Subject: [PATCH 120/378] Better error messages --- ..._accessor_class_data_run_length_packing.cc | 30 ++++++++++++------- 1 file changed, 19 insertions(+), 11 deletions(-) diff --git a/src/grib_accessor_class_data_run_length_packing.cc b/src/grib_accessor_class_data_run_length_packing.cc index f1aa0133c..08ec9227f 100644 --- a/src/grib_accessor_class_data_run_length_packing.cc +++ b/src/grib_accessor_class_data_run_length_packing.cc @@ -142,7 +142,7 @@ static void init(grib_accessor* a, const long v, grib_arguments* args) static int value_count(grib_accessor* a, long* number_of_values) { grib_accessor_data_run_length_packing* self = (grib_accessor_data_run_length_packing*)a; - *number_of_values = 0; + *number_of_values = 0; return grib_get_long_internal(grib_handle_of_accessor(a), self->number_of_values, number_of_values); } @@ -193,21 +193,24 @@ static int unpack_double(grib_accessor* a, double* val, size_t* len) } range = (1 << bits_per_value) - 1 - max_level_value; if ((max_level_value <= 0) || (number_of_level_values <= 0) || (max_level_value > number_of_level_values) || (range <= 0)) { - grib_context_log(a->context, GRIB_LOG_ERROR, "parameters are invalid: max_level_value=%ld(>0, <=number_of_level_values), number_of_level_values=%ld(>0, >=max_level_value), range=%ld(>0)", max_level_value, number_of_level_values, range); + grib_context_log(a->context, GRIB_LOG_ERROR, + "data_run_length_packing: parameters are invalid: max_level_value=%ld(>0, <=number_of_level_values), " + "number_of_level_values=%ld(>0, >=max_level_value), range=%ld(>0)", + max_level_value, number_of_level_values, range); return GRIB_DECODING_ERROR; } if (decimal_scale_factor > 127) { decimal_scale_factor = -(decimal_scale_factor - 128); } level_scale_factor = grib_power(-decimal_scale_factor, 10.0); - levels = (double*)grib_context_malloc_clear(a->context, sizeof(double) * (number_of_level_values + 1)); - levels[0] = missingValue; + levels = (double*)grib_context_malloc_clear(a->context, sizeof(double) * (number_of_level_values + 1)); + levels[0] = missingValue; for (i = 0; i < number_of_level_values; i++) { levels[i + 1] = level_values[i] * level_scale_factor; } compressed_values = (long*)grib_context_malloc_clear(a->context, sizeof(long) * number_of_compressed_values); - buf = (unsigned char*)grib_handle_of_accessor(a)->buffer->data; - offsetBeforeData = grib_byte_offset(a); + buf = (unsigned char*)grib_handle_of_accessor(a)->buffer->data; + offsetBeforeData = grib_byte_offset(a); buf += offsetBeforeData; pos = 0; grib_decode_long_array(buf, &pos, bits_per_value, number_of_compressed_values, compressed_values); @@ -215,11 +218,14 @@ static int unpack_double(grib_accessor* a, double* val, size_t* len) i = 0; while (i < number_of_compressed_values) { if (compressed_values[i] > max_level_value) { - grib_context_log(a->context, GRIB_LOG_ERROR, "numberOfValues mismatch: i=%ld, compressed_values[i]=%ld, max_level_value=%ld", i, compressed_values[i], max_level_value); + grib_context_log(a->context, GRIB_LOG_ERROR, + "data_run_length_packing: numberOfValues mismatch: i=%d, " + "compressed_values[i]=%ld, max_level_value=%ld", + i, compressed_values[i], max_level_value); break; } - v = compressed_values[i++]; - n = 1; + v = compressed_values[i++]; + n = 1; factor = 1; while (i < number_of_compressed_values && compressed_values[i] > max_level_value) { n += factor * (compressed_values[i] - max_level_value - 1); @@ -227,7 +233,8 @@ static int unpack_double(grib_accessor* a, double* val, size_t* len) i++; } if (n > number_of_values) { - grib_context_log(a->context, GRIB_LOG_ERROR, "numberOfValues mismatch: n=%ld, number_of_values=%ld", n, number_of_values); + grib_context_log(a->context, GRIB_LOG_ERROR, "data_run_length_packing: numberOfValues mismatch: n=%ld, number_of_values=%ld", + n, number_of_values); break; } for (k = 0; k < n; k++) { @@ -238,7 +245,8 @@ static int unpack_double(grib_accessor* a, double* val, size_t* len) grib_context_free(a->context, levels); grib_context_free(a->context, compressed_values); if (j != number_of_values) { - grib_context_log(a->context, GRIB_LOG_ERROR, "numberOfValues mismatch: j=%ld, number_of_values=%ld", j, number_of_values); + grib_context_log(a->context, GRIB_LOG_ERROR, "data_run_length_packing: numberOfValues mismatch: j=%ld, number_of_values=%ld", + j, number_of_values); return GRIB_DECODING_ERROR; } return err; From 285cec091dc55c165dd9e8f1bd3a53030c76e008 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sat, 29 Apr 2023 12:44:25 +0100 Subject: [PATCH 121/378] Testing: cleanup --- examples/F90/bufr_get_string_array.sh | 20 ++++++-------------- examples/F90/bufr_read_header.sh | 2 +- examples/F90/bufr_read_scatterometer.sh | 8 ++------ examples/F90/bufr_read_temp.sh | 13 +++---------- examples/F90/bufr_subset.sh | 14 +++++++------- 5 files changed, 19 insertions(+), 38 deletions(-) diff --git a/examples/F90/bufr_get_string_array.sh b/examples/F90/bufr_get_string_array.sh index edfd86d20..463ce0d18 100755 --- a/examples/F90/bufr_get_string_array.sh +++ b/examples/F90/bufr_get_string_array.sh @@ -9,31 +9,23 @@ . ./include.ctest.sh -#Define a common label for all the tmp files +# Define a common label for all the tmp files label="bufr_get_string_array_test_f" -#Prepare tmp file +# Prepare tmp file fTmp=${label}.tmp.txt rm -f $fTmp -#----------------------------------------------------- +#---------------------------------------------------- # Test get string array from a BUFR #---------------------------------------------------- - fRef=${data_dir}/bufr/get_string_array.ref -REDIRECT=/dev/null - -#Write the values into a file and compare with reference +# Write the values into a file and compare with reference ${examples_dir}/eccodes_f_bufr_get_string_array > $fTmp -#We compare output to the reference by ignoring the whitespaces +# Compare output to the reference by ignoring the whitespaces diff -w $fRef $fTmp -#cat $fRes - -#Clean up +# Clean up rm -f ${fTmp} - - - diff --git a/examples/F90/bufr_read_header.sh b/examples/F90/bufr_read_header.sh index cb060d2b3..ee1172fcb 100755 --- a/examples/F90/bufr_read_header.sh +++ b/examples/F90/bufr_read_header.sh @@ -26,7 +26,7 @@ REDIRECT=/dev/null # Write the values into a file and compare with reference ${examples_dir}/eccodes_f_bufr_read_header $f 2> $REDIRECT > $fTmp -# Compare output to the reference by ignoring the whitespaces +# Compare output to the reference by ignoring the whitespaces diff -w $fRef $fTmp >$REDIRECT 2> $REDIRECT #Clean up diff --git a/examples/F90/bufr_read_scatterometer.sh b/examples/F90/bufr_read_scatterometer.sh index 8c80ac2b4..f69c2b8b8 100755 --- a/examples/F90/bufr_read_scatterometer.sh +++ b/examples/F90/bufr_read_scatterometer.sh @@ -10,7 +10,6 @@ . ./include.ctest.sh - # Define a common label for all the tmp files label="bufr_read_scatterometer_f" @@ -19,15 +18,12 @@ fTmp=${label}.tmp.txt rm -f $fTmp # We check "asca_139.bufr". The path is hardcoded in the example - -REDIRECT=/dev/null - # Write the key values into a file -${examples_dir}/eccodes_f_bufr_read_scatterometer 2> $REDIRECT > $fTmp +${examples_dir}/eccodes_f_bufr_read_scatterometer > $fTmp # Check the results REFERENCE_FILE=bufr_read_scatterometer_f.ref diff $REFERENCE_FILE $fTmp -#Clean up +# Clean up rm -f $fTmp diff --git a/examples/F90/bufr_read_temp.sh b/examples/F90/bufr_read_temp.sh index bc9184197..810fb4cb6 100755 --- a/examples/F90/bufr_read_temp.sh +++ b/examples/F90/bufr_read_temp.sh @@ -10,22 +10,15 @@ . ./include.ctest.sh - -#Define a common label for all the tmp files +# Define a common label for all the tmp files label="bufr_read_temp_f" -#Define tmp file fTmp=${label}.tmp.txt rm -f $fTmp # The path to the BUFR file is hardcoded in the example - -REDIRECT=/dev/null - -# Run the example ${examples_dir}/eccodes_f_bufr_read_temp > $fTmp +grep -q 'timePeriod pressure geopotentialHeight' $fTmp -#TODO: check the results - -#Clean up +# Clean up rm -f $fTmp diff --git a/examples/F90/bufr_subset.sh b/examples/F90/bufr_subset.sh index 3c2571444..1ae3e5ad4 100755 --- a/examples/F90/bufr_subset.sh +++ b/examples/F90/bufr_subset.sh @@ -10,15 +10,15 @@ . ./include.ctest.sh -#Define a common label for all the tmp files +# Define a common label for all the tmp files label="bufr_subset_test_f" -#Prepare tmp file +# Prepare tmp file fTmp=${label}.tmp.txt fTmp2=${label}.tmp2.txt rm -f $fTmp -#Prepare ref file +# Prepare ref file fRef=${label}.ref cat > $fRef < $fRef < $REDIRECT > $fTmp # Remove blank lines sed '/^\s*$/d' < $fTmp > $fTmp2 -#We compare output to the reference by ignoring the whitespaces +# We compare output to the reference by ignoring the whitespaces diff -w $fRef $fTmp2 >$REDIRECT 2> $REDIRECT #Clean up From cd21477fbba94ed5fe6617fc81959a2fa4f65cb4 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 3 May 2023 13:25:06 +0100 Subject: [PATCH 122/378] Deprecated --- src/{ => deprecated}/build_jgribapi.sh | 0 src/{ => deprecated}/jgribapi_GribFile.h | 0 src/{ => deprecated}/jgribapi_GribHandle.h | 0 src/{ => deprecated}/jgribapi_GribIterator.h | 0 4 files changed, 0 insertions(+), 0 deletions(-) rename src/{ => deprecated}/build_jgribapi.sh (100%) rename src/{ => deprecated}/jgribapi_GribFile.h (100%) rename src/{ => deprecated}/jgribapi_GribHandle.h (100%) rename src/{ => deprecated}/jgribapi_GribIterator.h (100%) diff --git a/src/build_jgribapi.sh b/src/deprecated/build_jgribapi.sh similarity index 100% rename from src/build_jgribapi.sh rename to src/deprecated/build_jgribapi.sh diff --git a/src/jgribapi_GribFile.h b/src/deprecated/jgribapi_GribFile.h similarity index 100% rename from src/jgribapi_GribFile.h rename to src/deprecated/jgribapi_GribFile.h diff --git a/src/jgribapi_GribHandle.h b/src/deprecated/jgribapi_GribHandle.h similarity index 100% rename from src/jgribapi_GribHandle.h rename to src/deprecated/jgribapi_GribHandle.h diff --git a/src/jgribapi_GribIterator.h b/src/deprecated/jgribapi_GribIterator.h similarity index 100% rename from src/jgribapi_GribIterator.h rename to src/deprecated/jgribapi_GribIterator.h From 4e9101dd868f3660884acb05d1cfa02695cd4069 Mon Sep 17 00:00:00 2001 From: Metamess Date: Tue, 2 May 2023 12:24:29 +0200 Subject: [PATCH 123/378] Added support for stepTypes 'avg' and 'accum' if typeOfTimeIncrement is set to 255 'Missing' --- definitions/grib2/template.4.statistical.def | 2 ++ 1 file changed, 2 insertions(+) diff --git a/definitions/grib2/template.4.statistical.def b/definitions/grib2/template.4.statistical.def index c9307b04e..3d7d7326f 100644 --- a/definitions/grib2/template.4.statistical.def +++ b/definitions/grib2/template.4.statistical.def @@ -56,8 +56,10 @@ if (numberOfTimeRange == 1 || numberOfTimeRange == 2) { "instant" = {typeOfStatisticalProcessing=255;} "avg" = {typeOfStatisticalProcessing=0;typeOfTimeIncrement=2;} "avg" = {typeOfStatisticalProcessing=0;typeOfTimeIncrement=3;} + "avg" = {typeOfStatisticalProcessing=0;typeOfTimeIncrement=255;} "avgd" = {typeOfStatisticalProcessing=0;typeOfTimeIncrement=1;} "accum" = {typeOfStatisticalProcessing=1;typeOfTimeIncrement=2;} + "accum" = {typeOfStatisticalProcessing=1;typeOfTimeIncrement=255;} "max" = {typeOfStatisticalProcessing=2;} "min" = {typeOfStatisticalProcessing=3;} "diff" = {typeOfStatisticalProcessing=4;} # end-start From 58b001e7cf1fb31ea3600f3040f3969380abd095 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 3 May 2023 16:30:01 +0100 Subject: [PATCH 124/378] ECC-1577: GRIB2: Add support for stepType when typeOfTimeIncrement=255 --- definitions/grib2/template.4.statistical.def | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/definitions/grib2/template.4.statistical.def b/definitions/grib2/template.4.statistical.def index 3d7d7326f..63545eea0 100644 --- a/definitions/grib2/template.4.statistical.def +++ b/definitions/grib2/template.4.statistical.def @@ -54,12 +54,12 @@ statisticalProcessesList list(numberOfTimeRange) if (numberOfTimeRange == 1 || numberOfTimeRange == 2) { concept stepTypeInternal { "instant" = {typeOfStatisticalProcessing=255;} + "avg" = {typeOfStatisticalProcessing=0;typeOfTimeIncrement=255;} "avg" = {typeOfStatisticalProcessing=0;typeOfTimeIncrement=2;} "avg" = {typeOfStatisticalProcessing=0;typeOfTimeIncrement=3;} - "avg" = {typeOfStatisticalProcessing=0;typeOfTimeIncrement=255;} "avgd" = {typeOfStatisticalProcessing=0;typeOfTimeIncrement=1;} - "accum" = {typeOfStatisticalProcessing=1;typeOfTimeIncrement=2;} "accum" = {typeOfStatisticalProcessing=1;typeOfTimeIncrement=255;} + "accum" = {typeOfStatisticalProcessing=1;typeOfTimeIncrement=2;} "max" = {typeOfStatisticalProcessing=2;} "min" = {typeOfStatisticalProcessing=3;} "diff" = {typeOfStatisticalProcessing=4;} # end-start From 579e246f7211d88dd06f601afa17dc1716a1340d Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 3 May 2023 16:51:37 +0100 Subject: [PATCH 125/378] ECC-1577: Test --- tests/grib_step.sh | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/tests/grib_step.sh b/tests/grib_step.sh index 1bc7e208b..354e11c45 100755 --- a/tests/grib_step.sh +++ b/tests/grib_step.sh @@ -116,6 +116,19 @@ grib_check_key_equals $temp productDefinitionTemplateNumber,typeOfStatisticalPro ${tools_dir}/grib_set -s stepType=mode,paramId=260320 $grib2_sample $temp grib_check_key_equals $temp productDefinitionTemplateNumber,typeOfStatisticalProcessing '8 101' +# ECC-1577: stepType when typeOfTimeIncrement=255 +# ----------------------------------------------- +${tools_dir}/grib_set -s stepType=accum,typeOfTimeIncrement=255 $grib2_sample $temp +grib_check_key_equals $temp stepType accum +${tools_dir}/grib_set -s stepType=accum $grib2_sample $temp +grib_check_key_equals $temp typeOfTimeIncrement 2 + +${tools_dir}/grib_set -s stepType=avg,typeOfTimeIncrement=255 $grib2_sample $temp +grib_check_key_equals $temp stepType avg +${tools_dir}/grib_set -s stepType=avg $grib2_sample $temp +grib_check_key_equals $temp typeOfTimeIncrement 3 + + # Clean up rm -f $temp rm -f $grib2File.p8tmp ${grib2File}.tmp x.grib From f6512f7cd24188f840e7b6782b679e7d2e751378 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 3 May 2023 16:15:27 +0000 Subject: [PATCH 126/378] ECC-1574: GRIB2: Modifications to parameter long names (WMO conforming) for Destination Earth --- definitions/grib1/localConcepts/ecmf/cfVarName.def | 6 +++--- definitions/grib1/localConcepts/ecmf/name.def | 12 ++++++------ definitions/grib1/localConcepts/ecmf/paramId.def | 6 +++--- definitions/grib1/localConcepts/ecmf/shortName.def | 6 +++--- definitions/grib1/localConcepts/ecmf/units.def | 6 +++--- definitions/grib2/cfVarName.def | 6 +++--- definitions/grib2/name.def | 12 ++++++------ definitions/grib2/paramId.def | 6 +++--- definitions/grib2/shortName.def | 6 +++--- definitions/grib2/units.def | 6 +++--- 10 files changed, 36 insertions(+), 36 deletions(-) diff --git a/definitions/grib1/localConcepts/ecmf/cfVarName.def b/definitions/grib1/localConcepts/ecmf/cfVarName.def index 781ea67a0..228f5bd9f 100644 --- a/definitions/grib1/localConcepts/ecmf/cfVarName.def +++ b/definitions/grib1/localConcepts/ecmf/cfVarName.def @@ -1739,12 +1739,12 @@ table2Version = 128 ; indicatorOfParameter = 207 ; } -#Top net solar radiation, clear sky +#Top net short-wave (solar) radiation, clear sky 'tsrc' = { table2Version = 128 ; indicatorOfParameter = 208 ; } -#Top net thermal radiation, clear sky +#Top net long-wave (thermal) radiation, clear sky 'ttrc' = { table2Version = 128 ; indicatorOfParameter = 209 ; @@ -1759,7 +1759,7 @@ table2Version = 128 ; indicatorOfParameter = 211 ; } -#TOA incident solar radiation +#TOA incident short-wave (solar) radiation 'tisr' = { table2Version = 128 ; indicatorOfParameter = 212 ; diff --git a/definitions/grib1/localConcepts/ecmf/name.def b/definitions/grib1/localConcepts/ecmf/name.def index 8a6b5aa16..a0e23889e 100644 --- a/definitions/grib1/localConcepts/ecmf/name.def +++ b/definitions/grib1/localConcepts/ecmf/name.def @@ -1739,13 +1739,13 @@ table2Version = 128 ; indicatorOfParameter = 207 ; } -#Top net solar radiation, clear sky -'Top net solar radiation, clear sky' = { +#Top net short-wave (solar) radiation, clear sky +'Top net short-wave (solar) radiation, clear sky' = { table2Version = 128 ; indicatorOfParameter = 208 ; } -#Top net thermal radiation, clear sky -'Top net thermal radiation, clear sky' = { +#Top net long-wave (thermal) radiation, clear sky +'Top net long-wave (thermal) radiation, clear sky' = { table2Version = 128 ; indicatorOfParameter = 209 ; } @@ -1759,8 +1759,8 @@ table2Version = 128 ; indicatorOfParameter = 211 ; } -#TOA incident solar radiation -'TOA incident solar radiation' = { +#TOA incident short-wave (solar) radiation +'TOA incident short-wave (solar) radiation' = { table2Version = 128 ; indicatorOfParameter = 212 ; } diff --git a/definitions/grib1/localConcepts/ecmf/paramId.def b/definitions/grib1/localConcepts/ecmf/paramId.def index 61e924963..2fd9b2919 100644 --- a/definitions/grib1/localConcepts/ecmf/paramId.def +++ b/definitions/grib1/localConcepts/ecmf/paramId.def @@ -1739,12 +1739,12 @@ table2Version = 128 ; indicatorOfParameter = 207 ; } -#Top net solar radiation, clear sky +#Top net short-wave (solar) radiation, clear sky '208' = { table2Version = 128 ; indicatorOfParameter = 208 ; } -#Top net thermal radiation, clear sky +#Top net long-wave (thermal) radiation, clear sky '209' = { table2Version = 128 ; indicatorOfParameter = 209 ; @@ -1759,7 +1759,7 @@ table2Version = 128 ; indicatorOfParameter = 211 ; } -#TOA incident solar radiation +#TOA incident short-wave (solar) radiation '212' = { table2Version = 128 ; indicatorOfParameter = 212 ; diff --git a/definitions/grib1/localConcepts/ecmf/shortName.def b/definitions/grib1/localConcepts/ecmf/shortName.def index a122c442e..3cf5de916 100644 --- a/definitions/grib1/localConcepts/ecmf/shortName.def +++ b/definitions/grib1/localConcepts/ecmf/shortName.def @@ -1739,12 +1739,12 @@ table2Version = 128 ; indicatorOfParameter = 207 ; } -#Top net solar radiation, clear sky +#Top net short-wave (solar) radiation, clear sky 'tsrc' = { table2Version = 128 ; indicatorOfParameter = 208 ; } -#Top net thermal radiation, clear sky +#Top net long-wave (thermal) radiation, clear sky 'ttrc' = { table2Version = 128 ; indicatorOfParameter = 209 ; @@ -1759,7 +1759,7 @@ table2Version = 128 ; indicatorOfParameter = 211 ; } -#TOA incident solar radiation +#TOA incident short-wave (solar) radiation 'tisr' = { table2Version = 128 ; indicatorOfParameter = 212 ; diff --git a/definitions/grib1/localConcepts/ecmf/units.def b/definitions/grib1/localConcepts/ecmf/units.def index 1f3f6ad9d..f6ea925d0 100644 --- a/definitions/grib1/localConcepts/ecmf/units.def +++ b/definitions/grib1/localConcepts/ecmf/units.def @@ -1739,12 +1739,12 @@ table2Version = 128 ; indicatorOfParameter = 207 ; } -#Top net solar radiation, clear sky +#Top net short-wave (solar) radiation, clear sky 'J m**-2' = { table2Version = 128 ; indicatorOfParameter = 208 ; } -#Top net thermal radiation, clear sky +#Top net long-wave (thermal) radiation, clear sky 'J m**-2' = { table2Version = 128 ; indicatorOfParameter = 209 ; @@ -1759,7 +1759,7 @@ table2Version = 128 ; indicatorOfParameter = 211 ; } -#TOA incident solar radiation +#TOA incident short-wave (solar) radiation 'J m**-2' = { table2Version = 128 ; indicatorOfParameter = 212 ; diff --git a/definitions/grib2/cfVarName.def b/definitions/grib2/cfVarName.def index 7be28dfd6..b4f7c7e36 100644 --- a/definitions/grib2/cfVarName.def +++ b/definitions/grib2/cfVarName.def @@ -314,7 +314,7 @@ parameterCategory = 14 ; parameterNumber = 1 ; } -#Top net solar radiation, clear sky +#Top net short-wave (solar) radiation, clear sky 'tsrc' = { discipline = 0 ; parameterCategory = 4 ; @@ -322,7 +322,7 @@ typeOfFirstFixedSurface = 8 ; typeOfStatisticalProcessing = 1 ; } -#Top net thermal radiation, clear sky +#Top net long-wave (thermal) radiation, clear sky 'ttrc' = { discipline = 0 ; parameterCategory = 5 ; @@ -346,7 +346,7 @@ typeOfFirstFixedSurface = 1 ; typeOfStatisticalProcessing = 1 ; } -#TOA incident solar radiation +#TOA incident short-wave (solar) radiation 'tisr' = { discipline = 0 ; parameterCategory = 4 ; diff --git a/definitions/grib2/name.def b/definitions/grib2/name.def index 65cb9a484..5d4af9ad7 100644 --- a/definitions/grib2/name.def +++ b/definitions/grib2/name.def @@ -314,16 +314,16 @@ parameterCategory = 14 ; parameterNumber = 1 ; } -#Top net solar radiation, clear sky -'Top net solar radiation, clear sky' = { +#Top net short-wave (solar) radiation, clear sky +'Top net short-wave (solar) radiation, clear sky' = { discipline = 0 ; parameterCategory = 4 ; parameterNumber = 11 ; typeOfFirstFixedSurface = 8 ; typeOfStatisticalProcessing = 1 ; } -#Top net thermal radiation, clear sky -'Top net thermal radiation, clear sky' = { +#Top net long-wave (thermal) radiation, clear sky +'Top net long-wave (thermal) radiation, clear sky' = { discipline = 0 ; parameterCategory = 5 ; parameterNumber = 6 ; @@ -346,8 +346,8 @@ typeOfFirstFixedSurface = 1 ; typeOfStatisticalProcessing = 1 ; } -#TOA incident solar radiation -'TOA incident solar radiation' = { +#TOA incident short-wave (solar) radiation +'TOA incident short-wave (solar) radiation' = { discipline = 0 ; parameterCategory = 4 ; parameterNumber = 7 ; diff --git a/definitions/grib2/paramId.def b/definitions/grib2/paramId.def index 1340f68a8..7b7f9c98d 100644 --- a/definitions/grib2/paramId.def +++ b/definitions/grib2/paramId.def @@ -314,7 +314,7 @@ parameterCategory = 14 ; parameterNumber = 1 ; } -#Top net solar radiation, clear sky +#Top net short-wave (solar) radiation, clear sky '208' = { discipline = 0 ; parameterCategory = 4 ; @@ -322,7 +322,7 @@ typeOfFirstFixedSurface = 8 ; typeOfStatisticalProcessing = 1 ; } -#Top net thermal radiation, clear sky +#Top net long-wave (thermal) radiation, clear sky '209' = { discipline = 0 ; parameterCategory = 5 ; @@ -346,7 +346,7 @@ typeOfFirstFixedSurface = 1 ; typeOfStatisticalProcessing = 1 ; } -#TOA incident solar radiation +#TOA incident short-wave (solar) radiation '212' = { discipline = 0 ; parameterCategory = 4 ; diff --git a/definitions/grib2/shortName.def b/definitions/grib2/shortName.def index b3b6ec2fb..458a1ea99 100644 --- a/definitions/grib2/shortName.def +++ b/definitions/grib2/shortName.def @@ -314,7 +314,7 @@ parameterCategory = 14 ; parameterNumber = 1 ; } -#Top net solar radiation, clear sky +#Top net short-wave (solar) radiation, clear sky 'tsrc' = { discipline = 0 ; parameterCategory = 4 ; @@ -322,7 +322,7 @@ typeOfFirstFixedSurface = 8 ; typeOfStatisticalProcessing = 1 ; } -#Top net thermal radiation, clear sky +#Top net long-wave (thermal) radiation, clear sky 'ttrc' = { discipline = 0 ; parameterCategory = 5 ; @@ -346,7 +346,7 @@ typeOfFirstFixedSurface = 1 ; typeOfStatisticalProcessing = 1 ; } -#TOA incident solar radiation +#TOA incident short-wave (solar) radiation 'tisr' = { discipline = 0 ; parameterCategory = 4 ; diff --git a/definitions/grib2/units.def b/definitions/grib2/units.def index 4f2e2c439..6d33e1d86 100644 --- a/definitions/grib2/units.def +++ b/definitions/grib2/units.def @@ -314,7 +314,7 @@ parameterCategory = 14 ; parameterNumber = 1 ; } -#Top net solar radiation, clear sky +#Top net short-wave (solar) radiation, clear sky 'J m**-2' = { discipline = 0 ; parameterCategory = 4 ; @@ -322,7 +322,7 @@ typeOfFirstFixedSurface = 8 ; typeOfStatisticalProcessing = 1 ; } -#Top net thermal radiation, clear sky +#Top net long-wave (thermal) radiation, clear sky 'J m**-2' = { discipline = 0 ; parameterCategory = 5 ; @@ -346,7 +346,7 @@ typeOfFirstFixedSurface = 1 ; typeOfStatisticalProcessing = 1 ; } -#TOA incident solar radiation +#TOA incident short-wave (solar) radiation 'J m**-2' = { discipline = 0 ; parameterCategory = 4 ; From 84e82baf0264153adb90108d8ac88aa9e74b627d Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 3 May 2023 17:00:49 +0000 Subject: [PATCH 127/378] ECC-1575: GRIB2: Modification of convective precipitation GRIB2 deprecated encoding --- definitions/grib2/localConcepts/ecmf/cfName.def | 6 ++++-- definitions/grib2/localConcepts/ecmf/cfVarName.def | 6 ++++-- definitions/grib2/localConcepts/ecmf/name.def | 6 ++++-- definitions/grib2/localConcepts/ecmf/paramId.def | 6 ++++-- definitions/grib2/localConcepts/ecmf/shortName.def | 6 ++++-- definitions/grib2/localConcepts/ecmf/units.def | 6 ++++-- definitions/grib2/tables/local/ecmf/1/4.2.0.1.table | 1 + 7 files changed, 25 insertions(+), 12 deletions(-) diff --git a/definitions/grib2/localConcepts/ecmf/cfName.def b/definitions/grib2/localConcepts/ecmf/cfName.def index d9435fbee..aba0e537f 100644 --- a/definitions/grib2/localConcepts/ecmf/cfName.def +++ b/definitions/grib2/localConcepts/ecmf/cfName.def @@ -29,10 +29,12 @@ } #Convective precipitation 'lwe_thickness_of_convective_precipitation_amount' = { + localTablesVersion = 1 ; discipline = 0 ; parameterCategory = 1 ; - parameterNumber = 10 ; - unitsFactor = 1000 ; + parameterNumber = 195 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; } #Snowfall 'lwe_thickness_of_snowfall_amount' = { diff --git a/definitions/grib2/localConcepts/ecmf/cfVarName.def b/definitions/grib2/localConcepts/ecmf/cfVarName.def index ba0d2e0fa..37618e205 100644 --- a/definitions/grib2/localConcepts/ecmf/cfVarName.def +++ b/definitions/grib2/localConcepts/ecmf/cfVarName.def @@ -657,10 +657,12 @@ } #Convective precipitation 'cp' = { + localTablesVersion = 1 ; discipline = 0 ; parameterCategory = 1 ; - parameterNumber = 10 ; - unitsFactor = 1000 ; + parameterNumber = 195 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; } #Snowfall 'sf' = { diff --git a/definitions/grib2/localConcepts/ecmf/name.def b/definitions/grib2/localConcepts/ecmf/name.def index 31e0b0252..f8a4d1f02 100644 --- a/definitions/grib2/localConcepts/ecmf/name.def +++ b/definitions/grib2/localConcepts/ecmf/name.def @@ -657,10 +657,12 @@ } #Convective precipitation 'Convective precipitation' = { + localTablesVersion = 1 ; discipline = 0 ; parameterCategory = 1 ; - parameterNumber = 10 ; - unitsFactor = 1000 ; + parameterNumber = 195 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; } #Snowfall 'Snowfall' = { diff --git a/definitions/grib2/localConcepts/ecmf/paramId.def b/definitions/grib2/localConcepts/ecmf/paramId.def index c8e69dd65..71c6e96e6 100644 --- a/definitions/grib2/localConcepts/ecmf/paramId.def +++ b/definitions/grib2/localConcepts/ecmf/paramId.def @@ -657,10 +657,12 @@ } #Convective precipitation '143' = { + localTablesVersion = 1 ; discipline = 0 ; parameterCategory = 1 ; - parameterNumber = 10 ; - unitsFactor = 1000 ; + parameterNumber = 195 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; } #Snowfall '144' = { diff --git a/definitions/grib2/localConcepts/ecmf/shortName.def b/definitions/grib2/localConcepts/ecmf/shortName.def index 95612eac9..e73b9b8b3 100644 --- a/definitions/grib2/localConcepts/ecmf/shortName.def +++ b/definitions/grib2/localConcepts/ecmf/shortName.def @@ -657,10 +657,12 @@ } #Convective precipitation 'cp' = { + localTablesVersion = 1 ; discipline = 0 ; parameterCategory = 1 ; - parameterNumber = 10 ; - unitsFactor = 1000 ; + parameterNumber = 195 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; } #Snowfall 'sf' = { diff --git a/definitions/grib2/localConcepts/ecmf/units.def b/definitions/grib2/localConcepts/ecmf/units.def index f4c9645c4..9b6427360 100644 --- a/definitions/grib2/localConcepts/ecmf/units.def +++ b/definitions/grib2/localConcepts/ecmf/units.def @@ -657,10 +657,12 @@ } #Convective precipitation 'm' = { + localTablesVersion = 1 ; discipline = 0 ; parameterCategory = 1 ; - parameterNumber = 10 ; - unitsFactor = 1000 ; + parameterNumber = 195 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; } #Snowfall 'm of water equivalent' = { diff --git a/definitions/grib2/tables/local/ecmf/1/4.2.0.1.table b/definitions/grib2/tables/local/ecmf/1/4.2.0.1.table index bee2409ab..2c4961ba0 100644 --- a/definitions/grib2/tables/local/ecmf/1/4.2.0.1.table +++ b/definitions/grib2/tables/local/ecmf/1/4.2.0.1.table @@ -2,6 +2,7 @@ 192 192 Snow evaporation rate (kg m-2 s-1) 193 193 Total precipitation (m) 194 194 Accumulated freezing rain (m) +195 195 Convective precipitation (m) 196 196 Large-scale precipitation (m) 197 197 Snow evaporation (m of water equivalent) 198 198 Snowfall (m of water equivalent) From 8d4fb4c9dddaefe70110f8b48cdde1d185eb378e Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 4 May 2023 09:27:55 +0000 Subject: [PATCH 128/378] ECC-1578: codes_handle_new_from_index does not initialise its 'err' argument --- src/grib_index.cc | 1 + 1 file changed, 1 insertion(+) diff --git a/src/grib_index.cc b/src/grib_index.cc index 4aeab0043..4091f4379 100644 --- a/src/grib_index.cc +++ b/src/grib_index.cc @@ -1875,6 +1875,7 @@ grib_handle* codes_new_from_index(grib_index* index, int message_type, int* err) grib_field_list *fieldset, *next; grib_handle* h = NULL; grib_context* c = NULL; + *err = 0; if (!index) return NULL; From fa08de8491ee1e8b488166150803197c2961fdc3 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 4 May 2023 14:51:52 +0000 Subject: [PATCH 129/378] ECC-1579: Fortran: grib_get_real4_array (single-precision mode) not bit-identical --- fortran/grib_fortran.c | 47 +++++++++++++++++++++--------------------- 1 file changed, 23 insertions(+), 24 deletions(-) diff --git a/fortran/grib_fortran.c b/fortran/grib_fortran.c index b13ffb292..2a4c734ea 100644 --- a/fortran/grib_fortran.c +++ b/fortran/grib_fortran.c @@ -2761,39 +2761,38 @@ int grib_f_get_real4(int* gid, char* key, float* val, int len){ return grib_f_get_real4_( gid, key, val, len); } -int grib_f_get_real4_array_(int* gid, char* key, float *val, int* size, int len) +int grib_f_get_real4_array_(int* gid, char* key, float *val, int* size, int len) { + /* See ECC-1579 */ + grib_handle *h = get_handle(*gid); int err = GRIB_SUCCESS; char buf[1024]; size_t lsize = *size; + double* val8 = NULL; + size_t i; - if(!h){ - return GRIB_INVALID_GRIB; - } + if(!h) return GRIB_INVALID_GRIB; - err = grib_get_float_array(h, cast_char(buf,key,len), val, &lsize); - if (err == GRIB_NOT_IMPLEMENTED) { - double* val8 = NULL; - size_t i = 0; - if(*size) - val8 = (double*)grib_context_malloc(h->context,(*size)*(sizeof(double))); - else - val8 = (double*)grib_context_malloc(h->context,sizeof(double)); - if(!val8) return GRIB_OUT_OF_MEMORY; - - err = grib_get_double_array(h, cast_char(buf,key,len), val8, &lsize); - if (err) { - grib_context_free(h->context,val8); - return err; - } - for(i=0;icontext,(*size)*(sizeof(double))); + else + val8 = (double*)grib_context_malloc(h->context,sizeof(double)); + + if(!val8) return GRIB_OUT_OF_MEMORY; + + err = grib_get_double_array(h, cast_char(buf,key,len), val8, &lsize); + if (err) { grib_context_free(h->context,val8); - return err; + return err; } - *size = lsize; - return err; + + for(i=0;icontext,val8); + + return err; } int grib_f_get_real4_array__(int* gid, char* key, float* val, int* size, int len){ return grib_f_get_real4_array_( gid, key, val, size, len); From e94bc38c18770c672b4b98c7aa77f96b80532a1e Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 4 May 2023 14:59:25 +0000 Subject: [PATCH 130/378] ECC-1579: TODO reminder --- fortran/grib_fortran.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/fortran/grib_fortran.c b/fortran/grib_fortran.c index 2a4c734ea..f4160d341 100644 --- a/fortran/grib_fortran.c +++ b/fortran/grib_fortran.c @@ -2763,7 +2763,11 @@ int grib_f_get_real4(int* gid, char* key, float* val, int len){ int grib_f_get_real4_array_(int* gid, char* key, float *val, int* size, int len) { - /* See ECC-1579 */ + /* See ECC-1579: + * Ideally we should be calling: + * err = grib_get_float_array(h, cast_char(buf,key,len), val, &lsize); + * + */ grib_handle *h = get_handle(*gid); int err = GRIB_SUCCESS; From a8ddefceaf6090f17cff3be7b8bd46fd117b77d4 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 4 May 2023 15:18:23 +0000 Subject: [PATCH 131/378] ECC-1579: Spectral data in single-precision --- ...rib_accessor_class_data_complex_packing.cc | 24 ++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/src/grib_accessor_class_data_complex_packing.cc b/src/grib_accessor_class_data_complex_packing.cc index 08919dee4..6f5122d9b 100644 --- a/src/grib_accessor_class_data_complex_packing.cc +++ b/src/grib_accessor_class_data_complex_packing.cc @@ -902,5 +902,27 @@ static int unpack_double(grib_accessor* a, double* val, size_t* len) static int unpack_float(grib_accessor* a, float* val, size_t* len) { - return unpack(a, val, len); + // TODO(maee): See ECC-1579 + // Investigate why results are not bit-identical + + // return unpack(a, val, len); + + int err = 0; + size_t i = 0; + size_t size = *len; + double* val8 = NULL; + val8 = (double*)grib_context_malloc(a->context, size*(sizeof(double))); + if (!val8) + return GRIB_OUT_OF_MEMORY; + err = unpack(a, val8, len); + if (err) { + grib_context_free(a->context,val8); + return err; + } + + for(i=0; icontext,val8); + + return GRIB_SUCCESS; } From 352cdf49ed949e8a179c0ec256fc30285cb7eb9d Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 4 May 2023 16:43:21 +0000 Subject: [PATCH 132/378] ECC-1581: GRIB2: Modification of total snowfall GRIB2 deprecated encoding --- definitions/grib2/cfVarName.def | 14 ++++++++------ definitions/grib2/name.def | 14 ++++++++------ definitions/grib2/paramId.def | 14 ++++++++------ definitions/grib2/shortName.def | 14 ++++++++------ definitions/grib2/units.def | 14 ++++++++------ 5 files changed, 40 insertions(+), 30 deletions(-) diff --git a/definitions/grib2/cfVarName.def b/definitions/grib2/cfVarName.def index b4f7c7e36..cc7563d02 100644 --- a/definitions/grib2/cfVarName.def +++ b/definitions/grib2/cfVarName.def @@ -2846,6 +2846,14 @@ typeOfFirstFixedSurface = 1 ; typeOfSecondFixedSurface = 8 ; } +#Total snowfall +'asnow' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 57 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; + } #2 metre relative humidity 'r2' = { discipline = 0 ; @@ -6637,12 +6645,6 @@ parameterCategory = 1 ; parameterNumber = 28 ; } -#Total snowfall -'asnow' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 29 ; - } #Precipitable water category 'pwcat' = { discipline = 0 ; diff --git a/definitions/grib2/name.def b/definitions/grib2/name.def index 5d4af9ad7..a58b70383 100644 --- a/definitions/grib2/name.def +++ b/definitions/grib2/name.def @@ -2846,6 +2846,14 @@ typeOfFirstFixedSurface = 1 ; typeOfSecondFixedSurface = 8 ; } +#Total snowfall +'Total snowfall' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 57 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; + } #2 metre relative humidity '2 metre relative humidity' = { discipline = 0 ; @@ -6637,12 +6645,6 @@ parameterCategory = 1 ; parameterNumber = 28 ; } -#Total snowfall -'Total snowfall' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 29 ; - } #Precipitable water category 'Precipitable water category' = { discipline = 0 ; diff --git a/definitions/grib2/paramId.def b/definitions/grib2/paramId.def index 7b7f9c98d..7cda35b55 100644 --- a/definitions/grib2/paramId.def +++ b/definitions/grib2/paramId.def @@ -2846,6 +2846,14 @@ typeOfFirstFixedSurface = 1 ; typeOfSecondFixedSurface = 8 ; } +#Total snowfall +'260025' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 57 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; + } #2 metre relative humidity '260242' = { discipline = 0 ; @@ -6637,12 +6645,6 @@ parameterCategory = 1 ; parameterNumber = 28 ; } -#Total snowfall -'260025' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 29 ; - } #Precipitable water category '260026' = { discipline = 0 ; diff --git a/definitions/grib2/shortName.def b/definitions/grib2/shortName.def index 458a1ea99..13d9ccb3e 100644 --- a/definitions/grib2/shortName.def +++ b/definitions/grib2/shortName.def @@ -2846,6 +2846,14 @@ typeOfFirstFixedSurface = 1 ; typeOfSecondFixedSurface = 8 ; } +#Total snowfall +'asnow' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 57 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; + } #2 metre relative humidity '2r' = { discipline = 0 ; @@ -6637,12 +6645,6 @@ parameterCategory = 1 ; parameterNumber = 28 ; } -#Total snowfall -'asnow' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 29 ; - } #Precipitable water category 'pwcat' = { discipline = 0 ; diff --git a/definitions/grib2/units.def b/definitions/grib2/units.def index 6d33e1d86..9cfb3c74e 100644 --- a/definitions/grib2/units.def +++ b/definitions/grib2/units.def @@ -2846,6 +2846,14 @@ typeOfFirstFixedSurface = 1 ; typeOfSecondFixedSurface = 8 ; } +#Total snowfall +'m' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 57 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; + } #2 metre relative humidity '%' = { discipline = 0 ; @@ -6637,12 +6645,6 @@ parameterCategory = 1 ; parameterNumber = 28 ; } -#Total snowfall -'m' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 29 ; - } #Precipitable water category 'code table (4.202)' = { discipline = 0 ; From 276cc91604e002b503a26cc00699d635751ee627 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 4 May 2023 22:19:47 +0100 Subject: [PATCH 133/378] ECC-1580: Make codes_get_native_type available in Fortran --- fortran/eccodes_f90_head.f90 | 20 +++++-- fortran/eccodes_f90_tail.f90 | 97 ++++++++++++++++++------------- fortran/eccodes_visibility.h | 1 + fortran/grib_api_externals.h | 1 + fortran/grib_api_visibility.h | 1 + fortran/grib_f90_tail.f90 | 29 +++++++++ fortran/grib_fortran.c | 20 +++++++ fortran/grib_fortran_prototypes.h | 5 ++ 8 files changed, 130 insertions(+), 44 deletions(-) diff --git a/fortran/eccodes_f90_head.f90 b/fortran/eccodes_f90_head.f90 index 2373e288c..cd162e0e8 100644 --- a/fortran/eccodes_f90_head.f90 +++ b/fortran/eccodes_f90_head.f90 @@ -17,13 +17,23 @@ module eccodes include "eccodes_visibility.h" include "eccodes_settings.h" - real(8), parameter, public :: CODES_MISSING_DOUBLE = -1.D+100 - integer(4), parameter, public :: CODES_MISSING_LONG = 2147483647 + real(8), parameter, public :: CODES_MISSING_DOUBLE = -1.D+100 + integer(4), parameter, public :: CODES_MISSING_LONG = 2147483647 - integer, parameter, public :: CODES_PRODUCT_ANY = 0 + integer, parameter, public :: CODES_PRODUCT_ANY = 0 integer, parameter, public :: CODES_PRODUCT_GRIB = 1 integer, parameter, public :: CODES_PRODUCT_BUFR = 2 + ! Key types + integer, parameter, public :: CODES_TYPE_UNDEFINED = 0 + integer, parameter, public :: CODES_TYPE_LONG = 1 + integer, parameter, public :: CODES_TYPE_DOUBLE = 2 + integer, parameter, public :: CODES_TYPE_STRING = 3 + integer, parameter, public :: CODES_TYPE_BYTES = 4 + integer, parameter, public :: CODES_TYPE_SECTION = 5 + integer, parameter, public :: CODES_TYPE_LABEL = 6 + integer, parameter, public :: CODES_TYPE_MISSING = 7 + !> Create a new message in memory from an integer or character array containting the coded message. !> !> The message can be accessed through its ID and it will be available\n @@ -100,7 +110,7 @@ module eccodes !> !> \b Examples: \ref grib_nearest.f90 "grib_nearest.f90" !> - !> @param[in] gribid id of the grib loaded in memory + !> @param[in] gribid ID of the GRIB loaded in memory !> @param[in] is_lsm .true. if the nearest land point is required otherwise .false. !> @param[in] inlat latitude of the point in degrees !> @param[in] inlon longitudes of the point in degrees @@ -129,7 +139,7 @@ module eccodes !> !> \b Examples: \ref grib_get_data.f90 "grib_get_data.f90" !> - !> @param[in] gribid id of the grib loaded in memory + !> @param[in] gribid ID of the GRIB loaded in memory !> @param[out] lats latitudes array with dimension "size" !> @param[out] lons longitudes array with dimension "size" !> @param[out] values data values array with dimension "size" diff --git a/fortran/eccodes_f90_tail.f90 b/fortran/eccodes_f90_tail.f90 index a4672d204..7dfdd952a 100644 --- a/fortran/eccodes_f90_tail.f90 +++ b/fortran/eccodes_f90_tail.f90 @@ -1618,19 +1618,41 @@ end subroutine codes_get_size_long !> exit with an error message.\n Otherwise the error message can be !> gathered with @ref codes_get_error_string. !> - !> @param msgid id of the message loaded in memory + !> @param msgid id of the message loaded in memory !> @param key key name !> @param value the integer(4) value !> @param status CODES_SUCCESS if OK, integer value on error subroutine codes_get_int(msgid, key, value, status) - integer(kind=kindOfInt), intent(in) :: msgid - character(len=*), intent(in) :: key + integer(kind=kindOfInt), intent(in) :: msgid + character(len=*), intent(in) :: key integer(kind=kindOfInt), intent(out) :: value integer(kind=kindOfInt), optional, intent(out) :: status call grib_get_int(msgid, key, value, status) end subroutine codes_get_int + + !> Get the native type of a key from a message. + !> + !> In case of error, if the status parameter (optional) is not given, the program will + !> exit with an error message.\n Otherwise the error message can be + !> gathered with @ref grib_get_error_string. + !> + !> @param msgid id of the message loaded in memory + !> @param key key name + !> @param value the type as an integer(4) value + !> @param status GRIB_SUCCESS if OK, integer value on error + subroutine codes_get_native_type(msgid, key, value, status) + integer(kind=kindOfInt), intent(in) :: msgid + character(len=*), intent(in) :: key + integer(kind=kindOfInt), intent(out) :: value + integer(kind=kindOfInt), optional, intent(out) :: status + integer(kind=kindOfInt) :: iret + + call grib_get_native_type(msgid, key, value, status) + end subroutine codes_get_native_type + + !> Get the integer value of a key from a message. !> !> In case of error, if the status parameter (optional) is not given, the program will @@ -1661,9 +1683,9 @@ end subroutine codes_get_long !> @param is_missing 0->not missing, 1->missing !> @param status CODES_SUCCESS if OK, integer value on error subroutine codes_is_missing(msgid, key, is_missing, status) - integer(kind=kindOfInt), intent(in) :: msgid - character(len=*), intent(in) :: key - integer(kind=kindOfInt), intent(out) :: is_missing + integer(kind=kindOfInt), intent(in) :: msgid + character(len=*), intent(in) :: key + integer(kind=kindOfInt), intent(out) :: is_missing integer(kind=kindOfInt), optional, intent(out) :: status call grib_is_missing(msgid, key, is_missing, status) @@ -1680,9 +1702,9 @@ end subroutine codes_is_missing !> @param is_defined 0->not defined, 1->defined !> @param status CODES_SUCCESS if OK, integer value on error subroutine codes_is_defined(msgid, key, is_defined, status) - integer(kind=kindOfInt), intent(in) :: msgid - character(len=*), intent(in) :: key - integer(kind=kindOfInt), intent(out) :: is_defined + integer(kind=kindOfInt), intent(in) :: msgid + character(len=*), intent(in) :: key + integer(kind=kindOfInt), intent(out) :: is_defined integer(kind=kindOfInt), optional, intent(out) :: status call grib_is_defined(msgid, key, is_defined, status) @@ -1700,9 +1722,9 @@ end subroutine codes_is_defined !> @param status CODES_SUCCESS if OK, integer value on error subroutine codes_get_real4(msgid, key, value, status) integer(kind=kindOfInt), intent(in) :: msgid - character(len=*), intent(in) :: key - real(kind=kindOfFloat), intent(out) :: value - integer(kind=kindOfInt), optional, intent(out) :: status + character(len=*), intent(in) :: key + real(kind=kindOfFloat), intent(out) :: value + integer(kind=kindOfInt), optional, intent(out) :: status call grib_get_real4(msgid, key, value, status) end subroutine codes_get_real4 @@ -1718,10 +1740,10 @@ end subroutine codes_get_real4 !> @param value the real(8) value !> @param status CODES_SUCCESS if OK, integer value on error subroutine codes_get_real8(msgid, key, value, status) - integer(kind=kindOfInt), intent(in) :: msgid - character(len=*), intent(in) :: key - real(kind=kindOfDouble), intent(out) :: value - integer(kind=kindOfInt), optional, intent(out) :: status + integer(kind=kindOfInt), intent(in) :: msgid + character(len=*), intent(in) :: key + real(kind=kindOfDouble), intent(out) :: value + integer(kind=kindOfInt), optional, intent(out) :: status call grib_get_real8(msgid, key, value, status) end subroutine codes_get_real8 @@ -1737,9 +1759,9 @@ end subroutine codes_get_real8 !> @param value the character value !> @param status CODES_SUCCESS if OK, integer value on error subroutine codes_get_string(msgid, key, value, status) - integer(kind=kindOfInt), intent(in) :: msgid - character(len=*), intent(in) :: key - character(len=*), intent(out) :: value + integer(kind=kindOfInt), intent(in) :: msgid + character(len=*), intent(in) :: key + character(len=*), intent(out) :: value integer(kind=kindOfInt), optional, intent(out) :: status call grib_get_string(msgid, key, value, status) @@ -1757,10 +1779,10 @@ end subroutine codes_get_string !> @param value string array value !> @param status CODES_SUCCESS if OK, integer value on error subroutine codes_get_string_array(msgid, key, value, status) - integer(kind=kindOfInt), intent(in) :: msgid - character(len=*), intent(in) :: key + integer(kind=kindOfInt), intent(in) :: msgid + character(len=*), intent(in) :: key character(len=*), dimension(:), allocatable, intent(inout) :: value - integer(kind=kindOfInt), optional, intent(out) :: status + integer(kind=kindOfInt), optional, intent(out) :: status character :: cvalue(size(value)*len(value(0))) integer(kind=kindOfInt) :: iret @@ -1802,10 +1824,10 @@ end subroutine codes_get_string_array !> @param msgid2 id of the message to which the data are copied !> @param status CODES_SUCCESS if OK, integer value on error subroutine codes_bufr_copy_data(msgid1, msgid2, status) - integer(kind=kindOfInt), intent(in) :: msgid1 - integer(kind=kindOfInt), intent(in) :: msgid2 - integer(kind=kindOfInt), optional, intent(out) :: status - integer(kind=kindOfInt) :: iret + integer(kind=kindOfInt), intent(in) :: msgid1 + integer(kind=kindOfInt), intent(in) :: msgid2 + integer(kind=kindOfInt), optional, intent(out) :: status + integer(kind=kindOfInt) :: iret iret = codes_f_bufr_copy_data(msgid1, msgid2) @@ -1829,10 +1851,10 @@ end subroutine codes_bufr_copy_data !> @param value string array value !> @param status CODES_SUCCESS if OK, integer value on error subroutine codes_set_string_array(msgid, key, value, status) - integer(kind=kindOfInt), intent(in) :: msgid - character(len=*), intent(in) :: key - character(len=*), dimension(:), allocatable, intent(in) :: value - integer(kind=kindOfInt), optional, intent(out) :: status + integer(kind=kindOfInt), intent(in) :: msgid + character(len=*), intent(in) :: key + character(len=*), dimension(:), allocatable, intent(in) :: value + integer(kind=kindOfInt), optional, intent(out) :: status character :: cvalue(size(value)*len(value(0))) character :: svalue(len(value(0))) @@ -1875,11 +1897,10 @@ end subroutine codes_set_string_array !> @param value integer(4) array value !> @param status CODES_SUCCESS if OK, integer value on error subroutine codes_get_int_array(msgid, key, value, status) - integer(kind=kindOfInt), intent(in) :: msgid + integer(kind=kindOfInt), intent(in) :: msgid character(len=*), intent(in) :: key integer(kind=kindOfInt), dimension(:), allocatable, intent(inout) :: value - integer(kind=kindOfInt), optional, intent(out) :: status - + integer(kind=kindOfInt), optional, intent(out) :: status integer(kind=kindOfInt) :: iret integer(kind=kindOfInt) :: nb_values integer(kind=kindOfInt) :: size_value @@ -1928,12 +1949,11 @@ end subroutine codes_get_int_array !> @param value integer(4) array value !> @param status CODES_SUCCESS if OK, integer value on error subroutine codes_get_long_array(msgid, key, value, status) - integer(kind=kindOfInt), intent(in) :: msgid + integer(kind=kindOfInt), intent(in) :: msgid character(len=*), intent(in) :: key integer(kind=kindOfLong), dimension(:), allocatable, intent(inout) :: value - integer(kind=kindOfInt), optional, intent(out) :: status + integer(kind=kindOfInt), optional, intent(out) :: status integer(kind=kindOfInt) :: iret - integer(kind=kindOfInt) :: nb_values integer(kind=kindOfInt) :: size_value integer(kind=kindOfInt) :: i @@ -2003,11 +2023,10 @@ end subroutine codes_get_byte_array !> @param status CODES_SUCCESS if OK, integer value on error subroutine codes_get_real4_array(msgid, key, value, status) integer(kind=kindOfInt), intent(in) :: msgid - character(len=*), intent(in) :: key + character(len=*), intent(in) :: key real(kind=kindOfFloat), dimension(:), allocatable, intent(inout) :: value - integer(kind=kindOfInt), optional, intent(out) :: status + integer(kind=kindOfInt), optional, intent(out) :: status integer(kind=kindOfInt) :: iret - integer(kind=kindOfInt) :: nb_values integer(kind=kindOfInt) :: size_value integer(kind=kindOfInt) :: i diff --git a/fortran/eccodes_visibility.h b/fortran/eccodes_visibility.h index ad3cf2fbd..0c26a53f7 100644 --- a/fortran/eccodes_visibility.h +++ b/fortran/eccodes_visibility.h @@ -26,6 +26,7 @@ public :: codes_new_from_message, & public :: codes_release public :: codes_dump public :: codes_get_error_string +public :: codes_get_native_type public :: codes_get_api_version public :: codes_get_size public :: codes_get_message_size, codes_copy_message diff --git a/fortran/grib_api_externals.h b/fortran/grib_api_externals.h index 1cafa17c9..d66a89376 100644 --- a/fortran/grib_api_externals.h +++ b/fortran/grib_api_externals.h @@ -36,6 +36,7 @@ integer, external :: grib_f_new_from_message, & integer, external :: grib_f_release integer, external :: grib_f_dump, grib_f_print integer, external :: grib_f_get_error_string +integer, external :: grib_f_get_native_type integer, external :: grib_f_get_size_int,grib_f_get_size_long integer, external :: grib_f_get_data_real4,grib_f_get_data_real8 integer, external :: grib_f_get_int, grib_f_get_long,grib_f_get_int_array, & diff --git a/fortran/grib_api_visibility.h b/fortran/grib_api_visibility.h index ad34358ad..bf3e90654 100644 --- a/fortran/grib_api_visibility.h +++ b/fortran/grib_api_visibility.h @@ -16,6 +16,7 @@ public :: grib_new_from_message, & public :: grib_release public :: grib_dump public :: grib_get_error_string +public :: grib_get_native_type public :: grib_get_size public :: grib_get_message_size, grib_copy_message public :: grib_write, grib_multi_append diff --git a/fortran/grib_f90_tail.f90 b/fortran/grib_f90_tail.f90 index afc5628a9..f4424565b 100644 --- a/fortran/grib_f90_tail.f90 +++ b/fortran/grib_f90_tail.f90 @@ -1896,6 +1896,35 @@ subroutine grib_get_long(gribid, key, value, status) end if end subroutine grib_get_long + + !> Get the native type of a key from a message. + !> + !> In case of error, if the status parameter (optional) is not given, the program will + !> exit with an error message.\n Otherwise the error message can be + !> gathered with @ref grib_get_error_string. + !> + !> @param gribid id of the message loaded in memory + !> @param key key name + !> @param value the type as an integer(4) value + !> @param status GRIB_SUCCESS if OK, integer value on error + subroutine grib_get_native_type(gribid, key, value, status) + integer(kind=kindOfInt), intent(in) :: gribid + character(len=*), intent(in) :: key + integer(kind=kindOfInt), intent(out) :: value + integer(kind=kindOfInt), optional, intent(out) :: status + integer(kind=kindOfInt) :: iret + + iret = grib_f_get_native_type(gribid, key, value) + if (iret /= 0) then + call grib_f_write_on_fail(gribid) + end if + if (present(status)) then + status = iret + else + call grib_check(iret, 'get_native_type', key) + end if + end subroutine grib_get_native_type + !> Check if the value of a key is MISSING. !> !> In case of error, if the status parameter (optional) is not given, the program will diff --git a/fortran/grib_fortran.c b/fortran/grib_fortran.c index f4160d341..976eaa2ce 100644 --- a/fortran/grib_fortran.c +++ b/fortran/grib_fortran.c @@ -2305,6 +2305,7 @@ int grib_f_get_int__(int* gid, char* key, int* val, int len){ int grib_f_get_int(int* gid, char* key, int* val, int len){ return grib_f_get_int_( gid, key, val, len); } + int grib_f_get_long_(int* gid, char* key, long* val, int len){ grib_handle *h = get_handle(*gid); int err = GRIB_SUCCESS; @@ -2321,6 +2322,25 @@ int grib_f_get_long(int* gid, char* key, long* val, int len){ return grib_f_get_long_( gid, key, val, len); } +/*****************************************************************************/ +int grib_f_get_native_type_(int* gid, char* key, int* val, int len){ + grib_handle *h = get_handle(*gid); + int type_val = 0; + int err = GRIB_SUCCESS; + char buf[1024]; + + if(!h) return GRIB_INVALID_GRIB; + err = grib_get_native_type(h, cast_char(buf,key,len), &type_val); + *val = type_val; + return err; +} +int grib_f_get_native_type__(int* gid, char* key, int* val, int len){ + return grib_f_get_native_type_( gid, key, val, len); +} +int grib_f_get_native_type(int* gid, char* key, int* val, int len){ + return grib_f_get_native_type_( gid, key, val, len); +} + /*****************************************************************************/ int grib_f_get_int_array_(int* gid, char* key, int *val, int* size, int len){ diff --git a/fortran/grib_fortran_prototypes.h b/fortran/grib_fortran_prototypes.h index a6acd5b27..a8e399924 100644 --- a/fortran/grib_fortran_prototypes.h +++ b/fortran/grib_fortran_prototypes.h @@ -228,6 +228,11 @@ int grib_f_get_int(int *gid, char *key, int *val, int len); int grib_f_get_long_(int *gid, char *key, long *val, int len); int grib_f_get_long__(int *gid, char *key, long *val, int len); int grib_f_get_long(int *gid, char *key, long *val, int len); + +int grib_f_get_native_type_(int* gid, char* key, int* val, int len); +int grib_f_get_native_type__(int* gid, char* key, int* val, int len); +int grib_f_get_native_type(int* gid, char* key, int* val, int len); + int grib_f_get_int_array_(int *gid, char *key, int *val, int *size, int len); int grib_f_get_int_array__(int *gid, char *key, int *val, int *size, int len); int grib_f_get_int_array(int *gid, char *key, int *val, int *size, int len); From e6359b76c15b67a46b6626e9f2b1967b5a83aea8 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 5 May 2023 10:49:36 +0100 Subject: [PATCH 134/378] ECC-1580: Add test --- examples/F90/CMakeLists.txt | 2 + examples/F90/get_native_type.f90 | 41 +++++ examples/F90/get_native_type.sh | 15 ++ fortran/grib_f90_tail.f90 | 261 ++++++++++++++++--------------- 4 files changed, 189 insertions(+), 130 deletions(-) create mode 100644 examples/F90/get_native_type.f90 create mode 100755 examples/F90/get_native_type.sh diff --git a/examples/F90/CMakeLists.txt b/examples/F90/CMakeLists.txt index dd52ca843..72f71ec9b 100644 --- a/examples/F90/CMakeLists.txt +++ b/examples/F90/CMakeLists.txt @@ -13,6 +13,7 @@ if( HAVE_BUILD_TOOLS ) grib_set_data bufr_ecc-1284 bufr_ecc-1019 + get_native_type grib_ecc-671 ) list( APPEND tests_extra grib_index @@ -62,6 +63,7 @@ else() list( APPEND tests_sanity grib_set_pv grib_set_data + get_native_type grib_ecc-671 ) list( APPEND tests_extra grib_index diff --git a/examples/F90/get_native_type.f90 b/examples/F90/get_native_type.f90 new file mode 100644 index 000000000..66a66f9e5 --- /dev/null +++ b/examples/F90/get_native_type.f90 @@ -0,0 +1,41 @@ +! (C) Copyright 2005- ECMWF. +! +! This software is licensed under the terms of the Apache Licence Version 2.0 +! which can be obtained at http://www.apache.org/licenses/LICENSECODES_INTERNAL_ERROR.0. +! +! In applying this licence, ECMWF does not waive the privileges and immunities granted to it by +! virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. +! +program get_native_type + use eccodes + implicit none + integer :: iret + integer :: ihandle + integer :: ktype = CODES_TYPE_UNDEFINED + + CALL codes_grib_new_from_samples(ihandle, "regular_ll_sfc_grib2") + + CALL codes_get_native_type(ihandle, 'edition', ktype) + IF (ktype /= CODES_TYPE_LONG) THEN + call codes_check(CODES_INTERNAL_ERROR, 'Error', 'key edition should have integer type') + END IF + + CALL codes_get_native_type(ihandle, 'referenceValue', ktype) + IF (ktype /= CODES_TYPE_DOUBLE) THEN + call codes_check(CODES_INTERNAL_ERROR, 'Error', 'key referenceValue should have double type') + END IF + + CALL codes_get_native_type(ihandle, 'identifier', ktype) + IF (ktype /= CODES_TYPE_STRING) THEN + call codes_check(CODES_INTERNAL_ERROR, 'Error', 'key identifier should have string type') + END IF + + CALL codes_set(ihandle, 'bitmapPresent', 1) + CALL codes_get_native_type(ihandle, 'bitmap', ktype) + IF (ktype /= CODES_TYPE_BYTES) THEN + call codes_check(CODES_INTERNAL_ERROR, 'Error', 'key bitmap should have bytes type') + END IF + + CALL codes_release(ihandle) + +end program get_native_type diff --git a/examples/F90/get_native_type.sh b/examples/F90/get_native_type.sh new file mode 100755 index 000000000..52e34da44 --- /dev/null +++ b/examples/F90/get_native_type.sh @@ -0,0 +1,15 @@ +#!/bin/sh +# (C) Copyright 2005- ECMWF. +# +# This software is licensed under the terms of the Apache Licence Version 2.0 +# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. +# +# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by +# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. +# + +. ./include.ctest.sh + +label="get_native_type_f" + +${examples_dir}/eccodes_f_get_native_type diff --git a/fortran/grib_f90_tail.f90 b/fortran/grib_f90_tail.f90 index f4424565b..0f8b19103 100644 --- a/fortran/grib_f90_tail.f90 +++ b/fortran/grib_f90_tail.f90 @@ -12,14 +12,14 @@ !> !> \b Examples: \ref grib_set_missing.f90 "grib_set_missing.f90" !> - !> @param gribid id of the grib loaded in memory + !> @param gribid ID of the message loaded in memory !> @param key key name !> @param status GRIB_SUCCESS if OK, integer value on error subroutine grib_set_missing(gribid, key, status) - integer(kind=kindOfInt), intent(in) :: gribid - character(len=*), intent(in) :: key - integer(kind=kindOfInt), optional, intent(out) :: status - integer(kind=kindOfInt) :: iret + integer(kind=kindOfInt), intent(in) :: gribid + character(len=*), intent(in) :: key + integer(kind=kindOfInt), optional, intent(out) :: status + integer(kind=kindOfInt) :: iret iret = grib_f_set_missing(gribid, key) if (iret /= 0) then @@ -41,15 +41,15 @@ end subroutine grib_set_missing !> !> \b Examples: \ref grib_index.f90 "grib_index.f90" !> - !> @param indexid id of the newly created index - !> @param filename name of the file of messages to be indexed - !> @param keys : comma separated list of keys for the index. The type of the key can be explicitly declared appending :l for long, :d for double, :s for string to the key name. If the type is not declared explicitly, the native type is assumed. + !> @param indexid ID of the newly created index + !> @param filename name of the file of messages to be indexed + !> @param keys comma separated list of keys for the index. The type of the key can be explicitly declared appending :l for long, :d for double, :s for string to the key name. If the type is not declared explicitly, the native type is assumed. !> @param status GRIB_SUCCESS if OK, integer value on error subroutine grib_index_create(indexid, filename, keys, status) integer(kind=kindOfInt), intent(inout) :: indexid character(len=*), intent(in) :: filename character(len=*), intent(in) :: keys - integer(kind=kindOfInt), optional, intent(out) :: status + integer(kind=kindOfInt), optional, intent(out) :: status integer(kind=kindOfInt) :: iret iret = grib_f_index_new_from_file(filename, keys, indexid) @@ -69,13 +69,13 @@ end subroutine grib_index_create !> !> \b Examples: \ref grib_index.f90 "grib_index.f90" !> - !> @param indexid id of the index I want to add a file to + !> @param indexid ID of the index I want to add a file to !> @param filename name of the file I want to add to the index !> @param status GRIB_SUCCESS if OK, integer value on error subroutine grib_index_add_file(indexid, filename, status) integer(kind=kindOfInt), intent(in) :: indexid character(len=*), intent(in) :: filename - integer(kind=kindOfInt), optional, intent(out) :: status + integer(kind=kindOfInt), optional, intent(out) :: status integer(kind=kindOfInt) :: iret iret = grib_f_index_add_file(indexid, filename) @@ -95,15 +95,15 @@ end subroutine grib_index_add_file !> !> \b Examples: \ref grib_index.f90 "grib_index.f90" !> - !> @param indexid id of an index created from a file. The index must have been created with the key in argument. + !> @param indexid ID of an index created from a file. The index must have been created with the key in argument. !> @param key key for which the number of values is computed !> @param size number of distinct values of the key in the index - !> @param status GRIB_SUCCESS if OK, integer value on error + !> @param status GRIB_SUCCESS if OK, integer value on error subroutine grib_index_get_size_long(indexid, key, size, status) - integer(kind=kindOfInt), intent(in) :: indexid + integer(kind=kindOfInt), intent(in) :: indexid character(len=*), intent(in) :: key - integer(kind=kindOfLong), intent(out) :: size - integer(kind=kindOfInt), optional, intent(out) :: status + integer(kind=kindOfLong), intent(out) :: size + integer(kind=kindOfInt), optional, intent(out) :: status integer(kind=kindOfInt) :: iret iret = grib_f_index_get_size_long(indexid, key, size) @@ -123,15 +123,15 @@ end subroutine grib_index_get_size_long !> !> \b Examples: \ref grib_index.f90 "grib_index.f90" !> - !> @param indexid id of an index created from a file. The index must have been created with the key in argument. + !> @param indexid ID of an index created from a file. The index must have been created with the key in argument. !> @param key key for which the number of values is computed !> @param size number of distinct values of the key in the index - !> @param status GRIB_SUCCESS if OK, integer value on error + !> @param status GRIB_SUCCESS if OK, integer value on error subroutine grib_index_get_size_int(indexid, key, size, status) - integer(kind=kindOfInt), intent(in) :: indexid + integer(kind=kindOfInt), intent(in) :: indexid character(len=*), intent(in) :: key - integer(kind=kindOfInt), intent(out) :: size - integer(kind=kindOfInt), optional, intent(out) :: status + integer(kind=kindOfInt), intent(out) :: size + integer(kind=kindOfInt), optional, intent(out) :: status integer(kind=kindOfInt) :: iret iret = grib_f_index_get_size_int(indexid, key, size) @@ -142,7 +142,9 @@ subroutine grib_index_get_size_int(indexid, key, size, status) end if end subroutine grib_index_get_size_int - !> Get the distinct values of the key in argument contained in the index. The key must belong to the index. This function is used when the type of the key was explicitly defined as long or when the native type of the key is long. + !> Get the distinct values of the key in argument contained in the index. + !> The key must belong to the index. + !> This function is used when the type of the key was explicitly defined as long or when the native type of the key is long. !> !> !> In case of error, if the status parameter (optional) is not given, the program will @@ -151,10 +153,10 @@ end subroutine grib_index_get_size_int !> !> \b Examples: \ref grib_index.f90 "grib_index.f90" !> - !> @param indexid id of an index created from a file. The index must have been created with the key in argument. + !> @param indexid ID of an index created from a file. The index must have been created with the key in argument. !> @param key key for wich the values are returned !> @param values array of values. The array must be allocated before entering this function and its size must be enough to contain all the values. - !> @param status GRIB_SUCCESS if OK, integer value on error + !> @param status GRIB_SUCCESS if OK, integer value on error subroutine grib_index_get_int(indexid, key, values, status) integer(kind=kindOfInt), intent(in) :: indexid character(len=*), intent(in) :: key @@ -181,10 +183,10 @@ end subroutine grib_index_get_int !> !> \b Examples: \ref grib_index.f90 "grib_index.f90" !> - !> @param indexid id of an index created from a file. The index must have been created with the key in argument. + !> @param indexid ID of an index created from a file. The index must have been created with the key in argument. !> @param key key for wich the values are returned !> @param values array of values. The array must be allocated before entering this function and its size must be enough to contain all the values. - !> @param status GRIB_SUCCESS if OK, integer value on error + !> @param status GRIB_SUCCESS if OK, integer value on error subroutine grib_index_get_long(indexid, key, values, status) integer(kind=kindOfInt), intent(in) :: indexid character(len=*), intent(in) :: key @@ -388,7 +390,7 @@ end subroutine grib_index_select_real8 !> \b Examples: \ref grib_index.f90 "grib_index.f90" !> !> @param indexid id of an index created from a file. - !> @param gribid id of the grib loaded in memory + !> @param gribid ID of the message loaded in memory !> @param status GRIB_SUCCESS if OK, GRIB_END_OF_FILE at the end of file, or error code subroutine grib_new_from_index(indexid, gribid, status) integer(kind=kindOfInt), intent(in) :: indexid @@ -1250,7 +1252,7 @@ end subroutine grib_count_in_file !> \b Examples: \ref grib_get_keys.f90 "grib_get_keys.f90" !> !> @param ifile id of the file opened with @ref grib_open_file - !> @param gribid id of the grib loaded in memory + !> @param gribid ID of the message loaded in memory !> @param status GRIB_SUCCESS if OK, GRIB_END_OF_FILE at the end of file, or error code subroutine grib_headers_only_new_from_file(ifile, gribid, status) integer(kind=kindOfInt), intent(in) :: ifile @@ -1274,7 +1276,7 @@ end subroutine grib_headers_only_new_from_file !> \b Examples: \ref grib_get_keys.f90 "grib_get_keys.f90" !> !> @param ifile id of the file opened with @ref grib_open_file - !> @param gribid id of the grib loaded in memory + !> @param gribid ID of the message loaded in memory !> @param status GRIB_SUCCESS if OK, GRIB_END_OF_FILE at the end of file, or error code subroutine grib_new_from_file(ifile, gribid, status) integer(kind=kindOfInt), intent(in) :: ifile @@ -1348,7 +1350,7 @@ end subroutine any_new_from_file !> !> \b Examples: \ref grib_copy_message.f90 "grib_copy_message.f90" !> - !> @param gribid id of the grib loaded in memory + !> @param gribid ID of the message loaded in memory !> @param message character array containing the coded message !> @param status GRIB_SUCCESS if OK, integer value on error subroutine grib_new_from_message_char(gribid, message, status) @@ -1381,7 +1383,7 @@ end subroutine grib_new_from_message_char !> !> \b Examples: \ref grib_copy_message.f90 "grib_copy_message.f90" !> - !> @param gribid id of the grib loaded in memory + !> @param gribid ID of the message loaded in memory !> @param message integer array containing the coded message !> @param status GRIB_SUCCESS if OK, integer value on error subroutine grib_new_from_message_int4(gribid, message, status) @@ -1412,7 +1414,7 @@ end subroutine grib_new_from_message_int4 !> !> \b Examples: \ref grib_samples.f90 "grib_samples.f90" !> - !> @param gribid id of the grib loaded in memory + !> @param gribid ID of the message loaded in memory !> @param samplename name of the sample to be used !> @param status GRIB_SUCCESS if OK, integer value on error subroutine grib_new_from_samples(gribid, samplename, status) @@ -1437,7 +1439,7 @@ end subroutine grib_new_from_samples !> !> \b Examples: \ref grib_get_keys.f90 "grib_get_keys.f90" !> - !> @param gribid id of the grib loaded in memory + !> @param gribid ID of the message loaded in memory !> @param status GRIB_SUCCESS if OK, integer value on error subroutine grib_release(gribid, status) integer(kind=kindOfInt), intent(in) :: gribid @@ -1561,7 +1563,7 @@ end subroutine grib_check !> exit with an error message.\n Otherwise the error message can be !> gathered with @ref grib_get_error_string. !> - !> @param gribid id of the grib loaded in memory + !> @param gribid ID of the message loaded in memory !> @param lats latitudes array with dimension "size" !> @param lons longitudes array with dimension "size" !> @param values data values array with dimension "size" @@ -1597,7 +1599,7 @@ end subroutine grib_get_data_real4 !> exit with an error message.\n Otherwise the error message can be !> gathered with @ref grib_get_error_string. !> - !> @param gribid id of the grib loaded in memory + !> @param gribid ID of the message loaded in memory !> @param lats latitudes array !> @param lons longitudes array !> @param values data values array @@ -1640,7 +1642,7 @@ end subroutine grib_get_data_real8 !> exit with an error message.\n Otherwise the error message can be !> gathered with @ref grib_get_error_string. !> - !> @param gribid id of the grib loaded in memory + !> @param gribid ID of the message loaded in memory !> @param iterid keys iterator id to be used in the keys iterator functions !> @param namespace the namespace of the keys to search for (all the keys if empty) !> @param status GRIB_SUCCESS if OK, integer value on error @@ -1746,7 +1748,7 @@ end subroutine grib_keys_iterator_rewind !> exit with an error message.\n Otherwise the error message can be !> gathered with @ref grib_get_error_string. !> - !> @param gribid id of the grib loaded in memory + !> @param gribid ID of the message loaded in memory !> @param status GRIB_SUCCESS if OK, integer value on error subroutine grib_dump(gribid, status) integer(kind=kindOfInt), intent(in) :: gribid @@ -1788,7 +1790,7 @@ end subroutine grib_get_error_string !> exit with an error message.\n Otherwise the error message can be !> gathered with @ref grib_get_error_string. !> - !> @param gribid id of the grib loaded in memory + !> @param gribid ID of the message loaded in memory !> @param key name of the key !> @param size size of the array key !> @param status GRIB_SUCCESS if OK, integer value on error @@ -1818,8 +1820,8 @@ end subroutine grib_get_size_int !> exit with an error message.\n Otherwise the error message can be !> gathered with @ref grib_get_error_string. !> - !> @param gribid id of the grib loaded in memory - !> @param key name of the key + !> @param gribid ID of the message loaded in memory + !> @param key name of the key !> @param size size of the array key !> @param status GRIB_SUCCESS if OK, integer value on error subroutine grib_get_size_long(gribid, key, size, status) @@ -1846,8 +1848,8 @@ end subroutine grib_get_size_long !> exit with an error message.\n Otherwise the error message can be !> gathered with @ref grib_get_error_string. !> - !> @param gribid id of the grib loaded in memory - !> @param key key name + !> @param gribid ID of the message loaded in memory + !> @param key key name !> @param value the integer(4) value !> @param status GRIB_SUCCESS if OK, integer value on error subroutine grib_get_int(gribid, key, value, status) @@ -1874,8 +1876,8 @@ end subroutine grib_get_int !> exit with an error message.\n Otherwise the error message can be !> gathered with @ref grib_get_error_string. !> - !> @param gribid id of the grib loaded in memory - !> @param key key name + !> @param gribid ID of the message loaded in memory + !> @param key key name !> @param value the integer(4) value !> @param status GRIB_SUCCESS if OK, integer value on error subroutine grib_get_long(gribid, key, value, status) @@ -1931,7 +1933,7 @@ end subroutine grib_get_native_type !> exit with an error message.\n Otherwise the error message can be !> gathered with @ref grib_get_error_string. !> - !> @param gribid id of the grib loaded in memory + !> @param gribid ID of the message loaded in memory !> @param key key name !> @param is_missing 0->not missing, 1->missing !> @param status GRIB_SUCCESS if OK, integer value on error @@ -1959,7 +1961,7 @@ end subroutine grib_is_missing !> exit with an error message.\n Otherwise the error message can be !> gathered with @ref grib_get_error_string. !> - !> @param gribid id of the grib loaded in memory + !> @param gribid ID of the message loaded in memory !> @param key key name !> @param is_defined 0->not defined, 1->defined !> @param status GRIB_SUCCESS if OK, integer value on error @@ -1987,8 +1989,8 @@ end subroutine grib_is_defined !> exit with an error message.\n Otherwise the error message can be !> gathered with @ref grib_get_error_string. !> - !> @param gribid id of the grib loaded in memory - !> @param key key name + !> @param gribid ID of the message loaded in memory + !> @param key key name !> @param value the real(4) value !> @param status GRIB_SUCCESS if OK, integer value on error subroutine grib_get_real4(gribid, key, value, status) @@ -2005,7 +2007,7 @@ subroutine grib_get_real4(gribid, key, value, status) if (present(status)) then status = iret else - call grib_check(iret, 'get', key) + call grib_check(iret, 'get_real4', key) end if end subroutine grib_get_real4 @@ -2015,8 +2017,8 @@ end subroutine grib_get_real4 !> exit with an error message.\n Otherwise the error message can be !> gathered with @ref grib_get_error_string. !> - !> @param gribid id of the grib loaded in memory - !> @param key key name + !> @param gribid ID of the message loaded in memory + !> @param key key name !> @param value the real(8) value !> @param status GRIB_SUCCESS if OK, integer value on error subroutine grib_get_real8(gribid, key, value, status) @@ -2033,7 +2035,7 @@ subroutine grib_get_real8(gribid, key, value, status) if (present(status)) then status = iret else - call grib_check(iret, 'get', key) + call grib_check(iret, 'get_real8', key) end if end subroutine grib_get_real8 @@ -2043,8 +2045,8 @@ end subroutine grib_get_real8 !> exit with an error message.\n Otherwise the error message can be !> gathered with @ref grib_get_error_string. !> - !> @param gribid id of the grib loaded in memory - !> @param key key name + !> @param gribid ID of the message loaded in memory + !> @param key key name !> @param value the real(8) value !> @param status GRIB_SUCCESS if OK, integer value on error subroutine grib_get_string(gribid, key, value, status) @@ -2061,7 +2063,7 @@ subroutine grib_get_string(gribid, key, value, status) if (present(status)) then status = iret else - call grib_check(iret, 'get', key) + call grib_check(iret, 'get_string', key) end if end subroutine grib_get_string @@ -2071,10 +2073,10 @@ end subroutine grib_get_string !> exit with an error message.\n Otherwise the error message can be !> gathered with @ref grib_get_error_string. !> - !> @param gribid id of the grib loaded in memory - !> @param key key name + !> @param gribid ID of the message loaded in memory + !> @param key key name !> @param value integer(4) array value - !> @param status GRIB_SUCCESS if OK, integer value on error + !> @param status GRIB_SUCCESS if OK, integer value on error subroutine grib_get_int_array(gribid, key, value, status) integer(kind=kindOfInt), intent(in) :: gribid character(len=*), intent(in) :: key @@ -2092,7 +2094,7 @@ subroutine grib_get_int_array(gribid, key, value, status) if (present(status)) then status = iret else - call grib_check(iret, 'get', key) + call grib_check(iret, 'get_int_array', key) end if end subroutine grib_get_int_array @@ -2102,10 +2104,10 @@ end subroutine grib_get_int_array !> exit with an error message.\n Otherwise the error message can be !> gathered with @ref grib_get_error_string. !> - !> @param gribid id of the grib loaded in memory - !> @param key key name + !> @param gribid ID of the message loaded in memory + !> @param key key name !> @param value integer(4) array value - !> @param status GRIB_SUCCESS if OK, integer value on error + !> @param status GRIB_SUCCESS if OK, integer value on error subroutine grib_get_long_array(gribid, key, value, status) integer(kind=kindOfInt), intent(in) :: gribid character(len=*), intent(in) :: key @@ -2122,7 +2124,7 @@ subroutine grib_get_long_array(gribid, key, value, status) if (present(status)) then status = iret else - call grib_check(iret, 'get', key) + call grib_check(iret, 'get_long_array', key) end if end subroutine grib_get_long_array @@ -2132,7 +2134,7 @@ end subroutine grib_get_long_array !> exit with an error message.\n Otherwise the error message can be !> gathered with @ref grib_get_error_string. !> - !> @param gribid id of the grib loaded in memory + !> @param gribid ID of the message loaded in memory !> @param key key name !> @param value character(len=1) array of byte values !> @param length (optional) output: number of values retrieved @@ -2160,7 +2162,7 @@ subroutine grib_get_byte_array(gribid, key, value, length, status) if (present(status)) then status = iret else - call grib_check(iret, 'get', key) + call grib_check(iret, 'get_byte_array', key) end if end subroutine grib_get_byte_array @@ -2170,10 +2172,10 @@ end subroutine grib_get_byte_array !> exit with an error message.\n Otherwise the error message can be !> gathered with @ref grib_get_error_string. !> - !> @param gribid id of the grib loaded in memory - !> @param key key name + !> @param gribid ID of the message loaded in memory + !> @param key key name !> @param value real(4) array value - !> @param status GRIB_SUCCESS if OK, integer value on error + !> @param status GRIB_SUCCESS if OK, integer value on error subroutine grib_get_real4_array(gribid, key, value, status) integer(kind=kindOfInt), intent(in) :: gribid character(len=*), intent(in) :: key @@ -2190,7 +2192,7 @@ subroutine grib_get_real4_array(gribid, key, value, status) if (present(status)) then status = iret else - call grib_check(iret, 'get', key) + call grib_check(iret, 'get_real4_array', key) end if end subroutine grib_get_real4_array @@ -2200,10 +2202,10 @@ end subroutine grib_get_real4_array !> exit with an error message.\n Otherwise the error message can be !> gathered with @ref grib_get_error_string. !> - !> @param gribid id of the grib loaded in memory - !> @param key key name - !> @param value real(8) array value - !> @param status GRIB_SUCCESS if OK, integer value on error + !> @param gribid ID of the message loaded in memory + !> @param key key name + !> @param value real(8) array value + !> @param status GRIB_SUCCESS if OK, integer value on error subroutine grib_get_real8_array(gribid, key, value, status) integer(kind=kindOfInt), intent(in) :: gribid character(len=*), intent(in) :: key @@ -2220,7 +2222,7 @@ subroutine grib_get_real8_array(gribid, key, value, status) if (present(status)) then status = iret else - call grib_check(iret, 'get', key) + call grib_check(iret, 'get_real8_array', key) end if end subroutine grib_get_real8_array @@ -2230,7 +2232,7 @@ end subroutine grib_get_real8_array !> exit with an error message.\n Otherwise the error message can be !> gathered with @ref grib_get_error_string. !> - !> @param gribid id of the grib loaded in memory + !> @param gribid ID of the message loaded in memory !> @param key key name !> @param kindex integer(4) index !> @param value real(4) value @@ -2250,7 +2252,7 @@ subroutine grib_get_real4_element(gribid, key, kindex, value, status) if (present(status)) then status = iret else - call grib_check(iret, 'get', key) + call grib_check(iret, 'get_real4_element', key) end if end subroutine grib_get_real4_element @@ -2260,7 +2262,7 @@ end subroutine grib_get_real4_element !> exit with an error message.\n Otherwise the error message can be !> gathered with @ref grib_get_error_string. !> - !> @param gribid id of the grib loaded in memory + !> @param gribid ID of the message loaded in memory !> @param key key name !> @param kindex integer(4) index !> @param value real(8) value @@ -2290,7 +2292,7 @@ end subroutine grib_get_real8_element !> exit with an error message.\n Otherwise the error message can be !> gathered with @ref grib_get_error_string. !> - !> @param gribid id of the grib loaded in memory + !> @param gribid ID of the message loaded in memory !> @param key key name !> @param kindex integer(4) array indexes !> @param value real(4) array value @@ -2322,7 +2324,7 @@ end subroutine grib_get_real4_elements !> exit with an error message.\n Otherwise the error message can be !> gathered with @ref grib_get_error_string. !> - !> @param gribid id of the grib loaded in memory + !> @param gribid ID of the message loaded in memory !> @param key key name !> @param kindex integer(4) array index !> @param value real(8) array value @@ -2354,10 +2356,10 @@ end subroutine grib_get_real8_elements !> exit with an error message.\n Otherwise the error message can be !> gathered with @ref grib_get_error_string. !> - !> @param gribid id of the grib loaded in memory - !> @param key key name + !> @param gribid ID of the message loaded in memory + !> @param key key name !> @param value integer(4) value - !> @param status GRIB_SUCCESS if OK, integer value on error + !> @param status GRIB_SUCCESS if OK, integer value on error subroutine grib_set_int(gribid, key, value, status) integer(kind=kindOfInt), intent(in) :: gribid character(len=*), intent(in) :: key @@ -2382,10 +2384,10 @@ end subroutine grib_set_int !> exit with an error message.\n Otherwise the error message can be !> gathered with @ref grib_get_error_string. !> - !> @param gribid id of the grib loaded in memory - !> @param key key name + !> @param gribid ID of the message loaded in memory + !> @param key key name !> @param value integer(4) value - !> @param status GRIB_SUCCESS if OK, integer value on error + !> @param status GRIB_SUCCESS if OK, integer value on error subroutine grib_set_long(gribid, key, value, status) integer(kind=kindOfInt), intent(in) :: gribid character(len=*), intent(in) :: key @@ -2410,10 +2412,10 @@ end subroutine grib_set_long !> exit with an error message.\n Otherwise the error message can be !> gathered with @ref grib_get_error_string. !> - !> @param gribid id of the grib loaded in memory - !> @param key key name + !> @param gribid ID of the message loaded in memory + !> @param key key name !> @param value real(4) value - !> @param status GRIB_SUCCESS if OK, integer value on error + !> @param status GRIB_SUCCESS if OK, integer value on error subroutine grib_set_real4(gribid, key, value, status) integer(kind=kindOfInt), intent(in) :: gribid character(len=*), intent(in) :: key @@ -2438,10 +2440,10 @@ end subroutine grib_set_real4 !> exit with an error message.\n Otherwise the error message can be !> gathered with @ref grib_get_error_string. !> - !> @param gribid id of the grib loaded in memory - !> @param key key name + !> @param gribid ID of the message loaded in memory + !> @param key key name !> @param value real(8) value - !> @param status GRIB_SUCCESS if OK, integer value on error + !> @param status GRIB_SUCCESS if OK, integer value on error subroutine grib_set_real8(gribid, key, value, status) integer(kind=kindOfInt), intent(in) :: gribid character(len=*), intent(in) :: key @@ -2456,7 +2458,7 @@ subroutine grib_set_real8(gribid, key, value, status) if (present(status)) then status = iret else - call grib_check(iret, 'set', key) + call grib_check(iret, 'set_real8', key) end if end subroutine grib_set_real8 @@ -2466,10 +2468,10 @@ end subroutine grib_set_real8 !> exit with an error message.\n Otherwise the error message can be !> gathered with @ref grib_get_error_string. !> - !> @param gribid id of the grib loaded in memory - !> @param key key name + !> @param gribid ID of the message loaded in memory + !> @param key key name !> @param value integer(4) array value - !> @param status GRIB_SUCCESS if OK, integer value on error + !> @param status GRIB_SUCCESS if OK, integer value on error subroutine grib_set_int_array(gribid, key, value, status) integer(kind=kindOfInt), intent(in) :: gribid character(len=*), intent(in) :: key @@ -2486,7 +2488,7 @@ subroutine grib_set_int_array(gribid, key, value, status) if (present(status)) then status = iret else - call grib_check(iret, 'set', key) + call grib_check(iret, 'set_int_array', key) end if end subroutine grib_set_int_array @@ -2496,10 +2498,10 @@ end subroutine grib_set_int_array !> exit with an error message.\n Otherwise the error message can be !> gathered with @ref grib_get_error_string. !> - !> @param gribid id of the grib loaded in memory - !> @param key key name - !> @param value integer(4) array value - !> @param status GRIB_SUCCESS if OK, integer value on error + !> @param gribid ID of the message loaded in memory + !> @param key key name + !> @param value integer(4) array value + !> @param status GRIB_SUCCESS if OK, integer value on error subroutine grib_set_long_array(gribid, key, value, status) integer(kind=kindOfInt), intent(in) :: gribid character(len=*), intent(in) :: key @@ -2516,7 +2518,7 @@ subroutine grib_set_long_array(gribid, key, value, status) if (present(status)) then status = iret else - call grib_check(iret, 'set', key) + call grib_check(iret, 'set_long_array', key) end if end subroutine grib_set_long_array @@ -2527,7 +2529,7 @@ end subroutine grib_set_long_array !> exit with an error message.\n Otherwise the error message can be !> gathered with @ref grib_get_error_string. !> - !> @param gribid id of the grib loaded in memory + !> @param gribid ID of the message loaded in memory !> @param key key name !> @param value character(len=1) array of byte values !> @param length (optional) output: number of values written @@ -2554,7 +2556,7 @@ subroutine grib_set_byte_array(gribid, key, value, length, status) if (present(status)) then status = iret else - call grib_check(iret, 'set', key) + call grib_check(iret, 'set_byte_array', key) end if end subroutine grib_set_byte_array @@ -2564,7 +2566,7 @@ end subroutine grib_set_byte_array !> exit with an error message.\n Otherwise the error message can be !> gathered with @ref grib_get_error_string. !> - !> @param gribid id of the grib loaded in memory + !> @param gribid ID of the message loaded in memory !> @param key key name !> @param value real(4) array value !> @param status GRIB_SUCCESS if OK, integer value on error @@ -2584,7 +2586,7 @@ subroutine grib_set_real4_array(gribid, key, value, status) if (present(status)) then status = iret else - call grib_check(iret, 'set', key) + call grib_check(iret, 'set_real4_array', key) end if end subroutine grib_set_real4_array @@ -2594,10 +2596,10 @@ end subroutine grib_set_real4_array !> exit with an error message.\n Otherwise the error message can be !> gathered with @ref grib_get_error_string. !> - !> @param gribid id of the grib loaded in memory - !> @param key key name + !> @param gribid ID of the message loaded in memory + !> @param key key name !> @param value real(8) array value - !> @param status GRIB_SUCCESS if OK, integer value on error + !> @param status GRIB_SUCCESS if OK, integer value on error subroutine grib_set_real8_array(gribid, key, value, status) integer(kind=kindOfInt), intent(in) :: gribid character(len=*), intent(in) :: key @@ -2614,7 +2616,7 @@ subroutine grib_set_real8_array(gribid, key, value, status) if (present(status)) then status = iret else - call grib_check(iret, 'set', key) + call grib_check(iret, 'set_real8_array', key) end if end subroutine grib_set_real8_array @@ -2625,10 +2627,10 @@ end subroutine grib_set_real8_array !> exit with an error message.\n Otherwise the error message can be !> gathered with @ref grib_get_error_string. !> - !> @param gribid id of the grib loaded in memory - !> @param key key name + !> @param gribid ID of the message loaded in memory + !> @param key key name !> @param value real(4) array value - !> @param status GRIB_SUCCESS if OK, integer value on error + !> @param status GRIB_SUCCESS if OK, integer value on error subroutine grib_set_force_real4_array(gribid, key, value, status) integer(kind=kindOfInt), intent(in) :: gribid character(len=*), intent(in) :: key @@ -2656,10 +2658,10 @@ end subroutine grib_set_force_real4_array !> exit with an error message.\n Otherwise the error message can be !> gathered with @ref grib_get_error_string. !> - !> @param gribid id of the grib loaded in memory - !> @param key key name + !> @param gribid ID of the message loaded in memory + !> @param key key name !> @param value real(8) array value - !> @param status GRIB_SUCCESS if OK, integer value on error + !> @param status GRIB_SUCCESS if OK, integer value on error subroutine grib_set_force_real8_array(gribid, key, value, status) integer(kind=kindOfInt), intent(in) :: gribid character(len=*), intent(in) :: key @@ -2686,7 +2688,7 @@ end subroutine grib_set_force_real8_array !> exit with an error message.\n Otherwise the error message can be !> gathered with @ref grib_get_error_string. !> - !> @param gribid id of the grib loaded in memory + !> @param gribid ID of the message loaded in memory !> @param key key name !> @param value character value !> @param status GRIB_SUCCESS if OK, integer value on error @@ -2704,7 +2706,7 @@ subroutine grib_set_string(gribid, key, value, status) if (present(status)) then status = iret else - call grib_check(iret, 'set', key) + call grib_check(iret, 'set_string', key) end if end subroutine grib_set_string @@ -2714,7 +2716,7 @@ end subroutine grib_set_string !> exit with an error message.\n Otherwise the error message can be !> gathered with @ref grib_get_error_string. !> - !> @param gribid id of the grib loaded in memory + !> @param gribid ID of the message loaded in memory !> @param nbytes size in bytes of the message !> @param status GRIB_SUCCESS if OK, integer value on error subroutine grib_get_message_size_int(gribid, nbytes, status) @@ -2745,7 +2747,7 @@ end subroutine grib_get_message_size_int !> exit with an error message.\n Otherwise the error message can be !> gathered with @ref grib_get_error_string. !> - !> @param gribid id of the grib loaded in memory + !> @param gribid ID of the message loaded in memory !> @param nbytes size in bytes of the message !> @param status GRIB_SUCCESS if OK, integer value on error subroutine grib_get_message_size_size_t(gribid, nbytes, status) @@ -2771,7 +2773,7 @@ end subroutine grib_get_message_size_size_t !> exit with an error message.\n Otherwise the error message can be !> gathered with @ref grib_get_error_string. !> - !> @param gribid id of the grib loaded in memory + !> @param gribid ID of the message loaded in memory !> @param message array containing the coded message to be copied !> @param status GRIB_SUCCESS if OK, integer value on error subroutine grib_copy_message(gribid, message, status) @@ -2799,7 +2801,7 @@ end subroutine grib_copy_message !> exit with an error message.\n Otherwise the error message can be !> gathered with @ref grib_get_error_string. !> - !> @param gribid id of the grib loaded in memory + !> @param gribid ID of the message loaded in memory !> @param ifile file id of a file opened with \ref grib_open_file !> @param status GRIB_SUCCESS if OK, integer value on error subroutine grib_write(gribid, ifile, status) @@ -2874,7 +2876,7 @@ end subroutine grib_multi_append !> exit with an error message.\n Otherwise the error message can be !> gathered with @ref grib_get_error_string. !> - !> @param gribid id of the grib loaded in memory + !> @param gribid ID of the message loaded in memory !> @param is_lsm .true. if the nearest land point is required otherwise .false. !> @param inlats input real(8) array of the latitudes of the points !> @param inlons input real(8) array of the longitudes of the points @@ -2920,7 +2922,7 @@ end subroutine grib_find_nearest_multiple !> exit with an error message.\n Otherwise the error message can be !> gathered with @ref grib_get_error_string. !> - !> @param gribid id of the grib loaded in memory + !> @param gribid ID of the message loaded in memory !> @param is_lsm .true. if the nearest land point is required otherwise .false. !> @param inlat latitude of the point !> @param inlon longitudes of the point @@ -2963,7 +2965,7 @@ end subroutine grib_find_nearest_single !> exit with an error message.\n Otherwise the error message can be !> gathered with @ref grib_get_error_string. !> - !> @param gribid id of the grib loaded in memory + !> @param gribid ID of the message loaded in memory !> @param is_lsm .true. if the nearest land point is required otherwise .false. !> @param inlat latitude of the point !> @param inlon longitudes of the point @@ -3162,9 +3164,9 @@ end subroutine grib_skip_duplicates !> @param iterid keys iterator id !> @param status GRIB_SUCCESS if OK, integer value on error subroutine grib_skip_read_only(iterid, status) - integer(kind=kindOfInt), intent(in) :: iterid + integer(kind=kindOfInt), intent(in) :: iterid integer(kind=kindOfInt), optional, intent(out) :: status - integer(kind=kindOfInt) :: iret + integer(kind=kindOfInt) :: iret iret = grib_f_skip_read_only(iterid) if (present(status)) then @@ -3204,9 +3206,9 @@ end subroutine grib_set_definitions_path !> @param path samples path !> @param status GRIB_SUCCESS if OK, integer value on error subroutine grib_set_samples_path(path, status) - character(len=*), intent(in) :: path - integer(kind=kindOfInt), optional, intent(out) :: status - integer(kind=kindOfInt) :: iret + character(len=*), intent(in) :: path + integer(kind=kindOfInt), optional, intent(out) :: status + integer(kind=kindOfInt) :: iret iret = grib_f_set_samples_path(path) if (present(status)) then @@ -3217,4 +3219,3 @@ subroutine grib_set_samples_path(path, status) end subroutine grib_set_samples_path end module grib_api - From 018a89d8151d1e6f142b65507ab793d7c80c8683 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 5 May 2023 12:26:10 +0100 Subject: [PATCH 135/378] Testing: grib_get nearest with mask --- tests/grib_ls.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tests/grib_ls.sh b/tests/grib_ls.sh index 0c19230bc..b9a3d7b4b 100755 --- a/tests/grib_ls.sh +++ b/tests/grib_ls.sh @@ -106,6 +106,8 @@ grep -q 'Point chosen #3 index=21 .* distance=11\.' $tempText ${tools_dir}/grib_ls -l 53,2,1,reduced_gaussian_lsm.grib1 reduced_gaussian_surface.grib1 >$tempText grep -q 'Point chosen #2 index=749 .* distance=204\.' $tempText +${tools_dir}/grib_get -F%.2f -l 85,13,1,reduced_gaussian_lsm.grib1 reduced_gaussian_surface.grib1 >$tempText +grep -q '252.88' $tempText echo "ECC-278: grib_ls -n namespace..." # ---------------------------------------------------------- From 6cf7a3f24f7828b8912f71afc4c0299f10271a5d Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 5 May 2023 12:53:17 +0100 Subject: [PATCH 136/378] Testing: bufr_compare options --- tests/bufr_compare.sh | 20 ++++++++++++++++++++ tests/bufr_dump_decode_filter.sh | 10 ++++++++++ 2 files changed, 30 insertions(+) diff --git a/tests/bufr_compare.sh b/tests/bufr_compare.sh index 4e6eb9815..8175cd30b 100755 --- a/tests/bufr_compare.sh +++ b/tests/bufr_compare.sh @@ -199,6 +199,26 @@ EOF # The relative differences are around 3.5e-5. Suppress all instances ${tools_dir}/bufr_compare -R airTemperature=4e-5 $f $fBufrTmp +#-------------------------------------------------------------------- +# -d option +#-------------------------------------------------------------------- +echo "Test: -d option" >> $fLog +f='PraticaTemp.bufr' +${tools_dir}/codes_bufr_filter -o $fBufrTmp - $f < $fLog 2>&1 +status=$? +set -e +[ $status -eq 1 ] +grep -q "Cannot dump filter for multi-message BUFR files" $fLog + +# Clean up rm -f $fLog $fRules From 3ce74a4c539e839befbb4d7be90589f1aabcd59f Mon Sep 17 00:00:00 2001 From: Daniel Tipping Date: Fri, 5 May 2023 11:45:10 +0100 Subject: [PATCH 137/378] Add Teams notifications for CI and new PRs --- .github/workflows/ci.yml | 22 +++++++++++++++++++--- .github/workflows/nightly.yml | 14 +++++++++++++- .github/workflows/notify_new_pr.yml | 15 +++++++++++++++ 3 files changed, 47 insertions(+), 4 deletions(-) create mode 100644 .github/workflows/notify_new_pr.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 7b347d5b6..cf2d99939 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -4,10 +4,10 @@ on: # Trigger the workflow on push to master or develop, except tag creation push: branches: - - 'master' - - 'develop' + - "master" + - "develop" tags-ignore: - - '**' + - "**" # Trigger the workflow on pull request pull_request: ~ @@ -82,3 +82,19 @@ jobs: eccodes: ecmwf/eccodes@${{ github.event.pull_request.head.sha || github.sha }} codecov: true secrets: inherit + + notify: + runs-on: ubuntu-latest + needs: + - downstream-ci + - private-downstream-ci + - downstream-ci-hpc + - private-downstream-ci-hpc + - codecov + if: always() + steps: + - name: Trigger Teams notification + uses: ecmwf-actions/notify-teams@v1 + with: + incoming_webhook: ${{ secrets.MS_TEAMS_INCOMING_WEBHOOK }} + needs_context: ${{ toJSON(needs) }} diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml index a40ef52ee..32671d845 100644 --- a/.github/workflows/nightly.yml +++ b/.github/workflows/nightly.yml @@ -5,7 +5,7 @@ on: # Run at 20:00 UTC every day (on default branch) schedule: - - cron: '0 20 * * *' + - cron: "0 20 * * *" jobs: test: @@ -14,3 +14,15 @@ jobs: eccodes: ecmwf/eccodes@${{ github.event.pull_request.head.sha || github.sha }} nightly_test: true secrets: inherit + + notify: + runs-on: ubuntu-latest + needs: + - test + if: always() + steps: + - name: Trigger Teams notification + uses: ecmwf-actions/notify-teams@v1 + with: + incoming_webhook: ${{ secrets.MS_TEAMS_INCOMING_WEBHOOK }} + needs_context: ${{ toJSON(needs) }} diff --git a/.github/workflows/notify_new_pr.yml b/.github/workflows/notify_new_pr.yml new file mode 100644 index 000000000..737919032 --- /dev/null +++ b/.github/workflows/notify_new_pr.yml @@ -0,0 +1,15 @@ +name: Notify new PR + +on: + pull_request_target: + types: + - "opened" + +jobs: + notify: + runs-on: ubuntu-latest + steps: + - name: Notify new PR + uses: ecmwf-actions/notify-teams-pr@v1 + with: + incoming_webhook: ${{ secrets.MS_TEAMS_INCOMING_WEBHOOK }} From 755c2172342a83e706260b60955b72dce56c4b33 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 5 May 2023 15:44:02 +0000 Subject: [PATCH 138/378] ECC-1582: GRIB2: Modification of snow melt GRIB2 deprecated encoding --- definitions/grib2/cfVarName.def | 14 ++++++++------ .../grib2/localConcepts/uerra/cfVarName.def | 6 ++++++ definitions/grib2/localConcepts/uerra/name.def | 6 ++++++ definitions/grib2/localConcepts/uerra/paramId.def | 6 ++++++ .../grib2/localConcepts/uerra/shortName.def | 6 ++++++ definitions/grib2/localConcepts/uerra/units.def | 6 ++++++ definitions/grib2/name.def | 14 ++++++++------ definitions/grib2/paramId.def | 14 ++++++++------ definitions/grib2/shortName.def | 14 ++++++++------ definitions/grib2/units.def | 14 ++++++++------ 10 files changed, 70 insertions(+), 30 deletions(-) diff --git a/definitions/grib2/cfVarName.def b/definitions/grib2/cfVarName.def index cc7563d02..f18bf8c2a 100644 --- a/definitions/grib2/cfVarName.def +++ b/definitions/grib2/cfVarName.def @@ -5986,6 +5986,14 @@ parameterCategory = 2 ; parameterNumber = 0 ; } +#Snow melt +'snom' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 41 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; + } #Mean zero-crossing wave period 'mp2' = { discipline = 10 ; @@ -8153,12 +8161,6 @@ parameterCategory = 2 ; parameterNumber = 7 ; } -#Snow melt -'snom' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 16 ; - } #Direction of swell waves 'swdir' = { discipline = 10 ; diff --git a/definitions/grib2/localConcepts/uerra/cfVarName.def b/definitions/grib2/localConcepts/uerra/cfVarName.def index 997197396..b20745d74 100644 --- a/definitions/grib2/localConcepts/uerra/cfVarName.def +++ b/definitions/grib2/localConcepts/uerra/cfVarName.def @@ -186,6 +186,12 @@ scaledValueOfSecondFixedSurface = missing() ; scaleFactorOfSecondFixedSurface = missing() ; } +#Snow melt +'snom' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 16 ; + } #Sea-ice thickness 'sithick' = { discipline = 10 ; diff --git a/definitions/grib2/localConcepts/uerra/name.def b/definitions/grib2/localConcepts/uerra/name.def index 4075202ba..d464af609 100644 --- a/definitions/grib2/localConcepts/uerra/name.def +++ b/definitions/grib2/localConcepts/uerra/name.def @@ -186,6 +186,12 @@ scaledValueOfSecondFixedSurface = missing() ; scaleFactorOfSecondFixedSurface = missing() ; } +#Snow melt +'Snow melt' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 16 ; + } #Sea-ice thickness 'Sea-ice thickness' = { discipline = 10 ; diff --git a/definitions/grib2/localConcepts/uerra/paramId.def b/definitions/grib2/localConcepts/uerra/paramId.def index deae813b8..e4730a902 100644 --- a/definitions/grib2/localConcepts/uerra/paramId.def +++ b/definitions/grib2/localConcepts/uerra/paramId.def @@ -186,6 +186,12 @@ scaledValueOfSecondFixedSurface = missing() ; scaleFactorOfSecondFixedSurface = missing() ; } +#Snow melt +'3099' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 16 ; + } #Sea-ice thickness '174098' = { discipline = 10 ; diff --git a/definitions/grib2/localConcepts/uerra/shortName.def b/definitions/grib2/localConcepts/uerra/shortName.def index 735a053df..413ba74e2 100644 --- a/definitions/grib2/localConcepts/uerra/shortName.def +++ b/definitions/grib2/localConcepts/uerra/shortName.def @@ -186,6 +186,12 @@ scaledValueOfSecondFixedSurface = missing() ; scaleFactorOfSecondFixedSurface = missing() ; } +#Snow melt +'snom' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 16 ; + } #Sea-ice thickness 'sithick' = { discipline = 10 ; diff --git a/definitions/grib2/localConcepts/uerra/units.def b/definitions/grib2/localConcepts/uerra/units.def index 4396e0933..18b2ec6f1 100644 --- a/definitions/grib2/localConcepts/uerra/units.def +++ b/definitions/grib2/localConcepts/uerra/units.def @@ -186,6 +186,12 @@ scaledValueOfSecondFixedSurface = missing() ; scaleFactorOfSecondFixedSurface = missing() ; } +#Snow melt +'kg m**-2' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 16 ; + } #Sea-ice thickness 'm' = { discipline = 10 ; diff --git a/definitions/grib2/name.def b/definitions/grib2/name.def index a58b70383..bd1fb2cee 100644 --- a/definitions/grib2/name.def +++ b/definitions/grib2/name.def @@ -5986,6 +5986,14 @@ parameterCategory = 2 ; parameterNumber = 0 ; } +#Snow melt +'Snow melt' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 41 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; + } #Mean zero-crossing wave period 'Mean zero-crossing wave period' = { discipline = 10 ; @@ -8153,12 +8161,6 @@ parameterCategory = 2 ; parameterNumber = 7 ; } -#Snow melt -'Snow melt' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 16 ; - } #Direction of swell waves 'Direction of swell waves' = { discipline = 10 ; diff --git a/definitions/grib2/paramId.def b/definitions/grib2/paramId.def index 7cda35b55..74f140c92 100644 --- a/definitions/grib2/paramId.def +++ b/definitions/grib2/paramId.def @@ -5986,6 +5986,14 @@ parameterCategory = 2 ; parameterNumber = 0 ; } +#Snow melt +'3099' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 41 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; + } #Mean zero-crossing wave period '140221' = { discipline = 10 ; @@ -8153,12 +8161,6 @@ parameterCategory = 2 ; parameterNumber = 7 ; } -#Snow melt -'3099' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 16 ; - } #Direction of swell waves '3104' = { discipline = 10 ; diff --git a/definitions/grib2/shortName.def b/definitions/grib2/shortName.def index 13d9ccb3e..cd7321762 100644 --- a/definitions/grib2/shortName.def +++ b/definitions/grib2/shortName.def @@ -5986,6 +5986,14 @@ parameterCategory = 2 ; parameterNumber = 0 ; } +#Snow melt +'snom' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 41 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; + } #Mean zero-crossing wave period 'mp2' = { discipline = 10 ; @@ -8153,12 +8161,6 @@ parameterCategory = 2 ; parameterNumber = 7 ; } -#Snow melt -'snom' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 16 ; - } #Direction of swell waves 'swdir' = { discipline = 10 ; diff --git a/definitions/grib2/units.def b/definitions/grib2/units.def index 9cfb3c74e..7042fb9d7 100644 --- a/definitions/grib2/units.def +++ b/definitions/grib2/units.def @@ -5986,6 +5986,14 @@ parameterCategory = 2 ; parameterNumber = 0 ; } +#Snow melt +'kg m**-2' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 41 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; + } #Mean zero-crossing wave period 's' = { discipline = 10 ; @@ -8153,12 +8161,6 @@ parameterCategory = 2 ; parameterNumber = 7 ; } -#Snow melt -'kg m**-2' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 16 ; - } #Direction of swell waves 'Degree true' = { discipline = 10 ; From b78c831d84ef4a8be442c599bc51d87fa012bafb Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 5 May 2023 16:30:45 +0000 Subject: [PATCH 139/378] ECC-1583: GRIB2: Modification of top net short-wave (solar) radiation GRIB2 deprecated encoding --- definitions/grib2/cfName.def | 2 +- definitions/grib2/cfVarName.def | 2 +- definitions/grib2/localConcepts/uerra/cfName.def | 8 ++++++++ definitions/grib2/localConcepts/uerra/cfVarName.def | 8 ++++++++ definitions/grib2/localConcepts/uerra/name.def | 8 ++++++++ definitions/grib2/localConcepts/uerra/paramId.def | 8 ++++++++ definitions/grib2/localConcepts/uerra/shortName.def | 8 ++++++++ definitions/grib2/localConcepts/uerra/units.def | 8 ++++++++ definitions/grib2/name.def | 2 +- definitions/grib2/paramId.def | 2 +- definitions/grib2/shortName.def | 2 +- definitions/grib2/units.def | 2 +- 12 files changed, 54 insertions(+), 6 deletions(-) diff --git a/definitions/grib2/cfName.def b/definitions/grib2/cfName.def index 4a3e6b60b..620a59b5f 100644 --- a/definitions/grib2/cfName.def +++ b/definitions/grib2/cfName.def @@ -33,7 +33,7 @@ 'toa_net_upward_shortwave_flux' = { discipline = 0 ; parameterCategory = 4 ; - parameterNumber = 1 ; + parameterNumber = 9 ; typeOfFirstFixedSurface = 8 ; typeOfStatisticalProcessing = 1 ; } diff --git a/definitions/grib2/cfVarName.def b/definitions/grib2/cfVarName.def index f18bf8c2a..17c03f69a 100644 --- a/definitions/grib2/cfVarName.def +++ b/definitions/grib2/cfVarName.def @@ -265,7 +265,7 @@ 'tsr' = { discipline = 0 ; parameterCategory = 4 ; - parameterNumber = 1 ; + parameterNumber = 9 ; typeOfFirstFixedSurface = 8 ; typeOfStatisticalProcessing = 1 ; } diff --git a/definitions/grib2/localConcepts/uerra/cfName.def b/definitions/grib2/localConcepts/uerra/cfName.def index da6158130..afc926061 100644 --- a/definitions/grib2/localConcepts/uerra/cfName.def +++ b/definitions/grib2/localConcepts/uerra/cfName.def @@ -1,4 +1,12 @@ # Automatically generated by ./create_def.pl, do not edit +#Top net short-wave (solar) radiation +'toa_net_upward_shortwave_flux' = { + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 1 ; + typeOfFirstFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } #Sea-ice thickness 'sea_ice_thickness' = { discipline = 10 ; diff --git a/definitions/grib2/localConcepts/uerra/cfVarName.def b/definitions/grib2/localConcepts/uerra/cfVarName.def index b20745d74..a1442fa9c 100644 --- a/definitions/grib2/localConcepts/uerra/cfVarName.def +++ b/definitions/grib2/localConcepts/uerra/cfVarName.def @@ -61,6 +61,14 @@ scaledValueOfFirstFixedSurface = 15 ; scaleFactorOfFirstFixedSurface = 1 ; } +#Top net short-wave (solar) radiation +'tsr' = { + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 1 ; + typeOfFirstFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } #Maximum temperature at 2 metres since previous post-processing 'mx2t' = { discipline = 0 ; diff --git a/definitions/grib2/localConcepts/uerra/name.def b/definitions/grib2/localConcepts/uerra/name.def index d464af609..8367adada 100644 --- a/definitions/grib2/localConcepts/uerra/name.def +++ b/definitions/grib2/localConcepts/uerra/name.def @@ -61,6 +61,14 @@ scaledValueOfFirstFixedSurface = 15 ; scaleFactorOfFirstFixedSurface = 1 ; } +#Top net short-wave (solar) radiation +'Top net short-wave (solar) radiation' = { + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 1 ; + typeOfFirstFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } #Maximum temperature at 2 metres since previous post-processing 'Maximum temperature at 2 metres since previous post-processing' = { discipline = 0 ; diff --git a/definitions/grib2/localConcepts/uerra/paramId.def b/definitions/grib2/localConcepts/uerra/paramId.def index e4730a902..58df0dc39 100644 --- a/definitions/grib2/localConcepts/uerra/paramId.def +++ b/definitions/grib2/localConcepts/uerra/paramId.def @@ -61,6 +61,14 @@ scaledValueOfFirstFixedSurface = 15 ; scaleFactorOfFirstFixedSurface = 1 ; } +#Top net short-wave (solar) radiation +'178' = { + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 1 ; + typeOfFirstFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } #Maximum temperature at 2 metres since previous post-processing '201' = { discipline = 0 ; diff --git a/definitions/grib2/localConcepts/uerra/shortName.def b/definitions/grib2/localConcepts/uerra/shortName.def index 413ba74e2..1c9744b19 100644 --- a/definitions/grib2/localConcepts/uerra/shortName.def +++ b/definitions/grib2/localConcepts/uerra/shortName.def @@ -61,6 +61,14 @@ scaledValueOfFirstFixedSurface = 15 ; scaleFactorOfFirstFixedSurface = 1 ; } +#Top net short-wave (solar) radiation +'tsr' = { + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 1 ; + typeOfFirstFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } #Maximum temperature at 2 metres since previous post-processing 'mx2t' = { discipline = 0 ; diff --git a/definitions/grib2/localConcepts/uerra/units.def b/definitions/grib2/localConcepts/uerra/units.def index 18b2ec6f1..981fa77a6 100644 --- a/definitions/grib2/localConcepts/uerra/units.def +++ b/definitions/grib2/localConcepts/uerra/units.def @@ -61,6 +61,14 @@ scaledValueOfFirstFixedSurface = 15 ; scaleFactorOfFirstFixedSurface = 1 ; } +#Top net short-wave (solar) radiation +'J m**-2' = { + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 1 ; + typeOfFirstFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } #Maximum temperature at 2 metres since previous post-processing 'K' = { discipline = 0 ; diff --git a/definitions/grib2/name.def b/definitions/grib2/name.def index bd1fb2cee..87d9e7ef2 100644 --- a/definitions/grib2/name.def +++ b/definitions/grib2/name.def @@ -265,7 +265,7 @@ 'Top net short-wave (solar) radiation' = { discipline = 0 ; parameterCategory = 4 ; - parameterNumber = 1 ; + parameterNumber = 9 ; typeOfFirstFixedSurface = 8 ; typeOfStatisticalProcessing = 1 ; } diff --git a/definitions/grib2/paramId.def b/definitions/grib2/paramId.def index 74f140c92..32e8152d3 100644 --- a/definitions/grib2/paramId.def +++ b/definitions/grib2/paramId.def @@ -265,7 +265,7 @@ '178' = { discipline = 0 ; parameterCategory = 4 ; - parameterNumber = 1 ; + parameterNumber = 9 ; typeOfFirstFixedSurface = 8 ; typeOfStatisticalProcessing = 1 ; } diff --git a/definitions/grib2/shortName.def b/definitions/grib2/shortName.def index cd7321762..62d2b2f53 100644 --- a/definitions/grib2/shortName.def +++ b/definitions/grib2/shortName.def @@ -265,7 +265,7 @@ 'tsr' = { discipline = 0 ; parameterCategory = 4 ; - parameterNumber = 1 ; + parameterNumber = 9 ; typeOfFirstFixedSurface = 8 ; typeOfStatisticalProcessing = 1 ; } diff --git a/definitions/grib2/units.def b/definitions/grib2/units.def index 7042fb9d7..1165cb463 100644 --- a/definitions/grib2/units.def +++ b/definitions/grib2/units.def @@ -265,7 +265,7 @@ 'J m**-2' = { discipline = 0 ; parameterCategory = 4 ; - parameterNumber = 1 ; + parameterNumber = 9 ; typeOfFirstFixedSurface = 8 ; typeOfStatisticalProcessing = 1 ; } From 4012d58d7367abaff25f3921ba288f23264b35a6 Mon Sep 17 00:00:00 2001 From: Daniel Tipping Date: Tue, 9 May 2023 09:18:32 +0100 Subject: [PATCH 140/378] Fix workflow_id for notifications about nightly CI This allows us to correctly check the previous conclusion of the nightly CI so we can send a notification if previously-failing CI is now passing. The default workflow_id is `ci.yml` so we've been checking the conclusion of the wrong workflow. --- .github/workflows/nightly.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml index 32671d845..a5906565f 100644 --- a/.github/workflows/nightly.yml +++ b/.github/workflows/nightly.yml @@ -26,3 +26,4 @@ jobs: with: incoming_webhook: ${{ secrets.MS_TEAMS_INCOMING_WEBHOOK }} needs_context: ${{ toJSON(needs) }} + workflow_id: nightly.yml From 8e9e9c59cef85c652276b9f5b5d6d99f0179e1c9 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 9 May 2023 10:36:28 +0100 Subject: [PATCH 141/378] ECC-1584: grib_dump: indicate which keys are 'read-only' --- src/grib_dumper_class_debug.cc | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/grib_dumper_class_debug.cc b/src/grib_dumper_class_debug.cc index 123a99601..087e6ee6a 100644 --- a/src/grib_dumper_class_debug.cc +++ b/src/grib_dumper_class_debug.cc @@ -193,6 +193,8 @@ static void dump_long(grib_dumper* d, grib_accessor* a, const char* comment) fprintf(self->dumper.out, " [%s]", comment); if ((a->flags & GRIB_ACCESSOR_FLAG_CAN_BE_MISSING) != 0) fprintf(self->dumper.out, " %s", "(can be missing)"); + if ((a->flags & GRIB_ACCESSOR_FLAG_READ_ONLY) != 0) + fprintf(self->dumper.out, " %s", "(read-only)"); } if (err) fprintf(self->dumper.out, " *** ERR=%d (%s) [grib_dumper_debug::dump_long]", err, grib_get_error_message(err)); From f0d8e447c400308a97ac3e88c0321fe1339ec9d5 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 9 May 2023 13:54:39 +0100 Subject: [PATCH 142/378] ECC-1584: Add test --- tests/grib_dump_debug.sh | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/tests/grib_dump_debug.sh b/tests/grib_dump_debug.sh index ed7698235..b5397cb47 100755 --- a/tests/grib_dump_debug.sh +++ b/tests/grib_dump_debug.sh @@ -93,11 +93,14 @@ for file in $files; do done # ECC-1247: indicate which keys can have values which are 'missing' +# ECC-1584: indicate which keys are 'read-only' # ------------------------------------------------------------------ infile=${data_dir}/sample.grib2 ${tools_dir}/grib_dump -D $infile > $temp grep -q "unsigned hoursAfterDataCutoff = 0 (can be missing)" $temp grep -q "unsigned iDirectionIncrement = 2000000 (can be missing)" $temp +grep -q "constant zero = 0 (read-only)" $temp +grep -q "unsigned reserved = MISSING (can be missing) (read-only)" $temp - +# Clean up rm -f $temp From 71340dfb5e80952ce8dd29af1c56978b2b74ae70 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 9 May 2023 13:57:31 +0100 Subject: [PATCH 143/378] Cleanup --- examples/C/grib_precipitation.c | 2 +- tests/grib_ecc-1467.cc | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/examples/C/grib_precipitation.c b/examples/C/grib_precipitation.c index 51214da9d..c59613e3c 100644 --- a/examples/C/grib_precipitation.c +++ b/examples/C/grib_precipitation.c @@ -13,7 +13,7 @@ * * Description: convert fields accumulated from 0 step in * fields accumulated in the interval between - * a field and another. In the input file the fields + * a field and another. In the input file the fields * must be in ascending order in the step. * step must be the most external loop (slower varying index) * diff --git a/tests/grib_ecc-1467.cc b/tests/grib_ecc-1467.cc index 69c5f73e9..34d7867e6 100644 --- a/tests/grib_ecc-1467.cc +++ b/tests/grib_ecc-1467.cc @@ -66,11 +66,11 @@ int main(int argc, char** argv) if (!((dmin <= fval) && (fval <= dmax))) { fprintf(stderr, "Error:\n"); fprintf(stderr, "dvalue: %f, fvalue: %f\n", dvalues[i], fvalues[i]); - fprintf(stderr, "\tmin < fvalue < max = %.20e < %.20e < %.20e FAILED\n", + fprintf(stderr, "\tmin < fvalue < max = %.20e < %.20e < %.20e FAILED\n", dmin, fvalues[i], dmax); - fprintf(stderr, "\tfvalue - min = %.20e (%s)\n", + fprintf(stderr, "\tfvalue - min = %.20e (%s)\n", fvalues[i] - dmin, fvalues[i] - dmin >= 0 ? "OK" : "FAILED (should be positive)"); - fprintf(stderr, "\tmax - fvalue = %.20e (%s)\n", + fprintf(stderr, "\tmax - fvalue = %.20e (%s)\n", dmax - fvalues[i], dmax - fvalues[i] >= 0 ? "OK" : "FAILED (should be positive)"); Assert(!"Relative tolerance test failed\n"); From c8b0c0e97b77b9dc74c8dd8251bcc9affac9e8c2 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 9 May 2023 15:02:25 +0100 Subject: [PATCH 144/378] Code coverage --- src/action_class_set_darray.cc | 3 --- src/action_class_set_iarray.cc | 13 +++++-------- src/grib_dumper_class_keys.cc | 18 ++++++------------ 3 files changed, 11 insertions(+), 23 deletions(-) diff --git a/src/action_class_set_darray.cc b/src/action_class_set_darray.cc index 4b87a719c..43d249594 100644 --- a/src/action_class_set_darray.cc +++ b/src/action_class_set_darray.cc @@ -8,9 +8,6 @@ * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. */ -/*************************************************************************** - * Enrico Fucile * - ***************************************************************************/ #include "grib_api_internal.h" /* This is used by make_class.pl diff --git a/src/action_class_set_iarray.cc b/src/action_class_set_iarray.cc index 0c90c74d6..84becfd8c 100644 --- a/src/action_class_set_iarray.cc +++ b/src/action_class_set_iarray.cc @@ -8,9 +8,6 @@ * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. */ -/*************************************************************************** - * Enrico Fucile * - ***************************************************************************/ #include "grib_api_internal.h" /* This is used by make_class.pl @@ -58,12 +55,9 @@ static grib_action_class _grib_action_class_set_iarray = { &init_class, /* init_class */ 0, /* init */ &destroy, /* destroy */ - &dump, /* dump */ &xref, /* xref */ - 0, /* create_accessor*/ - 0, /* notify_change */ 0, /* reparse */ &execute, /* execute */ @@ -80,6 +74,9 @@ grib_action* grib_action_create_set_iarray(grib_context* context, const char* name, grib_iarray* iarray) { + Assert(!"grib_action_create_set_iarray: Not implemented"); + return NULL; +#if 0 char buf[1024]; grib_action_set_iarray* a; grib_action_class* c = grib_action_class_set_iarray; @@ -98,18 +95,18 @@ grib_action* grib_action_create_set_iarray(grib_context* context, act->name = grib_context_strdup_persistent(context, buf); return act; +#endif } static int execute(grib_action* a, grib_handle* h) { grib_action_set_iarray* self = (grib_action_set_iarray*)a; - return grib_set_long_array(h, self->name, self->iarray->v, self->iarray->n); } static void dump(grib_action* act, FILE* f, int lvl) { - int i = 0; + int i = 0; grib_action_set_iarray* self = (grib_action_set_iarray*)act; for (i = 0; i < lvl; i++) grib_context_print(act->context, f, " "); diff --git a/src/grib_dumper_class_keys.cc b/src/grib_dumper_class_keys.cc index ed979677b..fd74f715c 100644 --- a/src/grib_dumper_class_keys.cc +++ b/src/grib_dumper_class_keys.cc @@ -8,11 +8,6 @@ * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. */ -/************************************** - * Enrico Fucile - **************************************/ - - #include "grib_api_internal.h" #include /* @@ -89,8 +84,6 @@ grib_dumper_class* grib_dumper_class_keys = &_grib_dumper_class_keys; /* END_CLASS_IMP */ -static void print_offset(FILE* out, grib_dumper* d, grib_accessor* a); - static void init_class(grib_dumper_class* c) {} static int init(grib_dumper* d) @@ -106,6 +99,7 @@ static int destroy(grib_dumper* d) return GRIB_SUCCESS; } +#if 0 static void aliases(grib_dumper* d, grib_accessor* a) { int i; @@ -130,14 +124,15 @@ static void aliases(grib_dumper* d, grib_accessor* a) printf(") "); } } +#endif static void dump_name_only(grib_dumper* d, grib_accessor* a, const char* comment) { +#if 0 grib_dumper_keys* self = (grib_dumper_keys*)d; print_offset(self->dumper.out, d, a); - if (a->flags & GRIB_ACCESSOR_FLAG_HIDDEN) { return; } @@ -162,6 +157,7 @@ static void dump_name_only(grib_dumper* d, grib_accessor* a, const char* comment aliases(d, a); fprintf(self->dumper.out, "\n"); +#endif } static void dump_long(grib_dumper* d, grib_accessor* a, const char* comment) @@ -274,6 +270,7 @@ static void dump_label(grib_dumper* d, grib_accessor* a, const char* comment) static void dump_section(grib_dumper* d, grib_accessor* a, grib_block_of_accessors* block) { +#if 0 grib_dumper_keys* self = (grib_dumper_keys*)d; /*grib_section* s = grib_get_sub_section(a);*/ int is_default_section = 0; @@ -314,8 +311,5 @@ static void dump_section(grib_dumper* d, grib_accessor* a, grib_block_of_accesso /*for(i = 0; i < d->depth ; i++) fprintf(self->dumper.out," ");*/ /*fprintf(self->dumper.out,"<===== %s %s\n",a->creator->op, a->name);*/ -} - -static void print_offset(FILE* out, grib_dumper* d, grib_accessor* a) -{ +#endif } From 61f5db1462af28ad3d1a991a7b62f8d2ec05b829 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 10 May 2023 16:40:54 +0100 Subject: [PATCH 145/378] Testing: Check md5GridSection and scanning mode --- tests/grib_md5.sh | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/tests/grib_md5.sh b/tests/grib_md5.sh index 810328076..6c02f0a01 100755 --- a/tests/grib_md5.sh +++ b/tests/grib_md5.sh @@ -10,6 +10,9 @@ . ./include.ctest.sh +label="grib_md5_test" +temp=temp.$label.grib + test_md5() { file=$ECCODES_SAMPLES_PATH/$1 @@ -19,7 +22,8 @@ test_md5() [ "$result" = "$expected" ] } -####################################################################### +# Check the md5GridSection for some sample files +# ------------------------------------------------ # GRIB edition 1 test_md5 "sh_sfc_grib1.tmpl" "5b68b3d2c6e834fd501a123391b6b8a2" test_md5 "sh_pl_grib1.tmpl" "5b68b3d2c6e834fd501a123391b6b8a2" @@ -29,3 +33,14 @@ test_md5 "gg_sfc_grib1.tmpl" "97451fbe92a77bdeb4582fadc9b65e9d" test_md5 "sh_sfc_grib2.tmpl" "b10d32ebf4f91e52df0fc5d1deb57c3d" test_md5 "rotated_ll_pl_grib2.tmpl" "775bd4622d6becca2d2da9e308c97a7d" test_md5 "gg_sfc_grib2.tmpl" "a63333bd3cb80563e66907bb66d82cda" + +# Change some keys in the Grid Section and test md5 is different +# ------------------------------------------------ +input=$ECCODES_SAMPLES_PATH/GRIB2.tmpl +${tools_dir}/grib_set -s swapScanningX=1 $input $temp +md1=`${tools_dir}/grib_get -p md5GridSection:s $input` +md2=`${tools_dir}/grib_get -p md5GridSection:s $temp` +[ "$md1" != "$md2" ] + +# Clean up +rm -f $temp From a07644009d484645395235fa01236581bd87e03b Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 11 May 2023 12:06:27 +0100 Subject: [PATCH 146/378] ECC-1585: Merge branch feature/grib2-climate-template to develop --- definitions/grib2/template.4.105.def | 10 ++++ definitions/grib2/template.4.106.def | 11 +++++ definitions/grib2/template.4.107.def | 11 +++++ definitions/grib2/template.4.112.def | 11 +++++ .../grib2/template.4.referenceperiod.def | 49 +++++++++++++++++++ 5 files changed, 92 insertions(+) create mode 100644 definitions/grib2/template.4.105.def create mode 100644 definitions/grib2/template.4.106.def create mode 100644 definitions/grib2/template.4.107.def create mode 100644 definitions/grib2/template.4.112.def create mode 100644 definitions/grib2/template.4.referenceperiod.def diff --git a/definitions/grib2/template.4.105.def b/definitions/grib2/template.4.105.def new file mode 100644 index 000000000..1ae52eaa0 --- /dev/null +++ b/definitions/grib2/template.4.105.def @@ -0,0 +1,10 @@ +# (C) Copyright 2005- ECMWF. + +# TEMPLATE 4.105, Analysis or forecast in relation to a reference period at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval + +include "grib2/template.4.parameter.def" +include "grib2/template.4.generating_process.def" +include "grib2/template.4.forecast_time.def" +include "grib2/template.4.horizontal.def" +include "grib2/template.4.statistical.def" +include "grib2/template.4.referenceperiod.def" diff --git a/definitions/grib2/template.4.106.def b/definitions/grib2/template.4.106.def new file mode 100644 index 000000000..8c0920074 --- /dev/null +++ b/definitions/grib2/template.4.106.def @@ -0,0 +1,11 @@ +# (C) Copyright 2005- ECMWF. + +# TEMPLATE 4.106, Individual ensemble forecast, control and perturbed in relation to a reference period at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval + +include "grib2/template.4.parameter.def" +include "grib2/template.4.generating_process.def" +include "grib2/template.4.forecast_time.def" +include "grib2/template.4.horizontal.def" +include "grib2/template.4.statistical.def" +include "grib2/template.4.eps.def" +include "grib2/template.4.referenceperiod.def" diff --git a/definitions/grib2/template.4.107.def b/definitions/grib2/template.4.107.def new file mode 100644 index 000000000..f0f06a8d7 --- /dev/null +++ b/definitions/grib2/template.4.107.def @@ -0,0 +1,11 @@ +# (C) Copyright 2005- ECMWF. + +# TEMPLATE 4.107, Derived forecasts based on all ensemble members in relation to a reference period at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval + +include "grib2/template.4.parameter.def" +include "grib2/template.4.generating_process.def" +include "grib2/template.4.forecast_time.def" +include "grib2/template.4.horizontal.def" +include "grib2/template.4.statistical.def" +include "grib2/template.4.derived.def" +include "grib2/template.4.referenceperiod.def" diff --git a/definitions/grib2/template.4.112.def b/definitions/grib2/template.4.112.def new file mode 100644 index 000000000..6361f0762 --- /dev/null +++ b/definitions/grib2/template.4.112.def @@ -0,0 +1,11 @@ +# (C) Copyright 2005- ECMWF. + +# TEMPLATE 4.112, Probability forecasts in relation to a reference period at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval + +include "grib2/template.4.parameter.def" +include "grib2/template.4.generating_process.def" +include "grib2/template.4.forecast_time.def" +include "grib2/template.4.horizontal.def" +include "grib2/template.4.statistical.def" +include "grib2/template.4.probability.def" +include "grib2/template.4.referenceperiod.def" diff --git a/definitions/grib2/template.4.referenceperiod.def b/definitions/grib2/template.4.referenceperiod.def new file mode 100644 index 000000000..90c05351f --- /dev/null +++ b/definitions/grib2/template.4.referenceperiod.def @@ -0,0 +1,49 @@ +# Type of reference dataset +codetable[1] typeOfReferenceDataset ('4.100.table',masterDir,localDir) = 255 : dump,edition_specific; + +# Type of relation to reference dataset +codetable[1] typeOfRelationToReferenceDataset ('4.101.table',masterDir,localDir) = 255 : dump,edition_specific; + +# number of additional parameters +unsigned[1] numberOfAdditionalParametersForReferencePeriod=0 ; +additionalParameter list(numberOfAdditionalParametersForReferencePeriod) +{ + signed[1] scaleFactorOfAdditionalParameterForReferencePeriod; + signed[4] scaledValueOfAdditionalParameterForReferencePeriod; +} + +## Start of reference period + +unsigned[2] yearOfStartOfReferencePeriod = missing() : edition_specific,can_be_missing; + +unsigned[1] monthOfStartOfReferencePeriod = missing() : edition_specific,can_be_missing; + +unsigned[1] dayOfStartOfReferencePeriod = missing() : edition_specific,can_be_missing; + +unsigned[1] hourOfStartOfReferencePeriod = missing() : edition_specific,can_be_missing; + +unsigned[1] minuteOfStartOfReferencePeriod = missing() : edition_specific,can_be_missing; + +unsigned[1] secondOfStartOfReferencePeriod = missing() : edition_specific,can_be_missing; + +meta startDateOfReferencePeriod g2date(yearOfStartOfReferencePeriod,monthOfStartOfReferencePeriod,dayOfStartOfReferencePeriod); + +## End of reference period (defined as startDateOfReferencePeriod + referencePeriodTimeIncrement * referencePeriodIndicatorOfUnitForTimeIncrement) + +unsigned[4] sampleSizeOfReferencePeriod = 0; + +# n - number of time range specifications describing the time intervals used to calculate the statistically-processed field +unsigned[1] numberOfReferencePeriodTimeRanges = 1 : edition_specific; +alias nref = numberOfReferencePeriodTimeRanges; + +referencePeriodList list(numberOfReferencePeriodTimeRanges) +{ + # Type of statistical processing of reference period + codetable[1] typeOfStatisticalProcessingForTimeRangeForReferencePeriod ('4.102.table',masterDir,localDir) = 255 : dump,edition_specific; + + # Indicator of unit of time for the increment between the successive fields used + codetable[1] indicatorOfUnitForTimeRangeForReferencePeriod ('4.4.table',masterDir,localDir)=255 ; + + # Length of reference period, in units defined by the previous octet [referencePeriodIndicatorOfUnitForTimeIncrement] + unsigned[4] lengthOfTimeRangeForReferencePeriod=0 ; +} From a58fd34c6edce3268b31be06c79c91341a214dc0 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 11 May 2023 13:45:05 +0100 Subject: [PATCH 147/378] ECC-1585: Merge branch feature/grib2-new-templates to develop --- definitions/grib2/template.4.100.def | 12 +++++ definitions/grib2/template.4.101.def | 11 ++++ definitions/grib2/template.4.102.def | 12 +++++ definitions/grib2/template.4.103.def | 10 ++++ definitions/grib2/template.4.104.def | 11 ++++ definitions/grib2/template.4.99.def | 11 ++++ definitions/grib2/template.4.wave.def | 18 +++++++ .../grib2/template.4.wave_period_range.def | 10 ++++ .../grib2/template.4.wave_spectra_formula.def | 26 ++++++++++ .../grib2/template.4.wave_spectra_list.def | 13 +++++ tests/CMakeLists.txt | 1 + tests/grib2_wave_spectra.sh | 50 +++++++++++++++++++ 12 files changed, 185 insertions(+) create mode 100644 definitions/grib2/template.4.100.def create mode 100644 definitions/grib2/template.4.101.def create mode 100644 definitions/grib2/template.4.102.def create mode 100644 definitions/grib2/template.4.103.def create mode 100644 definitions/grib2/template.4.104.def create mode 100644 definitions/grib2/template.4.99.def create mode 100644 definitions/grib2/template.4.wave.def create mode 100644 definitions/grib2/template.4.wave_period_range.def create mode 100644 definitions/grib2/template.4.wave_spectra_formula.def create mode 100644 definitions/grib2/template.4.wave_spectra_list.def create mode 100755 tests/grib2_wave_spectra.sh diff --git a/definitions/grib2/template.4.100.def b/definitions/grib2/template.4.100.def new file mode 100644 index 000000000..d78c32013 --- /dev/null +++ b/definitions/grib2/template.4.100.def @@ -0,0 +1,12 @@ +# (C) Copyright 2005- ECMWF. + +# TEMPLATE 4.100, Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time for wave 2D spectra with explicit list of frequencies and directions + +include "grib2/template.4.parameter.def" +include "grib2/template.4.wave.def" +include "grib2/template.4.generating_process.def" +include "grib2/template.4.forecast_time.def" +include "grib2/template.4.point_in_time.def" +#include "grib2/template.4.horizontal.def" +include "grib2/template.4.eps.def" +include "grib2/template.4.wave_spectra_list.def" diff --git a/definitions/grib2/template.4.101.def b/definitions/grib2/template.4.101.def new file mode 100644 index 000000000..a19b0b164 --- /dev/null +++ b/definitions/grib2/template.4.101.def @@ -0,0 +1,11 @@ +# (C) Copyright 2005- ECMWF. + +# TEMPLATE 4.101, Analysis or forecast at a horizontal level or in a horizontal layer at a point in time for wave 2D spectra with frequencies and directions defined by formulae + +include "grib2/template.4.parameter.def" +include "grib2/template.4.wave.def" +include "grib2/template.4.generating_process.def" +include "grib2/template.4.forecast_time.def" +include "grib2/template.4.point_in_time.def" +#include "grib2/template.4.horizontal.def" +include "grib2/template.4.wave_spectra_formula.def" diff --git a/definitions/grib2/template.4.102.def b/definitions/grib2/template.4.102.def new file mode 100644 index 000000000..7bd5726a0 --- /dev/null +++ b/definitions/grib2/template.4.102.def @@ -0,0 +1,12 @@ +# (C) Copyright 2005- ECMWF. + +# TEMPLATE 4.102, Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time for wave 2D spectra with frequencies and directions defined by formulae + +include "grib2/template.4.parameter.def" +include "grib2/template.4.wave.def" +include "grib2/template.4.generating_process.def" +include "grib2/template.4.forecast_time.def" +include "grib2/template.4.point_in_time.def" +#include "grib2/template.4.horizontal.def" +include "grib2/template.4.eps.def" +include "grib2/template.4.wave_spectra_formula.def" diff --git a/definitions/grib2/template.4.103.def b/definitions/grib2/template.4.103.def new file mode 100644 index 000000000..118403f33 --- /dev/null +++ b/definitions/grib2/template.4.103.def @@ -0,0 +1,10 @@ +# (C) Copyright 2005- ECMWF. + +# TEMPLATE 4.103, Analysis or forecast at a horizontal level or in a horizontal layer at a point in time for waves selected by period range. + +include "grib2/template.4.parameter.def" +include "grib2/template.4.wave_period_range.def" +include "grib2/template.4.generating_process.def" +include "grib2/template.4.forecast_time.def" +include "grib2/template.4.point_in_time.def" +include "grib2/template.4.horizontal.def" diff --git a/definitions/grib2/template.4.104.def b/definitions/grib2/template.4.104.def new file mode 100644 index 000000000..f0db4712d --- /dev/null +++ b/definitions/grib2/template.4.104.def @@ -0,0 +1,11 @@ +# (C) Copyright 2005- ECMWF. + +# TEMPLATE 4.104, Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time for waves selected by period range. + +include "grib2/template.4.parameter.def" +include "grib2/template.4.wave_period_range.def" +include "grib2/template.4.generating_process.def" +include "grib2/template.4.forecast_time.def" +include "grib2/template.4.point_in_time.def" +include "grib2/template.4.horizontal.def" +include "grib2/template.4.eps.def" diff --git a/definitions/grib2/template.4.99.def b/definitions/grib2/template.4.99.def new file mode 100644 index 000000000..fc2d9a616 --- /dev/null +++ b/definitions/grib2/template.4.99.def @@ -0,0 +1,11 @@ +# (C) Copyright 2005- ECMWF. + +# TEMPLATE 4.99, Analysis or forecast at a horizontal level or in a horizontal layer at a point in time for wave 2D spectra with explicit list of frequencies and directions + +include "grib2/template.4.parameter.def" +include "grib2/template.4.wave.def" +include "grib2/template.4.generating_process.def" +include "grib2/template.4.forecast_time.def" +include "grib2/template.4.point_in_time.def" +#include "grib2/template.4.horizontal.def" +include "grib2/template.4.wave_spectra_list.def" diff --git a/definitions/grib2/template.4.wave.def b/definitions/grib2/template.4.wave.def new file mode 100644 index 000000000..a5bfac03c --- /dev/null +++ b/definitions/grib2/template.4.wave.def @@ -0,0 +1,18 @@ +# Template for wave parameters + +## Direction part +unsigned[2] waveDirectionNumber : dump; +alias mars.direction = waveDirectionNumber; + +unsigned[2] numberOfWaveDirections = 1 : dump; +alias totalNumberOfWaveDirections = numberOfWaveDirections; + +## Frequency part +unsigned[2] waveFrequencyNumber : dump; +alias mars.frequency = waveFrequencyNumber; + +unsigned[2] numberOfWaveFrequencies = 1 : dump; +alias totalNumberOfWaveFrequencies = numberOfWaveFrequencies; + +constant waveLevType="sfc"; +alias mars.levtype = waveLevType; diff --git a/definitions/grib2/template.4.wave_period_range.def b/definitions/grib2/template.4.wave_period_range.def new file mode 100644 index 000000000..3bd02fa4f --- /dev/null +++ b/definitions/grib2/template.4.wave_period_range.def @@ -0,0 +1,10 @@ +# Template for wave parameters defined on a certain period range + +# Type of period interval +codetable[1] typeOfWavePeriodInterval ('4.91.table',masterDir,localDir) = 255 : dump,no_copy,edition_specific,string_type; + +signed[1] scaleFactorOfLowerWavePeriodLimit = missing() : can_be_missing,dump; +unsigned[4] scaledValueOfLowerWavePeriodLimit = missing() : can_be_missing,dump; + +signed[1] scaleFactorOfUpperWavePeriodLimit = missing() : can_be_missing,dump; +unsigned[4] scaledValueOfUpperWavePeriodLimit = missing() : can_be_missing,dump; diff --git a/definitions/grib2/template.4.wave_spectra_formula.def b/definitions/grib2/template.4.wave_spectra_formula.def new file mode 100644 index 000000000..c0893da1a --- /dev/null +++ b/definitions/grib2/template.4.wave_spectra_formula.def @@ -0,0 +1,26 @@ +# Template for wave spectra defined using a formula for frequency and direction + +## Direction part +# Type of direction sequence +codetable[1] typeOfWaveDirectionSequence ('4.251.table',masterDir,localDir) : dump; + +# Number of following function parameters for the directions +unsigned[1] numberOfWaveDirectionSequenceParameters = 1 : dump; +alias NDSP = numberOfWaveDirectionSequenceParameters; + +listOfWaveDirectionSequenceParameters list(numberOfWaveDirectionSequenceParameters) { + signed[1] scaleFactorOfWaveDirectionSequenceParameter : dump; + signed[4] scaledValueOfWaveDirectionSequenceParameter : dump; +} + +## Frequency part +codetable[1] typeOfWaveFrequencySequence ('4.251.table',masterDir,localDir) : dump; + +# Number of following function parameters for the frequencies +unsigned[1] numberOfWaveFrequencySequenceParameters = 1 : dump; +alias NFSP = numberOfWaveFrequencySequenceParameters; + +listOfWaveFrequencySequenceParameters list(numberOfWaveFrequencySequenceParameters) { + signed[1] scaleFactorOfWaveFrequencySequenceParameter : dump; + signed[4] scaledValueOfWaveFrequencySequenceParameter : dump; +} diff --git a/definitions/grib2/template.4.wave_spectra_list.def b/definitions/grib2/template.4.wave_spectra_list.def new file mode 100644 index 000000000..f90e2dc35 --- /dev/null +++ b/definitions/grib2/template.4.wave_spectra_list.def @@ -0,0 +1,13 @@ +# Template for wave spectra defined using an array of frequencies and directions + +## Direction part +signed[1] scaleFactorOfWaveDirections : dump; +alias integerScalingFactorAppliedToDirections = scaleFactorOfWaveDirections; + +unsigned[4] scaledValuesOfWaveDirections[numberOfWaveDirections] : dump; + +## Frequency part +signed[1] scaleFactorOfWaveFrequencies : dump; +alias integerScalingFactorAppliedToFrequencies = scaleFactorOfWaveFrequencies; + +unsigned[4] scaledValuesOfWaveFrequencies[numberOfWaveFrequencies] : dump; diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 2e14e0a3d..f7ee9e572 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -85,6 +85,7 @@ if( HAVE_BUILD_TOOLS ) grib_s2s grib_fire # grib_true_imagery + grib2_wave_spectra grib_element grib_suppressed grib_2nd_order_numValues diff --git a/tests/grib2_wave_spectra.sh b/tests/grib2_wave_spectra.sh new file mode 100755 index 000000000..f610a08bb --- /dev/null +++ b/tests/grib2_wave_spectra.sh @@ -0,0 +1,50 @@ +#!/bin/sh +# (C) Copyright 2005- ECMWF. +# +# This software is licensed under the terms of the Apache Licence Version 2.0 +# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. +# +# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by +# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. +# + +. ./include.ctest.sh + +label="grib2_wave_spectra_test" +temp=temp.$label +tempSample=temp.$label.tmpl +sample2=$ECCODES_SAMPLES_PATH/GRIB2.tmpl + +latest=`${tools_dir}/grib_get -p tablesVersionLatest $sample2` + +# Wave 2D spectra with explicit list of frequencies and directions +${tools_dir}/grib_set -s tablesVersion=$latest,productDefinitionTemplateNumber=99 $sample2 $tempSample +${tools_dir}/grib_set -s numberOfWaveDirections=3,numberOfWaveFrequencies=3 $tempSample $temp + +# Wave 2D spectra with explicit list of frequencies and directions, ensemble +${tools_dir}/grib_set -s tablesVersion=$latest,productDefinitionTemplateNumber=100 $sample2 $tempSample +grib_check_key_equals $tempSample numberOfWaveDirections,numberOfWaveFrequencies,perturbationNumber '1 1 0' + +# Wave 2D spectra with frequencies and directions defined by formulae +${tools_dir}/grib_set -s tablesVersion=$latest,productDefinitionTemplateNumber=101 $sample2 $tempSample +${tools_dir}/grib_set -s numberOfWaveDirections=3,numberOfWaveFrequencies=3 $tempSample $temp +grib_check_key_equals $temp numberOfWaveFrequencySequenceParameters 1 +grib_check_key_equals $temp numberOfWaveDirectionSequenceParameters 1 + +# Wave 2D spectra with frequencies and directions defined by formulae, ensemble +${tools_dir}/grib_set -s tablesVersion=$latest,productDefinitionTemplateNumber=102 $sample2 $tempSample +${tools_dir}/grib_set -s numberOfWaveDirections=3,numberOfWaveFrequencies=3 $tempSample $temp +grib_check_key_equals $temp perturbationNumber 0 +grib_check_key_equals $temp typeOfWaveFrequencySequence 0 +grib_check_key_equals $temp typeOfWaveDirectionSequence 0 + +# Wave waves selected by period range +${tools_dir}/grib_set -s tablesVersion=$latest,productDefinitionTemplateNumber=103 $sample2 $temp +grib_check_key_equals $temp scaleFactorOfLowerWavePeriodLimit,scaledValueOfLowerWavePeriodLimit 'MISSING MISSING' + +${tools_dir}/grib_set -s tablesVersion=$latest,productDefinitionTemplateNumber=104 $sample2 $temp +grib_check_key_equals $temp scaleFactorOfLowerWavePeriodLimit,scaledValueOfLowerWavePeriodLimit,perturbationNumber 'MISSING MISSING 0' + + +# Clean up +rm -f $tempSample $temp From 1a4eaeaa614c74adeb2db4fbf82c5cdd38e57845 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 11 May 2023 17:16:49 +0100 Subject: [PATCH 148/378] ECC-1585: Code tables --- definitions/grib2/boot.def | 4 +- definitions/grib2/tables/1.0.table | 5 +- definitions/grib2/tables/31/0.0.table | 13 + definitions/grib2/tables/31/1.0.table | 36 ++ definitions/grib2/tables/31/1.1.table | 4 + definitions/grib2/tables/31/1.2.table | 9 + definitions/grib2/tables/31/1.3.table | 16 + definitions/grib2/tables/31/1.4.table | 13 + definitions/grib2/tables/31/1.5.table | 7 + definitions/grib2/tables/31/1.6.table | 8 + definitions/grib2/tables/31/3.0.table | 6 + definitions/grib2/tables/31/3.1.table | 55 ++ definitions/grib2/tables/31/3.10.table | 8 + definitions/grib2/tables/31/3.11.table | 7 + definitions/grib2/tables/31/3.15.table | 23 + definitions/grib2/tables/31/3.2.table | 16 + definitions/grib2/tables/31/3.20.table | 6 + definitions/grib2/tables/31/3.21.table | 8 + definitions/grib2/tables/31/3.25.table | 10 + definitions/grib2/tables/31/3.3.table | 9 + definitions/grib2/tables/31/3.4.table | 17 + definitions/grib2/tables/31/3.5.table | 5 + definitions/grib2/tables/31/3.6.table | 3 + definitions/grib2/tables/31/3.7.table | 5 + definitions/grib2/tables/31/3.8.table | 7 + definitions/grib2/tables/31/3.9.table | 4 + definitions/grib2/tables/31/4.0.table | 108 ++++ definitions/grib2/tables/31/4.1.0.table | 28 + definitions/grib2/tables/31/4.1.1.table | 7 + definitions/grib2/tables/31/4.1.10.table | 10 + definitions/grib2/tables/31/4.1.192.table | 4 + definitions/grib2/tables/31/4.1.2.table | 11 + definitions/grib2/tables/31/4.1.20.table | 7 + definitions/grib2/tables/31/4.1.3.table | 11 + definitions/grib2/tables/31/4.1.4.table | 15 + definitions/grib2/tables/31/4.10.table | 20 + definitions/grib2/tables/31/4.100.table | 10 + definitions/grib2/tables/31/4.101.table | 10 + definitions/grib2/tables/31/4.102.table | 11 + definitions/grib2/tables/31/4.11.table | 10 + definitions/grib2/tables/31/4.12.table | 7 + definitions/grib2/tables/31/4.13.table | 6 + definitions/grib2/tables/31/4.14.table | 6 + definitions/grib2/tables/31/4.15.table | 11 + definitions/grib2/tables/31/4.16.table | 10 + definitions/grib2/tables/31/4.192.table | 4 + definitions/grib2/tables/31/4.2.0.0.table | 37 ++ definitions/grib2/tables/31/4.2.0.1.table | 172 ++++++ definitions/grib2/tables/31/4.2.0.13.table | 5 + definitions/grib2/tables/31/4.2.0.14.table | 7 + definitions/grib2/tables/31/4.2.0.15.table | 21 + definitions/grib2/tables/31/4.2.0.16.table | 10 + definitions/grib2/tables/31/4.2.0.17.table | 7 + definitions/grib2/tables/31/4.2.0.18.table | 23 + definitions/grib2/tables/31/4.2.0.19.table | 50 ++ definitions/grib2/tables/31/4.2.0.190.table | 5 + definitions/grib2/tables/31/4.2.0.191.table | 8 + definitions/grib2/tables/31/4.2.0.2.table | 63 +++ definitions/grib2/tables/31/4.2.0.20.table | 69 +++ definitions/grib2/tables/31/4.2.0.21.table | 26 + definitions/grib2/tables/31/4.2.0.3.table | 50 ++ definitions/grib2/tables/31/4.2.0.4.table | 33 ++ definitions/grib2/tables/31/4.2.0.5.table | 18 + definitions/grib2/tables/31/4.2.0.6.table | 51 ++ definitions/grib2/tables/31/4.2.0.7.table | 25 + definitions/grib2/tables/31/4.2.1.0.table | 21 + definitions/grib2/tables/31/4.2.1.1.table | 7 + definitions/grib2/tables/31/4.2.1.2.table | 19 + definitions/grib2/tables/31/4.2.10.0.table | 97 ++++ definitions/grib2/tables/31/4.2.10.1.table | 11 + definitions/grib2/tables/31/4.2.10.191.table | 9 + definitions/grib2/tables/31/4.2.10.2.table | 28 + definitions/grib2/tables/31/4.2.10.3.table | 25 + definitions/grib2/tables/31/4.2.10.4.table | 44 ++ definitions/grib2/tables/31/4.2.2.0.table | 66 +++ definitions/grib2/tables/31/4.2.2.3.table | 34 ++ definitions/grib2/tables/31/4.2.2.4.table | 31 ++ definitions/grib2/tables/31/4.2.2.5.table | 6 + definitions/grib2/tables/31/4.2.2.6.table | 10 + definitions/grib2/tables/31/4.2.20.0.table | 13 + definitions/grib2/tables/31/4.2.20.1.table | 14 + definitions/grib2/tables/31/4.2.20.2.table | 5 + definitions/grib2/tables/31/4.2.3.0.table | 14 + definitions/grib2/tables/31/4.2.3.1.table | 36 ++ definitions/grib2/tables/31/4.2.3.2.table | 24 + definitions/grib2/tables/31/4.2.3.3.table | 4 + definitions/grib2/tables/31/4.2.3.4.table | 10 + definitions/grib2/tables/31/4.2.3.5.table | 7 + definitions/grib2/tables/31/4.2.3.6.table | 7 + definitions/grib2/tables/31/4.2.4.0.table | 10 + definitions/grib2/tables/31/4.2.4.1.table | 8 + definitions/grib2/tables/31/4.2.4.10.table | 12 + definitions/grib2/tables/31/4.2.4.2.table | 18 + definitions/grib2/tables/31/4.2.4.3.table | 12 + definitions/grib2/tables/31/4.2.4.4.table | 11 + definitions/grib2/tables/31/4.2.4.5.table | 8 + definitions/grib2/tables/31/4.2.4.6.table | 11 + definitions/grib2/tables/31/4.2.4.7.table | 8 + definitions/grib2/tables/31/4.2.4.8.table | 13 + definitions/grib2/tables/31/4.2.4.9.table | 7 + definitions/grib2/tables/31/4.201.table | 17 + definitions/grib2/tables/31/4.202.table | 4 + definitions/grib2/tables/31/4.203.table | 26 + definitions/grib2/tables/31/4.204.table | 9 + definitions/grib2/tables/31/4.205.table | 6 + definitions/grib2/tables/31/4.206.table | 6 + definitions/grib2/tables/31/4.207.table | 10 + definitions/grib2/tables/31/4.208.table | 9 + definitions/grib2/tables/31/4.209.table | 9 + definitions/grib2/tables/31/4.210.table | 6 + definitions/grib2/tables/31/4.211.table | 7 + definitions/grib2/tables/31/4.212.table | 18 + definitions/grib2/tables/31/4.213.table | 16 + definitions/grib2/tables/31/4.214.table | 11 + definitions/grib2/tables/31/4.215.table | 9 + definitions/grib2/tables/31/4.216.table | 5 + definitions/grib2/tables/31/4.217.table | 8 + definitions/grib2/tables/31/4.218.table | 46 ++ definitions/grib2/tables/31/4.219.table | 8 + definitions/grib2/tables/31/4.220.table | 6 + definitions/grib2/tables/31/4.221.table | 6 + definitions/grib2/tables/31/4.222.table | 6 + definitions/grib2/tables/31/4.223.table | 5 + definitions/grib2/tables/31/4.224.table | 18 + definitions/grib2/tables/31/4.225.table | 2 + definitions/grib2/tables/31/4.227.table | 9 + definitions/grib2/tables/31/4.228.table | 8 + definitions/grib2/tables/31/4.230.table | 534 +++++++++++++++++++ definitions/grib2/tables/31/4.233.table | 534 +++++++++++++++++++ definitions/grib2/tables/31/4.234.table | 21 + definitions/grib2/tables/31/4.236.table | 8 + definitions/grib2/tables/31/4.238.table | 32 ++ definitions/grib2/tables/31/4.239.table | 17 + definitions/grib2/tables/31/4.240.table | 13 + definitions/grib2/tables/31/4.241.table | 9 + definitions/grib2/tables/31/4.242.table | 7 + definitions/grib2/tables/31/4.243.table | 43 ++ definitions/grib2/tables/31/4.244.table | 7 + definitions/grib2/tables/31/4.246.table | 7 + definitions/grib2/tables/31/4.247.table | 7 + definitions/grib2/tables/31/4.248.table | 6 + definitions/grib2/tables/31/4.249.table | 7 + definitions/grib2/tables/31/4.250.table | 14 + definitions/grib2/tables/31/4.251.table | 7 + definitions/grib2/tables/31/4.3.table | 26 + definitions/grib2/tables/31/4.4.table | 17 + definitions/grib2/tables/31/4.5.table | 89 ++++ definitions/grib2/tables/31/4.6.table | 9 + definitions/grib2/tables/31/4.7.table | 14 + definitions/grib2/tables/31/4.8.table | 6 + definitions/grib2/tables/31/4.9.table | 13 + definitions/grib2/tables/31/4.91.table | 16 + definitions/grib2/tables/31/5.0.table | 22 + definitions/grib2/tables/31/5.1.table | 6 + definitions/grib2/tables/31/5.2.table | 8 + definitions/grib2/tables/31/5.25.table | 9 + definitions/grib2/tables/31/5.26.table | 5 + definitions/grib2/tables/31/5.3.table | 7 + definitions/grib2/tables/31/5.4.table | 6 + definitions/grib2/tables/31/5.40.table | 5 + definitions/grib2/tables/31/5.5.table | 7 + definitions/grib2/tables/31/5.6.table | 7 + definitions/grib2/tables/31/5.7.table | 7 + definitions/grib2/tables/31/6.0.table | 6 + 164 files changed, 3794 insertions(+), 4 deletions(-) create mode 100644 definitions/grib2/tables/31/0.0.table create mode 100644 definitions/grib2/tables/31/1.0.table create mode 100644 definitions/grib2/tables/31/1.1.table create mode 100644 definitions/grib2/tables/31/1.2.table create mode 100644 definitions/grib2/tables/31/1.3.table create mode 100644 definitions/grib2/tables/31/1.4.table create mode 100644 definitions/grib2/tables/31/1.5.table create mode 100644 definitions/grib2/tables/31/1.6.table create mode 100644 definitions/grib2/tables/31/3.0.table create mode 100644 definitions/grib2/tables/31/3.1.table create mode 100644 definitions/grib2/tables/31/3.10.table create mode 100644 definitions/grib2/tables/31/3.11.table create mode 100644 definitions/grib2/tables/31/3.15.table create mode 100644 definitions/grib2/tables/31/3.2.table create mode 100644 definitions/grib2/tables/31/3.20.table create mode 100644 definitions/grib2/tables/31/3.21.table create mode 100644 definitions/grib2/tables/31/3.25.table create mode 100644 definitions/grib2/tables/31/3.3.table create mode 100644 definitions/grib2/tables/31/3.4.table create mode 100644 definitions/grib2/tables/31/3.5.table create mode 100644 definitions/grib2/tables/31/3.6.table create mode 100644 definitions/grib2/tables/31/3.7.table create mode 100644 definitions/grib2/tables/31/3.8.table create mode 100644 definitions/grib2/tables/31/3.9.table create mode 100644 definitions/grib2/tables/31/4.0.table create mode 100644 definitions/grib2/tables/31/4.1.0.table create mode 100644 definitions/grib2/tables/31/4.1.1.table create mode 100644 definitions/grib2/tables/31/4.1.10.table create mode 100644 definitions/grib2/tables/31/4.1.192.table create mode 100644 definitions/grib2/tables/31/4.1.2.table create mode 100644 definitions/grib2/tables/31/4.1.20.table create mode 100644 definitions/grib2/tables/31/4.1.3.table create mode 100644 definitions/grib2/tables/31/4.1.4.table create mode 100644 definitions/grib2/tables/31/4.10.table create mode 100644 definitions/grib2/tables/31/4.100.table create mode 100644 definitions/grib2/tables/31/4.101.table create mode 100644 definitions/grib2/tables/31/4.102.table create mode 100644 definitions/grib2/tables/31/4.11.table create mode 100644 definitions/grib2/tables/31/4.12.table create mode 100644 definitions/grib2/tables/31/4.13.table create mode 100644 definitions/grib2/tables/31/4.14.table create mode 100644 definitions/grib2/tables/31/4.15.table create mode 100644 definitions/grib2/tables/31/4.16.table create mode 100644 definitions/grib2/tables/31/4.192.table create mode 100644 definitions/grib2/tables/31/4.2.0.0.table create mode 100644 definitions/grib2/tables/31/4.2.0.1.table create mode 100644 definitions/grib2/tables/31/4.2.0.13.table create mode 100644 definitions/grib2/tables/31/4.2.0.14.table create mode 100644 definitions/grib2/tables/31/4.2.0.15.table create mode 100644 definitions/grib2/tables/31/4.2.0.16.table create mode 100644 definitions/grib2/tables/31/4.2.0.17.table create mode 100644 definitions/grib2/tables/31/4.2.0.18.table create mode 100644 definitions/grib2/tables/31/4.2.0.19.table create mode 100644 definitions/grib2/tables/31/4.2.0.190.table create mode 100644 definitions/grib2/tables/31/4.2.0.191.table create mode 100644 definitions/grib2/tables/31/4.2.0.2.table create mode 100644 definitions/grib2/tables/31/4.2.0.20.table create mode 100644 definitions/grib2/tables/31/4.2.0.21.table create mode 100644 definitions/grib2/tables/31/4.2.0.3.table create mode 100644 definitions/grib2/tables/31/4.2.0.4.table create mode 100644 definitions/grib2/tables/31/4.2.0.5.table create mode 100644 definitions/grib2/tables/31/4.2.0.6.table create mode 100644 definitions/grib2/tables/31/4.2.0.7.table create mode 100644 definitions/grib2/tables/31/4.2.1.0.table create mode 100644 definitions/grib2/tables/31/4.2.1.1.table create mode 100644 definitions/grib2/tables/31/4.2.1.2.table create mode 100644 definitions/grib2/tables/31/4.2.10.0.table create mode 100644 definitions/grib2/tables/31/4.2.10.1.table create mode 100644 definitions/grib2/tables/31/4.2.10.191.table create mode 100644 definitions/grib2/tables/31/4.2.10.2.table create mode 100644 definitions/grib2/tables/31/4.2.10.3.table create mode 100644 definitions/grib2/tables/31/4.2.10.4.table create mode 100644 definitions/grib2/tables/31/4.2.2.0.table create mode 100644 definitions/grib2/tables/31/4.2.2.3.table create mode 100644 definitions/grib2/tables/31/4.2.2.4.table create mode 100644 definitions/grib2/tables/31/4.2.2.5.table create mode 100644 definitions/grib2/tables/31/4.2.2.6.table create mode 100644 definitions/grib2/tables/31/4.2.20.0.table create mode 100644 definitions/grib2/tables/31/4.2.20.1.table create mode 100644 definitions/grib2/tables/31/4.2.20.2.table create mode 100644 definitions/grib2/tables/31/4.2.3.0.table create mode 100644 definitions/grib2/tables/31/4.2.3.1.table create mode 100644 definitions/grib2/tables/31/4.2.3.2.table create mode 100644 definitions/grib2/tables/31/4.2.3.3.table create mode 100644 definitions/grib2/tables/31/4.2.3.4.table create mode 100644 definitions/grib2/tables/31/4.2.3.5.table create mode 100644 definitions/grib2/tables/31/4.2.3.6.table create mode 100644 definitions/grib2/tables/31/4.2.4.0.table create mode 100644 definitions/grib2/tables/31/4.2.4.1.table create mode 100644 definitions/grib2/tables/31/4.2.4.10.table create mode 100644 definitions/grib2/tables/31/4.2.4.2.table create mode 100644 definitions/grib2/tables/31/4.2.4.3.table create mode 100644 definitions/grib2/tables/31/4.2.4.4.table create mode 100644 definitions/grib2/tables/31/4.2.4.5.table create mode 100644 definitions/grib2/tables/31/4.2.4.6.table create mode 100644 definitions/grib2/tables/31/4.2.4.7.table create mode 100644 definitions/grib2/tables/31/4.2.4.8.table create mode 100644 definitions/grib2/tables/31/4.2.4.9.table create mode 100644 definitions/grib2/tables/31/4.201.table create mode 100644 definitions/grib2/tables/31/4.202.table create mode 100644 definitions/grib2/tables/31/4.203.table create mode 100644 definitions/grib2/tables/31/4.204.table create mode 100644 definitions/grib2/tables/31/4.205.table create mode 100644 definitions/grib2/tables/31/4.206.table create mode 100644 definitions/grib2/tables/31/4.207.table create mode 100644 definitions/grib2/tables/31/4.208.table create mode 100644 definitions/grib2/tables/31/4.209.table create mode 100644 definitions/grib2/tables/31/4.210.table create mode 100644 definitions/grib2/tables/31/4.211.table create mode 100644 definitions/grib2/tables/31/4.212.table create mode 100644 definitions/grib2/tables/31/4.213.table create mode 100644 definitions/grib2/tables/31/4.214.table create mode 100644 definitions/grib2/tables/31/4.215.table create mode 100644 definitions/grib2/tables/31/4.216.table create mode 100644 definitions/grib2/tables/31/4.217.table create mode 100644 definitions/grib2/tables/31/4.218.table create mode 100644 definitions/grib2/tables/31/4.219.table create mode 100644 definitions/grib2/tables/31/4.220.table create mode 100644 definitions/grib2/tables/31/4.221.table create mode 100644 definitions/grib2/tables/31/4.222.table create mode 100644 definitions/grib2/tables/31/4.223.table create mode 100644 definitions/grib2/tables/31/4.224.table create mode 100644 definitions/grib2/tables/31/4.225.table create mode 100644 definitions/grib2/tables/31/4.227.table create mode 100644 definitions/grib2/tables/31/4.228.table create mode 100644 definitions/grib2/tables/31/4.230.table create mode 100644 definitions/grib2/tables/31/4.233.table create mode 100644 definitions/grib2/tables/31/4.234.table create mode 100644 definitions/grib2/tables/31/4.236.table create mode 100644 definitions/grib2/tables/31/4.238.table create mode 100644 definitions/grib2/tables/31/4.239.table create mode 100644 definitions/grib2/tables/31/4.240.table create mode 100644 definitions/grib2/tables/31/4.241.table create mode 100644 definitions/grib2/tables/31/4.242.table create mode 100644 definitions/grib2/tables/31/4.243.table create mode 100644 definitions/grib2/tables/31/4.244.table create mode 100644 definitions/grib2/tables/31/4.246.table create mode 100644 definitions/grib2/tables/31/4.247.table create mode 100644 definitions/grib2/tables/31/4.248.table create mode 100644 definitions/grib2/tables/31/4.249.table create mode 100644 definitions/grib2/tables/31/4.250.table create mode 100644 definitions/grib2/tables/31/4.251.table create mode 100644 definitions/grib2/tables/31/4.3.table create mode 100644 definitions/grib2/tables/31/4.4.table create mode 100644 definitions/grib2/tables/31/4.5.table create mode 100644 definitions/grib2/tables/31/4.6.table create mode 100644 definitions/grib2/tables/31/4.7.table create mode 100644 definitions/grib2/tables/31/4.8.table create mode 100644 definitions/grib2/tables/31/4.9.table create mode 100644 definitions/grib2/tables/31/4.91.table create mode 100644 definitions/grib2/tables/31/5.0.table create mode 100644 definitions/grib2/tables/31/5.1.table create mode 100644 definitions/grib2/tables/31/5.2.table create mode 100644 definitions/grib2/tables/31/5.25.table create mode 100644 definitions/grib2/tables/31/5.26.table create mode 100644 definitions/grib2/tables/31/5.3.table create mode 100644 definitions/grib2/tables/31/5.4.table create mode 100644 definitions/grib2/tables/31/5.40.table create mode 100644 definitions/grib2/tables/31/5.5.table create mode 100644 definitions/grib2/tables/31/5.6.table create mode 100644 definitions/grib2/tables/31/5.7.table create mode 100644 definitions/grib2/tables/31/6.0.table diff --git a/definitions/grib2/boot.def b/definitions/grib2/boot.def index 6806a2565..32f262bef 100644 --- a/definitions/grib2/boot.def +++ b/definitions/grib2/boot.def @@ -9,9 +9,9 @@ # This gets updated twice a year by WMO. # See https://community.wmo.int/activity-areas/wmo-codes/manual-codes/latest-version -constant tablesVersionLatestOfficial = 30 : edition_specific; +constant tablesVersionLatestOfficial = 31 : edition_specific; # If this is different from the official version, then it is the pre-operational version -constant tablesVersionLatest = 30 : edition_specific; +constant tablesVersionLatest = 31 : edition_specific; constant million = 1000000 : hidden; constant grib2divider = 1000000; diff --git a/definitions/grib2/tables/1.0.table b/definitions/grib2/tables/1.0.table index 8401cd1a4..bcd9f7108 100644 --- a/definitions/grib2/tables/1.0.table +++ b/definitions/grib2/tables/1.0.table @@ -30,6 +30,7 @@ 28 28 Version implemented on 15 November 2021 29 29 Version implemented on 15 May 2022 30 30 Version implemented on 15 November 2022 -31 31 Pre-operational to be implemented by next amendment -# 32-254 Future versions +31 31 Version implemented on 15 May 2023 +32 32 Pre-operational to be implemented by next amendment +# 33-254 Future versions 255 255 Master tables not used. Local table entries and local templates may use the entire range of the table, not just those sections marked Reserved for local used. diff --git a/definitions/grib2/tables/31/0.0.table b/definitions/grib2/tables/31/0.0.table new file mode 100644 index 000000000..71ac57ab3 --- /dev/null +++ b/definitions/grib2/tables/31/0.0.table @@ -0,0 +1,13 @@ +# Code table 0.0 - Discipline of processed data in the GRIB message, number of GRIB Master table +0 0 Meteorological products +1 1 Hydrological products +2 2 Land surface products +3 3 Satellite remote sensing products (formerly Space products) +4 4 Space weather products +# 5-9 Reserved +10 10 Oceanographic products +# 11-19 Reserved +20 20 Health and socioeconomic impacts +# 21-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/31/1.0.table b/definitions/grib2/tables/31/1.0.table new file mode 100644 index 000000000..1dfcacf9a --- /dev/null +++ b/definitions/grib2/tables/31/1.0.table @@ -0,0 +1,36 @@ +# Code table 1.0 - GRIB master tables version number +0 0 Experimental +1 1 Version implemented on 7 November 2001 +2 2 Version implemented on 4 November 2003 +3 3 Version implemented on 2 November 2005 +4 4 Version implemented on 7 November 2007 +5 5 Version implemented on 4 November 2009 +6 6 Version implemented on 15 September 2010 +7 7 Version implemented on 4 May 2011 +8 8 Version implemented on 2 November 2011 +9 9 Version implemented on 2 May 2012 +10 10 Version implemented on 7 November 2012 +11 11 Version implemented on 8 May 2013 +12 12 Version implemented on 14 November 2013 +13 13 Version implemented on 7 May 2014 +14 14 Version implemented on 5 November 2014 +15 15 Version implemented on 6 May 2015 +16 16 Version implemented on 11 November 2015 +17 17 Version implemented on 4 May 2016 +18 18 Version implemented on 2 November 2016 +19 19 Version implemented on 3 May 2017 +20 20 Version implemented on 8 November 2017 +21 21 Version implemented on 2 May 2018 +22 22 Version implemented on 7 November 2018 +23 23 Version implemented on 15 May 2019 +24 24 Version implemented on 6 November 2019 +25 25 Version implemented on 6 May 2020 +26 26 Version implemented on 16 November 2020 +27 27 Version implemented on 15 June 2021 +28 28 Version implemented on 15 November 2021 +29 29 Version implemented on 15 May 2022 +30 30 Version implemented on 15 November 2022 +31 31 Version implemented on 15 May 2023 +32 32 Pre-operational to be implemented by next amendment +# 33-254 Future versions +255 255 Missing diff --git a/definitions/grib2/tables/31/1.1.table b/definitions/grib2/tables/31/1.1.table new file mode 100644 index 000000000..d50f8fd72 --- /dev/null +++ b/definitions/grib2/tables/31/1.1.table @@ -0,0 +1,4 @@ +# Code table 1.1 - GRIB local tables version number +0 0 Local tables not used. Only table entries and templates from the current master table are valid +# 1-254 Number of local tables version used +255 255 Missing diff --git a/definitions/grib2/tables/31/1.2.table b/definitions/grib2/tables/31/1.2.table new file mode 100644 index 000000000..44ea816e9 --- /dev/null +++ b/definitions/grib2/tables/31/1.2.table @@ -0,0 +1,9 @@ +# Code table 1.2 - Significance of reference time +0 0 Analysis +1 1 Start of forecast +2 2 Verifying time of forecast +3 3 Observation time +4 4 Local time +# 5-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/31/1.3.table b/definitions/grib2/tables/31/1.3.table new file mode 100644 index 000000000..dc138ef12 --- /dev/null +++ b/definitions/grib2/tables/31/1.3.table @@ -0,0 +1,16 @@ +# Code table 1.3 - Production status of data +0 0 Operational products +1 1 Operational test products +2 2 Research products +3 3 Re-analysis products +4 4 THORPEX Interactive Grand Global Ensemble (TIGGE) +5 5 THORPEX Interactive Grand Global Ensemble test (TIGGE) +6 6 S2S operational products +7 7 S2S test products +8 8 Uncertainties in Ensembles of Regional ReAnalyses project (UERRA) +9 9 Uncertainties in Ensembles of Regional ReAnalyses project test (UERRA) +10 10 Copernicus regional reanalysis (CARRA/CERRA) +11 11 Copernicus regional reanalysis test (CARRA/CERRA) +# 12-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/31/1.4.table b/definitions/grib2/tables/31/1.4.table new file mode 100644 index 000000000..03203d874 --- /dev/null +++ b/definitions/grib2/tables/31/1.4.table @@ -0,0 +1,13 @@ +# Code table 1.4 - Type of data +0 an Analysis products +1 fc Forecast products +2 af Analysis and forecast products +3 cf Control forecast products +4 pf Perturbed forecast products +5 cp Control and perturbed forecast products +6 sa Processed satellite observations +7 ra Processed radar observations +8 ep Event probability +# 9-191 Reserved +# 192-254 Reserved for local use +255 missing Missing diff --git a/definitions/grib2/tables/31/1.5.table b/definitions/grib2/tables/31/1.5.table new file mode 100644 index 000000000..b2cf9f087 --- /dev/null +++ b/definitions/grib2/tables/31/1.5.table @@ -0,0 +1,7 @@ +# Code table 1.5 - Identification template number +0 0 Calendar definition +1 1 Paleontological offset +2 2 Calendar definition and paleontological offset +# 3-32767 Reserved +# 32768-65534 Reserved for local use +65535 65535 Missing diff --git a/definitions/grib2/tables/31/1.6.table b/definitions/grib2/tables/31/1.6.table new file mode 100644 index 000000000..5db921990 --- /dev/null +++ b/definitions/grib2/tables/31/1.6.table @@ -0,0 +1,8 @@ +# Code table 1.6 - Type of calendar +0 0 Gregorian +1 1 360-day +2 2 365-day +3 3 Proleptic Gregorian +# 4-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/31/3.0.table b/definitions/grib2/tables/31/3.0.table new file mode 100644 index 000000000..45187b80d --- /dev/null +++ b/definitions/grib2/tables/31/3.0.table @@ -0,0 +1,6 @@ +# Code table 3.0 - Source of grid definition +0 0 Specified in Code table 3.1 +1 1 Predetermined grid definition (Defined by originating centre) +# 2-191 Reserved +# 192-254 Reserved for local use +255 255 A grid definition does not apply to this product diff --git a/definitions/grib2/tables/31/3.1.table b/definitions/grib2/tables/31/3.1.table new file mode 100644 index 000000000..60a5eddb4 --- /dev/null +++ b/definitions/grib2/tables/31/3.1.table @@ -0,0 +1,55 @@ +# Code table 3.1 - Grid definition template number +0 0 Latitude/longitude (Also called equidistant cylindrical, or Plate Carree) +1 1 Rotated latitude/longitude +2 2 Stretched latitude/longitude +3 3 Stretched and rotated latitude/longitude +4 4 Variable resolution latitude/longitude +5 5 Variable resolution rotated latitude/longitude +# 6-9 Reserved +10 10 Mercator +# 11 Reserved +12 12 Transverse Mercator +13 13 Mercator with modelling subdomains definition +# 14-19 Reserved +20 20 Polar stereographic projection (Can be south or north) +# 21-22 Reserved +23 23 Polar stereographic with modelling subdomains definition +# 24-29 Reserved +30 30 Lambert conformal (Can be secant or tangent, conical or bipolar) +31 31 Albers equal area +32 32 Reserved +33 33 Lambert conformal with modelling subdomains definition +# 34-39 Reserved +40 40 Gaussian latitude/longitude +41 41 Rotated Gaussian latitude/longitude +42 42 Stretched Gaussian latitude/longitude +43 43 Stretched and rotated Gaussian latitude/longitude +# 44-49 Reserved +50 50 Spherical harmonic coefficients +51 51 Rotated spherical harmonic coefficients +52 52 Stretched spherical harmonic coefficients +53 53 Stretched and rotated spherical harmonic coefficients +# 54-60 Reserved +61 61 Spectral Mercator with modelling subdomains definition +62 62 Spectral polar stereographic with modelling subdomains definition +63 63 Spectral Lambert conformal with modelling subdomains definition +# 64-89 Reserved +90 90 Space view perspective or orthographic +# 91-99 Reserved +100 100 Triangular grid based on an icosahedron +101 101 General unstructured grid +# 102-109 Reserved +110 110 Equatorial azimuthal equidistant projection +# 111-119 Reserved +120 120 Azimuth-range projection +# 121-139 Reserved +140 140 Lambert azimuthal equal area projection +# 141-999 Reserved +1000 1000 Cross-section grid with points equally spaced on the horizontal +# 1001-1099 Reserved +1100 1100 Hovmoller diagram grid with points equally spaced on the horizontal +# 1101-1199 Reserved +1200 1200 Time section grid +# 1201-32767 Reserved +# 32768-65534 Reserved for local use +65535 65535 Missing diff --git a/definitions/grib2/tables/31/3.10.table b/definitions/grib2/tables/31/3.10.table new file mode 100644 index 000000000..afa8843a7 --- /dev/null +++ b/definitions/grib2/tables/31/3.10.table @@ -0,0 +1,8 @@ +# Flag table 3.10 - Scanning mode for one diamond +1 0 Points scan in +i direction, i.e. from pole to Equator +1 1 Points scan in -i direction, i.e. from Equator to pole +2 0 Points scan in +j direction, i.e. from west to east +2 1 Points scan in -j direction, i.e. from east to west +3 0 Adjacent points in i direction are consecutive +3 1 Adjacent points in j direction are consecutive +# 4-8 Reserved diff --git a/definitions/grib2/tables/31/3.11.table b/definitions/grib2/tables/31/3.11.table new file mode 100644 index 000000000..e516a2ab9 --- /dev/null +++ b/definitions/grib2/tables/31/3.11.table @@ -0,0 +1,7 @@ +# Code table 3.11 - Interpretation of list of numbers at end of section 3 +0 0 There is no appended list +1 1 Numbers define number of points corresponding to full coordinate circles (i.e. parallels), coordinate values on each circle are multiple of the circle mesh, and extreme coordinate values given in grid definition (i.e. extreme longitudes) may not be reached in all rows +2 2 Numbers define number of points corresponding to coordinate lines delimited by extreme coordinate values given in grid definition (i.e. extreme longitudes) which are present in each row +3 3 Numbers define the actual latitudes for each row in the grid. The list of numbers are integer values of the valid latitudes in microdegrees (scaled by 10-6) or in unit equal to the ratio of the basic angle and the subdivisions number for each row, in the same order as specified in the scanning mode flag (bit no. 2) +# 4-254 Reserved +255 255 Missing diff --git a/definitions/grib2/tables/31/3.15.table b/definitions/grib2/tables/31/3.15.table new file mode 100644 index 000000000..7c4626b88 --- /dev/null +++ b/definitions/grib2/tables/31/3.15.table @@ -0,0 +1,23 @@ +# Code table 3.15 - Physical meaning of vertical coordinate +# 0-19 Reserved +20 20 Temperature (K) +# 21-99 Reserved +100 100 Pressure (Pa) +101 101 Pressure deviation from mean sea level (Pa) +102 102 Altitude above mean sea level (m) +103 103 Height above ground (m) +104 104 Sigma coordinate +105 105 Hybrid coordinate +106 106 Depth below land surface (m) +107 pt Potential temperature (theta) (K) +108 108 Pressure deviation from ground to level (Pa) +109 pv Potential vorticity (K m2 kg-1 s-1) +110 110 Geometrical height (m) +111 111 Eta coordinate +112 112 Geopotential height (gpm) +113 113 Logarithmic hybrid coordinate +# 114-159 Reserved +160 160 Depth below sea level (m) +# 161-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/31/3.2.table b/definitions/grib2/tables/31/3.2.table new file mode 100644 index 000000000..bc3b653d0 --- /dev/null +++ b/definitions/grib2/tables/31/3.2.table @@ -0,0 +1,16 @@ +# Code table 3.2 - Shape of the reference system +0 0 Earth assumed spherical with radius = 6 367 470.0 m +1 1 Earth assumed spherical with radius specified (in m) by data producer +2 2 Earth assumed oblate spheroid with size as determined by IAU in 1965 (major axis = 6 378 160.0 m, minor axis = 6 356 775.0 m, f = 1/297.0) +3 3 Earth assumed oblate spheroid with major and minor axes specified (in km) by data producer +4 4 Earth assumed oblate spheroid as defined in IAG-GRS80 model (major axis = 6 378 137.0 m, minor axis = 6 356 752.314 m, f = 1/298.257 222 101) +5 5 Earth assumed represented by WGS-84 (as used by ICAO since 1998) +6 6 Earth assumed spherical with radius of 6 371 229.0 m +7 7 Earth assumed oblate spheroid with major or minor axes specified (in m) by data producer +8 8 Earth model assumed spherical with radius of 6 371 200 m, but the horizontal datum of the resulting latitude/longitude field is the WGS-84 reference frame +9 9 Earth represented by the Ordnance Survey Great Britain 1936 Datum, using the Airy 1830 Spheroid, the Greenwich meridian as 0 longitude, and the Newlyn datum as mean sea level, 0 height +10 10 Earth model assumed WGS84 with corrected geomagnetic coordinates (latitude and longitude) defined by Gustafsson et al., 1992 +11 11 Sun assumed spherical with radius = 695 990 000 m (Allen, C.W., Astrophysical Quantities, 3rd ed.; Athlone: London, 1976) and Stonyhurst latitude and longitude system with origin at the intersection of the solar central meridian (as seen from Earth) and the solar equator (Thompson, W., Coordinate systems for solar image data, Astron. Astrophys. 2006, 449, 791-803) +# 12-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/31/3.20.table b/definitions/grib2/tables/31/3.20.table new file mode 100644 index 000000000..efbf08d19 --- /dev/null +++ b/definitions/grib2/tables/31/3.20.table @@ -0,0 +1,6 @@ +# Code table 3.20 - Type of horizontal line +0 0 Rhumb +1 1 Great circle +# 2-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/31/3.21.table b/definitions/grib2/tables/31/3.21.table new file mode 100644 index 000000000..88dbb9019 --- /dev/null +++ b/definitions/grib2/tables/31/3.21.table @@ -0,0 +1,8 @@ +# Code table 3.21 - Vertical dimension coordinate values definition +0 0 Explicit coordinate values set +1 1 Linear coordinates f(1) = C1, f(n) = f(n-1) + C2 +# 2-10 Reserved +11 11 Geometric coordinates f(1) = C1, f(n) = C2 * f(n-1) +# 12-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/31/3.25.table b/definitions/grib2/tables/31/3.25.table new file mode 100644 index 000000000..de1bc74ed --- /dev/null +++ b/definitions/grib2/tables/31/3.25.table @@ -0,0 +1,10 @@ +# Code table 3.25 - Type of bi-Fourier truncation +# 0-76 Reserved +77 77 Rectangular +# 78-87 Reserved +88 88 Elliptic +# 89-98 Reserved +99 99 Diamond +# 100-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/31/3.3.table b/definitions/grib2/tables/31/3.3.table new file mode 100644 index 000000000..5dd7c7001 --- /dev/null +++ b/definitions/grib2/tables/31/3.3.table @@ -0,0 +1,9 @@ +# Flag table 3.3 - Resolution and component flags +# 1-2 Reserved +3 0 i direction increments not given +3 1 i direction increments given +4 0 j direction increments not given +4 1 j direction increments given +5 0 Resolved u- and v- components of vector quantities relative to easterly and northerly directions +5 1 Resolved u- and v- components of vector quantities relative to the defined grid in the direction of increasing x and y (or i and j) coordinates, respectively +# 6-8 Reserved - set to zero diff --git a/definitions/grib2/tables/31/3.4.table b/definitions/grib2/tables/31/3.4.table new file mode 100644 index 000000000..e5a628e45 --- /dev/null +++ b/definitions/grib2/tables/31/3.4.table @@ -0,0 +1,17 @@ +# Flag table 3.4 - Scanning mode +1 0 Points of first row or column scan in the +i (+x) direction +1 1 Points of first row or column scan in the -i (-x) direction +2 0 Points of first row or column scan in the -j (-y) direction +2 1 Points of first row or column scan in the +j (+y) direction +3 0 Adjacent points in i (x) direction are consecutive +3 1 Adjacent points in j (y) direction is consecutive +4 0 All rows scan in the same direction +4 1 Adjacent rows scan in the opposite direction +5 0 Points within odd rows are not offset in i (x) direction +5 1 Points within odd rows are offset by Di/2 in i (x) direction +6 0 Points within even rows are not offset in i (x) direction +6 1 Points within even rows are offset by Di/2 in i (x) direction +7 0 Points are not offset in j (y) direction +7 1 Points are offset by Dj/2 in j (y) direction +8 0 Rows have Ni grid points and columns have Nj grid points +8 1 Rows have Ni grid points if points are not offset in i direction Rows have Ni-1 grid points if points are offset by Di/2 in i direction Columns have Nj grid points if points are not offset in j direction Columns have Nj-1 grid points if points are offset by Dj/2 in j direction diff --git a/definitions/grib2/tables/31/3.5.table b/definitions/grib2/tables/31/3.5.table new file mode 100644 index 000000000..eabdde896 --- /dev/null +++ b/definitions/grib2/tables/31/3.5.table @@ -0,0 +1,5 @@ +# Flag table 3.5 - Projection centre +1 0 North Pole is on the projection plane +1 1 South Pole is on the projection plane +2 0 Only one projection centre is used +2 1 Projection is bipolar and symmetric diff --git a/definitions/grib2/tables/31/3.6.table b/definitions/grib2/tables/31/3.6.table new file mode 100644 index 000000000..3133b9cfe --- /dev/null +++ b/definitions/grib2/tables/31/3.6.table @@ -0,0 +1,3 @@ +# Code table 3.6 - Spectral data representation type +1 1 see separate doc or pdf file +2 2 Bi-Fourier representation diff --git a/definitions/grib2/tables/31/3.7.table b/definitions/grib2/tables/31/3.7.table new file mode 100644 index 000000000..cd566487b --- /dev/null +++ b/definitions/grib2/tables/31/3.7.table @@ -0,0 +1,5 @@ +# Code table 3.7 - Spectral data representation mode +0 0 Reserved +1 1 see separate doc or pdf file +# 2-254 Reserved +255 255 Missing diff --git a/definitions/grib2/tables/31/3.8.table b/definitions/grib2/tables/31/3.8.table new file mode 100644 index 000000000..844e74235 --- /dev/null +++ b/definitions/grib2/tables/31/3.8.table @@ -0,0 +1,7 @@ +# Code table 3.8 - Grid point position +0 0 Grid points at triangle vertices +1 1 Grid points at centres of triangles +2 2 Grid points at midpoints of triangle sides +# 3-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/31/3.9.table b/definitions/grib2/tables/31/3.9.table new file mode 100644 index 000000000..fd730bc64 --- /dev/null +++ b/definitions/grib2/tables/31/3.9.table @@ -0,0 +1,4 @@ +# Flag table 3.9 - Numbering order of diamonds as seen from the corresponding pole +1 0 Clockwise orientation +1 1 Anti-clockwise (i.e. counter-clockwise) orientation +# 2-8 Reserved diff --git a/definitions/grib2/tables/31/4.0.table b/definitions/grib2/tables/31/4.0.table new file mode 100644 index 000000000..7c34c45f3 --- /dev/null +++ b/definitions/grib2/tables/31/4.0.table @@ -0,0 +1,108 @@ +# Code table 4.0 - Product definition template number +0 0 Analysis or forecast at a horizontal level or in a horizontal layer at a point in time +1 1 Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time +2 2 Derived forecasts based on all ensemble members at a horizontal level or in a horizontal layer at a point in time +3 3 Derived forecasts based on a cluster of ensemble members over a rectangular area at a horizontal level or in a horizontal layer at a point in time +4 4 Derived forecasts based on a cluster of ensemble members over a circular area at a horizontal level or in a horizontal layer at a point in time +5 5 Probability forecasts at a horizontal level or in a horizontal layer at a point in time +6 6 Percentile forecasts at a horizontal level or in a horizontal layer at a point in time +7 7 Analysis or forecast error at a horizontal level or in a horizontal layer at a point in time +8 8 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 +9 9 Probability forecasts at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval +10 10 Percentile forecasts at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval +11 11 Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer, in a continuous or non-continuous interval +12 12 Derived forecasts based on all ensemble members at a horizontal level or in a horizontal layer, in a continuous or non-continuous interval +13 13 Derived forecasts based on a cluster of ensemble members over a rectangular area, at a horizontal level or in a horizontal layer, in a continuous or non-continuous interval +14 14 Derived forecasts based on a cluster of ensemble members over a circular area, at a horizontal level or in a horizontal layer, in a continuous or non-continuous interval +15 15 Average, accumulation, extreme values or other statistically processed values over a spatial area at a horizontal level or in a horizontal layer at a point in time +# 16-19 Reserved +20 20 Radar product +# 21-29 Reserved +30 30 Satellite product (deprecated) +31 31 Satellite product +32 32 Analysis or forecast at a horizontal level or in a horizontal layer at a point in time for simulated (synthetic) satellite data +33 33 Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time for simulated (synthetic) satellite data +34 34 Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer, in a continuous or non-continuous interval for simulated (synthetic) satellite data +35 35 Satellite product with or without associated quality values +# 36-39 Reserved +40 40 Analysis or forecast at a horizontal level or in a horizontal layer at a point in time for atmospheric chemical constituents +41 41 Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time for atmospheric chemical constituents +42 42 Average, accumulation, and/or extreme values or other statistically processed values at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval for atmospheric chemical constituents +43 43 Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval for atmospheric chemical constituents +44 44 Analysis or forecast at a horizontal level or in a horizontal layer at a point in time for aerosol +45 45 Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time for aerosol +46 46 Average, accumulation, and/or extreme values or other statistically processed values at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval for aerosol +47 47 Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval for aerosol +48 48 Analysis or forecast at a horizontal level or in a horizontal layer at a point in time for optical properties of aerosol +49 49 Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time for optical properties of aerosol +# 50 Reserved +51 51 Categorical forecasts at a horizontal level or in a horizontal layer at a point in time +# 52 Reserved +53 53 Partitioned parameters at a horizontal level or in a horizontal layer at a point in time +54 54 Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time for partitioned parameters +55 55 Spatio-temporal changing tiles at a horizontal level or horizontal layer at a point in time +56 56 Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time for spatio-temporal changing tile parameters (deprecated) +57 57 Analysis or forecast at a horizontal level or in a horizontal layer at a point in time for atmospheric chemical constituents based on a distribution function +58 58 Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time for atmospheric chemical constituents based on a distribution function +59 59 Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time for spatio-temporal changing tile parameters (corrected version of template 4.56) +60 60 Individual ensemble reforecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time +61 61 Individual ensemble reforecast, control and perturbed, at a horizontal level or in a horizontal layer, in a continuous or non-continuous time interval +62 62 Average, accumulation, and/or extreme values or other statistically processed values at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval for spatio-temporal changing tiles at a horizontal level or horizontal layer at a point in time +63 63 Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval for spatio-temporal changing tiles +# 64-66 Reserved +67 67 Average, accumulation, and/or extreme values or other statistically processed values at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval for atmospheric chemical constituents based on a distribution function +68 68 Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval for atmospheric chemical constituents based on a distribution function +# 69 Reserved +70 70 Post-processing analysis or forecast at a horizontal level or in a horizontal layer at a point in time +71 71 Post-processing individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time +72 72 Post-processing 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 +73 73 Post-processing individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer, in a continuous or non-continuous time interval +# 74-75 Reserved +76 76 Analysis or forecast at a horizontal level or in a horizontal layer at a point in time for atmospheric chemical constituents with source or sink +77 77 Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time for atmospheric chemical constituents with source or sink +78 78 Average, accumulation, and/or extreme values or other statistically processed values at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval for atmospheric chemical constituents with source or sink +79 79 Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval for atmospheric chemical constituents with source or sink +80 80 Analysis or forecast at a horizontal level or in a horizontal layer at a point in time for optical properties of aerosol with source or sink +81 81 Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time for optical properties of aerosol with source or sink +82 82 Average, accumulation, and/or extreme values or other statistically processed values at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval for aerosol with source or sink +83 83 Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval for aerosol with source or sink +84 84 Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval for aerosol with source or sink +85 85 Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval for aerosol +86 86 Quantile forecasts at a horizontal level or in a horizontal layer at a point in time +87 87 Quantile forecasts at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval +88 88 Analysis or forecast at a horizontal level or in a horizontal layer at a specified local time +# 89-90 Reserved +91 91 Categorical forecasts at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval +92 92 Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a specified local time +93 93 Post-processing analysis or forecast at a horizontal level or in a horizontal layer at a specified local time +94 94 Post-processing individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a specified local time +95 95 Average, accumulation, extreme values or other statiscally processed value at a horizontal level or in a horizontal layer at a specified local time +96 96 Average, accumulation, extreme values or other statistically processed values of an individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a specified local time +97 97 Average, accumulation, extreme values or other statistically processed values of post-processing analysis or forecast at a horizontal level or in a horizontal layer at a specified local time +98 98 Average, accumulation, extreme values or other statistically processed values of a post-processing individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a specified local time +99 99 Analysis or forecast at a horizontal level or in a horizontal layer at a point in time for wave 2D spectra with explicit list of frequencies and directions +100 100 Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time for wave 2D spectra with explicit list of frequencies and directions +101 101 Analysis or forecast at a horizontal level or in a horizontal layer at a point in time for wave 2D spectra with frequencies and directions defined by formulae +102 102 Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time for wave 2D spectra with frequencies and directions defined by formulae +103 103 Analysis or forecast at a horizontal level or in a horizontal layer at a point in time for waves selected by period range +104 104 Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time for waves selected by period range +105 105 Anomalies, significance and other derived products from an analysis or forecast in relation to a reference period at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval +106 106 Anomalies, significance and other derived products from an individual ensemble forecast, control and perturbed in relation to a reference period at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval +107 107 Anomalies, significance and other derived products from derived forecasts based on all ensemble members in relation to a reference period at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval +108 108 Analysis or forecast at a horizontal level or in a horizontal layer at a point in time for generic optical products +109 109 Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time for generic optical products +110 110 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 for generic optical products +111 111 Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer, in a continuous or non-continuous interval for generic optical products +112 112 Anomalies, significance and other derived products as probability forecasts in relation to a reference period at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval +# 113-253 Reserved +254 254 CCITT IA5 character string +# 255-999 Reserved +1000 1000 Cross-section of analysis and forecast at a point in time +1001 1001 Cross-section of averaged or otherwise statistically processed analysis or forecast over a range of time +1002 1002 Cross-section of analysis and forecast, averaged or otherwise statistically processed over latitude or longitude +# 1003-1099 Reserved +1100 1100 Hovmoller-type grid with no averaging or other statistical processing +1101 1101 Hovmoller-type grid with averaging or other statistical processing +# 1102-32767 Reserved +# 32768-65534 Reserved for local use +65535 65535 Missing diff --git a/definitions/grib2/tables/31/4.1.0.table b/definitions/grib2/tables/31/4.1.0.table new file mode 100644 index 000000000..9462cde19 --- /dev/null +++ b/definitions/grib2/tables/31/4.1.0.table @@ -0,0 +1,28 @@ +# Product discipline 0 - Meteorological products +0 0 Temperature +1 1 Moisture +2 2 Momentum +3 3 Mass +4 4 Short-wave radiation +5 5 Long-wave radiation +6 6 Cloud +7 7 Thermodynamic stability indices +8 8 Kinematic stability indices +9 9 Temperature probabilities +10 10 Moisture probabilities +11 11 Momentum probabilities +12 12 Mass probabilities +13 13 Aerosols +14 14 Trace gases (e.g. ozone, CO2) +15 15 Radar +16 16 Forecast radar imagery +17 17 Electrodynamics +18 18 Nuclear/radiology +19 19 Physical atmospheric properties +20 20 Atmospheric chemical constituents +21 21 Thermodynamic properties +# 22-189 Reserved +190 190 CCITT IA5 string +191 191 Miscellaneous +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/31/4.1.1.table b/definitions/grib2/tables/31/4.1.1.table new file mode 100644 index 000000000..20af0032a --- /dev/null +++ b/definitions/grib2/tables/31/4.1.1.table @@ -0,0 +1,7 @@ +# Product discipline 1 - Hydrological products +0 0 Hydrology basic products +1 1 Hydrology probabilities +2 2 Inland water and sediment properties +# 3-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/31/4.1.10.table b/definitions/grib2/tables/31/4.1.10.table new file mode 100644 index 000000000..afaea7619 --- /dev/null +++ b/definitions/grib2/tables/31/4.1.10.table @@ -0,0 +1,10 @@ +# Product discipline 10 - Oceanographic products +0 0 Waves +1 1 Currents +2 2 Ice +3 3 Surface properties +4 4 Subsurface properties +# 5-190 Reserved +191 191 Miscellaneous +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/31/4.1.192.table b/definitions/grib2/tables/31/4.1.192.table new file mode 100644 index 000000000..c428acab0 --- /dev/null +++ b/definitions/grib2/tables/31/4.1.192.table @@ -0,0 +1,4 @@ +#Discipline 192: ECMWF local parameters +255 255 Missing + + diff --git a/definitions/grib2/tables/31/4.1.2.table b/definitions/grib2/tables/31/4.1.2.table new file mode 100644 index 000000000..3d67e0ceb --- /dev/null +++ b/definitions/grib2/tables/31/4.1.2.table @@ -0,0 +1,11 @@ +# Product discipline 2 - Land surface products +0 0 Vegetation/biomass +1 1 Agri-/aquacultural special products +2 2 Transportation-related products +3 3 Soil products +4 4 Fire weather products +5 5 Glaciers and inland ice +6 6 Urban areas +# 7-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/31/4.1.20.table b/definitions/grib2/tables/31/4.1.20.table new file mode 100644 index 000000000..235ed5810 --- /dev/null +++ b/definitions/grib2/tables/31/4.1.20.table @@ -0,0 +1,7 @@ +# Product discipline 20 - Health and socioeconomic impacts +0 0 Health indicators +1 1 Epidemiology +2 2 Socioeconomic indicators +# 3-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/31/4.1.3.table b/definitions/grib2/tables/31/4.1.3.table new file mode 100644 index 000000000..130b899bf --- /dev/null +++ b/definitions/grib2/tables/31/4.1.3.table @@ -0,0 +1,11 @@ +# Product discipline 3 - Satellite remote sensing products (formerly Space products) +0 0 Image format products +1 1 Quantitative products +2 2 Cloud properties +3 3 Flight rule conditions +4 4 Volcanic ash +5 5 Sea-surface temperature +6 6 Solar radiation +# 7-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/31/4.1.4.table b/definitions/grib2/tables/31/4.1.4.table new file mode 100644 index 000000000..3c769dcf7 --- /dev/null +++ b/definitions/grib2/tables/31/4.1.4.table @@ -0,0 +1,15 @@ +# Product discipline 4 - Space weather products +0 0 Temperature +1 1 Momentum +2 2 Charged particle mass and number +3 3 Electric and magnetic fields +4 4 Energetic particles +5 5 Waves +6 6 Solar electromagnetic emissions +7 7 Terrestrial electromagnetic emissions +8 8 Imagery +9 9 Ion-neutral coupling +10 10 Space weather indices +# 11-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/31/4.10.table b/definitions/grib2/tables/31/4.10.table new file mode 100644 index 000000000..1eee9c096 --- /dev/null +++ b/definitions/grib2/tables/31/4.10.table @@ -0,0 +1,20 @@ +# Code table 4.10 - Type of statistical processing +0 avg Average +1 accum Accumulation +2 max Maximum +3 min Minimum +4 diff Difference (value at the end of time range minus value at the beginning) +5 rms Root mean square +6 sd Standard deviation +7 cov Covariance (temporal variance) +8 8 Difference (value at the start of time range minus value at the end) +9 ratio Ratio +10 10 Standardized anomaly +11 11 Summation +12 12 Return period +# 13-99 Reserved +100 100 Severity +101 101 Mode +# 102-191 Reserved +# 192-254 Reserved for local use +255 missing Missing diff --git a/definitions/grib2/tables/31/4.100.table b/definitions/grib2/tables/31/4.100.table new file mode 100644 index 000000000..c31865fb2 --- /dev/null +++ b/definitions/grib2/tables/31/4.100.table @@ -0,0 +1,10 @@ +# Code table 4.100 - Type of reference dataset +0 0 Analysis +1 1 Forecast +2 2 Reforecast (Hindcast) +3 3 Reanalysis +4 4 Climate projection +5 5 Gridded observations +# 6-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/31/4.101.table b/definitions/grib2/tables/31/4.101.table new file mode 100644 index 000000000..7b0c295f3 --- /dev/null +++ b/definitions/grib2/tables/31/4.101.table @@ -0,0 +1,10 @@ +# Code table 4.101 - Type of relationship to reference dataset +0 0 Anomaly +1 1 Standardized anomaly +2 2 Significance (Wilcoxon-Mann-Whitney) +# 3-19 Reserved +20 20 Extreme Forecast Index (EFI) +21 21 Shift of Tails (SOT) +# 22-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/31/4.102.table b/definitions/grib2/tables/31/4.102.table new file mode 100644 index 000000000..e24b1bf29 --- /dev/null +++ b/definitions/grib2/tables/31/4.102.table @@ -0,0 +1,11 @@ +# Code table 4.102 - Statistical processing of reference period +0 0 Average +1 1 Accumulation +2 2 Maximum +3 3 Minimum +4 4 Median +# 5-19 Reserved +20 20 Model Climate +# 21-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/31/4.11.table b/definitions/grib2/tables/31/4.11.table new file mode 100644 index 000000000..7f404c849 --- /dev/null +++ b/definitions/grib2/tables/31/4.11.table @@ -0,0 +1,10 @@ +# Code table 4.11 - Type of time intervals +0 0 Reserved +1 1 Successive times processed have same forecast time, start time of forecast is incremented +2 2 Successive times processed have same start time of forecast, forecast time is incremented +3 3 Successive times processed have start time of forecast incremented and forecast time decremented so that valid time remains constant +4 4 Successive times processed have start time of forecast decremented and forecast time incremented so that valid time remains constant +5 5 Floating subinterval of time between forecast time and end of overall time interval +# 6-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/31/4.12.table b/definitions/grib2/tables/31/4.12.table new file mode 100644 index 000000000..03fd89b36 --- /dev/null +++ b/definitions/grib2/tables/31/4.12.table @@ -0,0 +1,7 @@ +# Code table 4.12 - Operating mode +0 0 Maintenance mode +1 1 Clear air +2 2 Precipitation +# 3-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/31/4.13.table b/definitions/grib2/tables/31/4.13.table new file mode 100644 index 000000000..c92854eec --- /dev/null +++ b/definitions/grib2/tables/31/4.13.table @@ -0,0 +1,6 @@ +# Code table 4.13 - Quality control indicator +0 0 No quality control applied +1 1 Quality control applied +# 2-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/31/4.14.table b/definitions/grib2/tables/31/4.14.table new file mode 100644 index 000000000..a88cb93fa --- /dev/null +++ b/definitions/grib2/tables/31/4.14.table @@ -0,0 +1,6 @@ +# Code table 4.14 - Clutter filter indicator +0 0 No clutter filter used +1 1 Clutter filter used +# 2-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/31/4.15.table b/definitions/grib2/tables/31/4.15.table new file mode 100644 index 000000000..2e5f3dea3 --- /dev/null +++ b/definitions/grib2/tables/31/4.15.table @@ -0,0 +1,11 @@ +# Code table 4.15 - Type of spatial processing used to arrive at given data value from the source data +0 0 Data is calculated directly from the source grid with no interpolation +1 1 Bilinear interpolation using the 4 source grid grid-point values surrounding the nominal grid-point +2 2 Bicubic interpolation using the 4 source grid grid-point values surrounding the nominal grid-point +3 3 Using the value from the source grid grid-point which is nearest to the nominal grid-point +4 4 Budget interpolation using the 4 source grid grid-point values surrounding the nominal grid-point +5 5 Spectral interpolation using the 4 source grid grid-point values surrounding the nominal grid-point +6 6 Neighbor-budget interpolation using the 4 source grid grid-point values surrounding the nominal grid-point +# 7-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/31/4.16.table b/definitions/grib2/tables/31/4.16.table new file mode 100644 index 000000000..fedb05324 --- /dev/null +++ b/definitions/grib2/tables/31/4.16.table @@ -0,0 +1,10 @@ +# Code table 4.16 - Quality value associated with parameter +0 0 Confidence index +1 1 Quality indicator +2 2 Correlation of product with used calibration product +3 3 Standard deviation +4 4 Random error +5 5 Probability +# 6-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/31/4.192.table b/definitions/grib2/tables/31/4.192.table new file mode 100644 index 000000000..e1fd91594 --- /dev/null +++ b/definitions/grib2/tables/31/4.192.table @@ -0,0 +1,4 @@ +1 1 first +2 2 second +3 3 third +4 4 fourth diff --git a/definitions/grib2/tables/31/4.2.0.0.table b/definitions/grib2/tables/31/4.2.0.0.table new file mode 100644 index 000000000..a2dff3668 --- /dev/null +++ b/definitions/grib2/tables/31/4.2.0.0.table @@ -0,0 +1,37 @@ +# Product discipline 0 - Meteorological products, parameter category 0: temperature +0 0 Temperature (K) +1 1 Virtual temperature (K) +2 2 Potential temperature (K) +3 3 Pseudo-adiabatic potential temperature or equivalent potential temperature (K) +4 4 Maximum temperature (K) +5 5 Minimum temperature (K) +6 6 Dewpoint temperature (K) +7 7 Dewpoint depression (or deficit) (K) +8 8 Lapse rate (K/m) +9 9 Temperature anomaly (K) +10 10 Latent heat net flux (W m-2) +11 11 Sensible heat net flux (W m-2) +12 12 Heat index (K) +13 13 Wind chill factor (K) +14 14 Minimum dewpoint depression (K) +15 15 Virtual potential temperature (K) +16 16 Snow phase change heat flux (W m-2) +17 17 Skin temperature (K) +18 18 Snow temperature (top of snow) (K) +19 19 Turbulent transfer coefficient for heat (Numeric) +20 20 Turbulent diffusion coefficient for heat (m2/s) +21 21 Apparent temperature (K) +22 22 Temperature tendency due to short-wave radiation (K s-1) +23 23 Temperature tendency due to long-wave radiation (K s-1) +24 24 Temperature tendency due to short-wave radiation, clear sky (K s-1) +25 25 Temperature tendency due to long-wave radiation, clear sky (K s-1) +26 26 Temperature tendency due to parameterization (K s-1) +27 27 Wet-bulb temperature (K) +28 28 Unbalanced component of temperature (K) +29 29 Temperature advection (K s-1) +30 30 Latent heat net flux due to evaporation (W m-2) +31 31 Latent heat net flux due to sublimation (W m-2) +32 32 Wet-bulb potential temperature (K) +# 33-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/31/4.2.0.1.table b/definitions/grib2/tables/31/4.2.0.1.table new file mode 100644 index 000000000..85bc9fb64 --- /dev/null +++ b/definitions/grib2/tables/31/4.2.0.1.table @@ -0,0 +1,172 @@ +# Product discipline 0 - Meteorological products, parameter category 1: moisture +0 0 Specific humidity (kg/kg) +1 1 Relative humidity (%) +2 2 Humidity mixing ratio (kg/kg) +3 3 Precipitable water (kg m-2) +4 4 Vapour pressure (Pa) +5 5 Saturation deficit (Pa) +6 6 Evaporation (kg m-2) +7 7 Precipitation rate (kg m-2 s-1) +8 8 Total precipitation (kg m-2) +9 9 Large-scale precipitation (non-convective) (kg m-2) +10 10 Convective precipitation (kg m-2) +11 11 Snow depth (m) +12 12 Snowfall rate water equivalent (kg m-2 s-1) +13 13 Water equivalent of accumulated snow depth (kg m-2) +14 14 Convective snow (kg m-2) +15 15 Large-scale snow (kg m-2) +16 16 Snow melt (kg m-2) +17 17 Snow age (d) +18 18 Absolute humidity (kg m-3) +19 19 Precipitation type (Code table 4.201) +20 20 Integrated liquid water (kg m-2) +21 21 Condensate (kg/kg) +22 22 Cloud mixing ratio (kg/kg) +23 23 Ice water mixing ratio (kg/kg) +24 24 Rain mixing ratio (kg/kg) +25 25 Snow mixing ratio (kg/kg) +26 26 Horizontal moisture convergence (kg kg-1 s-1) +27 27 Maximum relative humidity (%) +28 28 Maximum absolute humidity (kg m-3) +29 29 Total snowfall (m) +30 30 Precipitable water category (Code table 4.202) +31 31 Hail (m) +32 32 Graupel (snow pellets) (kg/kg) +33 33 Categorical rain (Code table 4.222) +34 34 Categorical freezing rain (Code table 4.222) +35 35 Categorical ice pellets (Code table 4.222) +36 36 Categorical snow (Code table 4.222) +37 37 Convective precipitation rate (kg m-2 s-1) +38 38 Horizontal moisture divergence (kg kg-1 s-1) +39 39 Per cent frozen precipitation (%) +40 40 Potential evaporation (kg m-2) +41 41 Potential evaporation rate (W m-2) +42 42 Snow cover (%) +43 43 Rain fraction of total cloud water (Proportion) +44 44 Rime factor (Numeric) +45 45 Total column integrated rain (kg m-2) +46 46 Total column integrated snow (kg m-2) +47 47 Large scale water precipitation (non-convective) (kg m-2) +48 48 Convective water precipitation (kg m-2) +49 49 Total water precipitation (kg m-2) +50 50 Total snow precipitation (kg m-2) +51 51 Total column water [Vertically integrated total water=vapour + cloud water/ice] (kg m-2) +52 52 Total precipitation rate (kg m-2 s-1) +53 53 Total snowfall rate water equivalent (kg m-2 s-1) +54 54 Large scale precipitation rate (kg m-2 s-1) +55 55 Convective snowfall rate water equivalent (kg m-2 s-1) +56 56 Large scale snowfall rate water equivalent (kg m-2 s-1) +57 57 Total snowfall rate (m/s) +58 58 Convective snowfall rate (m/s) +59 59 Large scale snowfall rate (m/s) +60 60 Snow depth water equivalent (kg m-2) +61 61 Snow density (kg m-3) +62 62 Snow evaporation (kg m-2) +63 63 Reserved +64 64 Total column integrated water vapour (kg m-2) +65 65 Rain precipitation rate (kg m-2 s-1) +66 66 Snow precipitation rate (kg m-2 s-1) +67 67 Freezing rain precipitation rate (kg m-2 s-1) +68 68 Ice pellets precipitation rate (kg m-2 s-1) +69 69 Total column integrated cloud water (kg m-2) +70 70 Total column integrated cloud ice (kg m-2) +71 71 Hail mixing ratio (kg/kg) +72 72 Total column integrated hail (kg m-2) +73 73 Hail precipitation rate (kg m-2 s-1) +74 74 Total column integrated graupel (kg m-2) +75 75 Graupel (snow pellets) precipitation rate (kg m-2 s-1) +76 76 Convective rain rate (kg m-2 s-1) +77 77 Large scale rain rate (kg m-2 s-1) +78 78 Total column integrated water (all components including precipitation) (kg m-2) +79 79 Evaporation rate (kg m-2 s-1) +80 80 Total condensate (kg/kg) +81 81 Total column-integrated condensate (kg m-2) +82 82 Cloud ice mixing-ratio (kg/kg) +83 83 Specific cloud liquid water content (kg/kg) +84 84 Specific cloud ice water content (kg/kg) +85 85 Specific rainwater content (kg/kg) +86 86 Specific snow water content (kg/kg) +87 87 Stratiform precipitation rate (kg m-2 s-1) +88 88 Categorical convective precipitation (Code table 4.222) +# 89 Reserved +90 90 Total kinematic moisture flux (kg kg-1 m s-1) +91 91 u-component (zonal) kinematic moisture flux (kg kg-1 m s-1) +92 92 v-component (meridional) kinematic moisture flux (kg kg-1 m s-1) +93 93 Relative humidity with respect to water (%) +94 94 Relative humidity with respect to ice (%) +95 95 Freezing or frozen precipitation rate (kg m-2 s-1) +96 96 Mass density of rain (kg m-3) +97 97 Mass density of snow (kg m-3) +98 98 Mass density of graupel (kg m-3) +99 99 Mass density of hail (kg m-3) +100 100 Specific number concentration of rain (kg-1) +101 101 Specific number concentration of snow (kg-1) +102 102 Specific number concentration of graupel (kg-1) +103 103 Specific number concentration of hail (kg-1) +104 104 Number density of rain (m-3) +105 105 Number density of snow (m-3) +106 106 Number density of graupel (m-3) +107 107 Number density of hail (m-3) +108 108 Specific humidity tendency due to parameterization (kg kg-1 s-1) +109 109 Mass density of liquid water coating on hail expressed as mass of liquid water per unit volume of air (kg m-3) +110 110 Specific mass of liquid water coating on hail expressed as mass of liquid water per unit mass of moist air (kg kg-1) +111 111 Mass mixing ratio of liquid water coating on hail expressed as mass of liquid water per unit mass of dry air (kg kg-1) +112 112 Mass density of liquid water coating on graupel expressed as mass of liquid water per unit volume of air (kg m-3) +113 113 Specific mass of liquid water coating on graupel expressed as mass of liquid water per unit mass of moist air (kg kg-1) +114 114 Mass mixing ratio of liquid water coating on graupel expressed as mass of liquid water per unit mass of dry air (kg kg-1) +115 115 Mass density of liquid water coating on snow expressed as mass of liquid water per unit volume of air (kg m-3) +116 116 Specific mass of liquid water coating on snow expressed as mass of liquid water per unit mass of moist air (kg kg-1) +117 117 Mass mixing ratio of liquid water coating on snow expressed as mass of liquid water per unit mass of dry air (kg kg-1) +118 118 Unbalanced component of specific humidity (kg kg-1) +119 119 Unbalanced component of specific cloud liquid water content (kg kg-1) +120 120 Unbalanced component of specific cloud ice water content (kg kg-1) +121 121 Fraction of snow cover (Proportion) +122 122 Precipitation intensity index (Code table 4.247) +123 123 Dominant precipitation type (Code table 4.201) +124 124 Presence of showers (Code table 4.222) +125 125 Presence of blowing snow (Code table 4.222) +126 126 Presence of blizzard (Code table 4.222) +127 127 Ice pellets (non-water equivalent) precipitation rate (m/s) +128 128 Total solid precipitation rate (kg m-2 s-1) +129 129 Effective radius of cloud water (m) +130 130 Effective radius of rain (m) +131 131 Effective radius of cloud ice (m) +132 132 Effective radius of snow (m) +133 133 Effective radius of graupel (m) +134 134 Effective radius of hail (m) +135 135 Effective radius of subgrid liquid clouds (m) +136 136 Effective radius of subgrid ice clouds (m) +137 137 Effective aspect ratio of rain (-) +138 138 Effective aspect ratio of cloud ice (-) +139 139 Effective aspect ratio of snow (-) +140 140 Effective aspect ratio of graupel (-) +141 141 Effective aspect ratio of hail (-) +142 142 Effective aspect ratio of subgrid ice clouds (-) +143 143 Potential evaporation rate (kg m-2 s-1) +144 144 Specific rain water content (convective) (kg kg-1) +145 145 Specific snow water content (convective) (kg kg-1) +146 146 Cloud ice precipitation rate (kg m-2 s-1) +147 147 Character of precipitation (Code table 4.249) +148 148 Snow evaporation rate (kg m-2 s-1) +149 149 Cloud water mixing ratio (kg kg-1) +150 150 Column integrated eastward water vapour mass flux (kg m-1 s-1) +151 151 Column integrated northward water vapour mass flux (kg m-1 s-1) +152 152 Column integrated eastward cloud liquid water mass flux (kg m-1 s-1) +153 153 Column integrated northward cloud liquid water mass flux (kg m-1 s-1) +154 154 Column integrated eastward cloud ice mass flux (kg m-1 s-1) +155 155 Column integrated northward cloud ice mass flux (kg m-1 s-1) +156 156 Column integrated eastward rain mass flux (kg m-1 s-1) +157 157 Column integrated northward rain mass flux (kg m-1 s-1) +158 158 Column integrated eastward snow mass flux (kg m-1 s-1) +159 159 Column integrated northward snow mass flux (kg m-1 s-1) +160 160 Column integrated divergence of water vapour mass flux (kg m-2 s-1) +161 161 Column integrated divergence of cloud liquid water mass flux (kg m-2 s-1) +162 162 Column integrated divergence of cloud ice mass flux (kg m-2 s-1) +163 163 Column integrated divergence of rain mass flux (kg m-2 s-1) +164 164 Column integrated divergence of snow mass flux (kg m-2 s-1) +165 165 Column integrated divergence of total water mass flux (kg m-2 s-1) +166 166 Column integrated water vapour flux (kg m-2 s-1) +167 167 Total column supercooled liquid water (kg m-2) +# 168-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/31/4.2.0.13.table b/definitions/grib2/tables/31/4.2.0.13.table new file mode 100644 index 000000000..fc7344d7e --- /dev/null +++ b/definitions/grib2/tables/31/4.2.0.13.table @@ -0,0 +1,5 @@ +# Product discipline 0 - Meteorological products, parameter category 13: aerosols +0 0 Aerosol type (Code table 4.205) +# 1-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/31/4.2.0.14.table b/definitions/grib2/tables/31/4.2.0.14.table new file mode 100644 index 000000000..87f1db9a2 --- /dev/null +++ b/definitions/grib2/tables/31/4.2.0.14.table @@ -0,0 +1,7 @@ +# Product discipline 0 - Meteorological products, parameter category 14: trace gases +0 0 Total ozone (DU) +1 1 Ozone mixing ratio (kg/kg) +2 2 Total column integrated ozone (DU) +# 3-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/31/4.2.0.15.table b/definitions/grib2/tables/31/4.2.0.15.table new file mode 100644 index 000000000..02d0fcbf3 --- /dev/null +++ b/definitions/grib2/tables/31/4.2.0.15.table @@ -0,0 +1,21 @@ +# Product discipline 0 - Meteorological products, parameter category 15: radar +0 0 Base spectrum width (m/s) +1 1 Base reflectivity (dB) +2 2 Base radial velocity (m/s) +3 3 Vertically integrated liquid water (VIL) (kg m-2) +4 4 Layer-maximum base reflectivity (dB) +5 5 Precipitation (kg m-2) +6 6 Radar spectra (1) (-) +7 7 Radar spectra (2) (-) +8 8 Radar spectra (3) (-) +9 9 Reflectivity of cloud droplets (dB) +10 10 Reflectivity of cloud ice (dB) +11 11 Reflectivity of snow (dB) +12 12 Reflectivity of rain (dB) +13 13 Reflectivity of graupel (dB) +14 14 Reflectivity of hail (dB) +15 15 Hybrid scan reflectivity (dB) +16 16 Hybrid scan reflectivity height (m) +# 17-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/31/4.2.0.16.table b/definitions/grib2/tables/31/4.2.0.16.table new file mode 100644 index 000000000..faaa32d16 --- /dev/null +++ b/definitions/grib2/tables/31/4.2.0.16.table @@ -0,0 +1,10 @@ +# Product discipline 0 - Meteorological products, parameter category 16: forecast radar imagery +0 0 Equivalent radar reflectivity factor for rain (mm6 m-3) +1 1 Equivalent radar reflectivity factor for snow (mm6 m-3) +2 2 Equivalent radar reflectivity factor for parameterized convection (mm6 m-3) +3 3 Echo top (m) +4 4 Reflectivity (dB) +5 5 Composite reflectivity (dB) +# 6-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/31/4.2.0.17.table b/definitions/grib2/tables/31/4.2.0.17.table new file mode 100644 index 000000000..90ef72d87 --- /dev/null +++ b/definitions/grib2/tables/31/4.2.0.17.table @@ -0,0 +1,7 @@ +# Product discipline 0 - Meteorological products, parameter category 17: electrodynamics +0 0 Lightning strike density (m-2 s-1) +1 1 Lightning potential index (LPI) (J kg-1) +2 2 Cloud-to-ground lightning flash density (km-2 day-1) +3 3 Cloud-to-cloud lightning flash density (km-2 day-1) +4 4 Total lightning flash density (km-2 day-1) +5 5 Subgrid-scale lightning potential index (J kg-1) diff --git a/definitions/grib2/tables/31/4.2.0.18.table b/definitions/grib2/tables/31/4.2.0.18.table new file mode 100644 index 000000000..fe2dac3dc --- /dev/null +++ b/definitions/grib2/tables/31/4.2.0.18.table @@ -0,0 +1,23 @@ +# Product discipline 0 - Meteorological products, parameter category 18: nuclear/radiology +0 0 Air concentration of caesium 137 (Bq m-3) +1 1 Air concentration of iodine 131 (Bq m-3) +2 2 Air concentration of radioactive pollutant (Bq m-3) +3 3 Ground deposition of caesium 137 (Bq m-2) +4 4 Ground deposition of iodine 131 (Bq m-2) +5 5 Ground deposition of radioactive pollutant (Bq m-2) +6 6 Time-integrated air concentration of caesium pollutant (Bq s m-3) +7 7 Time-integrated air concentration of iodine pollutant (Bq s m-3) +8 8 Time-integrated air concentration of radioactive pollutant (Bq s m-3) +9 9 Reserved +10 10 Air concentration (Bq m-3) +11 11 Wet deposition (Bq m-2) +12 12 Dry deposition (Bq m-2) +13 13 Total deposition (wet + dry) (Bq m-2) +14 14 Specific activity concentration (Bq kg-1) +15 15 Maximum of air concentration in layer (Bq m-3) +16 16 Height of maximum air concentration (m) +17 17 Column-integrated air concentration (Bq m-2) +18 18 Column-averaged air concentration in layer (Bq m-3) +# 19-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/31/4.2.0.19.table b/definitions/grib2/tables/31/4.2.0.19.table new file mode 100644 index 000000000..b6b71b358 --- /dev/null +++ b/definitions/grib2/tables/31/4.2.0.19.table @@ -0,0 +1,50 @@ +# Product discipline 0 - Meteorological products, parameter category 19: physical atmospheric properties +0 0 Visibility (m) +1 1 Albedo (%) +2 2 Thunderstorm probability (%) +3 3 Mixed layer depth (m) +4 4 Volcanic ash (Code table 4.206) +5 5 Icing top (m) +6 6 Icing base (m) +7 7 Icing (Code table 4.207) +8 8 Turbulence top (m) +9 9 Turbulence base (m) +10 10 Turbulence (Code table 4.208) +11 11 Turbulent kinetic energy (J/kg) +12 12 Planetary boundary-layer regime (Code table 4.209) +13 13 Contrail intensity (Code table 4.210) +14 14 Contrail engine type (Code table 4.211) +15 15 Contrail top (m) +16 16 Contrail base (m) +17 17 Maximum snow albedo (%) +18 18 Snow free albedo (%) +19 19 Snow albedo (%) +20 20 Icing (%) +21 21 In-cloud turbulence (%) +22 22 Clear air turbulence (CAT) (%) +23 23 Supercooled large droplet probability (%) +24 24 Convective turbulent kinetic energy (J/kg) +25 25 Weather (Code table 4.225) +26 26 Convective outlook (Code table 4.224) +27 27 Icing scenario (Code table 4.227) +28 28 Mountain wave turbulence (eddy dissipation rate) (m2/3 s-1) +29 29 Clear air turbulence (CAT) (m2/3 s-1) +30 30 Eddy dissipation parameter (m2/3 s-1) +31 31 Maximum of eddy dissipation parameter in layer (m2/3 s-1) +32 32 Highest freezing level (m) +33 33 Visibility through liquid fog (m) +34 34 Visibility through ice fog (m) +35 35 Visibility through blowing snow (m) +36 36 Presence of snow squalls (Code table 4.222) +37 37 Icing severity (Code table 4.228) +38 38 Sky transparency index (Code table 4.214) +39 39 Seeing index (Code table 4.214) +40 40 Snow level (m) +41 41 Duct base height (m) +42 42 Trapping layer base height (m) +43 43 Trapping layer top height (m) +44 44 Mean vertical gradient of refractivity inside trapping layer (m-1) +45 45 Minimum vertical gradient of refractivity inside trapping layer (m-1) +# 46-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/31/4.2.0.190.table b/definitions/grib2/tables/31/4.2.0.190.table new file mode 100644 index 000000000..e5d6618cf --- /dev/null +++ b/definitions/grib2/tables/31/4.2.0.190.table @@ -0,0 +1,5 @@ +# Product discipline 0 - Meteorological products, parameter category 190: CCITT IA5 string +0 0 Arbitrary text string (CCITT IA5) +# 1-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/31/4.2.0.191.table b/definitions/grib2/tables/31/4.2.0.191.table new file mode 100644 index 000000000..d375dbd4a --- /dev/null +++ b/definitions/grib2/tables/31/4.2.0.191.table @@ -0,0 +1,8 @@ +# Product discipline 0 - Meteorological products, parameter category 191: miscellaneous +0 0 Seconds prior to initial reference time (defined in Section 1) (s) +1 1 Geographical latitude (deg N) +2 2 Geographical longitude (deg E) +3 3 Days since last observation (d) +# 4-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/31/4.2.0.2.table b/definitions/grib2/tables/31/4.2.0.2.table new file mode 100644 index 000000000..ae4d43c52 --- /dev/null +++ b/definitions/grib2/tables/31/4.2.0.2.table @@ -0,0 +1,63 @@ +# Product discipline 0 - Meteorological products, parameter category 2: momentum +0 0 Wind direction (from which blowing) (degree true) +1 1 Wind speed (m/s) +2 2 u-component of wind (m/s) +3 3 v-component of wind (m/s) +4 4 Stream function (m2/s) +5 5 Velocity potential (m2/s) +6 6 Montgomery stream function (m2 s-2) +7 7 Sigma coordinate vertical velocity (/s) +8 8 Vertical velocity (pressure) (Pa/s) +9 9 Vertical velocity (geometric) (m/s) +10 10 Absolute vorticity (/s) +11 11 Absolute divergence (/s) +12 12 Relative vorticity (/s) +13 13 Relative divergence (/s) +14 14 Potential vorticity (K m2 kg-1 s-1) +15 15 Vertical u-component shear (/s) +16 16 Vertical v-component shear (/s) +17 17 Momentum flux, u-component (N m-2) +18 18 Momentum flux, v-component (N m-2) +19 19 Wind mixing energy (J) +20 20 Boundary layer dissipation (W m-2) +21 21 Maximum wind speed (m/s) +22 22 Wind speed (gust) (m/s) +23 23 u-component of wind (gust) (m/s) +24 24 v-component of wind (gust) (m/s) +25 25 Vertical speed shear (/s) +26 26 Horizontal momentum flux (N m-2) +27 27 u-component storm motion (m/s) +28 28 v-component storm motion (m/s) +29 29 Drag coefficient (Numeric) +30 30 Frictional velocity (m/s) +31 31 Turbulent diffusion coefficient for momentum (m2/s) +32 32 Eta coordinate vertical velocity (/s) +33 33 Wind fetch (m) +34 34 Normal wind component (m/s) +35 35 Tangential wind component (m/s) +36 36 Amplitude function for Rossby wave envelope for meridional wind (m/s) +37 37 Northward turbulent surface stress (N m-2 s) +38 38 Eastward turbulent surface stress (N m-2 s) +39 39 Eastward wind tendency due to parameterization (m s-2) +40 40 Northward wind tendency due to parameterization (m s-2) +41 41 u-component of geostrophic wind (m s-1) +42 42 v-component of geostrophic wind (m s-1) +43 43 Geostrophic wind direction (degree true) +44 44 Geostrophic wind speed (m s-1) +45 45 Unbalanced component of divergence (s-1) +46 46 Vorticity advection (s-2) +47 47 Surface roughness for heat (m) +48 48 Surface roughness for moisture (m) +49 49 Wind stress (N m-2) +50 50 Eastward wind stress (N m-2) +51 51 Northward wind stress (N m-2) +52 52 u-component of wind stress (N m-2) +53 53 v-component of wind stress (N m-2) +54 54 Natural logarithm of surface roughness length for heat (Numeric) +55 55 Natural logarithm of surface roughness length for moisture (Numeric) +56 56 u-component of neutral wind (m s-1) +57 57 v-component of neutral wind (m s-1) +58 58 Magnitude of turbulent surface stress (N m-2) +# 59-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/31/4.2.0.20.table b/definitions/grib2/tables/31/4.2.0.20.table new file mode 100644 index 000000000..9af93ae48 --- /dev/null +++ b/definitions/grib2/tables/31/4.2.0.20.table @@ -0,0 +1,69 @@ +# Product discipline 0 - Meteorological products, parameter category 20: atmospheric chemical constituents +0 0 Mass density (concentration) (kg m-3) +1 1 Column-integrated mass density (kg m-2) +2 2 Mass mixing ratio (mass fraction in air) (kg/kg) +3 3 Atmosphere emission mass flux (kg m-2 s-1) +4 4 Atmosphere net production mass flux (kg m-2 s-1) +5 5 Atmosphere net production and emission mass flux (kg m-2 s-1) +6 6 Surface dry deposition mass flux (kg m-2 s-1) +7 7 Surface wet deposition mass flux (kg m-2 s-1) +8 8 Atmosphere re-emission mass flux (kg m-2 s-1) +9 9 Wet deposition by large-scale precipitation mass flux (kg m-2 s-1) +10 10 Wet deposition by convective precipitation mass flux (kg m-2 s-1) +11 11 Sedimentation mass flux (kg m-2 s-1) +12 12 Dry deposition mass flux (kg m-2 s-1) +13 13 Transfer from hydrophobic to hydrophilic (kg kg-1 s-1) +14 14 Transfer from SO2 (sulphur dioxide) to SO4 (sulphate) (kg kg-1 s-1) +15 15 Dry deposition velocity (m/s) +16 16 Mass mixing ratio with respect to dry air (kg/kg) +17 17 Mass mixing ratio with respect to wet air (kg/kg) +18 18 Potential of hydrogen (pH) (pH) +# 19-49 Reserved +50 50 Amount in atmosphere (mol) +51 51 Concentration in air (mol m-3) +52 52 Volume mixing ratio (fraction in air) (mol/mol) +53 53 Chemical gross production rate of concentration (mol m-3 s-1) +54 54 Chemical gross destruction rate of concentration (mol m-3 s-1) +55 55 Surface flux (mol m-2 s-1) +56 56 Changes of amount in atmosphere (mol/s) +57 57 Total yearly average burden of the atmosphere (mol) +58 58 Total yearly averaged atmospheric loss (mol/s) +59 59 Aerosol number concentration (m-3) +60 60 Aerosol specific number concentration (kg-1) +61 61 Maximum of mass density in layer (kg m-3) +62 62 Height of maximum mass density (m) +63 63 Column-averaged mass density in layer (kg m-3) +64 64 Mole fraction with respect to dry air (mol/mol) +65 65 Mole fraction with respect to wet air (mol/mol) +66 66 Column-integrated in-cloud scavenging rate by precipitation (kg m-2 s-1) +67 67 Column-integrated below-cloud scavenging rate by precipitation (kg m-2 s-1) +68 68 Column-integrated release rate from evaporating precipitation (kg m-2 s-1) +69 69 Column-integrated in-cloud scavenging rate by large-scale precipitation (kg m-2 s-1) +70 70 Column-integrated below-cloud scavenging rate by large-scale precipitation (kg m-2 s-1) +71 71 Column-integrated release rate from evaporating large-scale precipitation (kg m-2 s-1) +72 72 Column-integrated in-cloud scavenging rate by convective precipitation (kg m-2 s-1) +73 73 Column-integrated below-cloud scavenging rate by convective precipitation (kg m-2 s-1) +74 74 Column-integrated release rate from evaporating convective precipitation (kg m-2 s-1) +75 75 Wildfire flux (kg m-2 s-1) +76 76 Emission rate (kg kg-1 s-1) +77 77 Surface emission flux (kg m-2 s-1) +78 78 Column integrated eastward mass flux (kg m-1 s-1) +79 79 Column integrated northward mass flux (kg m-1 s-1) +80 80 Column integrated divergence of mass flux (kg m-2 s-1) +81 81 Column integrated net source (kg m-2 s-1) +# 82-99 Reserved +100 100 Surface area density (aerosol) (/m) +101 101 Vertical visual range (m) +102 102 Aerosol optical thickness (Numeric) +103 103 Single scattering albedo (Numeric) +104 104 Asymmetry factor (Numeric) +105 105 Aerosol extinction coefficient (/m) +106 106 Aerosol absorption coefficient (/m) +107 107 Aerosol lidar backscatter from satellite (m-1 sr-1) +108 108 Aerosol lidar backscatter from the ground (m-1 sr-1) +109 109 Aerosol lidar extinction from satellite (/m) +110 110 Aerosol lidar extinction from the ground (/m) +111 111 Angstrom exponent (Numeric) +# 112-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/31/4.2.0.21.table b/definitions/grib2/tables/31/4.2.0.21.table new file mode 100644 index 000000000..2734355b0 --- /dev/null +++ b/definitions/grib2/tables/31/4.2.0.21.table @@ -0,0 +1,26 @@ +# Product discipline 0 - Meteorological products, parameter category 21: thermodynamic properties +0 0 Column integrated potential + internal energy (J m-2) +1 1 Column integrated kinetic energy (J m-2) +2 2 Column integrated total energy (J m-2) +3 3 Column integrated enthalpy (J m-2) +4 4 Column integrated water enthalpy (J m-2) +5 5 Column integrated eastward enthalpy flux (W m-1) +6 6 Column integrated northward enthalpy flux (W m-1) +7 7 Column integrated eastward potential energy flux (W m-1) +8 8 Column integrated northward potential energy flux (W m-1) +9 9 Column integrated eastward kinetic energy flux (W m-1) +10 10 Column integrated northward kinetic energy flux (W m-1) +11 11 Column integrated eastward total energy flux (W m-1) +12 12 Column integrated northward total energy flux (W m-1) +13 13 Divergence of column integrated enthalpy flux (W m-2) +14 14 Divergence of column integrated potential energy flux (W m-2) +15 15 Divergence of column integrated water potential energy flux (W m-2) +16 16 Divergence of column integrated kinetic energy flux (W m-2) +17 17 Divergence of column integrated total energy flux (W m-2) +18 18 Divergence of column integrated water enthalpy flux (W m-2) +19 19 Column integrated eastward heat flux (W m-1) +20 20 Column integrated northward heat flux (W m-1) +21 21 Column integrated potential+internal+latent energy (J m-2) +# 22-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/31/4.2.0.3.table b/definitions/grib2/tables/31/4.2.0.3.table new file mode 100644 index 000000000..5ccadabf8 --- /dev/null +++ b/definitions/grib2/tables/31/4.2.0.3.table @@ -0,0 +1,50 @@ +# Product discipline 0 - Meteorological products, parameter category 3: mass +0 0 Pressure (Pa) +1 1 Pressure reduced to MSL (Pa) +2 2 Pressure tendency (Pa/s) +3 3 ICAO Standard Atmosphere Reference Height (m) +4 4 Geopotential (m2 s-2) +5 5 Geopotential height (gpm) +6 6 Geometric height (m) +7 7 Standard deviation of height (m) +8 8 Pressure anomaly (Pa) +9 9 Geopotential height anomaly (gpm) +10 10 Density (kg m-3) +11 11 Altimeter setting (Pa) +12 12 Thickness (m) +13 13 Pressure altitude (m) +14 14 Density altitude (m) +15 15 5-wave geopotential height (gpm) +16 16 Zonal flux of gravity wave stress (N m-2) +17 17 Meridional flux of gravity wave stress (N m-2) +18 18 Planetary boundary layer height (m) +19 19 5-wave geopotential height anomaly (gpm) +20 20 Standard deviation of sub-grid scale orography (m) +21 21 Angle of sub-gridscale orography (rad) +22 22 Slope of sub-gridscale orography (Numeric) +23 23 Gravity wave dissipation (W m-2) +24 24 Anisotropy of sub-gridscale orography (Numeric) +25 25 Natural logarithm of pressure in Pa (Numeric) +26 26 Exner pressure (Numeric) +27 27 Updraught mass flux (kg m-2 s-1) +28 28 Downdraught mass flux (kg m-2 s-1) +29 29 Updraught detrainment rate (kg m-3 s-1) +30 30 Downdraught detrainment rate (kg m-3 s-1) +31 31 Unbalanced component of logarithm of surface pressure (-) +32 32 Saturation water vapour pressure (Pa) +33 33 Geometric altitude above mean sea level (m) +34 34 Geometric height above ground level (m) +35 35 Column integrated divergence of total mass flux (kg m-2 s-1) +36 36 Column integrated eastward total mass flux (kg m-1 s-1) +37 37 Column integrated northward total mass flux (kg m-1 s-1) +38 38 Standard deviation of filtered subgrid orography (m) +39 39 Column integrated mass of atmosphere (kg m-2) +40 40 Column integrated eastward geopotential flux (W m-1) +41 41 Column integrated northward geopotential flux (W m-1) +42 42 Column integrated divergence of water geopotential flux (W m-2) +43 43 Column integrated divergence of geopotential flux (W m-2) +44 44 Height of zero-degree wet-bulb temperature (m) +45 45 Height of one-degree wet-bulb temperature (m) +# 46-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/31/4.2.0.4.table b/definitions/grib2/tables/31/4.2.0.4.table new file mode 100644 index 000000000..f6a225a8f --- /dev/null +++ b/definitions/grib2/tables/31/4.2.0.4.table @@ -0,0 +1,33 @@ +# Product discipline 0 - Meteorological products, parameter category 4: short-wave radiation +0 0 Net short-wave radiation flux (surface) (W m-2) +1 1 Net short-wave radiation flux (top of atmosphere) (W m-2) +2 2 Short-wave radiation flux (W m-2) +3 3 Global radiation flux (W m-2) +4 4 Brightness temperature (K) +5 5 Radiance (with respect to wave number) (W m-1 sr-1) +6 6 Radiance (with respect to wavelength) (W m-3 sr-1) +7 7 Downward short-wave radiation flux (W m-2) +8 8 Upward short-wave radiation flux (W m-2) +9 9 Net short wave radiation flux (W m-2) +10 10 Photosynthetically active radiation (W m-2) +11 11 Net short-wave radiation flux, clear sky (W m-2) +12 12 Downward UV radiation (W m-2) +13 13 Direct short-wave radiation flux (W m-2) +14 14 Diffuse short-wave radiation flux (W m-2) +15 15 Upward UV radiation emitted/reflected from the Earth's surface (W m-2) +# 16-49 Reserved +50 50 UV index (under clear sky) (Numeric) +51 51 UV index (Numeric) +52 52 Downward short-wave radiation flux, clear sky (W m-2) +53 53 Upward short-wave radiation flux, clear sky (W m-2) +54 54 Direct normal short-wave radiation flux (W m-2) +55 55 UV visible albedo for diffuse radiation (%) +56 56 UV visible albedo for direct radiation (%) +57 57 UV visible albedo for direct radiation, geometric component (%) +58 58 UV visible albedo for direct radiation, isotropic component (%) +59 59 UV visible albedo for direct radiation, volumetric component (%) +60 60 Photosynthetically active radiation flux, clear sky (W m-2) +61 61 Direct short-wave radiation flux, clear sky (W m-2) +# 62-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/31/4.2.0.5.table b/definitions/grib2/tables/31/4.2.0.5.table new file mode 100644 index 000000000..cadb20762 --- /dev/null +++ b/definitions/grib2/tables/31/4.2.0.5.table @@ -0,0 +1,18 @@ +# Product discipline 0 - Meteorological products, parameter category 5: long-wave radiation +0 0 Net long-wave radiation flux (surface) (W m-2) +1 1 Net long-wave radiation flux (top of atmosphere) (W m-2) +2 2 Long-wave radiation flux (W m-2) +3 3 Downward long-wave radiation flux (W m-2) +4 4 Upward long-wave radiation flux (W m-2) +5 5 Net long-wave radiation flux (W m-2) +6 6 Net long-wave radiation flux, clear sky (W m-2) +7 7 Brightness temperature (K) +8 8 Downward long-wave radiation flux, clear sky (W m-2) +9 9 Near IR albedo for diffuse radiation (%) +10 10 Near IR albedo for direct radiation (%) +11 11 Near IR albedo for direct radiation, geometric component (%) +12 12 Near IR albedo for direct radiation, isotropic component (%) +13 13 Near IR albedo for direct radiation, volumetric component (%) +# 14-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/31/4.2.0.6.table b/definitions/grib2/tables/31/4.2.0.6.table new file mode 100644 index 000000000..46f5a7684 --- /dev/null +++ b/definitions/grib2/tables/31/4.2.0.6.table @@ -0,0 +1,51 @@ +# Product discipline 0 - Meteorological products, parameter category 6: cloud +0 0 Cloud ice (kg m-2) +1 1 Total cloud cover (%) +2 2 Convective cloud cover (%) +3 3 Low cloud cover (%) +4 4 Medium cloud cover (%) +5 5 High cloud cover (%) +6 6 Cloud water (kg m-2) +7 7 Cloud amount (%) +8 8 Cloud type (Code table 4.203) +9 9 Thunderstorm maximum tops (m) +10 10 Thunderstorm coverage (Code table 4.204) +11 11 Cloud base (m) +12 12 Cloud top (m) +13 13 Ceiling (m) +14 14 Non-convective cloud cover (%) +15 15 Cloud work function (J/kg) +16 16 Convective cloud efficiency (Proportion) +17 17 Total condensate (kg/kg) +18 18 Total column-integrated cloud water (kg m-2) +19 19 Total column-integrated cloud ice (kg m-2) +20 20 Total column-integrated condensate (kg m-2) +21 21 Ice fraction of total condensate (Proportion) +22 22 Cloud cover (%) +23 23 Cloud ice mixing ratio (kg/kg) +24 24 Sunshine (Numeric) +25 25 Horizontal extent of cumulonimbus (CB) (%) +26 26 Height of convective cloud base (m) +27 27 Height of convective cloud top (m) +28 28 Number of cloud droplets per unit mass of air (/kg) +29 29 Number of cloud ice particles per unit mass of air (/kg) +30 30 Number density of cloud droplets (m-3) +31 31 Number density of cloud ice particles (m-3) +32 32 Fraction of cloud cover (Numeric) +33 33 Sunshine duration (s) +34 34 Surface long-wave effective total cloudiness (Numeric) +35 35 Surface short-wave effective total cloudiness (Numeric) +36 36 Fraction of stratiform precipitation cover (Proportion) +37 37 Fraction of convective precipitation cover (Proportion) +38 38 Mass density of cloud droplets (kg m-3) +39 39 Mass density of cloud ice (kg m-3) +40 40 Mass density of convective cloud water droplets (kg m-3) +# 41-46 Reserved +47 47 Volume fraction of cloud water droplets (Numeric) +48 48 Volume fraction of cloud ice particles (Numeric) +49 49 Volume fraction of cloud (ice and/or water) (Numeric) +50 50 Fog (%) +51 51 Sunshine duration fraction (Proportion) +# 52-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/31/4.2.0.7.table b/definitions/grib2/tables/31/4.2.0.7.table new file mode 100644 index 000000000..93d4d1335 --- /dev/null +++ b/definitions/grib2/tables/31/4.2.0.7.table @@ -0,0 +1,25 @@ +# Product discipline 0 - Meteorological products, parameter category 7: thermodynamic stability indices +0 0 Parcel lifted index (to 500 hPa) (K) +1 1 Best lifted index (to 500 hPa) (K) +2 2 K index (K) +3 3 KO index (K) +4 4 Total totals index (K) +5 5 Sweat index (Numeric) +6 6 Convective available potential energy (J/kg) +7 7 Convective inhibition (J/kg) +8 8 Storm relative helicity (J/kg) +9 9 Energy helicity index (Numeric) +10 10 Surface lifted index (K) +11 11 Best (4-layer) lifted index (K) +12 12 Richardson number (Numeric) +13 13 Showalter index (K) +14 14 Reserved +15 15 Updraught helicity (m2 s-2) +16 16 Bulk Richardson number (Numeric) +17 17 Gradient Richardson number (Numeric) +18 18 Flux Richardson number (Numeric) +19 19 Convective available potential energy - shear (m2 s-2) +20 20 Thunderstorm intensity index (Code table 4.246) +# 21-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/31/4.2.1.0.table b/definitions/grib2/tables/31/4.2.1.0.table new file mode 100644 index 000000000..0ce4b8fc4 --- /dev/null +++ b/definitions/grib2/tables/31/4.2.1.0.table @@ -0,0 +1,21 @@ +# Product discipline 1 - Hydrological products, parameter category 0: hydrology basic products +0 0 Flash flood guidance (Encoded as an accumulation over a floating subinterval of time between the reference time and valid time) (kg m-2) +1 1 Flash flood runoff (Encoded as an accumulation over a floating subinterval of time) (kg m-2) +2 2 Remotely-sensed snow cover (Code table 4.215) +3 3 Elevation of snow-covered terrain (Code table 4.216) +4 4 Snow water equivalent per cent of normal (%) +5 5 Baseflow-groundwater runoff (kg m-2) +6 6 Storm surface runoff (kg m-2) +7 7 Discharge from rivers or streams (m3/s) +8 8 Groundwater upper storage (kg m-2) +9 9 Groundwater lower storage (kg m-2) +10 10 Side flow into river channel (m3 s-1 m-1) +11 11 River storage of water (m3) +12 12 Floodplain storage of water (m3) +13 13 Depth of water on soil surface (kg m-2) +14 14 Upstream accumulated precipitation (kg m-2) +15 15 Upstream accumulated snow melt (kg m-2) +16 16 Percolation rate (kg m-2 s-1) +# 17-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/31/4.2.1.1.table b/definitions/grib2/tables/31/4.2.1.1.table new file mode 100644 index 000000000..ede9a3a72 --- /dev/null +++ b/definitions/grib2/tables/31/4.2.1.1.table @@ -0,0 +1,7 @@ +# Product discipline 1 - Hydrological products, parameter category 1: hydrology probabilities +0 0 Conditional per cent precipitation amount fractile for an overall period (Encoded as an accumulation) (kg m-2) +1 1 Per cent precipitation in a sub-period of an overall period (Encoded as per cent accumulation over the sub-period) (%) +2 2 Probability of 0.01 inch of precipitation (POP) (%) +# 3-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/31/4.2.1.2.table b/definitions/grib2/tables/31/4.2.1.2.table new file mode 100644 index 000000000..97f062dbc --- /dev/null +++ b/definitions/grib2/tables/31/4.2.1.2.table @@ -0,0 +1,19 @@ +# Product discipline 1 - Hydrological products, parameter category 2: inland water and sediment properties +0 0 Water depth (m) +1 1 Water temperature (K) +2 2 Water fraction (Proportion) +3 3 Sediment thickness (m) +4 4 Sediment temperature (K) +5 5 Ice thickness (m) +6 6 Ice temperature (K) +7 7 Ice cover (Proportion) +8 8 Land cover (0 = water, 1 = land) (Proportion) +9 9 Shape factor with respect to salinity profile (-) +10 10 Shape factor with respect to temperature profile in thermocline (-) +11 11 Attenuation coefficient of water with respect to solar radiation (/m) +12 12 Salinity (kg/kg) +13 13 Cross-sectional area of flow in channel (m2) +14 14 Snow temperature (K) +# 15-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/31/4.2.10.0.table b/definitions/grib2/tables/31/4.2.10.0.table new file mode 100644 index 000000000..07a91363f --- /dev/null +++ b/definitions/grib2/tables/31/4.2.10.0.table @@ -0,0 +1,97 @@ +# Product discipline 10 - Oceanographic products, parameter category 0: waves +0 0 Wave spectra (1) (-) +1 1 Wave spectra (2) (-) +2 2 Wave spectra (3) (-) +3 3 Significant height of combined wind waves and swell (m) +4 4 Direction of wind waves (degree true) +5 5 Significant height of wind waves (m) +6 6 Mean period of wind waves (s) +7 7 Direction of swell waves (degree true) +8 8 Significant height of swell waves (m) +9 9 Mean period of swell waves (s) +10 10 Primary wave direction (degree true) +11 11 Primary wave mean period (s) +12 12 Secondary wave direction (degree true) +13 13 Secondary wave mean period (s) +14 14 Mean direction of combined wind waves and swell (degree true) +15 15 Mean period of combined wind waves and swell (s) +16 16 Coefficient of drag with waves (-) +17 17 Friction velocity (m/s) +18 18 Wave stress (N m-2) +19 19 Normalized wave stress (-) +20 20 Mean square slope of waves (-) +21 21 u-component surface Stokes drift (m/s) +22 22 v-component surface Stokes drift (m/s) +23 23 Period of maximum individual wave height (s) +24 24 Maximum individual wave height (m) +25 25 Inverse mean wave frequency (s) +26 26 Inverse mean frequency of wind waves (s) +27 27 Inverse mean frequency of total swell (s) +28 28 Mean zero-crossing wave period (s) +29 29 Mean zero-crossing period of wind waves (s) +30 30 Mean zero-crossing period of total swell (s) +31 31 Wave directional width (-) +32 32 Directional width of wind waves (-) +33 33 Directional width of total swell (-) +34 34 Peak wave period (s) +35 35 Peak period of wind waves (s) +36 36 Peak period of total swell (s) +37 37 Altimeter wave height (m) +38 38 Altimeter corrected wave height (m) +39 39 Altimeter range relative correction (-) +40 40 10-metre neutral wind speed over waves (m/s) +41 41 10-metre wind direction over waves (deg) +42 42 Wave energy spectrum (m2 s rad-1) +43 43 Kurtosis of the sea-surface elevation due to waves (-) +44 44 Benjamin-Feir index (-) +45 45 Spectral peakedness factor (/s) +46 46 Peak wave direction (deg) +47 47 Significant wave height of first swell partition (m) +48 48 Significant wave height of second swell partition (m) +49 49 Significant wave height of third swell partition (m) +50 50 Mean wave period of first swell partition (s) +51 51 Mean wave period of second swell partition (s) +52 52 Mean wave period of third swell partition (s) +53 53 Mean wave direction of first swell partition (deg) +54 54 Mean wave direction of second swell partition (deg) +55 55 Mean wave direction of third swell partition (deg) +56 56 Wave directional width of first swell partition (-) +57 57 Wave directional width of second swell partition (-) +58 58 Wave directional width of third swell partition (-) +59 59 Wave frequency width of first swell partition (-) +60 60 Wave frequency width of second swell partition (-) +61 61 Wave frequency width of third swell partition (-) +62 62 Wave frequency width (-) +63 63 Frequency width of wind waves (-) +64 64 Frequency width of total swell (-) +65 65 Peak wave period of first swell partition (s) +66 66 Peak wave period of second swell partition (s) +67 67 Peak wave period of third swell partition (s) +68 68 Peak wave direction of first swell partition (degree true) +69 69 Peak wave direction of second swell partition (degree true) +70 70 Peak wave direction of third swell partition (degree true) +71 71 Peak direction of wind waves (degree true) +72 72 Peak direction of total swell (degree true) +73 73 Whitecap fraction (fraction) +74 74 Mean direction of total swell (degree) +75 75 Mean direction of wind waves (degree) +76 76 Charnock (Numeric) +77 77 Wave Spectral Skewness (Numeric) +78 78 Wave energy flux magnitude (W m-1) +79 79 Wave energy flux mean direction (degree true) +80 80 Ratio of wave angular and frequency width (Numeric) +81 81 Free convective velocity over the oceans (m s-1) +82 82 Air density over the oceans (kg m-3) +83 83 Normalized energy flux into waves (Numeric) +84 84 Normalized stress into ocean (Numeric) +85 85 Normalized energy flux into ocean (Numeric) +86 86 Surface elevation variance due to waves (over all frequencies and directions) (m2 s rad-1) +87 87 Wave induced mean sea level correction (m) +88 88 Spectral width index (Numeric) +89 89 Number of events in freak waves statistics (Numeric) +90 90 u-component of surface momentum flux into ocean (N m-2) +91 91 v-component of surface momentum flux into ocean (N m-2) +92 92 Wave turbulent energy flux into ocean (W m-2) +# 93-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/31/4.2.10.1.table b/definitions/grib2/tables/31/4.2.10.1.table new file mode 100644 index 000000000..bcdbbc793 --- /dev/null +++ b/definitions/grib2/tables/31/4.2.10.1.table @@ -0,0 +1,11 @@ +# Product discipline 10 - Oceanographic products, parameter category 1: currents +0 0 Current direction (degree true) +1 1 Current speed (m/s) +2 2 u-component of current (m/s) +3 3 v-component of current (m/s) +4 4 Rip current occurrence probability (%) +5 5 Eastward current (m s-1) +6 6 Northward current (m s-1) +# 7-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/31/4.2.10.191.table b/definitions/grib2/tables/31/4.2.10.191.table new file mode 100644 index 000000000..bda676c83 --- /dev/null +++ b/definitions/grib2/tables/31/4.2.10.191.table @@ -0,0 +1,9 @@ +# Product discipline 10 - Oceanographic products, parameter category 191: miscellaneous +0 0 Seconds prior to initial reference time (defined in Section 1) (s) +1 1 Meridional overturning stream function (m3/s) +2 2 Reserved +3 3 Days since last observation (d) +4 4 Barotropic stream function (m3 s-1) +# 5-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/31/4.2.10.2.table b/definitions/grib2/tables/31/4.2.10.2.table new file mode 100644 index 000000000..1591ed64e --- /dev/null +++ b/definitions/grib2/tables/31/4.2.10.2.table @@ -0,0 +1,28 @@ +# Product discipline 10 - Oceanographic products, parameter category 2: ice +0 0 Ice cover (Proportion) +1 1 Ice thickness (m) +2 2 Direction of ice drift (degree true) +3 3 Speed of ice drift (m/s) +4 4 u-component of ice drift (m/s) +5 5 v-component of ice drift (m/s) +6 6 Ice growth rate (m/s) +7 7 Ice divergence (/s) +8 8 Ice temperature (K) +9 9 Module of ice internal pressure (Pa m) +10 10 Zonal vector component of vertically integrated ice internal pressure (Pa m) +11 11 Meridional vector component of vertically integrated ice internal pressure (Pa m) +12 12 Compressive ice strength (N/m) +13 13 Snow temperature (over sea ice) (K) +14 14 Albedo (Numeric) +15 15 Sea ice volume per unit area (m3 m-2) +16 16 Snow volume over sea ice per unit area (m3 m-2) +17 17 Sea ice heat content (J m-2) +18 18 Snow over sea ice heat content (J m-2) +19 19 Ice freeboard thickness (m) +20 20 Ice melt pond fraction (fraction) +21 21 Ice melt pond depth (m) +22 22 Ice melt pond volume per unit area (m3 m-2) +23 23 Sea ice fraction tendency due to parameterization (s-1) +# 24-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/31/4.2.10.3.table b/definitions/grib2/tables/31/4.2.10.3.table new file mode 100644 index 000000000..14481d01f --- /dev/null +++ b/definitions/grib2/tables/31/4.2.10.3.table @@ -0,0 +1,25 @@ +# Product discipline 10 - Oceanographic products, parameter category 3: surface properties +0 0 Water temperature (K) +1 1 Deviation of sea level from mean (m) +2 2 Heat exchange coefficient (-) +3 3 Practical salinity (Numeric) +4 4 Downward heat flux (W m-2) +5 5 Eastward surface stress (N m-2) +6 6 Northward surface stress (N m-2) +7 7 x-component surface stress (N m-2) +8 8 y-component surface stress (N m-2) +9 9 Thermosteric change in sea surface height (m) +10 10 Halosteric change in sea surface height (m) +11 11 Steric change in sea surface height (m) +12 12 Sea salt flux (kg m-2 s-1) +13 13 Net upward water flux (kg m-2 s-1) +14 14 Eastward surface water velocity (m s-1) +15 15 Northward surface water velocity (m s-1) +16 16 x-component of surface water velocity (m s-1) +17 17 y-component of surface water velocity (m s-1) +18 18 Heat flux correction (W m-2) +19 19 Sea surface height tendency due to parameterization (m s-1) +20 20 Deviation of sea level from mean with inverse barometer correction (m) +# 21-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/31/4.2.10.4.table b/definitions/grib2/tables/31/4.2.10.4.table new file mode 100644 index 000000000..2da0b9807 --- /dev/null +++ b/definitions/grib2/tables/31/4.2.10.4.table @@ -0,0 +1,44 @@ +# Product discipline 10 - Oceanographic products, parameter category 4: subsurface properties +0 0 Main thermocline depth (m) +1 1 Main thermocline anomaly (m) +2 2 Transient thermocline depth (m) +3 3 Salinity (kg/kg) +4 4 Ocean vertical heat diffusivity (m2/s) +5 5 Ocean vertical salt diffusivity (m2/s) +6 6 Ocean vertical momentum diffusivity (m2/s) +7 7 Bathymetry (m) +# 8-10 Reserved +11 11 Shape factor with respect to salinity profile (-) +12 12 Shape factor with respect to temperature profile in thermocline (-) +13 13 Attenuation coefficient of water with respect to solar radiation (/m) +14 14 Water depth (m) +15 15 Water temperature (K) +16 16 Water density (rho) (kg m-3) +17 17 Water density anomaly (sigma) (kg m-3) +18 18 Water potential temperature (theta) (K) +19 19 Water potential density (rho theta) (kg m-3) +20 20 Water potential density anomaly (sigma theta) (kg m-3) +21 21 Practical salinity (Numeric) +22 22 Water column-integrated heat content (J m-2) +23 23 Eastward water velocity (m s-1) +24 24 Northward water velocity (m s-1) +25 25 x-component water velocity (m s-1) +26 26 y-component water velocity (m s-1) +27 27 Upward water velocity (m s-1) +28 28 Vertical eddy diffusivity (m2 s-1) +29 29 Bottom pressure equivalent height (m) +30 30 Fresh water flux into sea water from rivers (kg m-2 s-1) +31 31 Fresh water flux correction (kg m-2 s-1) +32 32 Virtual salt flux into sea water (g kg-1 m-2 s-1) +33 33 Virtual salt flux correction (g kg-1 m-2 s-1) +34 34 Sea water temperature tendency due to Newtonian relaxation (K s-1) +35 35 Sea water salinity tendency due to Newtonian relaxation (g kg-1 s-1) +36 36 Sea water temperature tendency due to parameterization (K s-1) +37 37 Sea water salinity tendency due to parameterization (g kg-1 s-1) +38 38 Eastward sea water velocity tendency due to parameterization (m-2 s-1) +39 39 Northward sea water velocity tendency due to parameterization (m-2 s-1) +40 40 Sea water temperature tendency due to direct bias correction (K s-1) +41 41 Sea water salinity tendency due to direct bias correction (g kg-1 s-1) +# 42-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/31/4.2.2.0.table b/definitions/grib2/tables/31/4.2.2.0.table new file mode 100644 index 000000000..b01d681c7 --- /dev/null +++ b/definitions/grib2/tables/31/4.2.2.0.table @@ -0,0 +1,66 @@ +# Product discipline 2 - Land surface products, parameter category 0: vegetation/biomass +0 0 Land cover (0 = sea, 1 = land) (Proportion) +1 1 Surface roughness (m) +2 2 Soil temperature (K) +3 3 Soil moisture content (kg m-2) +4 4 Vegetation (%) +5 5 Water runoff (kg m-2) +6 6 Evapotranspiration (kg-2 s-1) +7 7 Model terrain height (m) +8 8 Land use (Code table 4.212) +9 9 Volumetric soil moisture content (Proportion) +10 10 Ground heat flux (W m-2) +11 11 Moisture availability (%) +12 12 Exchange coefficient (kg m-2 s-1) +13 13 Plant canopy surface water (kg m-2) +14 14 Blackadar's mixing length scale (m) +15 15 Canopy conductance (m/s) +16 16 Minimal stomatal resistance (s/m) +17 17 Wilting point (Proportion) +18 18 Solar parameter in canopy conductance (Proportion) +19 19 Temperature parameter in canopy (Proportion) +20 20 Humidity parameter in canopy conductance (Proportion) +21 21 Soil moisture parameter in canopy conductance (Proportion) +22 22 Soil moisture (kg m-3) +23 23 Column-integrated soil water (kg m-2) +24 24 Heat flux (W m-2) +25 25 Volumetric soil moisture (m3 m-3) +26 26 Wilting point (kg m-3) +27 27 Volumetric wilting point (m3 m-3) +28 28 Leaf area index (Numeric) +29 29 Evergreen forest cover (Proportion) +30 30 Deciduous forest cover (Proportion) +31 31 Normalized differential vegetation index (NDVI) (Numeric) +32 32 Root depth of vegetation (m) +33 33 Water runoff and drainage (kg m-2) +34 34 Surface water runoff (kg m-2) +35 35 Tile class (Code table 4.243) +36 36 Tile fraction (Proportion) +37 37 Tile percentage (%) +38 38 Soil volumetric ice content (water equivalent) (m3 m-3) +39 39 Evapotranspiration rate (kg m-2 s-1) +40 40 Potential evapotranspiration rate (kg m-2 s-1) +41 41 Snow melt rate (kg m-2 s-1) +42 42 Water runoff and drainage rate (kg m-2 s-1) +43 43 Drainage direction (Code table 4.250) +44 44 Upstream area (m2) +45 45 Wetland cover (Proportion) +46 46 Wetland type (Code table 4.239) +47 47 Irrigation cover (Proportion) +48 48 C4 crop cover (Proportion) +49 49 C4 grass cover (Proportion) +50 50 Skin reservoir content (kg m-2) +51 51 Surface runoff rate (kg m-2 s-1) +52 52 Subsurface runoff rate (kg m-2 s-1) +53 53 Low-vegetation cover (Proportion) +54 54 High-vegetation cover (Proportion) +55 55 Leaf area index, low-vegetation (m2 m-2) +56 56 Leaf area index, high-vegetation (m2 m-2) +57 57 Type of low-vegetation (Code table 4.234) +58 58 Type of high-vegetation (Code table 4.234) +59 59 Net ecosystem exchange flux (kg m-2 s-1) +60 60 Gross primary production flux (kg m-2 s-1) +61 61 Ecosystem respiration flux (kg m-2 s-1) +# 62-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/31/4.2.2.3.table b/definitions/grib2/tables/31/4.2.2.3.table new file mode 100644 index 000000000..5eb7c4d02 --- /dev/null +++ b/definitions/grib2/tables/31/4.2.2.3.table @@ -0,0 +1,34 @@ +# Product discipline 2 - Land surface products, parameter category 3: soil products +0 0 Soil type (Code table 4.213) +1 1 Upper layer soil temperature (K) +2 2 Upper layer soil moisture (kg m-3) +3 3 Lower layer soil moisture (kg m-3) +4 4 Bottom layer soil temperature (K) +5 5 Liquid volumetric soil moisture (non-frozen) (Proportion) +6 6 Number of soil layers in root zone (Numeric) +7 7 Transpiration stress-onset (soil moisture) (Proportion) +8 8 Direct evaporation cease (soil moisture) (Proportion) +9 9 Soil porosity (Proportion) +10 10 Liquid volumetric soil moisture (non-frozen) (m3 m-3) +11 11 Volumetric transpiration stress-onset (soil moisture) (m3 m-3) +12 12 Transpiration stress-onset (soil moisture) (kg m-3) +13 13 Volumetric direct evaporation cease (soil moisture) (m3 m-3) +14 14 Direct evaporation cease (soil moisture) (kg m-3) +15 15 Soil porosity (m3 m-3) +16 16 Volumetric saturation of soil moisture (m3 m-3) +17 17 Saturation of soil moisture (kg m-3) +18 18 Soil temperature (K) +19 19 Soil moisture (kg m-3) +20 20 Column-integrated soil moisture (kg m-2) +21 21 Soil ice (kg m-3) +22 22 Column-integrated soil ice (kg m-2) +23 23 Liquid water in snow pack (kg m-2) +24 24 Frost index (K day-1) +25 25 Snow depth at elevation bands (kg m-2) +26 26 Soil heat flux (W m-2) +27 27 Soil depth (m) +28 28 Snow temperature (K) +29 29 Ice temperature (K) +# 30-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/31/4.2.2.4.table b/definitions/grib2/tables/31/4.2.2.4.table new file mode 100644 index 000000000..d7d107416 --- /dev/null +++ b/definitions/grib2/tables/31/4.2.2.4.table @@ -0,0 +1,31 @@ +# Product discipline 2 - Land surface products, parameter category 4: fire weather products +0 0 Fire outlook (Code table 4.224) +1 1 Fire outlook due to dry thunderstorm (Code table 4.224) +2 2 Haines index (Numeric) +3 3 Fire burned area (%) +4 4 Fosberg index (Numeric) +5 5 Forest Fire Weather Index (as defined by the Canadian Forest Service) (Numeric) +6 6 Fine Fuel Moisture Code (as defined by the Canadian Forest Service) (Numeric) +7 7 Duff Moisture Code (as defined by the Canadian Forest Service) (Numeric) +8 8 Drought Code (as defined by the Canadian Forest Service) (Numeric) +9 9 Initial Fire Spread Index (as defined by the Canadian Forest Service) (Numeric) +10 10 Fire Buildup Index (as defined by the Canadian Forest Service) (Numeric) +11 11 Fire Daily Severity Rating (as defined by the Canadian Forest Service) (Numeric) +12 12 Keetch-Byram drought index (Numeric) +13 13 Drought factor (as defined by the Australian forest service ) (Numeric) +14 14 Rate of spread (as defined by the Australian forest service ) (m/s) +15 15 Fire danger index (as defined by the Australian forest service ) (Numeric) +16 16 Spread component (as defined by the US Forest Service National Fire Danger Rating System) (Numeric) +17 17 Burning index (as defined by the US Forest Service National Fire Danger Rating System) (Numeric) +18 18 Ignition component (as defined by the US Forest Service National Fire Danger Rating System) (%) +19 19 Energy release component (as defined by the US Forest Service National Fire Danger Rating System) (Joule/m2) +20 20 Burning area (%) +21 21 Burnable area (%) +22 22 Unburnable area (%) +23 23 Fuel load (kg m-2) +24 24 Combustion completeness (%) +25 25 Fuel moisture content (kg kg-1) +26 26 Wildfire potential (as defined by the US NOAA Global Systems Laboratory) (Numeric) +# 27-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/31/4.2.2.5.table b/definitions/grib2/tables/31/4.2.2.5.table new file mode 100644 index 000000000..7e87927b1 --- /dev/null +++ b/definitions/grib2/tables/31/4.2.2.5.table @@ -0,0 +1,6 @@ +# Product discipline 2 - Land surface products, parameter category 5: glaciers and inland ice +0 0 Glacier cover (Proportion) +1 1 Glacier temperature (K) +# 2-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/31/4.2.2.6.table b/definitions/grib2/tables/31/4.2.2.6.table new file mode 100644 index 000000000..a2ba47cb2 --- /dev/null +++ b/definitions/grib2/tables/31/4.2.2.6.table @@ -0,0 +1,10 @@ +# Product discipline 2 - Land surface products, parameter category 6: urban areas +0 0 Urban cover (Proportion) +1 1 Road cover (Proportion) +2 2 Building cover (Proportion) +3 3 Building height (m) +4 4 Vertical-to-horizontal area fraction (m2 m-2) +5 5 Standard deviation of building height (m) +# 6-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/31/4.2.20.0.table b/definitions/grib2/tables/31/4.2.20.0.table new file mode 100644 index 000000000..64ce0f01c --- /dev/null +++ b/definitions/grib2/tables/31/4.2.20.0.table @@ -0,0 +1,13 @@ +# Product discipline 20 - Health and socioeconomic impacts, parameter category 0: health indicators +0 0 Universal thermal climate index (K) +1 1 Mean radiant temperature (K) +2 2 Wet-bulb globe temperature (K) +3 3 Globe temperature (K) +4 4 Humidex (K) +5 5 Effective temperature (K) +6 6 Normal effective temperature (K) +7 7 Standard effective temperature (K) +8 8 Physiological equivalent temperature (K) +# 9-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/31/4.2.20.1.table b/definitions/grib2/tables/31/4.2.20.1.table new file mode 100644 index 000000000..c4c87d4ad --- /dev/null +++ b/definitions/grib2/tables/31/4.2.20.1.table @@ -0,0 +1,14 @@ +# Product discipline 20 - Health and socioeconomic impacts, parameter category 1: epidemiology +0 0 Malaria cases (Fraction) +1 1 Malaria circumsporozoite protein rate (Fraction) +2 2 Plasmodium falciparum entomological inoculation rate (Bites per day per person) +3 3 Human bite rate by anopheles vectors (Bites per day per person) +4 4 Malaria immunity (Fraction) +5 5 Falciparum parasite rates (Fraction) +6 6 Detectable falciparum parasite ratio (after day 10) (Fraction) +7 7 Anopheles vector to host ratio (Fraction) +8 8 Anopheles vector number (Number m-2) +9 9 Fraction of malarial vector reproductive habitat (Fraction) +# 10-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/31/4.2.20.2.table b/definitions/grib2/tables/31/4.2.20.2.table new file mode 100644 index 000000000..3c3563ac0 --- /dev/null +++ b/definitions/grib2/tables/31/4.2.20.2.table @@ -0,0 +1,5 @@ +# Product discipline 20 - Health and socioeconomic impacts, parameter category 2: socioeconomic indicators +0 0 Population density (Person m-2) +# 1-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/31/4.2.3.0.table b/definitions/grib2/tables/31/4.2.3.0.table new file mode 100644 index 000000000..fd75ee1b8 --- /dev/null +++ b/definitions/grib2/tables/31/4.2.3.0.table @@ -0,0 +1,14 @@ +# Product discipline 3 - Space products, parameter category 0: image format products +0 0 Scaled radiance (Numeric) +1 1 Scaled albedo (Numeric) +2 2 Scaled brightness temperature (Numeric) +3 3 Scaled precipitable water (Numeric) +4 4 Scaled lifted index (Numeric) +5 5 Scaled cloud top pressure (Numeric) +6 6 Scaled skin temperature (Numeric) +7 7 Cloud mask (Code table 4.217) +8 8 Pixel scene type (Code table 4.218) +9 9 Fire detection indicator (Code table 4.223) +# 10-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/31/4.2.3.1.table b/definitions/grib2/tables/31/4.2.3.1.table new file mode 100644 index 000000000..ad568321d --- /dev/null +++ b/definitions/grib2/tables/31/4.2.3.1.table @@ -0,0 +1,36 @@ +# Product discipline 3 - Space products, parameter category 1: quantitative products +0 0 Estimated precipitation (kg m-2) +1 1 Instantaneous rain rate (kg m-2 s-1) +2 2 Cloud top height (m) +3 3 Cloud top height quality indicator (Code table 4.219) +4 4 Estimated u-component of wind (m/s) +5 5 Estimated v-component of wind (m/s) +6 6 Number of pixel used (Numeric) +7 7 Solar zenith angle (deg) +8 8 Relative azimuth angle (deg) +9 9 Reflectance in 0.6 micron channel (%) +10 10 Reflectance in 0.8 micron channel (%) +11 11 Reflectance in 1.6 micron channel (%) +12 12 Reflectance in 3.9 micron channel (%) +13 13 Atmospheric divergence (/s) +14 14 Cloudy brightness temperature (K) +15 15 Clear-sky brightness temperature (K) +16 16 Cloudy radiance (with respect to wave number) (W m-1 sr-1) +17 17 Clear-sky radiance (with respect to wave number) (W m-1 sr-1) +18 18 Reserved +19 19 Wind speed (m/s) +20 20 Aerosol optical thickness at 0.635 um +21 21 Aerosol optical thickness at 0.810 um +22 22 Aerosol optical thickness at 1.640 um +23 23 Angstrom coefficient +# 24-26 Reserved +27 27 Bidirectional reflectance factor (Numeric) +28 28 Brightness temperature (K) +29 29 Scaled radiance (Numeric) +30 30 Reflectance in 0.4 micron channel (%) +# 31-97 Reserved +98 98 Correlation coefficient between MPE rain-rates for the co-located IR data and the microwave data rain-rates (Numeric) +99 99 Standard deviation between MPE rain-rates for the co-located IR data and the microwave data rain-rates (kg m-2 s-1) +# 100-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/31/4.2.3.2.table b/definitions/grib2/tables/31/4.2.3.2.table new file mode 100644 index 000000000..a97ce4942 --- /dev/null +++ b/definitions/grib2/tables/31/4.2.3.2.table @@ -0,0 +1,24 @@ +# Product discipline 3 - Space products, parameter category 2: cloud properties +0 0 Clear sky probability (%) +1 1 Cloud top temperature (K) +2 2 Cloud top pressure (Pa) +3 3 Cloud type (Code table 4.218) +4 4 Cloud phase (Code table 4.218) +5 5 Cloud optical depth (Numeric) +6 6 Cloud particle effective radius (m) +7 7 Cloud liquid water path (kg m-2) +8 8 Cloud ice water path (kg m-2) +9 9 Cloud albedo (Numeric) +10 10 Cloud emissivity (Numeric) +11 11 Effective absorption optical depth ratio (Numeric) +30 30 Measurement cost (Numeric) +31 31 Upper layer cloud optical depth (Numeric) +32 32 Upper layer cloud top pressure (Pa) +33 33 Upper layer cloud effective radius (m) +34 34 Error in upper layer cloud optical depth (Numeric) +35 35 Error in upper layer cloud top pressure (Pa) +36 36 Error in upper layer cloud effective radius (m) +37 37 Lower layer cloud optical depth (Numeric) +38 38 Lower layer cloud top pressure (Pa) +39 39 Error in lower layer cloud optical depth (Numeric) +40 40 Error in lower layer cloud top pressure (Pa) diff --git a/definitions/grib2/tables/31/4.2.3.3.table b/definitions/grib2/tables/31/4.2.3.3.table new file mode 100644 index 000000000..c487a578e --- /dev/null +++ b/definitions/grib2/tables/31/4.2.3.3.table @@ -0,0 +1,4 @@ +# Product discipline 3 - Space products, parameter category 3: flight rule conditions +0 0 Probability of encountering marginal visual flight rule conditions (%) +1 1 Probability of encountering low instrument flight rule conditions (%) +2 2 Probability of encountering instrument flight rule conditions (%) diff --git a/definitions/grib2/tables/31/4.2.3.4.table b/definitions/grib2/tables/31/4.2.3.4.table new file mode 100644 index 000000000..7f832ff3c --- /dev/null +++ b/definitions/grib2/tables/31/4.2.3.4.table @@ -0,0 +1,10 @@ +# Product discipline 3 - Space products, parameter category 4: volcanic ash +0 0 Volcanic ash probability (%) +1 1 Volcanic ash cloud top temperature (K) +2 2 Volcanic ash cloud top pressure (Pa) +3 3 Volcanic ash cloud top height (m) +4 4 Volcanic ash cloud emissivity (Numeric) +5 5 Volcanic ash effective absorption optical depth ratio (Numeric) +6 6 Volcanic ash cloud optical depth (Numeric) +7 7 Volcanic ash column density (kg m-2) +8 8 Volcanic ash particle effective radius (m) diff --git a/definitions/grib2/tables/31/4.2.3.5.table b/definitions/grib2/tables/31/4.2.3.5.table new file mode 100644 index 000000000..58a3f12cb --- /dev/null +++ b/definitions/grib2/tables/31/4.2.3.5.table @@ -0,0 +1,7 @@ +# Product discipline 3 - Space products, parameter category 5: sea-surface temperature +0 0 Interface sea-surface temperature (K) +1 1 Skin sea-surface temperature (K) +2 2 Sub-skin sea-surface temperature (K) +3 3 Foundation sea-surface temperature (K) +4 4 Estimated bias between sea-surface temperature and standard (K) +5 5 Estimated standard deviation between sea surface temperature and standard (K) diff --git a/definitions/grib2/tables/31/4.2.3.6.table b/definitions/grib2/tables/31/4.2.3.6.table new file mode 100644 index 000000000..62a5ba656 --- /dev/null +++ b/definitions/grib2/tables/31/4.2.3.6.table @@ -0,0 +1,7 @@ +# Product discipline 3 - Space products, parameter category 6: solar radiation +0 0 Global solar irradiance (W m-2) +1 1 Global solar exposure (J m-2) +2 2 Direct solar irradiance (W m-2) +3 3 Direct solar exposure (J m-2) +4 4 Diffuse solar irradiance (W m-2) +5 5 Diffuse solar exposure (J m-2) diff --git a/definitions/grib2/tables/31/4.2.4.0.table b/definitions/grib2/tables/31/4.2.4.0.table new file mode 100644 index 000000000..1a9318430 --- /dev/null +++ b/definitions/grib2/tables/31/4.2.4.0.table @@ -0,0 +1,10 @@ +# Product discipline 4 - Space weather products, parameter category 0: temperature +0 0 Temperature (K) +1 1 Electron temperature (K) +2 2 Proton temperature (K) +3 3 Ion temperature (K) +4 4 Parallel temperature (K) +5 5 Perpendicular temperature (K) +# 6-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/31/4.2.4.1.table b/definitions/grib2/tables/31/4.2.4.1.table new file mode 100644 index 000000000..ba2d09db8 --- /dev/null +++ b/definitions/grib2/tables/31/4.2.4.1.table @@ -0,0 +1,8 @@ +# Product discipline 4 - Space weather products, parameter category 1: momentum +0 0 Velocity magnitude (speed) (m s-1) +1 1 1st vector component of velocity (coordinate system dependent) (m s-1) +2 2 2nd vector component of velocity (coordinate system dependent) (m s-1) +3 3 3rd vector component of velocity (coordinate system dependent) (m s-1) +# 4-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/31/4.2.4.10.table b/definitions/grib2/tables/31/4.2.4.10.table new file mode 100644 index 000000000..fd9b2db49 --- /dev/null +++ b/definitions/grib2/tables/31/4.2.4.10.table @@ -0,0 +1,12 @@ +# Product discipline 4 - Space weather products, parameter category 10: space weather indices +0 0 Scintillation index (sigma phi) (rad) +1 1 Scintillation index S4 (Numeric) +2 2 Rate of change of TEC index (ROTI) (TECU/min) +3 3 Disturbance ionosphere index spatial gradient (DIXSG) (Numeric) +4 4 Along arc TEC rate (AATR) (TECU/min) +5 5 Kp (Numeric) +6 6 Equatorial disturbance storm time index (Dst) (nT) +7 7 Auroral electrojet (AE) (nT) +# 8-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/31/4.2.4.2.table b/definitions/grib2/tables/31/4.2.4.2.table new file mode 100644 index 000000000..90a94d23d --- /dev/null +++ b/definitions/grib2/tables/31/4.2.4.2.table @@ -0,0 +1,18 @@ +# Product discipline 4 - Space weather products, parameter category 2: charged particle mass and number +0 0 Particle number density (m-3) +1 1 Electron density (m-3) +2 2 Proton density (m-3) +3 3 Ion density (m-3) +4 4 Vertical total electron content (TECU) +5 5 HF absorption frequency (Hz) +6 6 HF absorption (dB) +7 7 Spread F (m) +8 8 h'F (m) +9 9 Critical frequency (Hz) +10 10 Maximal usable frequency (MUF) (Hz) +11 11 Peak height (hm) (m) +12 12 Peak density (Nm) (m-3) +13 13 Equivalent slab thickness (tau) (km) +# 14-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/31/4.2.4.3.table b/definitions/grib2/tables/31/4.2.4.3.table new file mode 100644 index 000000000..aabee3d3a --- /dev/null +++ b/definitions/grib2/tables/31/4.2.4.3.table @@ -0,0 +1,12 @@ +# Product discipline 4 - Space weather products, parameter category 3: electric and magnetic fields +0 0 Magnetic field magnitude (T) +1 1 1st vector component of magnetic field (T) +2 2 2nd vector component of magnetic field (T) +3 3 3rd vector component of magnetic field (T) +4 4 Electric field magnitude (V m-1) +5 5 1st vector component of electric field (V m-1) +6 6 2nd vector component of electric field (V m-1) +7 7 3rd vector component of electric field (V m-1) +# 8-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/31/4.2.4.4.table b/definitions/grib2/tables/31/4.2.4.4.table new file mode 100644 index 000000000..b54568ce4 --- /dev/null +++ b/definitions/grib2/tables/31/4.2.4.4.table @@ -0,0 +1,11 @@ +# Product discipline 4 - Space weather products, parameter category 4: energetic particles +0 0 Proton flux (differential) ((m2 s sr eV)-1) +1 1 Proton flux (integral) ((m2 s sr )-1) +2 2 Electron flux (differential) ((m2 s sr eV)-1) +3 3 Electron flux (integral) ((m2 s sr)-1) +4 4 Heavy ion flux (differential) ((m2 s sr eV/nuc)-1) +5 5 Heavy ion flux (integral) ((m2 s sr)-1) +6 6 Cosmic ray neutron flux (h-1) +# 7-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/31/4.2.4.5.table b/definitions/grib2/tables/31/4.2.4.5.table new file mode 100644 index 000000000..93bfa1d01 --- /dev/null +++ b/definitions/grib2/tables/31/4.2.4.5.table @@ -0,0 +1,8 @@ +# Product discipline 4 - Space weather products, parameter category 5: waves +0 0 Amplitude (dB) +1 1 Phase (rad) +2 2 Frequency (Hz) +3 3 Wavelength (m) +# 4-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/31/4.2.4.6.table b/definitions/grib2/tables/31/4.2.4.6.table new file mode 100644 index 000000000..92bdcb92c --- /dev/null +++ b/definitions/grib2/tables/31/4.2.4.6.table @@ -0,0 +1,11 @@ +# Product discipline 4 - Space weather products, parameter category 6: solar electromagnetic emissions +0 0 Integrated solar irradiance (W m-2) +1 1 Solar X-ray flux (XRS long) (W m-2) +2 2 Solar X-ray flux (XRS short) (W m-2) +3 3 Solar EUV irradiance (W m-2) +4 4 Solar spectral irradiance (W m-2 nm-1) +5 5 F10.7 (W m-2 Hz-1) +6 6 Solar radio emissions (W m-2 Hz-1) +# 7-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/31/4.2.4.7.table b/definitions/grib2/tables/31/4.2.4.7.table new file mode 100644 index 000000000..da779d098 --- /dev/null +++ b/definitions/grib2/tables/31/4.2.4.7.table @@ -0,0 +1,8 @@ +# Product discipline 4 - Space weather products, parameter category 7: terrestrial electromagnetic emissions +0 0 Limb intensity (J m-2 s-1) +1 1 Disk intensity (J m-2 s-1) +2 2 Disk intensity day (J m-2 s-1) +3 3 Disk intensity night (J m-2 s-1) +# 4-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/31/4.2.4.8.table b/definitions/grib2/tables/31/4.2.4.8.table new file mode 100644 index 000000000..fd2227ccd --- /dev/null +++ b/definitions/grib2/tables/31/4.2.4.8.table @@ -0,0 +1,13 @@ +# Product discipline 4 - Space weather products, parameter category 8: imagery +0 0 X-ray radiance (W sr-1 m-2) +1 1 EUV radiance (W sr-1 m-2) +2 2 H-alpha radiance (W sr-1 m-2) +3 3 White light radiance (W sr-1 m-2) +4 4 CaII-K radiance (W sr-1 m-2) +5 5 White light coronagraph radiance (W sr-1 m-2) +6 6 Heliospheric radiance (W sr-1 m-2) +7 7 Thematic mask (Numeric) +8 8 Solar induced chlorophyll fluorescence (W m-2 sr-1 m-1) +# 9-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/31/4.2.4.9.table b/definitions/grib2/tables/31/4.2.4.9.table new file mode 100644 index 000000000..9c4e93ec7 --- /dev/null +++ b/definitions/grib2/tables/31/4.2.4.9.table @@ -0,0 +1,7 @@ +# Product discipline 4 - Space weather products, parameter category 9: ion-neutral coupling +0 0 Pedersen conductivity (S m-1) +1 1 Hall conductivity (S m-1) +2 2 Parallel conductivity (S m-1) +# 3-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/31/4.201.table b/definitions/grib2/tables/31/4.201.table new file mode 100644 index 000000000..49fe27c85 --- /dev/null +++ b/definitions/grib2/tables/31/4.201.table @@ -0,0 +1,17 @@ +# Code table 4.201 - Precipitation type +0 0 No precipitation +1 1 Rain +2 2 Thunderstorm +3 3 Freezing rain +4 4 Mixed/ice +5 5 Snow +6 6 Wet snow +7 7 Mixture of rain and snow +8 8 Ice pellets +9 9 Graupel +10 10 Hail +11 11 Drizzle +12 12 Freezing drizzle +# 13-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/31/4.202.table b/definitions/grib2/tables/31/4.202.table new file mode 100644 index 000000000..438502ff9 --- /dev/null +++ b/definitions/grib2/tables/31/4.202.table @@ -0,0 +1,4 @@ +# Code table 4.202 - Precipitable water category +# 0-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/31/4.203.table b/definitions/grib2/tables/31/4.203.table new file mode 100644 index 000000000..8a9aedf7a --- /dev/null +++ b/definitions/grib2/tables/31/4.203.table @@ -0,0 +1,26 @@ +# Code table 4.203 - Cloud type +0 0 Clear +1 1 Cumulonimbus +2 2 Stratus +3 3 Stratocumulus +4 4 Cumulus +5 5 Altostratus +6 6 Nimbostratus +7 7 Altocumulus +8 8 Cirrostratus +9 9 Cirrocumulus +10 10 Cirrus +11 11 Cumulonimbus - ground-based fog beneath the lowest layer +12 12 Stratus - ground-based fog beneath the lowest layer +13 13 Stratocumulus - ground-based fog beneath the lowest layer +14 14 Cumulus - ground-based fog beneath the lowest layer +15 15 Altostratus - ground-based fog beneath the lowest layer +16 16 Nimbostratus - ground-based fog beneath the lowest layer +17 17 Altocumulus - ground-based fog beneath the lowest layer +18 18 Cirrostratus - ground-based fog beneath the lowest layer +19 19 Cirrocumulus - ground-based fog beneath the lowest layer +20 20 Cirrus - ground-based fog beneath the lowest layer +# 21-190 Reserved +191 191 Unknown +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/31/4.204.table b/definitions/grib2/tables/31/4.204.table new file mode 100644 index 000000000..481372936 --- /dev/null +++ b/definitions/grib2/tables/31/4.204.table @@ -0,0 +1,9 @@ +# Code table 4.204 - Thunderstorm coverage +0 0 None +1 1 Isolated (1-2%) +2 2 Few (3-5%) +3 3 Scattered (6-45%) +4 4 Numerous (> 45%) +# 5-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/31/4.205.table b/definitions/grib2/tables/31/4.205.table new file mode 100644 index 000000000..5b4484dfd --- /dev/null +++ b/definitions/grib2/tables/31/4.205.table @@ -0,0 +1,6 @@ +# Code table 4.205 - Presence of aerosol +0 0 Aerosol not present +1 1 Aerosol present +# 2-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/31/4.206.table b/definitions/grib2/tables/31/4.206.table new file mode 100644 index 000000000..02c3dfdf9 --- /dev/null +++ b/definitions/grib2/tables/31/4.206.table @@ -0,0 +1,6 @@ +# Code table 4.206 - Volcanic ash +0 0 Not present +1 1 Present +# 2-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/31/4.207.table b/definitions/grib2/tables/31/4.207.table new file mode 100644 index 000000000..8ddb2e048 --- /dev/null +++ b/definitions/grib2/tables/31/4.207.table @@ -0,0 +1,10 @@ +# Code table 4.207 - Icing +0 0 None +1 1 Light +2 2 Moderate +3 3 Severe +4 4 Trace +5 5 Heavy +# 6-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/31/4.208.table b/definitions/grib2/tables/31/4.208.table new file mode 100644 index 000000000..b83685a1a --- /dev/null +++ b/definitions/grib2/tables/31/4.208.table @@ -0,0 +1,9 @@ +# Code table 4.208 - Turbulence +0 0 None (smooth) +1 1 Light +2 2 Moderate +3 3 Severe +4 4 Extreme +# 5-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/31/4.209.table b/definitions/grib2/tables/31/4.209.table new file mode 100644 index 000000000..cb7617071 --- /dev/null +++ b/definitions/grib2/tables/31/4.209.table @@ -0,0 +1,9 @@ +# Code table 4.209 - Planetary boundary-layer regime +0 0 Reserved +1 1 Stable +2 2 Mechanically driven turbulence +3 3 Forced convection +4 4 Free convection +# 5-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/31/4.210.table b/definitions/grib2/tables/31/4.210.table new file mode 100644 index 000000000..524a6ca73 --- /dev/null +++ b/definitions/grib2/tables/31/4.210.table @@ -0,0 +1,6 @@ +# Code table 4.210 - Contrail intensity +0 0 Contrail not present +1 1 Contrail present +# 2-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/31/4.211.table b/definitions/grib2/tables/31/4.211.table new file mode 100644 index 000000000..098eb2d43 --- /dev/null +++ b/definitions/grib2/tables/31/4.211.table @@ -0,0 +1,7 @@ +# Code table 4.211 - Contrail engine type +0 0 Low bypass +1 1 High bypass +2 2 Non-bypass +# 3-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/31/4.212.table b/definitions/grib2/tables/31/4.212.table new file mode 100644 index 000000000..1a085b88d --- /dev/null +++ b/definitions/grib2/tables/31/4.212.table @@ -0,0 +1,18 @@ +# Code table 4.212 - Land use +0 0 Reserved +1 1 Urban land +2 2 Agriculture +3 3 Range land +4 4 Deciduous forest +5 5 Coniferous forest +6 6 Forest/wetland +7 7 Water +8 8 Wetlands +9 9 Desert +10 10 Tundra +11 11 Ice +12 12 Tropical forest +13 13 Savannah +# 14-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/31/4.213.table b/definitions/grib2/tables/31/4.213.table new file mode 100644 index 000000000..c65784a00 --- /dev/null +++ b/definitions/grib2/tables/31/4.213.table @@ -0,0 +1,16 @@ +# Code table 4.213 - Soil type +0 0 Reserved +1 1 Sand +2 2 Loamy sand +3 3 Sandy loam +4 4 Silt loam +5 5 Organic (redefined) +6 6 Sandy clay loam +7 7 Silt clay loam +8 8 Clay loam +9 9 Sandy clay +10 10 Silty clay +11 11 Clay +# 12-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/31/4.214.table b/definitions/grib2/tables/31/4.214.table new file mode 100644 index 000000000..9df466fe5 --- /dev/null +++ b/definitions/grib2/tables/31/4.214.table @@ -0,0 +1,11 @@ +# Code table 4.214 - Environmental Factor Qualifier +0 0 Worst +1 1 Very poor +2 2 Poor +3 3 Average +4 4 Good +5 5 Excellent +# 6-190 Reserved +191 191 Unknown +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/31/4.215.table b/definitions/grib2/tables/31/4.215.table new file mode 100644 index 000000000..034db72be --- /dev/null +++ b/definitions/grib2/tables/31/4.215.table @@ -0,0 +1,9 @@ +# Code table 4.215 - Remotely sensed snow coverage +# 0-49 Reserved +50 50 No-snow/no-cloud +# 51-99 Reserved +100 100 Clouds +# 101-249 Reserved +250 250 Snow +# 251-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/31/4.216.table b/definitions/grib2/tables/31/4.216.table new file mode 100644 index 000000000..5d1460cef --- /dev/null +++ b/definitions/grib2/tables/31/4.216.table @@ -0,0 +1,5 @@ +# Code table 4.216 - Elevation of snow-covered terrain +# 0-90 Elevation in increments of 100 m +# 91-253 Reserved +254 254 Clouds +255 255 Missing diff --git a/definitions/grib2/tables/31/4.217.table b/definitions/grib2/tables/31/4.217.table new file mode 100644 index 000000000..a4452182c --- /dev/null +++ b/definitions/grib2/tables/31/4.217.table @@ -0,0 +1,8 @@ +# Code table 4.217 - Cloud mask type +0 0 Clear over water +1 1 Clear over land +2 2 Cloud +3 3 No data +# 4-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/31/4.218.table b/definitions/grib2/tables/31/4.218.table new file mode 100644 index 000000000..fcd06c348 --- /dev/null +++ b/definitions/grib2/tables/31/4.218.table @@ -0,0 +1,46 @@ +# Code table 4.218 - Pixel scene type +0 0 No scene identified +1 1 Green needle-leafed forest +2 2 Green broad-leafed forest +3 3 Deciduous needle-leafed forest +4 4 Deciduous broad-leafed forest +5 5 Deciduous mixed forest +6 6 Closed shrub-land +7 7 Open shrub-land +8 8 Woody savannah +9 9 Savannah +10 10 Grassland +11 11 Permanent wetland +12 12 Cropland +13 13 Urban +14 14 Vegetation/crops +15 15 Permanent snow/ice +16 16 Barren desert +17 17 Water bodies +18 18 Tundra +19 19 Warm liquid water cloud +20 20 Supercooled liquid water cloud +21 21 Mixed-phase cloud +22 22 Optically thin ice cloud +23 23 Optically thick ice cloud +24 24 Multilayered cloud +# 25-96 Reserved +97 97 Snow/ice on land +98 98 Snow/ice on water +99 99 Sun-glint +100 100 General cloud +101 101 Low cloud/fog/stratus +102 102 Low cloud/stratocumulus +103 103 Low cloud/unknown type +104 104 Medium cloud/nimbostratus +105 105 Medium cloud/altostratus +106 106 Medium cloud/unknown type +107 107 High cloud/cumulus +108 108 High cloud/cirrus +109 109 High cloud/unknown +110 110 Unknown cloud type +111 111 Single layer water cloud +112 112 Single layer ice cloud +# 113-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/31/4.219.table b/definitions/grib2/tables/31/4.219.table new file mode 100644 index 000000000..86df0522e --- /dev/null +++ b/definitions/grib2/tables/31/4.219.table @@ -0,0 +1,8 @@ +# Code table 4.219 - Cloud top height quality indicator +0 0 Nominal cloud top height quality +1 1 Fog in segment +2 2 Poor quality height estimation +3 3 Fog in segment and poor quality height estimation +# 4-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/31/4.220.table b/definitions/grib2/tables/31/4.220.table new file mode 100644 index 000000000..93e841f8b --- /dev/null +++ b/definitions/grib2/tables/31/4.220.table @@ -0,0 +1,6 @@ +# Code table 4.220 - Horizontal dimension processed +0 0 Latitude +1 1 Longitude +# 2-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/31/4.221.table b/definitions/grib2/tables/31/4.221.table new file mode 100644 index 000000000..8448533d7 --- /dev/null +++ b/definitions/grib2/tables/31/4.221.table @@ -0,0 +1,6 @@ +# Code table 4.221 - Treatment of missing data +0 0 Not included +1 1 Extrapolated +# 2-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/31/4.222.table b/definitions/grib2/tables/31/4.222.table new file mode 100644 index 000000000..57f113014 --- /dev/null +++ b/definitions/grib2/tables/31/4.222.table @@ -0,0 +1,6 @@ +# Code table 4.222 - Categorical result +0 0 No +1 1 Yes +# 2-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/31/4.223.table b/definitions/grib2/tables/31/4.223.table new file mode 100644 index 000000000..f0deb076a --- /dev/null +++ b/definitions/grib2/tables/31/4.223.table @@ -0,0 +1,5 @@ +# Code table 4.223 - Fire detection indicator +0 0 No fire detected +1 1 Possible fire detected +2 2 Probable fire detected +3 3 Missing diff --git a/definitions/grib2/tables/31/4.224.table b/definitions/grib2/tables/31/4.224.table new file mode 100644 index 000000000..e87cde4bb --- /dev/null +++ b/definitions/grib2/tables/31/4.224.table @@ -0,0 +1,18 @@ +# Code table 4.224 - Categorical outlook +0 0 No risk area +1 1 Reserved +2 2 General thunderstorm risk area +3 3 Reserved +4 4 Slight risk area +5 5 Reserved +6 6 Moderate risk area +7 7 Reserved +8 8 High risk area +# 9-10 Reserved +11 11 Dry thunderstorm (dry lightning) risk area +# 12-13 Reserved +14 14 Critical risk area +# 15-17 Reserved +18 18 Extremely critical risk area +# 19-254 Reserved +255 255 Missing diff --git a/definitions/grib2/tables/31/4.225.table b/definitions/grib2/tables/31/4.225.table new file mode 100644 index 000000000..9dc374087 --- /dev/null +++ b/definitions/grib2/tables/31/4.225.table @@ -0,0 +1,2 @@ +# Code table 4.225 - Weather (see FM 94 BUFR/FM 95 CREX Code table 0 20 003 - Present weather) +511 511 Missing value diff --git a/definitions/grib2/tables/31/4.227.table b/definitions/grib2/tables/31/4.227.table new file mode 100644 index 000000000..27c76553d --- /dev/null +++ b/definitions/grib2/tables/31/4.227.table @@ -0,0 +1,9 @@ +# Code table 4.227 - Icing scenario (weather/cloud classification) +0 0 None +1 1 General +2 2 Convective +3 3 Stratiform +4 4 Freezing +# 5-191 Reserved +# 192-254 Reserved for local use +255 255 Missing value diff --git a/definitions/grib2/tables/31/4.228.table b/definitions/grib2/tables/31/4.228.table new file mode 100644 index 000000000..559ae916a --- /dev/null +++ b/definitions/grib2/tables/31/4.228.table @@ -0,0 +1,8 @@ +# Code table 4.228 - Icing severity +0 0 None +1 1 Trace +2 2 Light +3 3 Moderate +4 4 Severe +# 5-254 Reserved +255 255 Missing value diff --git a/definitions/grib2/tables/31/4.230.table b/definitions/grib2/tables/31/4.230.table new file mode 100644 index 000000000..47e011140 --- /dev/null +++ b/definitions/grib2/tables/31/4.230.table @@ -0,0 +1,534 @@ +# Code table 4.230 - Atmospheric chemical constituent type +0 0 Ozone O3 +1 1 Water vapour H2O +2 2 Methane CH4 +3 3 Carbon dioxide CO2 +4 4 Carbon monoxide CO +5 5 Nitrogen dioxide NO2 +6 6 Nitrous oxide N2O +7 7 Formaldehyde HCHO +8 8 Sulphur dioxide SO2 +9 9 Ammonia NH3 +10 10 Ammonium cation NH4+ +11 11 Nitrogen monoxide NO +12 12 Atomic oxygen O +13 13 Nitrate radical NO3* +14 14 Hydroperoxyl radical HOO* +15 15 Dinitrogen pentoxide N2O5 +16 16 Nitrous acid HONO +17 17 Nitric acid HNO3 +18 18 Peroxynitric acid HO2NO2 +19 19 Hydrogen peroxide H2O2 +20 20 Dihydrogen H2 +21 21 Atomic nitrogen N +22 22 Sulphate anion SO42- +23 23 Atomic Radon Rn +24 24 Mercury vapour Hg(0) +25 25 Mercury(II) cation Hg2+ +26 26 Atomic chlorine Cl +27 27 Chlorine monoxide ClO +28 28 Dichlorine peroxide Cl2O2 +29 29 Hypochlorous acid HClO +30 30 Chlorine nitrate ClONO2 +31 31 Chlorine dioxide ClO2 +32 32 Atomic bromine Br +33 33 Bromine monoxide BrO +34 34 Bromine chloride BrCl +35 35 Hydrogen bromide HBr +36 36 Hypobromous acid HBrO +37 37 Bromine nitrate BrONO2 +38 38 Dioxygen O2 +39 39 Nitryl chloride NO2Cl +40 40 Sulphuric acid H2SO4 +41 41 Hydrogen sulphide H2S +42 42 Sulphur trioxide SO3 +43 43 Bromine Br2 +44 44 Hydrofluoric acid HF +45 45 Sulphur hexafluoride SF6 +46 46 Chlorine Cl2 +# 47-9999 Reserved +10000 10000 Hydroxyl radical HO* +10001 10001 Methyl peroxy radical CH3OO* +10002 10002 Methyl hydroperoxide CH3OOH +10004 10004 Methanol CH3OH +10005 10005 Formic acid HCOOH +10006 10006 Hydrogen cyanide HCN +10007 10007 Aceto nitrile CH3CN +10008 10008 Ethane C2H6 +10009 10009 Ethene (= Ethylene) C2H4 +10010 10010 Ethyne (= Acetylene) C2H2 +10011 10011 Ethanol C2H5OH +10012 10012 Acetic acid C2H5OOH +10013 10013 Peroxyacetyl nitrate CH3C(O)OONO2 +10014 10014 Propane C3H8 +10015 10015 Propene C3H6 +10016 10016 Butane (all isomers) C4H10 +10017 10017 Isoprene C5H10 +10018 10018 Alpha pinene C10H16 +10019 10019 Beta pinene C10H16 +10020 10020 Limonene C10H16 +10021 10021 Benzene C6H6 +10022 10022 Toluene C7H8 +10023 10023 Xylene C8H10 +10024 10024 Methanesulphonic acid CH3SO3H +10025 10025 Methylglyoxal (2-oxopropanal) CH3C(O)CHO +10026 10026 Peroxyacetyl radical CH3C(O)OO* +10027 10027 Methacrylic acid (2-methylprop-2-enoic acid) CH2C(CH3)COOH +10028 10028 Methacrolein (2-methylprop-2-enal) CH2C(CH3)CHO +10029 10029 Acetone (propan-2-one) CH3C(O)CH3 +10030 10030 Ethyl dioxidanyl radical CH3CH2OO* +10031 10031 Butadiene (buta-1,3-diene) (CH2CH)2 +10032 10032 Acetaldehyde (ethanal) CH3CHO +10033 10033 Glycolaldehyde (hydroxyethanal) HOCH2CHO +10034 10034 Cresol (methylphenol), all isomers CH3C6H4OH +10035 10035 Peracetic acid (ethaneperoxoic acid) CH3C(O)OOH +10036 10036 2-hydroxyethyl oxidanyl radical HOCH2CH2O* +10037 10037 2-hydroxyethyl dioxidanyl radical HOCH2CH2OO* +10038 10038 Glyoxal (oxaldehyde) OCHCHO +10039 10039 Isopropyl dioxidanyl radical (CH3)2CHOO* +10040 10040 Isopropyl hydroperoxide (2-hydroperoxypropane) (CH3)2CHOOH +10041 10041 Hydroxyacetone (1-hydroxypropan-2-one) CH3C(O)CH2OH +10042 10042 Peroxyacetic acid (ethaneperoxoic acid) CH3C(O)OOH +10043 10043 Methyl vinyl ketone (but-3-en-2-one) CH3C(O)CHCH2 +10044 10044 Phenoxy radical C6H5O* +10045 10045 Methyl radical CH3* +10046 10046 Carbonyl sulphide (carbon oxide sulphide) OCS +10047 10047 Dibromomethane CH2Br2 +10048 10048 Methoxy radical CH3O* +10049 10049 Tribromomethane CHBr3 +10050 10050 Formyl radical (oxomethyl radical) HOC* +10051 10051 Hydroxymethyl dioxidanyl radical HOCH2OO* +10052 10052 Ethyl hydroperoxide CH3CH2OOH +10053 10053 3-hydroxypropyl dioxidanyl radical HOCH2CH2CH2OO* +10054 10054 3-hydroxypropyl hydroperoxide HOCH2CH2CH2OOH +10055 10055 Methyl-peroxy-nitrate (nitroperoxy-methane) CH3OONO2 +10056 10056 2-lambda^1-oxidanyloxy-2-methylbut-3-en-1-ol (4-hydroxy-3-methyl-1-butene-3-ylperoxy radical) HOCH2C(CH3)(OO*)CHCH2 +10057 10057 2-lambda^1-oxidanyloxy-3-methylbut-3-en-1-ol (2-hydroxy-1-isopropenylethylperoxy radical) HOCH2CH(OO*)C(CH3)CH2 +10058 10058 (Z)-4-hydroperoxy-2-methyl-2-butenal CH2(OOH)CHC(CH3)CHO +10059 10059 (Z)-4-hydroperoxy-3-methyl-2-butenal CH2(OOH)C(CH3)CHCHO +# 10060-10499 Reserved for other simple organic molecules (e.g. higher aldehydes, alcohols, peroxides, etc.) +10500 10500 Dimethyl sulphide CH3SCH3 (DMS) +10501 10501 DMSO (dimethyl sulfoxide) (CH3)2SO +# 10502-20000 Reserved +20001 20001 Hydrogen chloride HCl +20002 20002 CFC-11 (trichlorofluoromethane) CCl3F +20003 20003 CFC-12 (dichlorodifluoromethane) CCl2F2 +20004 20004 CFC-113 (1,1,2-trichloro-1,2,2-trifluoroethane) Cl2FC-CClF2 +20005 20005 CFC-113a (1,1,1-trichloro-2,2,2-trifluoroethane) Cl3C-CF3 +20006 20006 CFC-114 (1,2-dichloro-1,1,2,2-tetrafluoroethane) ClF2C-CClF2 +20007 20007 CFC-115 (1-chloro-1,1,2,2,2-pentafluoroethane) ClF2C-CF3 +20008 20008 HCFC-22 (chlorodifluoromethane) CHClF2 +20009 20009 HCFC-141b (1,1-dichloro-1-fluoroethane) Cl2FC-CH3 +20010 20010 HCFC-142b (1-chloro-1,1-difluoroethane) ClF2C-CH3 +20011 20011 Halon-1202 (dibromodifluoromethane) CBr2F2 +20012 20012 Halon-1211 (bromochlorodifluoromethane) CBrClF2 +20013 20013 Halon-1301 (bromotrifluoromethane) CBrF3 +20014 20014 Halon-2402 (1,2-dibromo-1,1,2,2-tetrafluoroethane) BrF2C-CBrF2 +20015 20015 HCC-40 (methyl chloride) CH3Cl +20016 20016 HCC-10 (carbon tetrachloride) CCl4 +20017 20017 HCC-140a (1,1,1-trichloroethane) Cl3C-CH3 +20018 20018 HBC-40B1 (methyl bromide) CH3Br +20019 20019 HCH (hexachlorocyclohexane) all isomers C6H6Cl6 +20020 20020 alpha-HCH (alpha-hexachlorocyclohexane) both enantiomers alpha-C6H6Cl6 +20021 20021 PCB-153 (2,2',4,4',5,5'-hexachlorobiphenyl) (C6H2Cl3)2 +20022 20022 HCFC-141a (1,1-dichloro-2-fluoroethane) Cl2HC-CH2F +# 20023-29999 Reserved +30000 30000 Radioactive pollutant (tracer, defined by originating centre) +# 30001-30009 Reserved +30010 30010 Tritium (Hydrogen 3) H-3 +30011 30011 Tritium organic bounded H-3o +30012 30012 Tritium inorganic H-3a +30013 30013 Beryllium 7 Be-7 +30014 30014 Beryllium 10 Be-10 +30015 30015 Carbon 14 C-14 +30016 30016 Carbon 14 CO2 C-14CO2 +30017 30017 Carbon 14 other gases C-14og +30018 30018 Nitrogen 13 N-13 +30019 30019 Nitrogen 16 N-16 +30020 30020 Fluorine 18 F-18 +30021 30021 Sodium 22 Na-22 +30022 30022 Phosphate 32 P-32 +30023 30023 Phosphate 33 P-33 +30024 30024 Sulphur 35 S-35 +30025 30025 Chlorine 36 Cl-36 +30026 30026 Potassium 40 K-40 +30027 30027 Argon 41 Ar-41 +30028 30028 Calcium 41 Ca-41 +30029 30029 Calcium 45 Ca-45 +30030 30030 Titanium 44 Ti-44 +30031 30031 Scandium 46 Sc-46 +30032 30032 Vanadium 48 V-48 +30033 30033 Vanadium 49 V-49 +30034 30034 Chrome 51 Cr-51 +30035 30035 Manganese 52 Mn-52 +30036 30036 Manganese 54 Mn-54 +30037 30037 Iron 55 Fe-55 +30038 30038 Iron 59 Fe-59 +30039 30039 Cobalt 56 Co-56 +30040 30040 Cobalt 57 Co-57 +30041 30041 Cobalt 58 Co-58 +30042 30042 Cobalt 60 Co-60 +30043 30043 Nickel 59 Ni-59 +30044 30044 Nickel 63 Ni-63 +30045 30045 Zinc 65 Zn-65 +30046 30046 Gallium 67 Ga-67 +30047 30047 Gallium 68 Ga-68 +30048 30048 Germanium 68 Ge-68 +30049 30049 Germanium 69 Ge-69 +30050 30050 Arsenic 73 As-73 +30051 30051 Selenium 75 Se-75 +30052 30052 Selenium 79 Se-79 +30053 30053 Rubidium 81 Rb-81 +30054 30054 Rubidium 83 Rb-83 +30055 30055 Rubidium 84 Rb-84 +30056 30056 Rubidium 86 Rb-86 +30057 30057 Rubidium 87 Rb-87 +30058 30058 Rubidium 88 Rb-88 +30059 30059 Krypton 85 Kr-85 +30060 30060 Krypton 85 metastable Kr-85m +30061 30061 Krypton 87 Kr-87 +30062 30062 Krypton 88 Kr-88 +30063 30063 Krypton 89 Kr-89 +30064 30064 Strontium 85 Sr-85 +30065 30065 Strontium 89 Sr-89 +30066 30066 Strontium 89/90 Sr-8990 +30067 30067 Strontium 90 Sr-90 +30068 30068 Strontium 91 Sr-91 +30069 30069 Strontium 92 Sr-92 +30070 30070 Yttrium 87 Y-87 +30071 30071 Yttrium 88 Y-88 +30072 30072 Yttrium 90 Y-90 +30073 30073 Yttrium 91 Y-91 +30074 30074 Yttrium 91 metastable Y-91m +30075 30075 Yttrium 92 Y-92 +30076 30076 Yttrium 93 Y-93 +30077 30077 Zirconium 89 Zr-89 +30078 30078 Zirconium 93 Zr-93 +30079 30079 Zirconium 95 Zr-95 +30080 30080 Zirconium 97 Zr-97 +30081 30081 Niobium 93 metastable Nb-93m +30082 30082 Niobium 94 Nb-94 +30083 30083 Niobium 95 Nb-95 +30084 30084 Niobium 95 metastable Nb-95m +30085 30085 Niobium 97 Nb-97 +30086 30086 Niobium 97 metastable Nb-97m +30087 30087 Molybdenum 93 Mo-93 +30088 30088 Molybdenum 99 Mo-99 +30089 30089 Technetium 95 metastable Tc-95m +30090 30090 Technetium 96 Tc-96 +30091 30091 Technetium 99 Tc-99 +30092 30092 Technetium 99 metastable Tc-99m +30093 30093 Rhodium 99 Rh-99 +30094 30094 Rhodium 101 Rh-101 +30095 30095 Rhodium 102 metastable Rh-102m +30096 30096 Rhodium 103 metastable Rh-103m +30097 30097 Rhodium 105 Rh-105 +30098 30098 Rhodium 106 Rh-106 +30099 30099 Palladium 100 Pd-100 +30100 30100 Palladium 103 Pd-103 +30101 30101 Palladium 107 Pd-107 +30102 30102 Ruthenium 103 Ru-103 +30103 30103 Ruthenium 105 Ru-105 +30104 30104 Ruthenium 106 Ru-106 +30105 30105 Silver 108 metastable Ag-108m +30106 30106 Silver 110 metastable Ag-110m +30107 30107 Cadmium 109 Cd-109 +30108 30108 Cadmium 113 metastable Cd-113m +30109 30109 Cadmium 115 metastable Cd-115m +30110 30110 Indium 114 metastable In-114m +30111 30111 Tin 113 Sn-113 +30112 30112 Tin 119 metastable Sn-119m +30113 30113 Tin 121 metastable Sn-121m +30114 30114 Tin 122 Sn-122 +30115 30115 Tin 123 Sn-123 +30116 30116 Tin 126 Sn-126 +30117 30117 Antimony 124 Sb-124 +30118 30118 Antimony 125 Sb-125 +30119 30119 Antimony 126 Sb-126 +30120 30120 Antimony 127 Sb-127 +30121 30121 Antimony 129 Sb-129 +30122 30122 Tellurium 123 metastable Te-123m +30123 30123 Tellurium 125 metastable Te-125m +30124 30124 Tellurium 127 Te-127 +30125 30125 Tellurium 127 metastable Te-127m +30126 30126 Tellurium 129 Te-129 +30127 30127 Tellurium 129 metastable Te-129m +30128 30128 Tellurium 131 metastable Te-131m +30129 30129 Tellurium 132 Te-132 +30130 30130 Iodine 123 I-123 +30131 30131 Iodine 124 I-124 +30132 30132 Iodine 125 I-125 +30133 30133 Iodine 126 I-126 +30134 30134 Iodine 129 I-129 +30135 30135 Iodine 129 elementary gaseous I-129g +30136 30136 Iodine 129 organic bounded I-129o +30137 30137 Iodine 131 I-131 +30138 30138 Iodine 131 elementary gaseous I-131g +30139 30139 Iodine 131 organic bounded I-131o +30140 30140 Iodine 131 gaseous elementary and organic bounded I-131go +30141 30141 Iodine 131 aerosol I-131a +30142 30142 Iodine 132 I-132 +30143 30143 Iodine 132 elementary gaseous I-132g +30144 30144 Iodine 132 organic bounded I-132o +30145 30145 Iodine 132 gaseous elementary and organic bounded I-132go +30146 30146 Iodine 132 aerosol I-132a +30147 30147 Iodine 133 I-133 +30148 30148 Iodine 133 elementary gaseous I-133g +30149 30149 Iodine 133 organic bounded I-133o +30150 30150 Iodine 133 gaseous elementary and organic bounded I-133go +30151 30151 Iodine 133 aerosol I-133a +30152 30152 Iodine 134 I-134 +30153 30153 Iodine 134 elementary gaseous I-134g +30154 30154 Iodine 134 organic bounded I-134o +30155 30155 Iodine 135 I-135 +30156 30156 Iodine 135 elementary gaseous I-135g +30157 30157 Iodine 135 organic bounded I-135o +30158 30158 Iodine 135 gaseous elementary and organic bounded I-135go +30159 30159 Iodine 135 aerosol I-135a +30160 30160 Xenon 131 metastable Xe-131m +30161 30161 Xenon 133 Xe-133 +30162 30162 Xenon 133 metastable Xe-133m +30163 30163 Xenon 135 Xe-135 +30164 30164 Xenon 135 metastable Xe-135m +30165 30165 Xenon 137 Xe-137 +30166 30166 Xenon 138 Xe-138 +30167 30167 Xenon sum of all Xenon isotopes Xe-sum +30168 30168 Caesium 131 Cs-131 +30169 30169 Caesium 134 Cs-134 +30170 30170 Caesium 135 Cs-135 +30171 30171 Caesium 136 Cs-136 +30172 30172 Caesium 137 Cs-137 +30173 30173 Barium 133 Ba-133 +30174 30174 Barium 137 metastable Ba-137m +30175 30175 Barium 140 Ba-140 +30176 30176 Cerium 139 Ce-139 +30177 30177 Cerium 141 Ce-141 +30178 30178 Cerium 143 Ce-143 +30179 30179 Cerium 144 Ce-144 +30180 30180 Lanthanum 140 La-140 +30181 30181 Lanthanum 141 La-141 +30182 30182 Praseodymium 143 Pr-143 +30183 30183 Praseodymium 144 Pr-144 +30184 30184 Praseodymium 144 metastable Pr-144m +30185 30185 Samarium 145 Sm-145 +30186 30186 Samarium 147 Sm-147 +30187 30187 Samarium 151 Sm-151 +30188 30188 Neodymium 147 Nd-147 +30189 30189 Promethium 146 Pm-146 +30190 30190 Promethium 147 Pm-147 +30191 30191 Promethium 151 Pm-151 +30192 30192 Europium 152 Eu-152 +30193 30193 Europium 154 Eu-154 +30194 30194 Europium 155 Eu-155 +30195 30195 Gadolinium 153 Gd-153 +30196 30196 Terbium 160 Tb-160 +30197 30197 Holmium 166 metastable Ho-166m +30198 30198 Thulium 170 Tm-170 +30199 30199 Ytterbium 169 Yb-169 +30200 30200 Hafnium 175 Hf-175 +30201 30201 Hafnium 181 Hf-181 +30202 30202 Tantalum 179 Ta-179 +30203 30203 Tantalum 182 Ta-182 +30204 30204 Rhenium 184 Re-184 +30205 30205 Iridium 192 Ir-192 +30206 30206 Mercury 203 Hg-203 +30207 30207 Thallium 204 Tl-204 +30208 30208 Thallium 207 Tl-207 +30209 30209 Thallium 208 Tl-208 +30210 30210 Thallium 209 Tl-209 +30211 30211 Bismuth 205 Bi-205 +30212 30212 Bismuth 207 Bi-207 +30213 30213 Bismuth 210 Bi-210 +30214 30214 Bismuth 211 Bi-211 +30215 30215 Bismuth 212 Bi-212 +30216 30216 Bismuth 213 Bi-213 +30217 30217 Bismuth 214 Bi-214 +30218 30218 Polonium 208 Po-208 +30219 30219 Polonium 210 Po-210 +30220 30220 Polonium 212 Po-212 +30221 30221 Polonium 213 Po-213 +30222 30222 Polonium 214 Po-214 +30223 30223 Polonium 215 Po-215 +30224 30224 Polonium 216 Po-216 +30225 30225 Polonium 218 Po-218 +30226 30226 Lead 209 Pb-209 +30227 30227 Lead 210 Pb-210 +30228 30228 Lead 211 Pb-211 +30229 30229 Lead 212 Pb-212 +30230 30230 Lead 214 Pb-214 +30231 30231 Astatine 217 At-217 +30232 30232 Radon 219 Rn-219 +30233 30233 Radon 220 Rn-220 +30234 30234 Radon 222 Rn-222 +30235 30235 Francium 221 Fr-221 +30236 30236 Francium 223 Fr-223 +30237 30237 Radium 223 Ra-223 +30238 30238 Radium 224 Ra-224 +30239 30239 Radium 225 Ra-225 +30240 30240 Radium 226 Ra-226 +30241 30241 Radium 228 Ra-228 +30242 30242 Actinium 225 Ac-225 +30243 30243 Actinium 227 Ac-227 +30244 30244 Actinium 228 Ac-228 +30245 30245 Thorium 227 Th-227 +30246 30246 Thorium 228 Th-228 +30247 30247 Thorium 229 Th-229 +30248 30248 Thorium 230 Th-230 +30249 30249 Thorium 231 Th-231 +30250 30250 Thorium 232 Th-232 +30251 30251 Thorium 234 Th-234 +30252 30252 Protactinium 231 Pa-231 +30253 30253 Protactinium 233 Pa-233 +30254 30254 Protactinium 234 metastable Pa-234m +30255 30255 Uranium 232 U-232 +30256 30256 Uranium 233 U-233 +30257 30257 Uranium 234 U-234 +30258 30258 Uranium 235 U-235 +30259 30259 Uranium 236 U-236 +30260 30260 Uranium 237 U-237 +30261 30261 Uranium 238 U-238 +30262 30262 Plutonium 236 Pu-236 +30263 30263 Plutonium 238 Pu-238 +30264 30264 Plutonium 239 Pu-239 +30265 30265 Plutonium 240 Pu-240 +30266 30266 Plutonium 241 Pu-241 +30267 30267 Plutonium 242 Pu-242 +30268 30268 Plutonium 244 Pu-244 +30269 30269 Neptunium 237 Np-237 +30270 30270 Neptunium 238 Np-238 +30271 30271 Neptunium 239 Np-239 +30272 30272 Americium 241 Am-241 +30273 30273 Americium 242 Am-242 +30274 30274 Americium 242 metastable Am-242m +30275 30275 Americium 243 Am-243 +30276 30276 Curium 242 Cm-242 +30277 30277 Curium 243 Cm-243 +30278 30278 Curium 244 Cm-244 +30279 30279 Curium 245 Cm-245 +30280 30280 Curium 246 Cm-246 +30281 30281 Curium 247 Cm-247 +30282 30282 Curium 248 Cm-248 +30283 30283 Curium 243/244 Cm-243244 +30284 30284 Plutonium 238/Americium 241 Pu-238Am-241 +30285 30285 Plutonium 239/240 Pu-239240 +30286 30286 Berkelium 249 Bk-249 +30287 30287 Californium 249 Cf-249 +30288 30288 Californium 250 Cf-250 +30289 30289 Californium 252 Cf-252 +30290 30290 Sum aerosol particulates SumAer +30291 30291 Sum Iodine SumIod +30292 30292 Sum noble gas SumNG +30293 30293 Activation gas ActGas +30294 30294 Cs-137 Equivalent EquCs137 +30295 30295 Carbon-13 C-13 +30296 30296 Lead Pb +30297 30297 Tellurium 131 Te-131 +30298 30298 Neodymium 137 Nd-137 +# 30299-39999 Reserved +40000 40000 Singlet sigma oxygen (dioxygen (sigma singlet)) O2 +40001 40001 Singlet delta oxygen (dioxygen (delta singlet)) O2 +40002 40002 Singlet excited oxygen atom O(1D) +40003 40003 Triplet ground state oxygen atom O(3P) +# 40004-59999 Reserved +60000 60000 HOx radical (OH+HO2) HOx* +60001 60001 Total inorganic and organic peroxy radicals (HOO* + ROO*) ROO* +60002 60002 Passive Ozone +60003 60003 NOx expressed as nitrogen NOx +60004 60004 All nitrogen oxides (NOy) expressed as nitrogen NOy +60005 60005 Total inorganic chlorine Clx +60006 60006 Total inorganic bromine Brx +60007 60007 Total inorganic chlorine except HCl, ClONO2: ClOx +60008 60008 Total inorganic bromine except HBr, BrONO2: BrOx +60009 60009 Lumped alkanes +60010 60010 Lumped alkenes +60011 60011 Lumped aromatic compounds +60012 60012 Lumped terpenes +60013 60013 Non-methane volatile organic compounds expressed as carbon NMVOC +60014 60014 Anthropogenic non-methane volatile organic compounds expressed as carbon aNMVOC +60015 60015 Biogenic non-methane volatile organic compounds expressed as carbon bNMVOC +60016 60016 Lumped oxygenated hydrocarbons OVOC +60017 60017 NOx expressed as nitrogen dioxide (NO2) NOx +60018 60018 Organic aldehydes RCHO +60019 60019 Organic peroxides ROOH +60020 60020 Organic nitrates RNO3 +60021 60021 Ethers ROR' +60022 60022 Amines NRR'R'' +60023 60023 Ketones RC(O)R' +60024 60024 Dicarbonyls unsaturated RC(O)CH2C(O)R' +60025 60025 Hydroxy dicarbonyls unsaturated RC(O)CHOHC(O)R' +60026 60026 Hydroxy ketones RC(OH)C(O)R' +60027 60027 Oxides Ox +60028 60028 Peroxyacyl nitrates RC(O)OONO2 +60029 60029 Aromatic peroxide radical (Aryl dioxydanyl radicals) ArOO* +60030 60030 Biogenic secondary organic compound +60031 60031 Anthropogenic secondary organic compound +60032 60032 All hydroxy-peroxides products of the reaction of hydroxy-isoprene adducts with O2 ISOPOOH +60033 60033 Anthropogenic volatile organic compounds aVOC +60034 60034 Biomass burning volatile organic compounds bbVOC +# 60035-61999 Reserved +62000 62000 Total aerosol +62001 62001 Dust dry +62002 62002 Water in ambient +62003 62003 Ammonium dry +62004 62004 Nitrate dry +62005 62005 Nitric acid trihydrate +62006 62006 Sulphate dry +62007 62007 Mercury dry +62008 62008 Sea salt dry +62009 62009 Black carbon dry +62010 62010 Particulate organic matter dry +62011 62011 Primary particulate organic matter dry +62012 62012 Secondary particulate organic matter dry +62013 62013 Black carbon hydrophilic dry +62014 62014 Black carbon hydrophobic dry +62015 62015 Particulate organic matter hydrophilic dry +62016 62016 Particulate organic matter hydrophobic dry +62017 62017 Nitrate hydrophilic dry +62018 62018 Nitrate hydrophobic dry +# 62019 Reserved +62020 62020 Smoke - high absorption +62021 62021 Smoke - low absorption +62022 62022 Aerosol - high absorption +62023 62023 Aerosol - low absorption +# 62024 Reserved +62025 62025 Volcanic ash +62026 62026 Particulate matter (PM) +# 62027 Reserved +62028 62028 Total aerosol hydrophilic +62029 62029 Total aerosol hydrophobic +62030 62030 Primary particulate inorganic matter dry +62031 62031 Secondary particulate inorganic matter dry +62032 62032 Biogenic secondary organic aerosol +62033 62033 Anthropogenic secondary organic aerosol +62034 62034 Rain water H2Orain +62035 62035 Cloud water H2Ocloud +62036 62036 Brown carbon dry +# 62037-62099 Reserved +62100 62100 Alnus (alder) pollen +62101 62101 Betula (birch) pollen +62102 62102 Castanea (chestnut) pollen +62103 62103 Carpinus (hornbeam) pollen +62104 62104 Corylus (hazel) pollen +62105 62105 Fagus (beech) pollen +62106 62106 Fraxinus (ash) pollen +62107 62107 Pinus (pine) pollen +62108 62108 Platanus (plane) pollen +62109 62109 Populus (cottonwood, poplar) pollen +62110 62110 Quercus (oak) pollen +62111 62111 Salix (willow) pollen +62112 62112 Taxus (yew) pollen +62113 62113 Tilia (lime, linden) pollen +62114 62114 Ulmus (elm) pollen +62115 62115 Olea (olive) pollen +# 62116-62199 Reserved +62200 62200 Ambrosia (ragweed, burr-ragweed) pollen +62201 62201 Artemisia (sagebrush, wormwood, mugwort) pollen +62202 62202 Brassica (rape, broccoli, Brussels sprouts, cabbage, cauliflower, collards, kale, kohlrabi, mustard, rutabaga) pollen +62203 62203 Plantago (plantain) pollen +62204 62204 Rumex (dock, sorrel) pollen +62205 62205 Urtica (nettle) pollen +# 62206-62299 Reserved +62300 62300 Poaceae (grass family) pollen +# 62301-62999 Reserved +# 63000-65534 For experimental use at local level +65535 65535 Missing diff --git a/definitions/grib2/tables/31/4.233.table b/definitions/grib2/tables/31/4.233.table new file mode 100644 index 000000000..011c7d6af --- /dev/null +++ b/definitions/grib2/tables/31/4.233.table @@ -0,0 +1,534 @@ +# Code table 4.233 - Aerosol type +0 0 Ozone O3 +1 1 Water vapour H2O +2 2 Methane CH4 +3 3 Carbon dioxide CO2 +4 4 Carbon monoxide CO +5 5 Nitrogen dioxide NO2 +6 6 Nitrous oxide N2O +7 7 Formaldehyde HCHO +8 8 Sulphur dioxide SO2 +9 9 Ammonia NH3 +10 10 Ammonium cation NH4+ +11 11 Nitrogen monoxide NO +12 12 Atomic oxygen O +13 13 Nitrate radical NO3* +14 14 Hydroperoxyl radical HOO* +15 15 Dinitrogen pentoxide N2O5 +16 16 Nitrous acid HONO +17 17 Nitric acid HNO3 +18 18 Peroxynitric acid HO2NO2 +19 19 Hydrogen peroxide H2O2 +20 20 Dihydrogen H2 +21 21 Atomic nitrogen N +22 22 Sulphate anion SO42- +23 23 Atomic Radon Rn +24 24 Mercury vapour Hg(0) +25 25 Mercury(II) cation Hg2+ +26 26 Atomic chlorine Cl +27 27 Chlorine monoxide ClO +28 28 Dichlorine peroxide Cl2O2 +29 29 Hypochlorous acid HClO +30 30 Chlorine nitrate ClONO2 +31 31 Chlorine dioxide ClO2 +32 32 Atomic bromine Br +33 33 Bromine monoxide BrO +34 34 Bromine chloride BrCl +35 35 Hydrogen bromide HBr +36 36 Hypobromous acid HBrO +37 37 Bromine nitrate BrONO2 +38 38 Dioxygen O2 +39 39 Nitryl chloride NO2Cl +40 40 Sulphuric acid H2SO4 +41 41 Hydrogen sulphide H2S +42 42 Sulphur trioxide SO3 +43 43 Bromine Br2 +44 44 Hydrofluoric acid HF +45 45 Sulphur hexafluoride SF6 +46 46 Chlorine Cl2 +# 47-9999 Reserved +10000 10000 Hydroxyl radical HO* +10001 10001 Methyl peroxy radical CH3OO* +10002 10002 Methyl hydroperoxide CH3OOH +10004 10004 Methanol CH3OH +10005 10005 Formic acid HCOOH +10006 10006 Hydrogen cyanide HCN +10007 10007 Aceto nitrile CH3CN +10008 10008 Ethane C2H6 +10009 10009 Ethene (= Ethylene) C2H4 +10010 10010 Ethyne (= Acetylene) C2H2 +10011 10011 Ethanol C2H5OH +10012 10012 Acetic acid C2H5OOH +10013 10013 Peroxyacetyl nitrate CH3C(O)OONO2 +10014 10014 Propane C3H8 +10015 10015 Propene C3H6 +10016 10016 Butane (all isomers) C4H10 +10017 10017 Isoprene C5H10 +10018 10018 Alpha pinene C10H16 +10019 10019 Beta pinene C10H16 +10020 10020 Limonene C10H16 +10021 10021 Benzene C6H6 +10022 10022 Toluene C7H8 +10023 10023 Xylene C8H10 +10024 10024 Methanesulphonic acid CH3SO3H +10025 10025 Methylglyoxal (2-oxopropanal) CH3C(O)CHO +10026 10026 Peroxyacetyl radical CH3C(O)OO* +10027 10027 Methacrylic acid (2-methylprop-2-enoic acid) CH2C(CH3)COOH +10028 10028 Methacrolein (2-methylprop-2-enal) CH2C(CH3)CHO +10029 10029 Acetone (propan-2-one) CH3C(O)CH3 +10030 10030 Ethyl dioxidanyl radical CH3CH2OO* +10031 10031 Butadiene (buta-1,3-diene) (CH2CH)2 +10032 10032 Acetaldehyde (ethanal) CH3CHO +10033 10033 Glycolaldehyde (hydroxyethanal) HOCH2CHO +10034 10034 Cresol (methylphenol), all isomers CH3C6H4OH +10035 10035 Peracetic acid (ethaneperoxoic acid) CH3C(O)OOH +10036 10036 2-hydroxyethyl oxidanyl radical HOCH2CH2O* +10037 10037 2-hydroxyethyl dioxidanyl radical HOCH2CH2OO* +10038 10038 Glyoxal (oxaldehyde) OCHCHO +10039 10039 Isopropyl dioxidanyl radical (CH3)2CHOO* +10040 10040 Isopropyl hydroperoxide (2-hydroperoxypropane) (CH3)2CHOOH +10041 10041 Hydroxyacetone (1-hydroxypropan-2-one) CH3C(O)CH2OH +10042 10042 Peroxyacetic acid (ethaneperoxoic acid) CH3C(O)OOH +10043 10043 Methyl vinyl ketone (but-3-en-2-one) CH3C(O)CHCH2 +10044 10044 Phenoxy radical C6H5O* +10045 10045 Methyl radical CH3* +10046 10046 Carbonyl sulphide (carbon oxide sulphide) OCS +10047 10047 Dibromomethane CH2Br2 +10048 10048 Methoxy radical CH3O* +10049 10049 Tribromomethane CHBr3 +10050 10050 Formyl radical (oxomethyl radical) HOC* +10051 10051 Hydroxymethyl dioxidanyl radical HOCH2OO* +10052 10052 Ethyl hydroperoxide CH3CH2OOH +10053 10053 3-hydroxypropyl dioxidanyl radical HOCH2CH2CH2OO* +10054 10054 3-hydroxypropyl hydroperoxide HOCH2CH2CH2OOH +10055 10055 Methyl-peroxy-nitrate (nitroperoxy-methane) CH3OONO2 +10056 10056 2-lambda^1-oxidanyloxy-2-methylbut-3-en-1-ol (4-hydroxy-3-methyl-1-butene-3-ylperoxy radical) HOCH2C(CH3)(OO*)CHCH2 +10057 10057 2-lambda^1-oxidanyloxy-3-methylbut-3-en-1-ol (2-hydroxy-1-isopropenylethylperoxy radical) HOCH2CH(OO*)C(CH3)CH2 +10058 10058 (Z)-4-hydroperoxy-2-methyl-2-butenal CH2(OOH)CHC(CH3)CHO +10059 10059 (Z)-4-hydroperoxy-3-methyl-2-butenal CH2(OOH)C(CH3)CHCHO +# 10060-10499 Reserved for other simple organic molecules (e.g. higher aldehydes, alcohols, peroxides, etc.) +10500 10500 Dimethyl sulphide CH3SCH3 (DMS) +10501 10501 DMSO (dimethyl sulfoxide) (CH3)2SO +# 10502-20000 Reserved +20001 20001 Hydrogen chloride HCl +20002 20002 CFC-11 (trichlorofluoromethane) CCl3F +20003 20003 CFC-12 (dichlorodifluoromethane) CCl2F2 +20004 20004 CFC-113 (1,1,2-trichloro-1,2,2-trifluoroethane) Cl2FC-CClF2 +20005 20005 CFC-113a (1,1,1-trichloro-2,2,2-trifluoroethane) Cl3C-CF3 +20006 20006 CFC-114 (1,2-dichloro-1,1,2,2-tetrafluoroethane) ClF2C-CClF2 +20007 20007 CFC-115 (1-chloro-1,1,2,2,2-pentafluoroethane) ClF2C-CF3 +20008 20008 HCFC-22 (chlorodifluoromethane) CHClF2 +20009 20009 HCFC-141b (1,1-dichloro-1-fluoroethane) Cl2FC-CH3 +20010 20010 HCFC-142b (1-chloro-1,1-difluoroethane) ClF2C-CH3 +20011 20011 Halon-1202 (dibromodifluoromethane) CBr2F2 +20012 20012 Halon-1211 (bromochlorodifluoromethane) CBrClF2 +20013 20013 Halon-1301 (bromotrifluoromethane) CBrF3 +20014 20014 Halon-2402 (1,2-dibromo-1,1,2,2-tetrafluoroethane) BrF2C-CBrF2 +20015 20015 HCC-40 (methyl chloride) CH3Cl +20016 20016 HCC-10 (carbon tetrachloride) CCl4 +20017 20017 HCC-140a (1,1,1-trichloroethane) Cl3C-CH3 +20018 20018 HBC-40B1 (methyl bromide) CH3Br +20019 20019 HCH (hexachlorocyclohexane) all isomers C6H6Cl6 +20020 20020 alpha-HCH (alpha-hexachlorocyclohexane) both enantiomers alpha-C6H6Cl6 +20021 20021 PCB-153 (2,2',4,4',5,5'-hexachlorobiphenyl) (C6H2Cl3)2 +20022 20022 HCFC-141a (1,1-dichloro-2-fluoroethane) Cl2HC-CH2F +# 20023-29999 Reserved +30000 30000 Radioactive pollutant (tracer, defined by originating centre) +# 30001-30009 Reserved +30010 30010 Tritium (Hydrogen 3) H-3 +30011 30011 Tritium organic bounded H-3o +30012 30012 Tritium inorganic H-3a +30013 30013 Beryllium 7 Be-7 +30014 30014 Beryllium 10 Be-10 +30015 30015 Carbon 14 C-14 +30016 30016 Carbon 14 CO2 C-14CO2 +30017 30017 Carbon 14 other gases C-14og +30018 30018 Nitrogen 13 N-13 +30019 30019 Nitrogen 16 N-16 +30020 30020 Fluorine 18 F-18 +30021 30021 Sodium 22 Na-22 +30022 30022 Phosphate 32 P-32 +30023 30023 Phosphate 33 P-33 +30024 30024 Sulphur 35 S-35 +30025 30025 Chlorine 36 Cl-36 +30026 30026 Potassium 40 K-40 +30027 30027 Argon 41 Ar-41 +30028 30028 Calcium 41 Ca-41 +30029 30029 Calcium 45 Ca-45 +30030 30030 Titanium 44 Ti-44 +30031 30031 Scandium 46 Sc-46 +30032 30032 Vanadium 48 V-48 +30033 30033 Vanadium 49 V-49 +30034 30034 Chrome 51 Cr-51 +30035 30035 Manganese 52 Mn-52 +30036 30036 Manganese 54 Mn-54 +30037 30037 Iron 55 Fe-55 +30038 30038 Iron 59 Fe-59 +30039 30039 Cobalt 56 Co-56 +30040 30040 Cobalt 57 Co-57 +30041 30041 Cobalt 58 Co-58 +30042 30042 Cobalt 60 Co-60 +30043 30043 Nickel 59 Ni-59 +30044 30044 Nickel 63 Ni-63 +30045 30045 Zinc 65 Zn-65 +30046 30046 Gallium 67 Ga-67 +30047 30047 Gallium 68 Ga-68 +30048 30048 Germanium 68 Ge-68 +30049 30049 Germanium 69 Ge-69 +30050 30050 Arsenic 73 As-73 +30051 30051 Selenium 75 Se-75 +30052 30052 Selenium 79 Se-79 +30053 30053 Rubidium 81 Rb-81 +30054 30054 Rubidium 83 Rb-83 +30055 30055 Rubidium 84 Rb-84 +30056 30056 Rubidium 86 Rb-86 +30057 30057 Rubidium 87 Rb-87 +30058 30058 Rubidium 88 Rb-88 +30059 30059 Krypton 85 Kr-85 +30060 30060 Krypton 85 metastable Kr-85m +30061 30061 Krypton 87 Kr-87 +30062 30062 Krypton 88 Kr-88 +30063 30063 Krypton 89 Kr-89 +30064 30064 Strontium 85 Sr-85 +30065 30065 Strontium 89 Sr-89 +30066 30066 Strontium 89/90 Sr-8990 +30067 30067 Strontium 90 Sr-90 +30068 30068 Strontium 91 Sr-91 +30069 30069 Strontium 92 Sr-92 +30070 30070 Yttrium 87 Y-87 +30071 30071 Yttrium 88 Y-88 +30072 30072 Yttrium 90 Y-90 +30073 30073 Yttrium 91 Y-91 +30074 30074 Yttrium 91 metastable Y-91m +30075 30075 Yttrium 92 Y-92 +30076 30076 Yttrium 93 Y-93 +30077 30077 Zirconium 89 Zr-89 +30078 30078 Zirconium 93 Zr-93 +30079 30079 Zirconium 95 Zr-95 +30080 30080 Zirconium 97 Zr-97 +30081 30081 Niobium 93 metastable Nb-93m +30082 30082 Niobium 94 Nb-94 +30083 30083 Niobium 95 Nb-95 +30084 30084 Niobium 95 metastable Nb-95m +30085 30085 Niobium 97 Nb-97 +30086 30086 Niobium 97 metastable Nb-97m +30087 30087 Molybdenum 93 Mo-93 +30088 30088 Molybdenum 99 Mo-99 +30089 30089 Technetium 95 metastable Tc-95m +30090 30090 Technetium 96 Tc-96 +30091 30091 Technetium 99 Tc-99 +30092 30092 Technetium 99 metastable Tc-99m +30093 30093 Rhodium 99 Rh-99 +30094 30094 Rhodium 101 Rh-101 +30095 30095 Rhodium 102 metastable Rh-102m +30096 30096 Rhodium 103 metastable Rh-103m +30097 30097 Rhodium 105 Rh-105 +30098 30098 Rhodium 106 Rh-106 +30099 30099 Palladium 100 Pd-100 +30100 30100 Palladium 103 Pd-103 +30101 30101 Palladium 107 Pd-107 +30102 30102 Ruthenium 103 Ru-103 +30103 30103 Ruthenium 105 Ru-105 +30104 30104 Ruthenium 106 Ru-106 +30105 30105 Silver 108 metastable Ag-108m +30106 30106 Silver 110 metastable Ag-110m +30107 30107 Cadmium 109 Cd-109 +30108 30108 Cadmium 113 metastable Cd-113m +30109 30109 Cadmium 115 metastable Cd-115m +30110 30110 Indium 114 metastable In-114m +30111 30111 Tin 113 Sn-113 +30112 30112 Tin 119 metastable Sn-119m +30113 30113 Tin 121 metastable Sn-121m +30114 30114 Tin 122 Sn-122 +30115 30115 Tin 123 Sn-123 +30116 30116 Tin 126 Sn-126 +30117 30117 Antimony 124 Sb-124 +30118 30118 Antimony 125 Sb-125 +30119 30119 Antimony 126 Sb-126 +30120 30120 Antimony 127 Sb-127 +30121 30121 Antimony 129 Sb-129 +30122 30122 Tellurium 123 metastable Te-123m +30123 30123 Tellurium 125 metastable Te-125m +30124 30124 Tellurium 127 Te-127 +30125 30125 Tellurium 127 metastable Te-127m +30126 30126 Tellurium 129 Te-129 +30127 30127 Tellurium 129 metastable Te-129m +30128 30128 Tellurium 131 metastable Te-131m +30129 30129 Tellurium 132 Te-132 +30130 30130 Iodine 123 I-123 +30131 30131 Iodine 124 I-124 +30132 30132 Iodine 125 I-125 +30133 30133 Iodine 126 I-126 +30134 30134 Iodine 129 I-129 +30135 30135 Iodine 129 elementary gaseous I-129g +30136 30136 Iodine 129 organic bounded I-129o +30137 30137 Iodine 131 I-131 +30138 30138 Iodine 131 elementary gaseous I-131g +30139 30139 Iodine 131 organic bounded I-131o +30140 30140 Iodine 131 gaseous elementary and organic bounded I-131go +30141 30141 Iodine 131 aerosol I-131a +30142 30142 Iodine 132 I-132 +30143 30143 Iodine 132 elementary gaseous I-132g +30144 30144 Iodine 132 organic bounded I-132o +30145 30145 Iodine 132 gaseous elementary and organic bounded I-132go +30146 30146 Iodine 132 aerosol I-132a +30147 30147 Iodine 133 I-133 +30148 30148 Iodine 133 elementary gaseous I-133g +30149 30149 Iodine 133 organic bounded I-133o +30150 30150 Iodine 133 gaseous elementary and organic bounded I-133go +30151 30151 Iodine 133 aerosol I-133a +30152 30152 Iodine 134 I-134 +30153 30153 Iodine 134 elementary gaseous I-134g +30154 30154 Iodine 134 organic bounded I-134o +30155 30155 Iodine 135 I-135 +30156 30156 Iodine 135 elementary gaseous I-135g +30157 30157 Iodine 135 organic bounded I-135o +30158 30158 Iodine 135 gaseous elementary and organic bounded I-135go +30159 30159 Iodine 135 aerosol I-135a +30160 30160 Xenon 131 metastable Xe-131m +30161 30161 Xenon 133 Xe-133 +30162 30162 Xenon 133 metastable Xe-133m +30163 30163 Xenon 135 Xe-135 +30164 30164 Xenon 135 metastable Xe-135m +30165 30165 Xenon 137 Xe-137 +30166 30166 Xenon 138 Xe-138 +30167 30167 Xenon sum of all Xenon isotopes Xe-sum +30168 30168 Caesium 131 Cs-131 +30169 30169 Caesium 134 Cs-134 +30170 30170 Caesium 135 Cs-135 +30171 30171 Caesium 136 Cs-136 +30172 30172 Caesium 137 Cs-137 +30173 30173 Barium 133 Ba-133 +30174 30174 Barium 137 metastable Ba-137m +30175 30175 Barium 140 Ba-140 +30176 30176 Cerium 139 Ce-139 +30177 30177 Cerium 141 Ce-141 +30178 30178 Cerium 143 Ce-143 +30179 30179 Cerium 144 Ce-144 +30180 30180 Lanthanum 140 La-140 +30181 30181 Lanthanum 141 La-141 +30182 30182 Praseodymium 143 Pr-143 +30183 30183 Praseodymium 144 Pr-144 +30184 30184 Praseodymium 144 metastable Pr-144m +30185 30185 Samarium 145 Sm-145 +30186 30186 Samarium 147 Sm-147 +30187 30187 Samarium 151 Sm-151 +30188 30188 Neodymium 147 Nd-147 +30189 30189 Promethium 146 Pm-146 +30190 30190 Promethium 147 Pm-147 +30191 30191 Promethium 151 Pm-151 +30192 30192 Europium 152 Eu-152 +30193 30193 Europium 154 Eu-154 +30194 30194 Europium 155 Eu-155 +30195 30195 Gadolinium 153 Gd-153 +30196 30196 Terbium 160 Tb-160 +30197 30197 Holmium 166 metastable Ho-166m +30198 30198 Thulium 170 Tm-170 +30199 30199 Ytterbium 169 Yb-169 +30200 30200 Hafnium 175 Hf-175 +30201 30201 Hafnium 181 Hf-181 +30202 30202 Tantalum 179 Ta-179 +30203 30203 Tantalum 182 Ta-182 +30204 30204 Rhenium 184 Re-184 +30205 30205 Iridium 192 Ir-192 +30206 30206 Mercury 203 Hg-203 +30207 30207 Thallium 204 Tl-204 +30208 30208 Thallium 207 Tl-207 +30209 30209 Thallium 208 Tl-208 +30210 30210 Thallium 209 Tl-209 +30211 30211 Bismuth 205 Bi-205 +30212 30212 Bismuth 207 Bi-207 +30213 30213 Bismuth 210 Bi-210 +30214 30214 Bismuth 211 Bi-211 +30215 30215 Bismuth 212 Bi-212 +30216 30216 Bismuth 213 Bi-213 +30217 30217 Bismuth 214 Bi-214 +30218 30218 Polonium 208 Po-208 +30219 30219 Polonium 210 Po-210 +30220 30220 Polonium 212 Po-212 +30221 30221 Polonium 213 Po-213 +30222 30222 Polonium 214 Po-214 +30223 30223 Polonium 215 Po-215 +30224 30224 Polonium 216 Po-216 +30225 30225 Polonium 218 Po-218 +30226 30226 Lead 209 Pb-209 +30227 30227 Lead 210 Pb-210 +30228 30228 Lead 211 Pb-211 +30229 30229 Lead 212 Pb-212 +30230 30230 Lead 214 Pb-214 +30231 30231 Astatine 217 At-217 +30232 30232 Radon 219 Rn-219 +30233 30233 Radon 220 Rn-220 +30234 30234 Radon 222 Rn-222 +30235 30235 Francium 221 Fr-221 +30236 30236 Francium 223 Fr-223 +30237 30237 Radium 223 Ra-223 +30238 30238 Radium 224 Ra-224 +30239 30239 Radium 225 Ra-225 +30240 30240 Radium 226 Ra-226 +30241 30241 Radium 228 Ra-228 +30242 30242 Actinium 225 Ac-225 +30243 30243 Actinium 227 Ac-227 +30244 30244 Actinium 228 Ac-228 +30245 30245 Thorium 227 Th-227 +30246 30246 Thorium 228 Th-228 +30247 30247 Thorium 229 Th-229 +30248 30248 Thorium 230 Th-230 +30249 30249 Thorium 231 Th-231 +30250 30250 Thorium 232 Th-232 +30251 30251 Thorium 234 Th-234 +30252 30252 Protactinium 231 Pa-231 +30253 30253 Protactinium 233 Pa-233 +30254 30254 Protactinium 234 metastable Pa-234m +30255 30255 Uranium 232 U-232 +30256 30256 Uranium 233 U-233 +30257 30257 Uranium 234 U-234 +30258 30258 Uranium 235 U-235 +30259 30259 Uranium 236 U-236 +30260 30260 Uranium 237 U-237 +30261 30261 Uranium 238 U-238 +30262 30262 Plutonium 236 Pu-236 +30263 30263 Plutonium 238 Pu-238 +30264 30264 Plutonium 239 Pu-239 +30265 30265 Plutonium 240 Pu-240 +30266 30266 Plutonium 241 Pu-241 +30267 30267 Plutonium 242 Pu-242 +30268 30268 Plutonium 244 Pu-244 +30269 30269 Neptunium 237 Np-237 +30270 30270 Neptunium 238 Np-238 +30271 30271 Neptunium 239 Np-239 +30272 30272 Americium 241 Am-241 +30273 30273 Americium 242 Am-242 +30274 30274 Americium 242 metastable Am-242m +30275 30275 Americium 243 Am-243 +30276 30276 Curium 242 Cm-242 +30277 30277 Curium 243 Cm-243 +30278 30278 Curium 244 Cm-244 +30279 30279 Curium 245 Cm-245 +30280 30280 Curium 246 Cm-246 +30281 30281 Curium 247 Cm-247 +30282 30282 Curium 248 Cm-248 +30283 30283 Curium 243/244 Cm-243244 +30284 30284 Plutonium 238/Americium 241 Pu-238Am-241 +30285 30285 Plutonium 239/240 Pu-239240 +30286 30286 Berkelium 249 Bk-249 +30287 30287 Californium 249 Cf-249 +30288 30288 Californium 250 Cf-250 +30289 30289 Californium 252 Cf-252 +30290 30290 Sum aerosol particulates SumAer +30291 30291 Sum Iodine SumIod +30292 30292 Sum noble gas SumNG +30293 30293 Activation gas ActGas +30294 30294 Cs-137 Equivalent EquCs137 +30295 30295 Carbon-13 C-13 +30296 30296 Lead Pb +30297 30297 Tellurium 131 Te-131 +30298 30298 Neodymium 137 Nd-137 +# 30299-39999 Reserved +40000 40000 Singlet sigma oxygen (dioxygen (sigma singlet)) O2 +40001 40001 Singlet delta oxygen (dioxygen (delta singlet)) O2 +40002 40002 Singlet excited oxygen atom O(1D) +40003 40003 Triplet ground state oxygen atom O(3P) +# 40004-59999 Reserved +60000 60000 HOx radical (OH+HO2) HOx* +60001 60001 Total inorganic and organic peroxy radicals (HOO* + ROO*) ROO* +60002 60002 Passive Ozone +60003 60003 NOx expressed as nitrogen NOx +60004 60004 All nitrogen oxides (NOy) expressed as nitrogen NOy +60005 60005 Total inorganic chlorine Clx +60006 60006 Total inorganic bromine Brx +60007 60007 Total inorganic chlorine except HCl, ClONO2: ClOx +60008 60008 Total inorganic bromine except HBr, BrONO2: BrOx +60009 60009 Lumped alkanes +60010 60010 Lumped alkenes +60011 60011 Lumped aromatic compounds +60012 60012 Lumped terpenes +60013 60013 Non-methane volatile organic compounds expressed as carbon NMVOC +60014 60014 Anthropogenic non-methane volatile organic compounds expressed as carbon aNMVOC +60015 60015 Biogenic non-methane volatile organic compounds expressed as carbon bNMVOC +60016 60016 Lumped oxygenated hydrocarbons OVOC +60017 60017 NOx expressed as nitrogen dioxide (NO2) NOx +60018 60018 Organic aldehydes RCHO +60019 60019 Organic peroxides ROOH +60020 60020 Organic nitrates RNO3 +60021 60021 Ethers ROR' +60022 60022 Amines NRR'R'' +60023 60023 Ketones RC(O)R' +60024 60024 Dicarbonyls unsaturated RC(O)CH2C(O)R' +60025 60025 Hydroxy dicarbonyls unsaturated RC(O)CHOHC(O)R' +60026 60026 Hydroxy ketones RC(OH)C(O)R' +60027 60027 Oxides Ox +60028 60028 Peroxyacyl nitrates RC(O)OONO2 +60029 60029 Aromatic peroxide radical (Aryl dioxydanyl radicals) ArOO* +60030 60030 Biogenic secondary organic compound +60031 60031 Anthropogenic secondary organic compound +60032 60032 All hydroxy-peroxides products of the reaction of hydroxy-isoprene adducts with O2 ISOPOOH +60033 60033 Anthropogenic volatile organic compounds aVOC +60034 60034 Biomass burning volatile organic compounds bbVOC +# 60035-61999 Reserved +62000 62000 Total aerosol +62001 62001 Dust dry +62002 62002 Water in ambient +62003 62003 Ammonium dry +62004 62004 Nitrate dry +62005 62005 Nitric acid trihydrate +62006 62006 Sulphate dry +62007 62007 Mercury dry +62008 62008 Sea salt dry +62009 62009 Black carbon dry +62010 62010 Particulate organic matter dry +62011 62011 Primary particulate organic matter dry +62012 62012 Secondary particulate organic matter dry +62013 62013 Black carbon hydrophilic dry +62014 62014 Black carbon hydrophobic dry +62015 62015 Particulate organic matter hydrophilic dry +62016 62016 Particulate organic matter hydrophobic dry +62017 62017 Nitrate hydrophilic dry +62018 62018 Nitrate hydrophobic dry +# 62019 Reserved +62020 62020 Smoke - high absorption +62021 62021 Smoke - low absorption +62022 62022 Aerosol - high absorption +62023 62023 Aerosol - low absorption +# 62024 Reserved +62025 62025 Volcanic ash +62026 62026 Particulate matter (PM) +# 62027 Reserved +62028 62028 Total aerosol hydrophilic +62029 62029 Total aerosol hydrophobic +62030 62030 Primary particulate inorganic matter dry +62031 62031 Secondary particulate inorganic matter dry +62032 62032 Biogenic secondary organic aerosol +62033 62033 Anthropogenic secondary organic aerosol +62034 62034 Rain water H2Orain +62035 62035 Cloud water H2Ocloud +62036 62036 Brown carbon dry +# 62037-62099 Reserved +62100 62100 Alnus (alder) pollen +62101 62101 Betula (birch) pollen +62102 62102 Castanea (chestnut) pollen +62103 62103 Carpinus (hornbeam) pollen +62104 62104 Corylus (hazel) pollen +62105 62105 Fagus (beech) pollen +62106 62106 Fraxinus (ash) pollen +62107 62107 Pinus (pine) pollen +62108 62108 Platanus (plane) pollen +62109 62109 Populus (cottonwood, poplar) pollen +62110 62110 Quercus (oak) pollen +62111 62111 Salix (willow) pollen +62112 62112 Taxus (yew) pollen +62113 62113 Tilia (lime, linden) pollen +62114 62114 Ulmus (elm) pollen +62115 62115 Olea (olive) pollen +# 62116-62199 Reserved +62200 62200 Ambrosia (ragweed, burr-ragweed) pollen +62201 62201 Artemisia (sagebrush, wormwood, mugwort) pollen +62202 62202 Brassica (rape, broccoli, Brussels sprouts, cabbage, cauliflower, collards, kale, kohlrabi, mustard, rutabaga) pollen +62203 62203 Plantago (plantain) pollen +62204 62204 Rumex (dock, sorrel) pollen +62205 62205 Urtica (nettle) pollen +# 62206-62299 Reserved +62300 62300 Poaceae (grass family) pollen +# 62301-62999 Reserved +# 63000-65534 For experimental use at local level +65535 65535 Missing diff --git a/definitions/grib2/tables/31/4.234.table b/definitions/grib2/tables/31/4.234.table new file mode 100644 index 000000000..816541ce9 --- /dev/null +++ b/definitions/grib2/tables/31/4.234.table @@ -0,0 +1,21 @@ +# Code table 4.234 - Canopy cover fraction (to be used as partitioned parameter in product definition template 4.53 or 4.54) +1 1 Crops, mixed farming +2 2 Short grass +3 3 Evergreen needleleaf trees +4 4 Deciduous needleleaf trees +5 5 Deciduous broadleaf trees +6 6 Evergreen broadleaf trees +7 7 Tall grass +8 8 Desert +9 9 Tundra +10 10 Irrigated crops +11 11 Semidesert +12 12 Ice caps and glaciers +13 13 Bogs and marshes +14 14 Inland water +15 15 Ocean +16 16 Evergreen shrubs +17 17 Deciduous shrubs +18 18 Mixed forest +19 19 Interrupted forest +20 20 Water and land mixtures diff --git a/definitions/grib2/tables/31/4.236.table b/definitions/grib2/tables/31/4.236.table new file mode 100644 index 000000000..fbe093ce9 --- /dev/null +++ b/definitions/grib2/tables/31/4.236.table @@ -0,0 +1,8 @@ +# Code table 4.236 - Soil texture fraction (to be used as partitioned parameter in product definition template 4.53 or 4.54) +1 1 Coarse +2 2 Medium +3 3 Medium-fine +4 4 Fine +5 5 Very-fine +6 6 Organic +7 7 Tropical-organic diff --git a/definitions/grib2/tables/31/4.238.table b/definitions/grib2/tables/31/4.238.table new file mode 100644 index 000000000..7e1c8e4d0 --- /dev/null +++ b/definitions/grib2/tables/31/4.238.table @@ -0,0 +1,32 @@ +# Code table 4.238 - Source or sink +0 0 Other +1 1 Aviation +2 2 Lightning +3 3 Biogenic sources +4 4 Anthropogenic sources +5 5 Wild fires +6 6 Natural sources +7 7 Volcanoes +8 8 Bio-fuel +9 9 Fossil-fuel +10 10 Wetlands +11 11 Oceans +12 12 Elevated anthropogenic sources +13 13 Surface anthropogenic sources +14 14 Agriculture livestock +15 15 Agriculture soils +16 16 Agriculture waste burning +17 17 Agriculture (all) +18 18 Residential, commercial and other combustion +19 19 Power generation +20 20 Super power stations +21 21 Fugitives +22 22 Industrial process +23 23 Solvents +24 24 Ships +25 25 Wastes (solid and water) +26 26 Road transportation +27 27 Off-road transportation +# 28-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/31/4.239.table b/definitions/grib2/tables/31/4.239.table new file mode 100644 index 000000000..c038926a5 --- /dev/null +++ b/definitions/grib2/tables/31/4.239.table @@ -0,0 +1,17 @@ +# Code table 4.239 - Wetland Type +0 0 Reserved +1 1 Bog +2 2 Drained +3 3 Fen +4 4 Floodplain +5 5 Mangrove +6 6 Marsh +7 7 Rice +8 8 Riverine +9 9 Salt marsh +10 10 Swamp +11 11 Upland +12 12 Wet tundra +# 13-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/31/4.240.table b/definitions/grib2/tables/31/4.240.table new file mode 100644 index 000000000..e34ad678c --- /dev/null +++ b/definitions/grib2/tables/31/4.240.table @@ -0,0 +1,13 @@ +# Code table 4.240 - Type of distribution function +0 0 No specific distribution function given +1 1 Delta functions with spatially variable concentration and fixed diameters Dl (p1) in metre +2 2 Delta functions with spatially variable concentration and fixed masses Ml (p1) in kg +3 3 Gaussian (normal) distribution with spatially variable concentration and fixed mean diameter Dl(p1) and variance(p2) +4 4 Gaussian (normal) distribution with spatially variable concentration, mean diameter and variance +5 5 Log-normal distribution with spatially variable number density, mean diameter and variance +6 6 Log-normal distribution with spatially variable number density, mean diameter and fixed variance(p1) +7 7 Log-normal distribution with spatially variable number density and mass density and fixed variance(p1) and fixed particle density(p2) +8 8 No distribution function. The encoded variable is derived from variables characterized by type of distribution function of type No. 7 (see above) with fixed variance(p1) and fixed particle density(p2) +# 9-49151 Reserved +# 49152-65534 Reserved for local use +65535 65535 Missing value diff --git a/definitions/grib2/tables/31/4.241.table b/definitions/grib2/tables/31/4.241.table new file mode 100644 index 000000000..a037b4ba5 --- /dev/null +++ b/definitions/grib2/tables/31/4.241.table @@ -0,0 +1,9 @@ +# Code table 4.241 - Coverage attributes +0 0 Undefined +1 1 Unmodified +2 2 Snow covered +3 3 Flooded +4 4 Ice covered +# 5-191 Reserved +# 192-254 Reserved for local use +255 255 Missing value diff --git a/definitions/grib2/tables/31/4.242.table b/definitions/grib2/tables/31/4.242.table new file mode 100644 index 000000000..083f88c29 --- /dev/null +++ b/definitions/grib2/tables/31/4.242.table @@ -0,0 +1,7 @@ +# Code table 4.242 - Tile classification +0 0 Reserved +1 1 Land use classes according to ESA-GlobCover GCV2009 +2 2 Land use classes according to European Commission-Global Land Cover Project GLC2000 +# 3-191 Reserved +# 192-254 Reserved for local use +255 255 Missing value diff --git a/definitions/grib2/tables/31/4.243.table b/definitions/grib2/tables/31/4.243.table new file mode 100644 index 000000000..b39053311 --- /dev/null +++ b/definitions/grib2/tables/31/4.243.table @@ -0,0 +1,43 @@ +# Code table 4.243 - Tile class +0 0 Reserved +1 1 Evergreen broadleaved forest +2 2 Deciduous broadleaved closed forest +3 3 Deciduous broadleaved open forest +4 4 Evergreen needle-leaf forest +5 5 Deciduous needle-leaf forest +6 6 Mixed leaf trees +7 7 Freshwater flooded trees +8 8 Saline water flooded trees +9 9 Mosaic tree/natural vegetation +10 10 Burnt tree cover +11 11 Evergreen shrubs closed-open +12 12 Deciduous shrubs closed-open +13 13 Herbaceous vegetation closed-open +14 14 Sparse herbaceous or grass +15 15 Flooded shrubs or herbaceous +16 16 Cultivated and managed areas +17 17 Mosaic crop/tree/natural vegetation +18 18 Mosaic crop/shrub/grass +19 19 Bare areas +20 20 Water +21 21 Snow and ice +22 22 Artificial surface +23 23 Ocean +24 24 Irrigated croplands +25 25 Rainfed croplands +26 26 Mosaic cropland (50-70%) - vegetation (20-50%) +27 27 Mosaic vegetation (50-70%) - cropland (20-50%) +28 28 Closed broadleaved evergreen forest +29 29 Closed needle-leaved evergreen forest +30 30 Open needle-leaved deciduous forest +31 31 Mixed broadleaved and needle-leaved forest +32 32 Mosaic shrubland (50-70%) - grassland (20-50%) +33 33 Mosaic grassland (50-70%) - shrubland (20-50%) +34 34 Closed to open shrubland +35 35 Sparse vegetation +36 36 Closed to open forest regularly flooded +37 37 Closed forest or shrubland permanently flooded +38 38 Closed to open grassland regularly flooded +39 39 Undefined +# 40-32767 Reserved +# 32768- Reserved for local use diff --git a/definitions/grib2/tables/31/4.244.table b/definitions/grib2/tables/31/4.244.table new file mode 100644 index 000000000..40534ee09 --- /dev/null +++ b/definitions/grib2/tables/31/4.244.table @@ -0,0 +1,7 @@ +# Code table 4.244 - Quality indicator +0 0 No quality information available +1 1 Failed +2 2 Passed +# 3-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/31/4.246.table b/definitions/grib2/tables/31/4.246.table new file mode 100644 index 000000000..bc89c27b9 --- /dev/null +++ b/definitions/grib2/tables/31/4.246.table @@ -0,0 +1,7 @@ +# Code table 4.246 - Thunderstorm intensity +0 0 No thunderstorm occurrence +1 1 Weak thunderstorm +2 2 Moderate thunderstorm +3 3 Severe thunderstorm +# 4-254 Reserved +255 255 Missing diff --git a/definitions/grib2/tables/31/4.247.table b/definitions/grib2/tables/31/4.247.table new file mode 100644 index 000000000..cd7fc90bd --- /dev/null +++ b/definitions/grib2/tables/31/4.247.table @@ -0,0 +1,7 @@ +# Code table 4.247 - Precipitation intensity +0 0 No precipitation occurrence +1 1 Light precipitation +2 2 Moderate precipitation +3 3 Heavy precipitation +# 4-254 Reserved +255 255 Missing diff --git a/definitions/grib2/tables/31/4.248.table b/definitions/grib2/tables/31/4.248.table new file mode 100644 index 000000000..694eebb72 --- /dev/null +++ b/definitions/grib2/tables/31/4.248.table @@ -0,0 +1,6 @@ +# Code table 4.248 - Method used to derive data values for a given local time +0 0 Nearest forecast or analysis time to specified local time +1 1 Interpolated to be valid at the specified local time +# 2-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/31/4.249.table b/definitions/grib2/tables/31/4.249.table new file mode 100644 index 000000000..9e62d9bbb --- /dev/null +++ b/definitions/grib2/tables/31/4.249.table @@ -0,0 +1,7 @@ +# Code table 4.249 - Character of precipitation +0 0 None +1 1 Showers +2 2 Intermittent +3 3 Continuous +# 4-254 Reserved +255 255 Missing diff --git a/definitions/grib2/tables/31/4.250.table b/definitions/grib2/tables/31/4.250.table new file mode 100644 index 000000000..26209ed07 --- /dev/null +++ b/definitions/grib2/tables/31/4.250.table @@ -0,0 +1,14 @@ +# Code table 4.250 - Drainage direction +0 0 Reserved +1 1 South-west +2 2 South +3 3 South-east +4 4 West +5 5 No direction +6 6 East +7 7 North-west +8 8 North +9 9 North-east +# 10-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/31/4.251.table b/definitions/grib2/tables/31/4.251.table new file mode 100644 index 000000000..e6c8da0b9 --- /dev/null +++ b/definitions/grib2/tables/31/4.251.table @@ -0,0 +1,7 @@ +# Code table 4.251 - Wave direction and frequency formulae +0 0 Undefined sequence +1 1 Geometric sequence +2 2 Arithmetic sequence +# 3-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/31/4.3.table b/definitions/grib2/tables/31/4.3.table new file mode 100644 index 000000000..7ad6be363 --- /dev/null +++ b/definitions/grib2/tables/31/4.3.table @@ -0,0 +1,26 @@ +# Code table 4.3 - Type of generating process +0 0 Analysis +1 1 Initialization +2 2 Forecast +3 3 Bias corrected forecast +4 4 Ensemble forecast +5 5 Probability forecast +6 6 Forecast error +7 7 Analysis error +8 8 Observation +9 9 Climatological +10 10 Probability-weighted forecast +11 11 Bias-corrected ensemble forecast +12 12 Post-processed analysis +13 13 Post-processed forecast +14 14 Nowcast +15 15 Hindcast +16 16 Physical retrieval +17 17 Regression analysis +18 18 Difference between two forecasts +19 19 First guess +20 20 Analysis increment +21 21 Initialization increment for analysis +# 22-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/31/4.4.table b/definitions/grib2/tables/31/4.4.table new file mode 100644 index 000000000..7087ebddb --- /dev/null +++ b/definitions/grib2/tables/31/4.4.table @@ -0,0 +1,17 @@ +# Code table 4.4 - Indicator of unit of time range +0 m Minute +1 h Hour +2 D Day +3 M Month +4 Y Year +5 10Y Decade (10 years) +6 30Y Normal (30 years) +7 C Century (100 years) +# 8-9 Reserved +10 3h 3 hours +11 6h 6 hours +12 12h 12 hours +13 s Second +# 14-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/31/4.5.table b/definitions/grib2/tables/31/4.5.table new file mode 100644 index 000000000..3c338232d --- /dev/null +++ b/definitions/grib2/tables/31/4.5.table @@ -0,0 +1,89 @@ +# Code table 4.5 - Fixed surface types and units +0 0 Reserved +1 sfc Ground or water surface (-) +2 2 Cloud base level (-) +3 3 Level of cloud tops (-) +4 4 Level of 0 degree C isotherm (-) +5 5 Level of adiabatic condensation lifted from the surface (-) +6 6 Maximum wind level (-) +7 sfc Tropopause (-) +8 sfc Nominal top of the atmosphere (-) +9 9 Sea bottom (-) +10 10 Entire atmosphere (-) +11 11 Cumulonimbus (CB) base (m) +12 12 Cumulonimbus (CB) top (m) +13 13 Lowest level where vertically integrated cloud cover exceeds the specified percentage (cloud base for a given percentage cloud cover) (%) +14 14 Level of free convection (LFC) (-) +15 15 Convective condensation level (CCL) (-) +16 16 Level of neutral buoyancy or equilibrium level (LNB) (-) +17 sfc Departure level of the most unstable parcel of air (MUDL) +18 sfc Departure level of a mixed layer parcel of air with specified layer depth (Pa) +# 19 Reserved +20 20 Isothermal level (K) +21 21 Lowest level where mass density exceeds the specified value (base for a given threshold of mass density) (kg m-3) +22 22 Highest level where mass density exceeds the specified value (top for a given threshold of mass density) (kg m-3) +23 23 Lowest level where air concentration exceeds the specified value (base for a given threshold of air concentration) (Bq m-3) +24 24 Highest level where air concentration exceeds the specified value (top for a given threshold of air concentration) (Bq m-3) +25 25 Highest level where radar reflectivity exceeds the specified value (echo top for a given threshold of reflectivity) (dBZ) +26 26 Convective cloud layer base (m) +27 27 Convective cloud layer top (m) +# 28-29 Reserved +30 30 Specified radius from the centre of the Sun (m) +31 31 Solar photosphere +32 32 Ionospheric D-region level +33 33 Ionospheric E-region level +34 34 Ionospheric F1-region level +35 35 Ionospheric F2-region level +# 36-99 Reserved +100 pl Isobaric surface (Pa) +101 sfc Mean sea level +102 102 Specific altitude above mean sea level (m) +103 sfc Specified height level above ground (m) +104 104 Sigma level (sigma value) +105 ml Hybrid level (-) +106 sfc Depth below land surface (m) +107 pt Isentropic (theta) level (K) +108 108 Level at specified pressure difference from ground to level (Pa) +109 pv Potential vorticity surface (K m2 kg-1 s-1) +110 110 Reserved +111 111 Eta level (-) +112 112 Reserved +113 113 Logarithmic hybrid level +114 sol Snow level (Numeric) +115 115 Sigma height level +# 116 Reserved +117 117 Mixed layer depth (m) +118 hhl Hybrid height level (-) +119 hpl Hybrid pressure level (-) +# 120-149 Reserved +150 150 Generalized vertical height coordinate +151 sol Soil level (Numeric) +152 sol Sea-ice level (Numeric) +# 153-159 Reserved +160 160 Depth below sea level (m) +161 161 Depth below water surface (m) +162 sfc Lake or river bottom (-) +163 163 Bottom of sediment layer (-) +164 164 Bottom of thermally active sediment layer (-) +165 165 Bottom of sediment layer penetrated by thermal wave (-) +166 sfc Mixing layer (-) +167 167 Bottom of root zone (-) +168 168 Ocean model level (Numeric) +169 169 Ocean level defined by water density (sigma-theta) difference from near-surface to level (kg m-3) +170 170 Ocean level defined by water potential temperature difference from near-surface to level (K) +171 171 Ocean level defined by vertical eddy diffusivity difference from near-surface to level (m2 s-1) +# 172-173 Reserved +174 sfc Top surface of ice on sea, lake or river +175 175 Top surface of ice, under snow cover, on sea, lake or river +176 176 Bottom surface (underside) ice on sea, lake or river +177 sfc Deep soil (of indefinite depth) +# 178 Reserved +179 179 Top surface of glacier ice and inland ice +180 180 Deep inland or glacier ice (of indefinite depth) +181 181 Grid tile land fraction as a model surface +182 182 Grid tile water fraction as a model surface +183 183 Grid tile ice fraction on sea, lake or river as a model surface +184 184 Grid tile glacier ice and inland ice fraction as a model surface +# 185-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/31/4.6.table b/definitions/grib2/tables/31/4.6.table new file mode 100644 index 000000000..b2dfeb498 --- /dev/null +++ b/definitions/grib2/tables/31/4.6.table @@ -0,0 +1,9 @@ +# Code table 4.6 - Type of ensemble forecast +0 0 Unperturbed high-resolution control forecast +1 1 Unperturbed low-resolution control forecast +2 2 Negatively perturbed forecast +3 3 Positively perturbed forecast +4 4 Multi-model forecast +# 5-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/31/4.7.table b/definitions/grib2/tables/31/4.7.table new file mode 100644 index 000000000..e0de0e1b2 --- /dev/null +++ b/definitions/grib2/tables/31/4.7.table @@ -0,0 +1,14 @@ +# Code table 4.7 - Derived forecast +0 0 Unweighted mean of all members +1 1 Weighted mean of all members +2 2 Standard deviation with respect to cluster mean +3 3 Standard deviation with respect to cluster mean, normalized +4 4 Spread of all members +5 5 Large anomaly index of all members +6 6 Unweighted mean of the cluster members +7 7 Interquartile range (range between the 25th and 75th quantile) +8 8 Minimum of all ensemble members +9 9 Maximum of all ensemble members +# 10-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/31/4.8.table b/definitions/grib2/tables/31/4.8.table new file mode 100644 index 000000000..ad883039c --- /dev/null +++ b/definitions/grib2/tables/31/4.8.table @@ -0,0 +1,6 @@ +# Code table 4.8 - Clustering method +0 0 Anomaly correlation +1 1 Root mean square +# 2-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/31/4.9.table b/definitions/grib2/tables/31/4.9.table new file mode 100644 index 000000000..9f74599c3 --- /dev/null +++ b/definitions/grib2/tables/31/4.9.table @@ -0,0 +1,13 @@ +# Code table 4.9 - Probability type +0 0 Probability of event below lower limit +1 1 Probability of event above upper limit +2 2 Probability of event between lower and upper limits (the range includes the lower limit but not the upper limit) +3 3 Probability of event above lower limit +4 4 Probability of event below upper limit +5 5 Probability of event equal to lower limit +6 6 Probability of event in above normal category +7 7 Probability of event in near normal category +8 8 Probability of event in below normal category +# 9-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/31/4.91.table b/definitions/grib2/tables/31/4.91.table new file mode 100644 index 000000000..ae31ed61c --- /dev/null +++ b/definitions/grib2/tables/31/4.91.table @@ -0,0 +1,16 @@ +# Code table 4.91 - Type of Interval +0 0 Smaller than first limit +1 1 Greater than second limit +2 2 Between first and second limit. The range includes the first limit but not the second limit +3 3 Greater than first limit +4 4 Smaller than second limit +5 5 Smaller or equal first limit +6 6 Greater or equal second limit +7 7 Between first and second. The range includes the first limit and the second limit +8 8 Greater or equal first limit +9 9 Smaller or equal second limit +10 10 Between first and second limit. The range includes the second limit but not the first limit +11 11 Equal to first limit +# 12-191 Reserved +# 192-254 Reserved for local use +255 missing Missing diff --git a/definitions/grib2/tables/31/5.0.table b/definitions/grib2/tables/31/5.0.table new file mode 100644 index 000000000..5e00004b0 --- /dev/null +++ b/definitions/grib2/tables/31/5.0.table @@ -0,0 +1,22 @@ +# Code table 5.0 - Data representation template number +0 0 Grid point data - simple packing +1 1 Matrix value at grid point - simple packing +2 2 Grid point data - complex packing +3 3 Grid point data - complex packing and spatial differencing +4 4 Grid point data - IEEE floating point data +# 5-39 Reserved +40 40 Grid point data - JPEG 2000 code stream format +41 41 Grid point data - Portable Network Graphics (PNG) +42 42 Grid point data - CCSDS recommended lossless compression +# 43-49 Reserved +50 50 Spectral data - simple packing +51 51 Spherical harmonics data - complex packing +# 52 Reserved +53 53 Spectral data for limited area models - complex packing +# 54-60 Reserved +61 61 Grid point data - simple packing with logarithm pre-processing +# 62-199 Reserved +200 200 Run length packing with level values +# 201-49151 Reserved +# 49152-65534 Reserved for local use +65535 65535 Missing diff --git a/definitions/grib2/tables/31/5.1.table b/definitions/grib2/tables/31/5.1.table new file mode 100644 index 000000000..854330c74 --- /dev/null +++ b/definitions/grib2/tables/31/5.1.table @@ -0,0 +1,6 @@ +# Code table 5.1 - Type of original field values +0 0 Floating point +1 1 Integer +# 2-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/31/5.2.table b/definitions/grib2/tables/31/5.2.table new file mode 100644 index 000000000..eb2d544f0 --- /dev/null +++ b/definitions/grib2/tables/31/5.2.table @@ -0,0 +1,8 @@ +# Code table 5.2 - Matrix coordinate value function definition +0 0 Explicit coordinate values set +1 1 Linear coordinates f(1) = C1, f(n) = f(n-1) + C2 +# 2-10 Reserved +11 11 Geometric coordinates f(1) = C1, f(n) = C2 * f(n-1) +# 12-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/31/5.25.table b/definitions/grib2/tables/31/5.25.table new file mode 100644 index 000000000..1b45f28a3 --- /dev/null +++ b/definitions/grib2/tables/31/5.25.table @@ -0,0 +1,9 @@ +# Code table 5.25 - type of bi-Fourier subtruncation +# 0-76 Reserved +77 77 Rectangular +# 78-87 Reserved +88 88 Elliptic +# 89-98 Reserved +99 99 Diamond +# 100-254 Reserved +255 255 Missing diff --git a/definitions/grib2/tables/31/5.26.table b/definitions/grib2/tables/31/5.26.table new file mode 100644 index 000000000..9e91ebf2e --- /dev/null +++ b/definitions/grib2/tables/31/5.26.table @@ -0,0 +1,5 @@ +# Code table 5.26 - packing mode for axes +0 0 Spectral coefficients for axes are packed +1 1 Spectral coefficients for axes included in the unpacked subset +# 2-254 Reserved +255 255 Missing diff --git a/definitions/grib2/tables/31/5.3.table b/definitions/grib2/tables/31/5.3.table new file mode 100644 index 000000000..c3b7b30fe --- /dev/null +++ b/definitions/grib2/tables/31/5.3.table @@ -0,0 +1,7 @@ +# Code table 5.3 - Matrix coordinate parameter +1 1 Direction degrees true +2 2 Frequency (s-1) +3 3 Radial number (2pi/lambda) (m-1) +# 4-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/31/5.4.table b/definitions/grib2/tables/31/5.4.table new file mode 100644 index 000000000..8121c1819 --- /dev/null +++ b/definitions/grib2/tables/31/5.4.table @@ -0,0 +1,6 @@ +# Code table 5.4 - Group splitting method +0 0 Row by row splitting +1 1 General group splitting +# 2-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/31/5.40.table b/definitions/grib2/tables/31/5.40.table new file mode 100644 index 000000000..b9bad2c39 --- /dev/null +++ b/definitions/grib2/tables/31/5.40.table @@ -0,0 +1,5 @@ +# Code table 5.40 - Type of compression +0 0 Lossless +1 1 Lossy +# 2-254 Reserved +255 255 Missing diff --git a/definitions/grib2/tables/31/5.5.table b/definitions/grib2/tables/31/5.5.table new file mode 100644 index 000000000..3ef3eb070 --- /dev/null +++ b/definitions/grib2/tables/31/5.5.table @@ -0,0 +1,7 @@ +# Code table 5.5 - Missing value management for complex packing +0 0 No explicit missing values included within data values +1 1 Primary missing values included within data values +2 2 Primary and secondary missing values included within data values +# 3-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/31/5.6.table b/definitions/grib2/tables/31/5.6.table new file mode 100644 index 000000000..6d5177877 --- /dev/null +++ b/definitions/grib2/tables/31/5.6.table @@ -0,0 +1,7 @@ +# Code table 5.6 - Order of spatial differencing +0 0 Reserved +1 1 First-order spatial differencing +2 2 Second-order spatial differencing +# 3-191 Reserved +# 192-254 Reserved for local use +255 255 Missing diff --git a/definitions/grib2/tables/31/5.7.table b/definitions/grib2/tables/31/5.7.table new file mode 100644 index 000000000..5ab780056 --- /dev/null +++ b/definitions/grib2/tables/31/5.7.table @@ -0,0 +1,7 @@ +# Code table 5.7 - Precision of floating-point numbers +0 0 Reserved +1 1 IEEE 32-bit (I=4 in section 7) +2 2 IEEE 64-bit (I=8 in section 7) +3 3 IEEE 128-bit (I=16 in section 7) +# 4-254 Reserved +255 255 Missing diff --git a/definitions/grib2/tables/31/6.0.table b/definitions/grib2/tables/31/6.0.table new file mode 100644 index 000000000..a8f30f5a4 --- /dev/null +++ b/definitions/grib2/tables/31/6.0.table @@ -0,0 +1,6 @@ +# Code table 6.0 - Bit map indicator +0 0 A bit map applies to this product and is specified in this Section +1 1 A bit map pre-determined by the originating/generating centre applies to this product and is not specified in this Section +# 1-253 A bit map predetermined by the originating/generating centre applies to this product and is not specified in this Section +254 254 A bit map defined previously in the same GRIB message applies to this product +255 255 A bit map does not apply to this product From 1e68497461f361da7ff5bffb8df46187175a4b90 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 10 May 2023 18:02:09 +0100 Subject: [PATCH 149/378] Single-precision: Support for second order packing (GRIB1) --- ...g1second_order_general_extended_packing.cc | 118 +++++++++++++----- ...ass_data_g1second_order_general_packing.cc | 21 ++-- ..._data_g1second_order_row_by_row_packing.cc | 20 +-- tests/grib_ecc-1467.sh | 2 +- 4 files changed, 112 insertions(+), 49 deletions(-) diff --git a/src/grib_accessor_class_data_g1second_order_general_extended_packing.cc b/src/grib_accessor_class_data_g1second_order_general_extended_packing.cc index 41567804a..a471dabba 100644 --- a/src/grib_accessor_class_data_g1second_order_general_extended_packing.cc +++ b/src/grib_accessor_class_data_g1second_order_general_extended_packing.cc @@ -45,7 +45,8 @@ MEMBERS=const char* orderOfSPD MEMBERS=const char* numberOfPoints MEMBERS=const char* dataFlag - MEMBERS=double* values + MEMBERS=double* dvalues + MEMBERS=float* fvalues MEMBERS=size_t size @@ -117,7 +118,10 @@ typedef struct grib_accessor_data_g1second_order_general_extended_packing const char* orderOfSPD; const char* numberOfPoints; const char* dataFlag; - double* values; + double* dvalues; + float* fvalues; + int double_dirty; + int float_dirty; size_t size; } grib_accessor_data_g1second_order_general_extended_packing; @@ -250,7 +254,9 @@ static void init(grib_accessor* a, const long v, grib_arguments* args) self->dataFlag = grib_arguments_get_name(handle, args, self->carg++); self->edition = 1; self->dirty = 1; - self->values = NULL; + self->dvalues = NULL; + self->fvalues = NULL; + self->double_dirty = self->float_dirty = 1; self->size = 0; a->flags |= GRIB_ACCESSOR_FLAG_DATA; } @@ -344,15 +350,10 @@ static int unpack_double_element_set(grib_accessor* a, const size_t* index_array return GRIB_SUCCESS; } -static int unpack_float(grib_accessor*, float* val, size_t* len) -{ - return GRIB_NOT_IMPLEMENTED; -} - -static int unpack_double(grib_accessor* a, double* values, size_t* len) +static int unpack(grib_accessor* a, double* dvalues, float* fvalues, size_t* len) { grib_accessor_data_g1second_order_general_extended_packing* self = (grib_accessor_data_g1second_order_general_extended_packing*)a; - int ret = 0; + int ret = 0; long numberOfGroups, numberOfSecondOrderPackedValues; long* firstOrderValues = 0; long* X = 0; @@ -372,19 +373,33 @@ static int unpack_double(grib_accessor* a, double* values, size_t* len) long bias = 0; long y = 0, z = 0, w = 0; size_t k, ngroups; + Assert(!(dvalues && fvalues)); - if (!self->dirty) { - if (*len < self->size) { - return GRIB_ARRAY_TOO_SMALL; + if (dvalues) { + if (!self->double_dirty) { + if (*len < self->size) { + return GRIB_ARRAY_TOO_SMALL; + } + for (k = 0; k < self->size; k++) + dvalues[k] = self->dvalues[k]; + *len = self->size; + return GRIB_SUCCESS; } - for (k = 0; k < self->size; k++) - values[k] = self->values[k]; - - *len = self->size; - return GRIB_SUCCESS; + self->double_dirty = 0; } - self->dirty = 0; + if (fvalues) { + if (!self->float_dirty) { + if (*len < self->size) { + return GRIB_ARRAY_TOO_SMALL; + } + for (k = 0; k < self->size; k++) + fvalues[k] = self->fvalues[k]; + *len = self->size; + return GRIB_SUCCESS; + } + self->float_dirty = 0; + } buf += grib_byte_offset(a); ret = value_count(a, &numberOfValues); @@ -506,21 +521,42 @@ static int unpack_double(grib_accessor* a, double* values, size_t* len) break; } - if (self->values) { - if (numberOfValues != self->size) { - grib_context_free(a->context, self->values); - self->values = (double*)grib_context_malloc_clear(a->context, sizeof(double) * numberOfValues); + if (dvalues) { // double-precision + if (self->dvalues) { + if (numberOfValues != self->size) { + grib_context_free(a->context, self->dvalues); + self->dvalues = (double*)grib_context_malloc_clear(a->context, sizeof(double) * numberOfValues); + } + } + else { + self->dvalues = (double*)grib_context_malloc_clear(a->context, sizeof(double) * numberOfValues); + } + + s = grib_power(binary_scale_factor, 2); + d = grib_power(-decimal_scale_factor, 10); + for (i = 0; i < numberOfValues; i++) { + dvalues[i] = (double)(((X[i] * s) + reference_value) * d); + self->dvalues[i] = dvalues[i]; } } else { - self->values = (double*)grib_context_malloc_clear(a->context, sizeof(double) * numberOfValues); - } + // single-precision + if (self->fvalues) { + if (numberOfValues != self->size) { + grib_context_free(a->context, self->fvalues); + self->fvalues = (float*)grib_context_malloc_clear(a->context, sizeof(float) * numberOfValues); + } + } + else { + self->fvalues = (float*)grib_context_malloc_clear(a->context, sizeof(float) * numberOfValues); + } - s = grib_power(binary_scale_factor, 2); - d = grib_power(-decimal_scale_factor, 10); - for (i = 0; i < numberOfValues; i++) { - values[i] = (double)(((X[i] * s) + reference_value) * d); - self->values[i] = values[i]; + s = grib_power(binary_scale_factor, 2); + d = grib_power(-decimal_scale_factor, 10); + for (i = 0; i < numberOfValues; i++) { + fvalues[i] = (float)(((X[i] * s) + reference_value) * d); + self->fvalues[i] = fvalues[i]; + } } *len = numberOfValues; @@ -536,6 +572,16 @@ static int unpack_double(grib_accessor* a, double* values, size_t* len) return ret; } +static int unpack_float(grib_accessor* a, float* values, size_t* len) +{ + return unpack(a, NULL, values, len); +} + +static int unpack_double(grib_accessor* a, double* values, size_t* len) +{ + return unpack(a, values, NULL, len); +} + static void grib_split_long_groups(grib_handle* hand, grib_context* c, long* numberOfGroups, long* lengthOfSecondOrderValues, long* groupLengths, long* widthOfLengths, long* groupWidths, long widthOfWidths, @@ -1318,7 +1364,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) grib_handle* handle = grib_handle_of_accessor(a); long optimize_scaling_factor = 0; - self->dirty = 1; + self->double_dirty = 1; numberOfValues = *len; @@ -1933,8 +1979,12 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) static void destroy(grib_context* context, grib_accessor* a) { grib_accessor_data_g1second_order_general_extended_packing* self = (grib_accessor_data_g1second_order_general_extended_packing*)a; - if (self->values != NULL) { - grib_context_free(context, self->values); - self->values = NULL; + if (self->dvalues != NULL) { + grib_context_free(context, self->dvalues); + self->dvalues = NULL; + } + if (self->fvalues != NULL) { + grib_context_free(context, self->fvalues); + self->fvalues = NULL; } } diff --git a/src/grib_accessor_class_data_g1second_order_general_packing.cc b/src/grib_accessor_class_data_g1second_order_general_packing.cc index 856a68930..1e18a173d 100644 --- a/src/grib_accessor_class_data_g1second_order_general_packing.cc +++ b/src/grib_accessor_class_data_g1second_order_general_packing.cc @@ -195,13 +195,10 @@ static int value_count(grib_accessor* a, long* numberOfSecondOrderPackedValues) return err; } -static int unpack_float(grib_accessor*, float* val, size_t* len) -{ - return GRIB_NOT_IMPLEMENTED; -} - -static int unpack_double(grib_accessor* a, double* values, size_t* len) +template +static int unpack(grib_accessor* a, T* values, size_t* len) { + static_assert(std::is_floating_point::value, "Requires floating point numbers"); grib_accessor_data_g1second_order_general_packing* self = (grib_accessor_data_g1second_order_general_packing*)a; int ret = 0; long numberOfGroups, numberOfSecondOrderPackedValues; @@ -291,7 +288,7 @@ static int unpack_double(grib_accessor* a, double* values, size_t* len) s = grib_power(binary_scale_factor, 2); d = grib_power(-decimal_scale_factor, 10); for (i = 0; i < numberOfSecondOrderPackedValues; i++) { - values[i] = (double)(((X[i] * s) + reference_value) * d); + values[i] = (T)(((X[i] * s) + reference_value) * d); } *len = numberOfSecondOrderPackedValues; @@ -303,6 +300,16 @@ static int unpack_double(grib_accessor* a, double* values, size_t* len) return ret; } +static int unpack_float(grib_accessor* a, float* values, size_t* len) +{ + return unpack(a, values, len); +} + +static int unpack_double(grib_accessor* a, double* values, size_t* len) +{ + return unpack(a, values, len); +} + static int pack_double(grib_accessor* a, const double* cval, size_t* len) { /* return GRIB_NOT_IMPLEMENTED; */ diff --git a/src/grib_accessor_class_data_g1second_order_row_by_row_packing.cc b/src/grib_accessor_class_data_g1second_order_row_by_row_packing.cc index 9f51021b7..8ae60b9a4 100644 --- a/src/grib_accessor_class_data_g1second_order_row_by_row_packing.cc +++ b/src/grib_accessor_class_data_g1second_order_row_by_row_packing.cc @@ -259,12 +259,8 @@ static int value_count(grib_accessor* a, long* count) return ret; } -static int unpack_float(grib_accessor*, float* val, size_t* len) -{ - return GRIB_NOT_IMPLEMENTED; -} - -static int unpack_double(grib_accessor* a, double* values, size_t* len) +template +static int unpack(grib_accessor* a, T* values, size_t* len) { grib_accessor_data_g1second_order_row_by_row_packing* self = (grib_accessor_data_g1second_order_row_by_row_packing*)a; grib_handle* gh = grib_handle_of_accessor(a); @@ -418,7 +414,7 @@ static int unpack_double(grib_accessor* a, double* values, size_t* len) s = grib_power(binary_scale_factor, 2); d = grib_power(-decimal_scale_factor, 10); for (i = 0; i < n; i++) { - values[i] = (double)(((X[i] * s) + reference_value) * d); + values[i] = (T)(((X[i] * s) + reference_value) * d); } grib_context_free(a->context, firstOrderValues); grib_context_free(a->context, X); @@ -431,6 +427,16 @@ static int unpack_double(grib_accessor* a, double* values, size_t* len) return ret; } +static int unpack_float(grib_accessor* a, float* values, size_t* len) +{ + return unpack(a, values, len); +} + +static int unpack_double(grib_accessor* a, double* values, size_t* len) +{ + return unpack(a, values, len); +} + static int pack_double(grib_accessor* a, const double* cval, size_t* len) { int err = 0; diff --git a/tests/grib_ecc-1467.sh b/tests/grib_ecc-1467.sh index e666f7a0d..fb5d0bd1c 100755 --- a/tests/grib_ecc-1467.sh +++ b/tests/grib_ecc-1467.sh @@ -30,7 +30,7 @@ gfiles="$gfiles spherical_pressure_level.grib2" # spectral_complex, edition=2 gfiles="$gfiles gfs.complex.mvmu.grib2" # grid_complex, edition=2, g22order_packing # Second order -gfiles="$gfiles lfpw.grib1" # grid_second_order, edition=1 +gfiles="$gfiles lfpw.grib1 gen.grib gen_ext.grib second_ord_rbr.grib1" # grid_second_order, edition=1 #gfiles="$gfiles " # grid_second_order, edition=2 # CCSDS From 3b0373922cc3310223c5383f7d1cffde0746467b Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 10 May 2023 21:38:00 +0100 Subject: [PATCH 150/378] Add missing header --- src/grib_accessor_class_data_g1second_order_general_packing.cc | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/grib_accessor_class_data_g1second_order_general_packing.cc b/src/grib_accessor_class_data_g1second_order_general_packing.cc index 1e18a173d..acb0ae9d6 100644 --- a/src/grib_accessor_class_data_g1second_order_general_packing.cc +++ b/src/grib_accessor_class_data_g1second_order_general_packing.cc @@ -9,6 +9,8 @@ */ #include "grib_api_internal.h" +#include + /* This is used by make_class.pl From 7771dce4ace8eee942f930b4e00790c6b6048022 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 11 May 2023 22:49:29 +0100 Subject: [PATCH 151/378] Iterator: Missing jDirectionIncrement --- src/grib_iterator_class_latlon.cc | 6 +++--- src/grib_iterator_class_regular.cc | 2 +- tests/grib_ecc-984.sh | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/grib_iterator_class_latlon.cc b/src/grib_iterator_class_latlon.cc index d0e4d2d54..7ff7c191d 100644 --- a/src/grib_iterator_class_latlon.cc +++ b/src/grib_iterator_class_latlon.cc @@ -171,7 +171,7 @@ static int init(grib_iterator* iter, grib_handle* h, grib_arguments* args) return err; if ((err = grib_get_double_internal(h, "latitudeLastInDegrees", &lat2))) return err; - if ((err = grib_get_double_internal(h, s_jdir, &jdir))) + if ((err = grib_get_double_internal(h, s_jdir, &jdir))) //can be GRIB_MISSING_DOUBLE return err; if ((err = grib_get_long_internal(h, s_jScansPos, &jScansPositively))) return err; @@ -182,7 +182,7 @@ static int init(grib_iterator* iter, grib_handle* h, grib_arguments* args) /* ECC-984: If jDirectionIncrement is missing, then we cannot use it (See jDirectionIncrementGiven) */ /* So try to compute the increment */ - if (grib_is_missing(h, s_jdir, &err) && err == GRIB_SUCCESS) { + if ( (grib_is_missing(h, s_jdir, &err) && err == GRIB_SUCCESS) || (jdir == GRIB_MISSING_DOUBLE) ) { const long Nj = self->Nj; Assert(Nj > 1); if (lat1 > lat2) { @@ -192,7 +192,7 @@ static int init(grib_iterator* iter, grib_handle* h, grib_arguments* args) jdir = (lat2 - lat1) / (Nj - 1); } grib_context_log(h->context, GRIB_LOG_INFO, - "%s is missing (See jDirectionIncrementGiven). Using value of %.6f obtained from La1, La2 and Nj", s_jdir, jdir); + "Cannot use jDirectionIncrement. Using value of %.6f obtained from La1, La2 and Nj", jdir); } if (jScansPositively) { diff --git a/src/grib_iterator_class_regular.cc b/src/grib_iterator_class_regular.cc index ce45da00a..ddbaa3044 100644 --- a/src/grib_iterator_class_regular.cc +++ b/src/grib_iterator_class_regular.cc @@ -161,7 +161,7 @@ static int init(grib_iterator* iter, grib_handle* h, grib_arguments* args) return ret; if ((ret = grib_get_double_internal(h, "longitudeOfLastGridPointInDegrees", &lon2))) return ret; - if ((ret = grib_get_double_internal(h, s_idir, &idir))) + if ((ret = grib_get_double_internal(h, s_idir, &idir))) // can be GRIB_MISSING_DOUBLE return ret; if ((ret = grib_get_long_internal(h, s_Ni, &Ni))) return ret; diff --git a/tests/grib_ecc-984.sh b/tests/grib_ecc-984.sh index 49cbe7fb4..6c7c5d6c4 100755 --- a/tests/grib_ecc-984.sh +++ b/tests/grib_ecc-984.sh @@ -25,7 +25,7 @@ grib_check_key_equals $tempGrb jDirectionIncrementInDegrees MISSING ${tools_dir}/grib_get_data -F%.2f $tempGrb >$tempOut 2>$tempErr grep -q "2.000 20.000 302.53" $tempOut -grep -q "DjInDegrees is missing" $tempErr +grep -q "Cannot use jDirectionIncrement" $tempErr # Clean up rm -f $tempGrb $tempOut $tempErr From a7f126a563c0bb4daff218b89ef7f0ce148e760d Mon Sep 17 00:00:00 2001 From: Dusan Figala Date: Fri, 28 Apr 2023 10:01:32 +0200 Subject: [PATCH 152/378] Move HPC build configuration from reusable wf --- .github/ci-hpc-config.yml | 3 +++ .github/workflows/ci.yml | 3 ++- 2 files changed, 5 insertions(+), 1 deletion(-) create mode 100644 .github/ci-hpc-config.yml diff --git a/.github/ci-hpc-config.yml b/.github/ci-hpc-config.yml new file mode 100644 index 000000000..f223aa174 --- /dev/null +++ b/.github/ci-hpc-config.yml @@ -0,0 +1,3 @@ +modules: ecbuild,ninja,aec,netcdf4/new +parallel: 64 +cmake-options: -DENABLE_EXTRA_TESTS=1 diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index cf2d99939..827543ea8 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -51,8 +51,9 @@ jobs: downstream-ci-hpc: name: downstream-ci-hpc if: ${{ !github.event.pull_request.head.repo.fork && github.event.action != 'labeled' || github.event.label.name == 'approved-for-ci' }} - uses: ecmwf-actions/downstream-ci/.github/workflows/downstream-ci-hpc.yml@main + uses: ecmwf-actions/downstream-ci/.github/workflows/downstream-ci-hpc.yml@drop-reusable-wf with: + dev_runner: true eccodes: ecmwf/eccodes@${{ github.event.pull_request.head.sha || github.sha }} secrets: inherit From 5ad4f1531c157ed310e01b4c80072d81af529ef9 Mon Sep 17 00:00:00 2001 From: Dusan Figala Date: Tue, 2 May 2023 15:33:47 +0200 Subject: [PATCH 153/378] Fix build config format --- .github/ci-hpc-config.yml | 12 +++++++++--- .github/workflows/ci.yml | 3 +-- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/.github/ci-hpc-config.yml b/.github/ci-hpc-config.yml index f223aa174..801481f83 100644 --- a/.github/ci-hpc-config.yml +++ b/.github/ci-hpc-config.yml @@ -1,3 +1,9 @@ -modules: ecbuild,ninja,aec,netcdf4/new -parallel: 64 -cmake-options: -DENABLE_EXTRA_TESTS=1 +build: + modules: + - ecbuild + - ninja + - aec + - netcdf4/new + parallel: 64 + cmake_options: + - -DENABLE_EXTRA_TESTS=1 diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 827543ea8..cf2d99939 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -51,9 +51,8 @@ jobs: downstream-ci-hpc: name: downstream-ci-hpc if: ${{ !github.event.pull_request.head.repo.fork && github.event.action != 'labeled' || github.event.label.name == 'approved-for-ci' }} - uses: ecmwf-actions/downstream-ci/.github/workflows/downstream-ci-hpc.yml@drop-reusable-wf + uses: ecmwf-actions/downstream-ci/.github/workflows/downstream-ci-hpc.yml@main with: - dev_runner: true eccodes: ecmwf/eccodes@${{ github.event.pull_request.head.sha || github.sha }} secrets: inherit From e45c6b5024182d2735859f5e4c927ad8c49e9494 Mon Sep 17 00:00:00 2001 From: Dusan Figala Date: Wed, 10 May 2023 12:50:06 +0200 Subject: [PATCH 154/378] Add build config for self-hosted runners --- .github/ci-config.yml | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 .github/ci-config.yml diff --git a/.github/ci-config.yml b/.github/ci-config.yml new file mode 100644 index 000000000..0c35f55e1 --- /dev/null +++ b/.github/ci-config.yml @@ -0,0 +1,6 @@ +self_coverage: true +dependencies: | + ecmwf/ecbuild + MathisRosenhauer/libaec@master +dependency_branch: develop +parallelism_factor: 8 From ddbbbe776b81c06befee3aef080590f22d273d2c Mon Sep 17 00:00:00 2001 From: Dusan Figala Date: Thu, 11 May 2023 17:58:03 +0200 Subject: [PATCH 155/378] Remove self coverage input --- .github/ci-config.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/ci-config.yml b/.github/ci-config.yml index 0c35f55e1..773e76c62 100644 --- a/.github/ci-config.yml +++ b/.github/ci-config.yml @@ -1,4 +1,3 @@ -self_coverage: true dependencies: | ecmwf/ecbuild MathisRosenhauer/libaec@master From bf72adfb5795b35bde8ebce6d2184a867738184d Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 12 May 2023 09:58:00 +0100 Subject: [PATCH 156/378] ECC-1586: grib_get_data: Invalid latitude values printed --- src/grib_iterator_class_latlon.cc | 2 +- tests/grib_ecc-984.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/grib_iterator_class_latlon.cc b/src/grib_iterator_class_latlon.cc index 7ff7c191d..2d68b8f4e 100644 --- a/src/grib_iterator_class_latlon.cc +++ b/src/grib_iterator_class_latlon.cc @@ -191,7 +191,7 @@ static int init(grib_iterator* iter, grib_handle* h, grib_arguments* args) else { jdir = (lat2 - lat1) / (Nj - 1); } - grib_context_log(h->context, GRIB_LOG_INFO, + grib_context_log(h->context, GRIB_LOG_DEBUG, "Cannot use jDirectionIncrement. Using value of %.6f obtained from La1, La2 and Nj", jdir); } diff --git a/tests/grib_ecc-984.sh b/tests/grib_ecc-984.sh index 6c7c5d6c4..caebd55a9 100755 --- a/tests/grib_ecc-984.sh +++ b/tests/grib_ecc-984.sh @@ -25,7 +25,7 @@ grib_check_key_equals $tempGrb jDirectionIncrementInDegrees MISSING ${tools_dir}/grib_get_data -F%.2f $tempGrb >$tempOut 2>$tempErr grep -q "2.000 20.000 302.53" $tempOut -grep -q "Cannot use jDirectionIncrement" $tempErr +# grep -q "Cannot use jDirectionIncrement" $tempErr # Clean up rm -f $tempGrb $tempOut $tempErr From 376b34834c45a500b14241dbe2912a86df372395 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 12 May 2023 10:10:53 +0100 Subject: [PATCH 157/378] ECC-1586: Test --- tests/grib_ecc-984.sh | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/tests/grib_ecc-984.sh b/tests/grib_ecc-984.sh index caebd55a9..b692e5eeb 100755 --- a/tests/grib_ecc-984.sh +++ b/tests/grib_ecc-984.sh @@ -27,5 +27,11 @@ ${tools_dir}/grib_get_data -F%.2f $tempGrb >$tempOut 2>$tempErr grep -q "2.000 20.000 302.53" $tempOut # grep -q "Cannot use jDirectionIncrement" $tempErr +# ECC-1586 +${tools_dir}/grib_set -s jDirectionIncrement=MISSING,iDirectionIncrement=MISSING $input $tempGrb +${tools_dir}/grib_get_data -F%.2f $tempGrb >$tempOut 2>$tempErr +grep -q "2.000 20.000 302.53" $tempOut + + # Clean up rm -f $tempGrb $tempOut $tempErr From 7936a617ef1bb7f6f2068f375a6df8edc103e997 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 12 May 2023 14:57:14 +0100 Subject: [PATCH 158/378] Update list of keys and hash --- src/grib_hash_keys.cc | 9204 ++++++++++++++++++++--------------------- tests/keys | 4569 ++++++++++---------- 2 files changed, 6826 insertions(+), 6947 deletions(-) diff --git a/src/grib_hash_keys.cc b/src/grib_hash_keys.cc index 67c10cc03..550481324 100644 --- a/src/grib_hash_keys.cc +++ b/src/grib_hash_keys.cc @@ -34,12 +34,12 @@ struct grib_keys_hash { char* name; int id;}; #include -#define TOTAL_KEYWORDS 2438 +#define TOTAL_KEYWORDS 2487 #define MIN_WORD_LENGTH 1 #define MAX_WORD_LENGTH 74 #define MIN_HASH_VALUE 3 -#define MAX_HASH_VALUE 35609 -/* maximum key range = 35607, duplicates = 0 */ +#define MAX_HASH_VALUE 34316 +/* maximum key range = 34314, duplicates = 0 */ #ifdef __GNUC__ __inline @@ -53,32 +53,32 @@ hash_keys (const char *str, size_t len) { static const unsigned short asso_values[] = { - 35610, 35610, 35610, 35610, 35610, 35610, 35610, 35610, 35610, 35610, - 35610, 35610, 35610, 35610, 35610, 35610, 35610, 35610, 35610, 35610, - 35610, 35610, 35610, 35610, 35610, 35610, 35610, 35610, 35610, 35610, - 35610, 35610, 35610, 35610, 35610, 35610, 35610, 35610, 35610, 35610, - 35610, 35610, 1, 35610, 35610, 3, 35610, 35610, 115, 2082, - 1930, 1927, 2336, 3516, 1906, 2332, 105, 7, 2, 1, - 1, 35610, 35610, 35610, 35610, 1791, 3458, 2500, 159, 891, - 165, 5126, 3429, 712, 815, 250, 308, 383, 1779, 361, - 2501, 34, 1525, 161, 85, 4380, 1483, 2778, 397, 4364, - 9, 1, 1, 35610, 35610, 2659, 35610, 5, 441, 54, - 1, 2, 196, 180, 109, 10, 2759, 3740, 71, 7, - 1, 20, 29, 1331, 1, 8, 4, 65, 258, 92, - 802, 7, 1197, 108, 801, 1, 35610, 35610, 35610, 35610, - 35610, 35610, 35610, 35610, 35610, 35610, 35610, 35610, 35610, 35610, - 35610, 35610, 35610, 35610, 35610, 35610, 35610, 35610, 35610, 35610, - 35610, 35610, 35610, 35610, 35610, 35610, 35610, 35610, 35610, 35610, - 35610, 35610, 35610, 35610, 35610, 35610, 35610, 35610, 35610, 35610, - 35610, 35610, 35610, 35610, 35610, 35610, 35610, 35610, 35610, 35610, - 35610, 35610, 35610, 35610, 35610, 35610, 35610, 35610, 35610, 35610, - 35610, 35610, 35610, 35610, 35610, 35610, 35610, 35610, 35610, 35610, - 35610, 35610, 35610, 35610, 35610, 35610, 35610, 35610, 35610, 35610, - 35610, 35610, 35610, 35610, 35610, 35610, 35610, 35610, 35610, 35610, - 35610, 35610, 35610, 35610, 35610, 35610, 35610, 35610, 35610, 35610, - 35610, 35610, 35610, 35610, 35610, 35610, 35610, 35610, 35610, 35610, - 35610, 35610, 35610, 35610, 35610, 35610, 35610, 35610, 35610, 35610, - 35610, 35610, 35610, 35610, 35610, 35610, 35610, 35610, 35610 + 34317, 34317, 34317, 34317, 34317, 34317, 34317, 34317, 34317, 34317, + 34317, 34317, 34317, 34317, 34317, 34317, 34317, 34317, 34317, 34317, + 34317, 34317, 34317, 34317, 34317, 34317, 34317, 34317, 34317, 34317, + 34317, 34317, 34317, 34317, 34317, 34317, 34317, 34317, 34317, 34317, + 34317, 34317, 2, 34317, 34317, 1, 34317, 34317, 320, 2507, + 2365, 2344, 2145, 2487, 2277, 2572, 64, 43, 3, 2, + 1, 34317, 34317, 34317, 34317, 2043, 3384, 2134, 276, 2123, + 145, 4454, 3774, 926, 575, 173, 102, 1646, 779, 158, + 966, 21, 629, 68, 50, 5392, 1844, 3354, 605, 3874, + 1, 1, 3, 34317, 34317, 2581, 34317, 5, 494, 54, + 1, 2, 53, 83, 173, 10, 3062, 3321, 71, 7, + 1, 20, 29, 1231, 1, 8, 4, 65, 291, 211, + 1560, 203, 1838, 4, 581, 1, 34317, 34317, 34317, 34317, + 34317, 34317, 34317, 34317, 34317, 34317, 34317, 34317, 34317, 34317, + 34317, 34317, 34317, 34317, 34317, 34317, 34317, 34317, 34317, 34317, + 34317, 34317, 34317, 34317, 34317, 34317, 34317, 34317, 34317, 34317, + 34317, 34317, 34317, 34317, 34317, 34317, 34317, 34317, 34317, 34317, + 34317, 34317, 34317, 34317, 34317, 34317, 34317, 34317, 34317, 34317, + 34317, 34317, 34317, 34317, 34317, 34317, 34317, 34317, 34317, 34317, + 34317, 34317, 34317, 34317, 34317, 34317, 34317, 34317, 34317, 34317, + 34317, 34317, 34317, 34317, 34317, 34317, 34317, 34317, 34317, 34317, + 34317, 34317, 34317, 34317, 34317, 34317, 34317, 34317, 34317, 34317, + 34317, 34317, 34317, 34317, 34317, 34317, 34317, 34317, 34317, 34317, + 34317, 34317, 34317, 34317, 34317, 34317, 34317, 34317, 34317, 34317, + 34317, 34317, 34317, 34317, 34317, 34317, 34317, 34317, 34317, 34317, + 34317, 34317, 34317, 34317, 34317, 34317, 34317, 34317, 34317 }; unsigned int hval = len; @@ -165,1075 +165,1128 @@ hash_keys (const char *str, size_t len) static const unsigned char lengthtable[] = { 0, 0, 0, 1, 0, 2, 2, 3, 2, 1, 0, 2, 2, 2, - 0, 1, 0, 2, 4, 0, 4, 4, 3, 3, 4, 0, 0, 5, + 0, 1, 0, 0, 4, 0, 0, 4, 3, 0, 4, 0, 0, 5, 3, 4, 0, 0, 0, 4, 0, 0, 5, 0, 0, 0, 6, 4, - 0, 5, 0, 0, 8, 0, 4, 6, 3, 6, 5, 0, 0, 0, + 0, 5, 0, 0, 8, 0, 0, 0, 3, 6, 5, 0, 0, 0, 7, 4, 7, 5, 0, 0, 0, 0, 0, 0, 9, 9, 0, 9, - 9, 0, 6, 0, 0, 0, 4, 0, 4, 0, 0, 0, 10, 4, - 10, 7, 6, 0, 0, 7, 0, 0, 0, 6, 0, 0, 5, 6, - 10, 5, 0, 5, 0, 8, 6, 0, 0, 7, 6, 0, 10, 0, - 8, 9, 0, 0, 7, 10, 0, 0, 0, 7, 0, 0, 0, 5, - 8, 0, 5, 8, 8, 0, 0, 10, 0, 0, 0, 7, 3, 3, - 0, 0, 0, 0, 0, 9, 0, 0, 8, 0, 6, 0, 0, 5, - 8, 0, 0, 0, 0, 5, 5, 0, 3, 0, 0, 0, 7, 0, - 0, 0, 0, 0, 8, 2, 4, 2, 8, 5, 10, 0, 5, 2, - 6, 0, 9, 7, 0, 9, 7, 0, 0, 6, 10, 0, 0, 8, - 5, 4, 7, 7, 4, 6, 0, 0, 6, 6, 0, 9, 10, 0, - 8, 0, 10, 0, 0, 0, 0, 0, 10, 0, 7, 0, 8, 0, - 0, 0, 13, 0, 0, 6, 0, 0, 0, 0, 10, 0, 7, 0, - 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 10, 10, 0, 0, - 0, 0, 8, 5, 9, 2, 0, 0, 8, 14, 0, 0, 0, 0, - 0, 0, 10, 0, 0, 0, 9, 0, 0, 10, 0, 0, 0, 0, - 0, 0, 0, 12, 8, 4, 0, 9, 0, 5, 0, 0, 0, 0, - 0, 0, 0, 5, 8, 0, 0, 0, 11, 17, 10, 0, 0, 10, - 7, 9, 5, 0, 0, 0, 5, 0, 0, 8, 0, 0, 0, 7, - 8, 11, 2, 8, 0, 0, 0, 0, 0, 0, 0, 0, 5, 9, - 9, 0, 0, 0, 0, 5, 0, 6, 0, 10, 0, 0, 8, 0, - 8, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 1, 0, 0, - 0, 9, 0, 0, 10, 0, 11, 0, 0, 0, 3, 0, 0, 0, - 9, 3, 10, 0, 7, 9, 0, 0, 0, 0, 0, 3, 3, 14, - 0, 0, 0, 0, 13, 12, 0, 0, 8, 0, 9, 0, 11, 0, - 0, 8, 0, 2, 10, 0, 0, 11, 7, 0, 0, 11, 6, 0, - 0, 13, 15, 6, 0, 0, 6, 0, 0, 0, 0, 0, 13, 0, - 12, 0, 6, 0, 8, 2, 0, 0, 0, 0, 8, 0, 0, 0, - 0, 0, 10, 11, 0, 4, 0, 0, 0, 2, 0, 0, 0, 10, - 7, 0, 0, 0, 8, 11, 11, 0, 11, 0, 0, 5, 0, 7, - 0, 0, 0, 10, 5, 0, 10, 0, 0, 17, 0, 0, 6, 0, - 6, 0, 0, 14, 0, 0, 12, 0, 13, 0, 0, 1, 0, 18, - 0, 0, 0, 7, 11, 0, 0, 0, 10, 0, 15, 0, 0, 0, - 0, 0, 7, 14, 0, 0, 6, 9, 0, 24, 0, 0, 13, 6, - 0, 0, 0, 0, 0, 12, 9, 10, 0, 0, 2, 0, 0, 0, - 0, 2, 0, 0, 0, 0, 0, 0, 6, 15, 0, 0, 0, 13, - 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 10, 0, 10, 0, - 2, 7, 0, 0, 9, 6, 0, 0, 0, 8, 0, 0, 0, 0, - 0, 10, 0, 0, 3, 13, 4, 0, 0, 0, 0, 0, 0, 13, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 12, 8, 0, 3, 0, 0, 13, - 0, 0, 0, 0, 3, 0, 4, 0, 0, 0, 0, 0, 0, 18, - 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 10, 0, 0, 0, - 0, 12, 0, 0, 14, 0, 0, 23, 0, 0, 12, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 18, 19, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 11, 0, 0, 20, 13, 0, 0, 13, 0, 0, - 12, 0, 20, 0, 0, 0, 0, 2, 0, 0, 11, 0, 0, 0, - 0, 10, 0, 0, 0, 0, 12, 0, 0, 12, 0, 10, 0, 0, - 0, 11, 0, 0, 0, 0, 0, 17, 0, 14, 10, 0, 0, 0, - 9, 0, 6, 12, 0, 0, 14, 0, 0, 12, 0, 10, 9, 0, - 11, 17, 17, 0, 0, 0, 0, 14, 0, 0, 0, 1, 7, 14, - 0, 0, 17, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, - 0, 0, 0, 0, 0, 0, 0, 18, 0, 15, 0, 0, 0, 0, - 23, 15, 0, 0, 15, 0, 0, 0, 11, 0, 10, 0, 0, 0, - 0, 10, 0, 0, 10, 0, 0, 18, 0, 15, 0, 0, 14, 0, - 0, 0, 13, 12, 0, 9, 0, 13, 18, 0, 0, 11, 0, 0, - 0, 0, 0, 14, 0, 0, 10, 0, 0, 15, 0, 12, 0, 0, - 0, 0, 19, 10, 0, 0, 0, 0, 0, 0, 0, 6, 0, 12, - 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 12, 0, - 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, - 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 13, 0, 16, 0, 14, 7, 21, 22, 0, 0, 0, 0, - 0, 0, 0, 0, 17, 0, 0, 15, 0, 14, 10, 22, 0, 0, - 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 13, - 0, 0, 0, 0, 0, 12, 0, 5, 0, 17, 0, 0, 14, 0, - 12, 0, 0, 0, 0, 13, 0, 14, 0, 0, 0, 15, 0, 0, - 0, 0, 0, 0, 14, 0, 0, 14, 0, 0, 0, 0, 9, 25, - 20, 14, 21, 0, 0, 17, 6, 0, 0, 0, 0, 8, 0, 12, - 0, 24, 16, 0, 27, 0, 15, 0, 0, 0, 22, 0, 0, 21, - 19, 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 14, 0, + 9, 0, 6, 0, 0, 0, 4, 7, 4, 0, 0, 0, 10, 4, + 10, 7, 6, 0, 0, 7, 0, 8, 0, 6, 8, 8, 5, 6, + 10, 5, 4, 5, 0, 0, 6, 10, 0, 7, 6, 0, 10, 6, + 8, 9, 4, 0, 7, 10, 0, 10, 0, 7, 0, 0, 0, 10, + 0, 0, 5, 9, 0, 0, 6, 10, 0, 0, 0, 7, 3, 0, + 0, 0, 4, 7, 0, 9, 5, 0, 0, 0, 6, 0, 2, 5, + 0, 0, 10, 0, 8, 5, 0, 8, 3, 9, 10, 0, 0, 1, + 3, 0, 0, 0, 8, 2, 0, 10, 0, 5, 10, 8, 5, 0, + 6, 3, 9, 7, 0, 9, 2, 5, 9, 13, 5, 0, 0, 11, + 0, 0, 7, 0, 0, 0, 0, 0, 0, 8, 0, 10, 10, 11, + 0, 0, 6, 6, 6, 0, 4, 0, 0, 0, 7, 0, 0, 0, + 5, 0, 14, 0, 0, 0, 0, 0, 0, 5, 0, 8, 0, 8, + 4, 0, 0, 0, 0, 0, 4, 6, 0, 0, 0, 0, 0, 2, + 7, 0, 0, 0, 0, 0, 3, 0, 10, 0, 0, 0, 4, 0, + 0, 0, 9, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, + 0, 5, 0, 10, 0, 14, 8, 10, 0, 10, 0, 0, 0, 6, + 0, 0, 0, 5, 2, 4, 0, 9, 0, 13, 13, 0, 11, 0, + 6, 8, 0, 2, 8, 0, 0, 8, 7, 8, 0, 10, 0, 0, + 0, 0, 9, 0, 8, 0, 0, 0, 0, 5, 0, 0, 12, 9, + 0, 8, 0, 0, 0, 7, 0, 5, 0, 0, 0, 1, 0, 9, + 14, 10, 0, 10, 0, 0, 0, 0, 0, 17, 0, 0, 6, 0, + 0, 0, 0, 0, 0, 0, 0, 8, 10, 0, 0, 10, 6, 11, + 0, 0, 0, 6, 0, 5, 0, 7, 0, 0, 0, 8, 20, 0, + 10, 11, 0, 10, 0, 6, 7, 0, 0, 0, 0, 0, 19, 0, + 20, 0, 0, 2, 8, 0, 0, 0, 0, 3, 9, 8, 0, 0, + 0, 0, 0, 12, 0, 12, 0, 0, 0, 13, 0, 6, 0, 0, + 0, 0, 0, 0, 0, 11, 11, 14, 0, 8, 0, 0, 8, 0, + 0, 0, 0, 0, 10, 0, 0, 10, 6, 0, 0, 6, 0, 11, + 10, 9, 0, 3, 0, 0, 14, 0, 0, 8, 0, 0, 18, 14, + 0, 0, 0, 0, 0, 12, 0, 14, 12, 0, 14, 0, 0, 0, + 0, 5, 7, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, + 0, 0, 4, 0, 0, 0, 2, 0, 0, 5, 0, 0, 0, 8, + 0, 9, 12, 0, 13, 0, 14, 0, 15, 0, 7, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 14, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 7, 0, + 0, 0, 19, 10, 0, 3, 0, 0, 0, 9, 15, 0, 0, 0, + 0, 0, 3, 6, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, + 23, 0, 0, 0, 0, 16, 0, 11, 0, 11, 0, 0, 8, 0, + 17, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 2, 13, 0, + 17, 9, 0, 17, 0, 0, 12, 13, 0, 0, 13, 14, 12, 11, + 0, 0, 0, 0, 15, 0, 0, 15, 0, 0, 17, 13, 11, 0, + 0, 0, 0, 2, 0, 0, 0, 0, 8, 0, 0, 13, 0, 13, + 3, 27, 4, 0, 3, 0, 0, 2, 0, 0, 0, 0, 12, 0, + 0, 0, 14, 13, 0, 0, 13, 0, 0, 0, 0, 18, 2, 0, + 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, + 0, 0, 0, 22, 0, 0, 0, 0, 15, 0, 0, 0, 0, 2, + 0, 0, 13, 19, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, + 0, 17, 18, 18, 9, 0, 0, 0, 15, 0, 0, 25, 0, 12, + 0, 0, 0, 0, 0, 0, 0, 17, 0, 13, 9, 11, 0, 0, + 0, 0, 0, 17, 22, 0, 0, 0, 0, 14, 0, 18, 0, 7, + 14, 12, 11, 0, 9, 0, 0, 10, 0, 0, 0, 39, 40, 2, + 0, 0, 0, 0, 17, 7, 8, 0, 0, 0, 0, 0, 0, 0, + 27, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 12, 6, 23, 0, 0, 0, + 0, 0, 0, 0, 19, 0, 0, 0, 0, 0, 12, 0, 0, 10, + 0, 0, 0, 14, 15, 0, 0, 11, 0, 24, 0, 0, 0, 12, + 0, 0, 0, 18, 10, 0, 15, 0, 0, 0, 37, 0, 0, 0, + 0, 0, 0, 12, 0, 0, 0, 0, 14, 0, 0, 0, 0, 2, + 13, 0, 0, 0, 0, 2, 0, 0, 0, 0, 15, 9, 0, 10, + 21, 0, 8, 0, 0, 0, 0, 0, 18, 9, 21, 9, 6, 0, + 0, 0, 0, 0, 15, 0, 8, 0, 0, 0, 0, 0, 0, 0, + 0, 13, 0, 0, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 11, 0, 19, 0, + 0, 17, 0, 13, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 9, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 7, 0, 0, 2, 0, 0, 0, 0, 11, 0, 0, 0, + 7, 14, 0, 0, 16, 0, 0, 16, 0, 0, 23, 0, 0, 0, + 13, 18, 9, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 9, + 10, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 14, 15, 0, + 11, 10, 0, 0, 16, 30, 0, 21, 0, 0, 0, 0, 11, 0, + 20, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 8, 0, 0, 8, 0, 0, 10, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 10, + 0, 0, 0, 0, 31, 0, 22, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 21, 0, 10, 0, 0, 27, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 15, 0, 0, + 0, 0, 17, 1, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, + 15, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 12, + 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, + 17, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 57, 0, 0, 0, 10, 11, + 16, 0, 11, 15, 0, 0, 0, 0, 0, 0, 0, 0, 21, 0, + 15, 0, 0, 0, 0, 0, 24, 21, 0, 0, 3, 0, 15, 31, + 13, 0, 31, 0, 0, 0, 0, 3, 0, 13, 0, 0, 0, 0, + 19, 0, 0, 0, 11, 0, 0, 25, 0, 0, 0, 0, 0, 0, + 12, 15, 0, 0, 0, 0, 0, 0, 0, 30, 0, 15, 0, 14, + 0, 0, 0, 3, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 12, + 0, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 29, 0, + 0, 0, 0, 0, 13, 0, 0, 0, 0, 18, 0, 0, 0, 0, + 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 24, + 11, 10, 0, 0, 0, 0, 20, 0, 0, 0, 0, 3, 44, 0, + 0, 0, 0, 10, 9, 0, 0, 0, 0, 0, 16, 0, 0, 8, + 18, 0, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 21, 0, 0, 0, 0, 15, 0, 15, 0, 0, 0, 0, 16, + 0, 11, 0, 14, 0, 0, 16, 48, 0, 22, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, + 0, 12, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 15, 0, + 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 30, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 24, 0, 0, 0, 0, 11, 0, 0, 0, 18, 13, 22, 0, 0, + 0, 0, 9, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 18, + 0, 0, 11, 0, 31, 0, 0, 0, 0, 0, 0, 21, 19, 0, + 23, 0, 0, 30, 0, 0, 19, 0, 12, 0, 25, 0, 0, 0, + 10, 42, 0, 0, 9, 1, 0, 0, 0, 0, 0, 12, 0, 0, + 0, 22, 0, 13, 0, 0, 0, 27, 0, 0, 0, 0, 0, 3, + 0, 0, 0, 14, 16, 15, 0, 3, 0, 0, 0, 0, 31, 0, + 15, 16, 17, 0, 0, 0, 0, 0, 12, 0, 31, 0, 0, 0, + 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 17, 0, + 0, 0, 0, 14, 0, 0, 35, 26, 0, 0, 30, 0, 0, 30, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 15, 14, 0, 0, + 0, 0, 0, 0, 0, 0, 34, 24, 5, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 26, 0, 0, 18, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 16, 0, 0, 23, 0, 0, 0, 16, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 18, 16, + 0, 0, 6, 0, 0, 0, 0, 0, 9, 21, 0, 13, 0, 0, + 0, 0, 16, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 19, 2, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 2, 0, 23, 0, 9, 26, 0, 0, + 0, 0, 0, 0, 0, 0, 7, 26, 0, 0, 0, 12, 0, 0, + 19, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, + 0, 0, 0, 19, 9, 0, 0, 0, 12, 0, 0, 0, 10, 0, + 19, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, + 23, 11, 17, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 13, + 0, 18, 0, 2, 0, 0, 0, 32, 0, 0, 0, 0, 26, 0, + 0, 20, 0, 0, 8, 0, 5, 16, 0, 4, 0, 25, 0, 11, + 13, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 13, 13, 0, + 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, + 0, 20, 0, 0, 0, 0, 10, 0, 0, 0, 27, 0, 0, 0, + 0, 1, 0, 0, 0, 0, 32, 0, 0, 0, 22, 8, 12, 10, + 0, 0, 0, 0, 15, 0, 0, 13, 0, 0, 0, 0, 28, 0, + 0, 0, 13, 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 25, 0, 0, 0, 0, 0, 0, 18, 0, 14, 0, 0, 11, 0, + 0, 10, 0, 9, 13, 0, 0, 25, 0, 9, 0, 0, 0, 15, + 10, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 10, 0, + 0, 20, 0, 0, 18, 27, 25, 0, 0, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 14, + 0, 0, 0, 29, 0, 0, 13, 9, 14, 0, 0, 0, 0, 13, + 0, 0, 0, 0, 0, 0, 12, 18, 0, 0, 11, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 30, 12, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 12, 0, 0, 0, + 27, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 11, 20, 0, 14, 6, 0, 0, 0, 0, + 9, 0, 0, 0, 0, 0, 16, 0, 0, 0, 8, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 15, 0, 0, - 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 21, 0, - 0, 0, 24, 13, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, - 13, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, - 0, 0, 14, 0, 0, 12, 0, 0, 0, 18, 0, 12, 0, 0, - 13, 0, 0, 39, 40, 0, 0, 11, 0, 11, 0, 0, 0, 0, - 0, 0, 5, 0, 0, 2, 0, 0, 0, 0, 21, 18, 0, 0, - 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 17, - 0, 19, 10, 0, 0, 14, 11, 0, 0, 0, 0, 0, 0, 13, - 0, 0, 0, 0, 0, 16, 0, 0, 16, 0, 0, 0, 7, 0, - 0, 0, 15, 0, 16, 27, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 19, 15, 0, 0, 0, 0, 0, 0, - 0, 19, 0, 0, 0, 0, 0, 0, 17, 5, 0, 0, 4, 30, - 16, 0, 0, 0, 21, 0, 0, 0, 12, 0, 0, 0, 0, 0, - 0, 37, 0, 0, 11, 0, 0, 0, 0, 0, 0, 11, 9, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, - 0, 0, 0, 15, 0, 0, 18, 0, 0, 10, 0, 0, 10, 0, - 0, 0, 14, 0, 0, 0, 0, 0, 0, 14, 0, 10, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 22, 0, - 11, 0, 0, 0, 0, 0, 24, 0, 0, 0, 48, 0, 13, 0, - 20, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 14, 0, 0, 11, 0, 0, 0, 0, 13, - 12, 0, 15, 0, 0, 0, 0, 0, 0, 8, 20, 23, 0, 0, - 0, 0, 0, 0, 0, 13, 0, 0, 19, 0, 0, 0, 17, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, - 0, 14, 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 0, - 0, 0, 13, 0, 10, 0, 0, 0, 0, 0, 0, 0, 7, 24, - 0, 13, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 10, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, - 0, 13, 0, 0, 21, 0, 9, 0, 0, 0, 0, 0, 23, 0, - 0, 8, 18, 30, 11, 0, 0, 11, 0, 17, 0, 0, 0, 0, - 18, 0, 0, 0, 0, 0, 13, 0, 0, 0, 22, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 23, - 0, 0, 0, 13, 0, 0, 13, 0, 0, 13, 0, 13, 0, 3, - 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 15, 0, 22, 0, 0, 16, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 15, 0, 0, 9, 0, 0, 25, 0, 0, 0, 2, 0, 0, - 0, 15, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, - 0, 19, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 13, 0, 0, 16, 0, 0, 0, 0, - 19, 14, 0, 11, 0, 0, 0, 17, 0, 16, 0, 0, 0, 0, - 0, 10, 16, 31, 0, 0, 31, 0, 0, 9, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, - 0, 11, 0, 0, 0, 0, 26, 0, 48, 0, 0, 23, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, - 0, 0, 0, 0, 0, 24, 34, 0, 13, 9, 0, 21, 0, 0, - 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, - 0, 2, 16, 9, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 2, 21, 0, 0, 0, 26, 26, 0, 0, - 0, 0, 0, 2, 0, 12, 0, 0, 0, 2, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 16, - 0, 10, 0, 0, 13, 0, 20, 0, 0, 0, 0, 0, 0, 0, - 15, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, - 14, 0, 3, 10, 0, 0, 35, 0, 22, 25, 32, 0, 0, 3, - 0, 0, 0, 27, 0, 14, 0, 0, 30, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 13, 0, 0, 6, 23, 0, 0, 0, - 0, 0, 0, 9, 0, 0, 24, 0, 0, 30, 15, 0, 0, 0, - 19, 9, 31, 0, 0, 0, 0, 10, 0, 0, 2, 0, 12, 0, - 0, 0, 0, 0, 0, 0, 6, 0, 0, 13, 0, 0, 0, 0, - 23, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 9, 0, 0, 0, 15, 2, 12, 0, 0, 25, 0, 0, 0, 15, - 0, 30, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 24, - 0, 0, 17, 0, 0, 0, 3, 11, 0, 0, 0, 15, 0, 0, - 0, 0, 0, 0, 0, 24, 0, 8, 0, 0, 0, 0, 0, 0, - 0, 0, 9, 0, 21, 0, 0, 0, 18, 0, 0, 0, 0, 10, - 0, 10, 0, 0, 0, 19, 0, 19, 0, 13, 0, 13, 0, 15, - 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, - 0, 0, 23, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 13, 0, 0, 0, 0, 31, 0, 0, 0, 0, - 0, 0, 0, 0, 32, 0, 10, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, - 0, 0, 0, 0, 0, 0, 0, 20, 11, 28, 18, 26, 0, 0, - 0, 30, 0, 0, 0, 0, 23, 0, 0, 0, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 24, 6, 0, 14, 0, 21, 0, 0, 14, + 0, 0, 0, 0, 0, 0, 0, 5, 0, 18, 0, 0, 0, 0, + 14, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 10, 0, 0, + 0, 0, 27, 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, + 13, 14, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 10, 0, 10, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 9, 0, 0, 30, + 11, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 13, 0, 0, + 14, 0, 10, 0, 0, 0, 21, 19, 0, 13, 0, 0, 0, 23, + 0, 0, 0, 35, 0, 0, 0, 12, 0, 0, 0, 11, 0, 0, + 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 26, 0, + 0, 25, 0, 18, 0, 0, 15, 0, 0, 12, 0, 0, 0, 0, + 22, 0, 33, 0, 0, 0, 0, 0, 22, 0, 16, 0, 11, 0, + 0, 12, 17, 0, 0, 0, 0, 18, 0, 11, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 27, 3, 0, 0, 0, 0, 0, 20, 33, + 0, 0, 22, 17, 0, 0, 0, 0, 0, 10, 0, 0, 32, 0, + 0, 15, 0, 0, 0, 0, 0, 13, 42, 0, 20, 0, 0, 0, + 11, 0, 28, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, + 0, 0, 0, 13, 0, 0, 0, 0, 0, 19, 0, 0, 0, 28, + 11, 22, 0, 15, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, + 17, 35, 0, 0, 0, 0, 0, 0, 0, 20, 15, 0, 0, 0, + 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, + 0, 0, 0, 19, 11, 21, 0, 0, 0, 0, 0, 0, 0, 0, + 48, 0, 0, 0, 0, 9, 13, 0, 0, 16, 15, 0, 0, 0, + 19, 0, 0, 3, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, + 0, 30, 6, 23, 0, 0, 18, 30, 0, 18, 0, 12, 27, 0, + 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, + 12, 0, 0, 0, 0, 0, 11, 14, 0, 0, 0, 0, 0, 0, + 0, 0, 20, 0, 0, 18, 16, 13, 0, 0, 0, 0, 23, 0, + 0, 22, 0, 13, 0, 18, 0, 0, 0, 0, 24, 0, 13, 0, + 25, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, + 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 22, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 31, 24, 12, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 8, 0, + 0, 0, 0, 18, 0, 17, 0, 0, 0, 0, 0, 0, 14, 0, + 17, 3, 0, 0, 0, 0, 0, 11, 0, 0, 0, 2, 0, 0, + 0, 0, 0, 18, 0, 0, 9, 0, 9, 8, 20, 0, 0, 21, + 15, 11, 0, 0, 11, 0, 0, 24, 0, 14, 9, 0, 13, 0, + 9, 9, 0, 0, 39, 0, 0, 15, 0, 36, 13, 0, 0, 0, + 0, 0, 0, 9, 0, 0, 0, 23, 15, 0, 0, 0, 3, 0, + 23, 0, 0, 11, 29, 0, 0, 0, 2, 29, 0, 0, 0, 0, + 0, 0, 15, 45, 10, 0, 17, 0, 0, 0, 0, 7, 29, 0, + 0, 0, 0, 0, 14, 0, 29, 10, 0, 17, 0, 0, 0, 0, + 10, 0, 20, 9, 17, 0, 22, 0, 0, 0, 0, 0, 0, 0, + 0, 20, 23, 10, 33, 0, 0, 0, 15, 9, 17, 16, 17, 19, + 0, 20, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, + 16, 19, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, 28, + 0, 10, 0, 0, 0, 11, 0, 0, 19, 0, 0, 0, 15, 0, + 0, 0, 0, 9, 9, 0, 0, 0, 24, 0, 10, 31, 0, 0, + 0, 0, 0, 16, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, + 0, 10, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 3, + 0, 0, 4, 9, 0, 0, 0, 0, 0, 0, 21, 15, 15, 0, + 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, + 18, 28, 0, 0, 24, 0, 0, 0, 0, 0, 0, 15, 0, 0, + 19, 0, 0, 0, 0, 14, 0, 0, 0, 0, 16, 0, 0, 0, + 30, 0, 15, 0, 0, 22, 0, 0, 19, 23, 18, 24, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, 11, 0, 12, 0, + 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, + 0, 0, 0, 0, 0, 30, 14, 0, 20, 22, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 12, 0, + 0, 0, 0, 0, 15, 0, 15, 4, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, + 28, 0, 10, 0, 32, 0, 0, 15, 0, 14, 0, 20, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 15, 0, 33, 0, 31, 0, 0, + 0, 2, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 3, + 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, + 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 15, 27, 0, 0, 0, 0, 0, 0, 25, 0, + 0, 28, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 15, 0, 0, 25, 0, 27, 0, 23, 0, + 0, 15, 0, 30, 2, 0, 0, 14, 0, 0, 0, 0, 0, 0, + 20, 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 5, 0, 0, 11, 0, 0, 0, 14, 0, 0, 0, 21, 0, 0, + 11, 23, 0, 0, 14, 0, 17, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 10, 3, 0, 0, 18, 0, 0, 0, 0, 21, 0, 0, + 3, 0, 0, 1, 0, 0, 0, 0, 28, 26, 0, 0, 0, 22, + 0, 0, 0, 0, 0, 15, 21, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 23, 17, 0, 0, 0, 0, + 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, + 22, 0, 0, 0, 0, 0, 0, 28, 16, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 2, 4, 0, 21, + 0, 0, 0, 0, 18, 10, 0, 30, 0, 0, 0, 0, 35, 0, + 18, 0, 10, 24, 0, 42, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 31, 0, 0, 0, 0, 0, 11, 0, 0, 0, 17, + 0, 0, 15, 0, 0, 0, 22, 0, 0, 8, 14, 31, 16, 0, + 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, + 31, 0, 0, 0, 0, 0, 0, 0, 0, 14, 11, 0, 0, 0, + 23, 32, 0, 12, 0, 0, 0, 0, 16, 0, 12, 0, 0, 0, + 0, 0, 14, 15, 0, 18, 0, 0, 18, 0, 0, 0, 9, 0, + 0, 0, 17, 12, 0, 0, 0, 18, 0, 0, 0, 13, 23, 18, + 30, 0, 33, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 22, + 0, 0, 0, 0, 0, 0, 0, 19, 31, 26, 0, 21, 0, 0, + 0, 0, 0, 0, 31, 0, 0, 0, 0, 29, 16, 0, 0, 0, + 0, 0, 0, 15, 0, 0, 15, 8, 15, 12, 0, 0, 0, 0, + 0, 0, 0, 21, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, + 22, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 13, + 0, 6, 13, 33, 25, 0, 0, 0, 10, 0, 35, 0, 0, 0, + 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, + 0, 0, 0, 22, 0, 0, 0, 0, 17, 0, 0, 0, 27, 0, + 0, 16, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 18, + 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 16, + 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 20, 0, 0, 0, + 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, + 0, 0, 17, 12, 0, 0, 0, 15, 29, 0, 0, 0, 0, 16, + 0, 0, 0, 13, 0, 4, 0, 0, 0, 15, 0, 0, 0, 0, + 0, 33, 33, 14, 0, 38, 15, 0, 30, 0, 0, 0, 0, 0, + 0, 0, 42, 0, 20, 13, 0, 0, 15, 0, 0, 0, 6, 15, + 12, 0, 0, 0, 0, 0, 0, 11, 37, 0, 0, 0, 0, 9, + 11, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 13, + 13, 29, 0, 0, 0, 0, 7, 19, 15, 0, 0, 0, 0, 34, + 0, 0, 0, 0, 0, 0, 10, 34, 0, 0, 26, 0, 0, 0, + 0, 0, 13, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 11, 0, 0, 0, 15, 16, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 10, 37, 20, + 0, 0, 0, 0, 14, 0, 0, 32, 33, 2, 0, 0, 3, 8, + 37, 32, 0, 0, 9, 0, 0, 0, 0, 0, 2, 0, 0, 0, + 0, 15, 0, 10, 31, 23, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 15, 0, 0, 0, 0, 7, 0, 0, 24, 37, 17, 24, 0, + 14, 30, 14, 0, 0, 24, 0, 0, 3, 0, 17, 0, 25, 0, + 0, 0, 13, 0, 0, 3, 0, 0, 0, 11, 24, 26, 0, 0, + 0, 14, 0, 0, 22, 0, 0, 0, 0, 15, 0, 0, 0, 0, + 0, 0, 0, 0, 10, 0, 14, 18, 0, 18, 0, 0, 29, 0, + 20, 0, 0, 23, 16, 0, 0, 0, 19, 0, 0, 0, 11, 0, + 13, 0, 0, 0, 12, 25, 0, 0, 11, 0, 0, 0, 0, 15, + 0, 0, 0, 0, 0, 0, 10, 0, 13, 0, 0, 0, 0, 0, + 15, 0, 40, 0, 11, 26, 15, 16, 0, 0, 0, 0, 0, 0, + 24, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 28, + 10, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 14, 37, 35, + 0, 0, 25, 9, 0, 0, 0, 0, 0, 0, 0, 12, 12, 0, + 0, 0, 0, 0, 22, 0, 0, 0, 0, 23, 20, 9, 0, 0, + 0, 12, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 29, 0, 35, 0, 0, 0, 22, 13, 0, 0, 0, 0, 0, 0, + 16, 0, 9, 0, 0, 17, 0, 20, 13, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 0, + 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 24, 0, 0, 27, 0, 14, 0, 0, 17, 0, 14, 0, 0, 0, + 0, 0, 0, 26, 20, 0, 15, 0, 0, 0, 0, 15, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 15, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 19, 27, 0, 16, 0, 23, 0, 0, + 14, 20, 0, 0, 20, 12, 25, 0, 0, 0, 18, 0, 0, 0, + 0, 0, 0, 19, 0, 23, 12, 0, 41, 0, 0, 0, 0, 0, + 10, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 42, 21, + 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 13, 0, 0, 0, + 0, 0, 0, 14, 0, 20, 13, 13, 0, 24, 0, 0, 0, 20, + 11, 0, 0, 0, 0, 16, 18, 13, 0, 0, 0, 0, 0, 17, + 0, 0, 0, 0, 22, 35, 0, 0, 11, 0, 19, 0, 0, 0, + 0, 6, 29, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 22, + 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 17, 0, 29, 50, 0, 0, 0, 0, 0, 0, 0, 13, + 0, 0, 21, 0, 0, 0, 0, 12, 0, 12, 0, 0, 0, 0, + 0, 8, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, + 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 31, 30, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 19, 0, 16, + 0, 15, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, + 0, 0, 0, 2, 0, 0, 0, 0, 0, 21, 0, 11, 0, 0, + 0, 16, 47, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 15, + 0, 0, 8, 0, 17, 0, 0, 0, 6, 0, 0, 0, 50, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 17, 0, 0, + 0, 17, 0, 0, 0, 15, 0, 0, 20, 0, 0, 21, 0, 0, + 13, 0, 0, 0, 0, 30, 0, 0, 0, 0, 0, 35, 24, 0, + 0, 0, 25, 0, 15, 15, 0, 0, 0, 21, 0, 0, 0, 0, + 0, 0, 0, 16, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, + 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 13, 11, 0, 0, 0, 26, 14, 0, 14, 14, 0, 0, 11, + 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 24, + 0, 0, 0, 0, 0, 0, 16, 0, 0, 3, 0, 14, 0, 0, + 0, 0, 0, 0, 0, 0, 11, 0, 0, 21, 0, 0, 0, 8, + 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 35, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 11, 15, 0, 0, + 16, 2, 0, 0, 0, 18, 0, 12, 0, 0, 0, 0, 0, 0, + 0, 14, 0, 0, 24, 22, 0, 0, 0, 23, 0, 0, 0, 0, + 0, 0, 0, 32, 0, 0, 0, 0, 13, 0, 3, 0, 0, 0, + 0, 2, 0, 0, 0, 0, 28, 6, 0, 0, 0, 0, 8, 0, + 0, 0, 0, 0, 0, 21, 0, 0, 15, 0, 0, 0, 27, 17, + 0, 0, 23, 0, 0, 0, 8, 0, 22, 43, 3, 11, 0, 0, + 0, 15, 0, 0, 0, 0, 18, 6, 0, 29, 0, 0, 0, 0, + 0, 0, 0, 28, 0, 0, 15, 0, 0, 38, 0, 11, 0, 0, + 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 15, + 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, + 11, 0, 38, 34, 0, 13, 0, 0, 0, 0, 3, 0, 4, 0, + 0, 25, 0, 0, 0, 24, 0, 0, 0, 31, 23, 3, 0, 4, + 6, 0, 0, 39, 0, 27, 31, 0, 0, 0, 0, 29, 0, 0, + 0, 0, 0, 29, 0, 22, 0, 0, 15, 0, 0, 13, 0, 0, + 19, 33, 0, 0, 0, 0, 0, 0, 0, 11, 0, 15, 0, 0, + 0, 0, 0, 14, 0, 0, 16, 0, 0, 14, 0, 0, 0, 16, + 0, 0, 0, 15, 0, 0, 15, 28, 0, 0, 14, 0, 10, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, + 0, 0, 0, 0, 26, 12, 0, 0, 0, 0, 0, 31, 34, 0, + 0, 20, 0, 22, 13, 21, 0, 0, 22, 0, 0, 0, 0, 0, + 0, 11, 0, 12, 25, 0, 0, 15, 0, 0, 0, 27, 15, 0, + 23, 11, 43, 0, 0, 0, 0, 32, 0, 0, 32, 0, 0, 0, + 0, 35, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 6, 0, 14, 0, 0, 30, 0, + 0, 0, 0, 0, 11, 0, 0, 0, 0, 22, 22, 0, 0, 0, + 0, 0, 0, 14, 9, 0, 28, 9, 0, 2, 0, 0, 7, 0, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 6, 28, 0, + 0, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, 8, + 0, 26, 23, 14, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, + 19, 0, 0, 0, 0, 15, 0, 0, 0, 22, 0, 0, 0, 18, + 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 8, 0, 26, + 3, 20, 4, 0, 0, 0, 0, 35, 0, 12, 2, 0, 0, 0, + 30, 3, 11, 4, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 12, 0, 0, 0, 0, 0, 0, 16, 12, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 19, 0, 0, 0, + 14, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, + 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 7, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 11, 13, 11, 0, 0, 0, 0, 0, + 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 43, 0, 0, + 0, 17, 0, 14, 11, 0, 0, 24, 0, 0, 0, 0, 0, 0, + 0, 8, 0, 0, 0, 0, 12, 0, 12, 14, 0, 0, 0, 0, + 0, 14, 0, 0, 0, 0, 0, 26, 0, 22, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 46, 15, 0, 13, 12, 0, 0, + 15, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, + 0, 20, 0, 0, 16, 0, 0, 0, 0, 0, 30, 0, 15, 3, + 0, 0, 0, 0, 15, 15, 0, 24, 9, 14, 0, 9, 0, 0, + 0, 0, 25, 2, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, + 0, 38, 0, 19, 0, 0, 12, 0, 0, 34, 0, 0, 15, 0, + 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, + 21, 0, 0, 0, 0, 0, 0, 35, 0, 73, 74, 12, 23, 0, + 0, 12, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 16, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, + 0, 0, 15, 0, 0, 0, 0, 30, 0, 0, 27, 0, 0, 34, + 0, 0, 0, 0, 0, 0, 0, 31, 0, 23, 0, 0, 0, 0, + 0, 0, 32, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, + 0, 9, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 13, 0, + 23, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, + 4, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 16, 14, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 21, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 19, 0, 0, 28, 0, 24, 0, 0, 0, 0, 0, + 28, 0, 19, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 34, 0, 0, 11, 16, 0, 0, 17, 0, 0, 23, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, + 0, 0, 19, 0, 0, 0, 0, 2, 19, 0, 0, 0, 30, 0, + 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 27, + 0, 0, 15, 0, 0, 15, 16, 0, 0, 0, 31, 0, 0, 9, + 0, 0, 0, 0, 0, 0, 27, 0, 27, 0, 0, 0, 0, 0, + 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 16, 0, 0, 13, + 15, 15, 0, 12, 0, 0, 15, 15, 0, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 0, 0, 0, 20, 0, 12, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 13, 15, 18, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 16, 15, 0, 0, 0, 24, 0, 0, 13, + 0, 0, 0, 0, 0, 0, 0, 20, 0, 15, 0, 13, 0, 0, + 0, 0, 0, 0, 0, 0, 12, 72, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 32, 35, 31, 16, 24, 30, 0, 0, 0, + 23, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 2, + 10, 0, 0, 0, 0, 19, 18, 0, 27, 0, 0, 0, 11, 0, + 37, 0, 0, 28, 0, 31, 0, 0, 17, 0, 13, 0, 0, 0, + 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, + 0, 0, 0, 27, 0, 0, 11, 0, 0, 27, 0, 0, 13, 0, + 11, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 33, + 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 11, 0, 25, + 0, 12, 24, 0, 0, 20, 0, 18, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 15, 18, 0, 19, 0, 0, 12, 0, 0, 0, 0, + 13, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 28, + 0, 22, 0, 0, 0, 0, 0, 0, 37, 0, 23, 0, 0, 0, + 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 16, 0, 24, 0, + 11, 0, 0, 0, 0, 0, 15, 0, 0, 0, 12, 0, 0, 0, + 0, 0, 0, 0, 2, 0, 0, 0, 17, 0, 0, 0, 0, 0, + 0, 0, 0, 21, 0, 0, 0, 0, 0, 19, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 16, 0, 0, 18, 0, 29, 0, 20, 13, 15, + 0, 0, 30, 0, 0, 25, 32, 0, 0, 0, 0, 0, 0, 18, + 0, 31, 14, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, + 23, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 19, 0, + 13, 0, 0, 0, 23, 0, 26, 0, 0, 21, 18, 0, 0, 0, + 0, 22, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 26, 0, 0, 0, 0, 34, 0, 0, 0, 13, 0, 0, + 0, 18, 0, 0, 0, 0, 39, 0, 0, 0, 31, 0, 0, 2, + 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 17, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 13, 0, 0, + 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 20, 26, 18, 15, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 44, + 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, + 8, 0, 0, 0, 30, 0, 0, 0, 25, 0, 0, 0, 0, 14, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 16, 0, 0, 0, + 0, 17, 0, 0, 0, 0, 0, 18, 0, 0, 0, 31, 0, 26, + 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 21, 0, 3, 0, 13, 0, 0, 0, 26, 0, 0, 0, 0, 19, + 12, 13, 0, 0, 9, 0, 0, 24, 0, 0, 0, 19, 0, 0, + 25, 0, 0, 0, 0, 0, 10, 17, 0, 0, 15, 0, 0, 0, + 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 15, + 0, 0, 0, 0, 30, 14, 0, 0, 0, 0, 0, 18, 14, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, 34, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 6, + 0, 0, 0, 0, 13, 0, 0, 0, 0, 14, 0, 0, 14, 0, + 0, 0, 14, 0, 2, 0, 0, 0, 0, 39, 0, 40, 0, 0, + 0, 0, 23, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 23, + 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 13, 0, 0, 0, 0, 0, 0, 19, 0, 18, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 18, 15, 29, 0, 0, 0, 0, + 0, 0, 11, 18, 0, 0, 0, 0, 0, 0, 21, 0, 35, 18, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 8, 0, 0, 0, 19, 0, 0, 17, 0, 0, 24, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 26, 0, 0, 0, 0, 0, 18, 0, 0, 0, 18, 0, + 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 20, 0, 18, 0, 28, 0, 0, 29, 0, 0, + 24, 0, 0, 0, 25, 0, 0, 23, 0, 0, 0, 0, 19, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 14, 0, 0, 0, + 0, 0, 27, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 0, 0, 43, + 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, + 0, 21, 13, 0, 0, 0, 0, 18, 0, 0, 18, 0, 0, 19, + 32, 0, 4, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 12, + 0, 0, 41, 18, 0, 0, 0, 0, 0, 23, 0, 0, 0, 36, + 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 7, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, + 0, 0, 0, 0, 0, 15, 0, 0, 24, 0, 0, 0, 0, 0, + 4, 14, 0, 0, 14, 0, 0, 29, 0, 0, 0, 18, 0, 0, + 0, 24, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 18, 15, 28, 0, 27, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 14, 0, 28, 0, 14, 0, 0, 0, 0, 0, + 0, 0, 0, 23, 0, 15, 0, 0, 18, 0, 0, 0, 6, 17, + 0, 0, 0, 0, 0, 27, 0, 0, 0, 7, 28, 0, 0, 0, + 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 29, 27, 0, + 0, 19, 14, 0, 8, 0, 30, 0, 38, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 43, 0, 15, 0, 14, 21, 0, 26, + 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, + 15, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, + 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 10, 0, 0, 2, 0, 0, 18, 0, 0, 36, 0, 24, 0, 0, + 0, 0, 33, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, + 0, 35, 0, 0, 0, 0, 0, 0, 13, 14, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 11, + 27, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 27, + 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, + 0, 0, 0, 0, 0, 14, 0, 0, 11, 0, 0, 0, 0, 7, + 0, 0, 0, 0, 0, 14, 0, 0, 0, 13, 14, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 36, 0, 0, + 21, 0, 0, 36, 0, 0, 0, 0, 14, 0, 0, 15, 0, 0, + 0, 0, 13, 0, 0, 0, 28, 21, 0, 0, 15, 0, 0, 21, + 0, 0, 0, 24, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 21, 10, 11, 0, 0, 0, 0, 0, 30, 10, + 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 25, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 14, 0, + 0, 0, 0, 0, 0, 25, 0, 0, 14, 0, 22, 0, 0, 0, + 0, 0, 22, 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, + 0, 14, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 32, + 29, 11, 15, 0, 13, 9, 0, 8, 0, 0, 0, 0, 0, 0, + 0, 0, 34, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 10, 26, 0, 14, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 29, 11, 25, 0, 0, 0, 0, 0, 0, + 0, 0, 29, 0, 0, 0, 10, 0, 0, 0, 0, 13, 0, 0, + 0, 0, 0, 18, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, + 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, + 0, 0, 0, 29, 0, 0, 0, 0, 0, 22, 0, 14, 0, 6, + 0, 0, 0, 24, 30, 0, 0, 0, 0, 0, 29, 0, 0, 0, + 0, 0, 0, 14, 18, 0, 26, 0, 0, 0, 0, 31, 0, 9, + 0, 32, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, + 0, 29, 0, 22, 0, 0, 0, 0, 0, 8, 0, 0, 0, 9, + 0, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 14, 0, + 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 29, 0, 43, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 12, + 0, 0, 0, 0, 0, 0, 24, 0, 29, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 11, + 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 29, 0, 0, 3, 13, 0, 0, 0, 0, 0, 0, 0, 22, 29, + 0, 0, 0, 2, 34, 0, 0, 30, 0, 0, 0, 0, 14, 0, + 0, 0, 0, 0, 10, 22, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 2, 0, 0, 0, 16, 0, 17, 0, 0, 13, 0, - 0, 0, 0, 0, 0, 0, 9, 0, 29, 9, 0, 19, 0, 0, - 0, 11, 0, 13, 0, 0, 0, 0, 0, 22, 0, 3, 0, 0, - 0, 0, 0, 12, 13, 0, 0, 0, 13, 0, 0, 0, 0, 0, + 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 0, + 0, 0, 0, 0, 16, 0, 14, 0, 37, 22, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 9, 21, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, + 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, + 0, 0, 0, 9, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, + 16, 0, 30, 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 23, 35, 10, 0, + 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 20, 0, 0, 0, 0, 16, 0, 3, 0, 0, 0, 22, 0, 0, + 29, 0, 0, 0, 0, 16, 0, 0, 0, 0, 20, 0, 0, 0, + 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, + 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, + 0, 8, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 7, 0, 0, 0, 0, 15, 0, 0, 24, 35, + 27, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 28, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 21, 11, 0, 25, 4, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 37, 0, + 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 16, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, + 0, 0, 10, 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, + 0, 0, 0, 0, 0, 22, 0, 0, 30, 0, 30, 0, 0, 0, + 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, + 0, 0, 0, 0, 33, 0, 22, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, + 0, 0, 23, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 23, 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 11, 0, 0, 0, 13, 0, 15, 0, 0, 0, 0, - 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 22, 0, 0, 0, - 0, 22, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 11, 0, 0, 20, 0, 0, 0, 0, 0, 0, 11, 0, 6, - 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, - 23, 0, 0, 0, 0, 14, 0, 0, 27, 0, 0, 0, 10, 0, - 0, 0, 0, 0, 0, 0, 33, 9, 0, 13, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 11, 0, 0, - 0, 11, 0, 15, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, - 12, 0, 0, 2, 0, 0, 0, 0, 0, 14, 0, 24, 0, 0, - 47, 17, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 12, 0, - 0, 0, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 25, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, - 20, 0, 0, 16, 0, 19, 0, 0, 0, 18, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 23, 28, 0, 0, 0, 11, 0, 0, - 19, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, - 0, 19, 0, 0, 27, 0, 0, 0, 0, 0, 19, 0, 17, 15, - 31, 17, 30, 21, 0, 17, 0, 0, 0, 12, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 32, 0, 0, 6, 0, 19, 0, 35, 0, - 0, 0, 0, 11, 0, 0, 0, 0, 15, 25, 0, 15, 11, 0, - 0, 0, 0, 0, 0, 15, 0, 0, 9, 11, 9, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, - 0, 24, 27, 0, 0, 0, 0, 0, 0, 0, 12, 8, 0, 0, - 0, 11, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 8, 0, - 0, 0, 0, 0, 0, 22, 0, 22, 0, 20, 0, 0, 14, 0, - 0, 0, 0, 0, 12, 0, 0, 0, 26, 0, 21, 0, 9, 0, - 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 25, 0, 0, 0, - 0, 26, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, - 0, 0, 30, 2, 0, 20, 0, 0, 0, 11, 0, 0, 0, 22, - 42, 0, 0, 0, 0, 29, 0, 35, 0, 0, 0, 0, 17, 0, - 0, 15, 0, 0, 14, 15, 0, 0, 0, 0, 0, 13, 0, 18, - 0, 0, 16, 0, 0, 20, 12, 16, 0, 0, 0, 0, 0, 0, - 0, 11, 0, 0, 0, 0, 23, 0, 20, 15, 11, 0, 18, 0, - 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, - 0, 0, 0, 0, 8, 0, 17, 0, 0, 36, 13, 11, 0, 0, - 0, 21, 0, 39, 0, 0, 8, 13, 16, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 24, 23, 16, 0, 0, 0, 0, 31, 0, - 0, 0, 0, 0, 0, 0, 25, 0, 13, 0, 0, 0, 0, 0, - 0, 0, 0, 13, 0, 23, 0, 0, 0, 19, 0, 18, 0, 0, - 0, 0, 0, 0, 10, 16, 0, 0, 0, 15, 0, 0, 0, 0, - 10, 0, 0, 2, 0, 0, 0, 0, 0, 17, 15, 0, 0, 0, - 0, 0, 6, 18, 22, 0, 0, 16, 0, 0, 0, 0, 30, 0, - 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 21, 0, 19, 16, 25, 0, 0, 32, - 0, 10, 0, 29, 0, 0, 0, 0, 0, 0, 11, 0, 8, 10, - 0, 22, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 9, 0, 0, 28, 0, 0, 18, 0, 18, 0, 0, - 0, 0, 0, 0, 23, 0, 31, 0, 0, 0, 48, 0, 0, 12, - 17, 28, 13, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 14, 9, 0, - 25, 24, 0, 16, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, - 10, 3, 38, 0, 0, 13, 0, 0, 0, 0, 3, 0, 0, 0, - 19, 0, 20, 19, 0, 20, 0, 0, 22, 24, 11, 9, 0, 0, - 0, 3, 0, 0, 0, 0, 0, 30, 0, 0, 11, 24, 26, 14, - 18, 0, 12, 23, 0, 12, 23, 0, 0, 0, 27, 9, 15, 0, - 0, 0, 9, 0, 0, 16, 0, 27, 0, 15, 0, 0, 0, 0, - 10, 10, 0, 0, 0, 9, 0, 0, 0, 21, 10, 0, 12, 0, - 29, 33, 10, 3, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 20, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 10, - 15, 0, 0, 0, 9, 0, 0, 0, 0, 0, 9, 0, 0, 27, - 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 0, 22, 38, 0, - 25, 0, 18, 18, 15, 15, 0, 0, 15, 0, 0, 0, 19, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 20, 0, 0, 15, 0, 15, 31, 0, 0, 0, 0, 0, 0, - 0, 0, 16, 0, 0, 0, 0, 0, 0, 15, 12, 0, 0, 0, - 0, 0, 0, 12, 0, 0, 31, 0, 0, 15, 0, 0, 22, 0, - 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 28, 0, 0, - 28, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, - 29, 0, 0, 0, 0, 0, 18, 0, 0, 0, 16, 0, 29, 15, - 0, 0, 0, 0, 0, 16, 0, 12, 0, 17, 0, 0, 0, 13, - 0, 0, 0, 0, 0, 0, 0, 0, 24, 15, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 15, 0, - 0, 0, 42, 0, 0, 0, 7, 3, 0, 0, 0, 0, 0, 26, - 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 10, 0, - 0, 0, 0, 0, 0, 0, 34, 0, 0, 26, 0, 22, 0, 0, - 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 28, 0, 0, 0, 0, 14, 0, 0, 0, 0, 10, 0, 0, 0, - 0, 0, 0, 0, 15, 15, 3, 0, 0, 0, 15, 0, 19, 32, - 0, 0, 0, 20, 0, 0, 0, 3, 16, 22, 0, 2, 0, 13, - 21, 0, 0, 0, 0, 0, 17, 0, 0, 0, 30, 0, 0, 0, - 20, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, - 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, - 20, 0, 0, 0, 0, 0, 27, 0, 0, 0, 3, 0, 0, 17, - 21, 0, 0, 0, 0, 2, 0, 3, 24, 12, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 21, 20, 0, 0, 0, 0, 0, 0, 0, - 0, 15, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 17, 14, 16, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 33, 0, 18, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, - 0, 0, 0, 22, 16, 0, 0, 0, 14, 0, 0, 14, 0, 0, - 0, 9, 10, 0, 13, 14, 0, 0, 0, 23, 0, 0, 24, 0, - 0, 10, 0, 1, 0, 13, 16, 0, 0, 0, 14, 0, 0, 0, - 31, 0, 10, 23, 18, 0, 24, 0, 0, 0, 0, 24, 0, 0, - 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 26, 0, 14, 0, - 0, 0, 0, 0, 0, 15, 0, 13, 14, 0, 0, 0, 0, 12, - 0, 15, 0, 0, 0, 15, 0, 0, 34, 37, 0, 22, 15, 0, - 10, 0, 0, 0, 0, 20, 0, 13, 0, 0, 0, 10, 0, 21, - 0, 31, 0, 0, 0, 0, 0, 0, 0, 23, 0, 18, 0, 24, - 0, 0, 0, 40, 23, 0, 0, 0, 0, 24, 0, 0, 0, 0, - 0, 0, 0, 11, 0, 0, 20, 12, 0, 0, 0, 0, 0, 13, - 25, 14, 0, 0, 0, 12, 35, 15, 0, 18, 0, 0, 0, 0, - 0, 0, 13, 30, 0, 0, 12, 0, 0, 0, 0, 0, 0, 7, - 29, 18, 0, 13, 0, 0, 0, 0, 18, 14, 0, 0, 0, 0, - 0, 0, 0, 0, 14, 14, 0, 0, 0, 0, 0, 0, 0, 5, - 0, 0, 26, 0, 0, 3, 0, 0, 9, 0, 21, 0, 0, 0, - 0, 0, 0, 0, 25, 0, 0, 0, 0, 14, 26, 10, 0, 0, - 18, 34, 0, 0, 13, 11, 34, 0, 0, 17, 0, 25, 13, 0, - 0, 0, 13, 0, 0, 15, 0, 0, 18, 0, 0, 0, 0, 0, - 0, 11, 31, 0, 0, 0, 0, 41, 0, 0, 0, 15, 0, 0, - 14, 0, 0, 0, 0, 0, 0, 0, 13, 0, 4, 0, 0, 0, - 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, - 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 16, 0, 0, 12, - 0, 0, 0, 0, 12, 0, 0, 2, 26, 13, 0, 0, 8, 2, - 0, 0, 0, 0, 0, 0, 0, 0, 8, 15, 39, 0, 0, 8, - 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 21, 0, - 0, 11, 3, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 6, - 0, 0, 0, 18, 0, 6, 0, 0, 0, 0, 0, 0, 0, 8, - 0, 0, 0, 0, 0, 0, 0, 0, 7, 6, 0, 0, 0, 0, - 7, 0, 0, 21, 4, 0, 29, 0, 0, 0, 0, 0, 0, 18, - 0, 0, 11, 0, 0, 6, 0, 12, 17, 21, 22, 0, 0, 0, - 0, 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 13, 10, 0, - 0, 0, 0, 0, 0, 14, 0, 18, 15, 0, 0, 0, 0, 0, - 0, 0, 14, 0, 0, 0, 17, 0, 0, 0, 14, 0, 0, 12, - 0, 0, 0, 0, 0, 0, 0, 11, 0, 9, 0, 0, 11, 20, - 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 22, 0, - 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, - 21, 0, 23, 10, 0, 0, 15, 0, 0, 0, 0, 11, 0, 16, - 0, 0, 10, 0, 22, 0, 12, 24, 0, 0, 0, 0, 0, 20, - 14, 28, 0, 0, 18, 0, 0, 0, 0, 30, 25, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 12, 42, 16, 0, 14, 0, 33, 33, - 0, 21, 0, 0, 22, 0, 26, 0, 21, 0, 30, 14, 0, 42, - 20, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 8, 0, 0, - 0, 0, 0, 0, 12, 26, 0, 0, 9, 18, 0, 0, 24, 23, - 9, 0, 0, 0, 0, 0, 15, 27, 20, 0, 0, 0, 0, 0, - 0, 14, 15, 0, 0, 0, 7, 0, 0, 17, 0, 0, 0, 0, - 12, 33, 27, 0, 3, 22, 4, 30, 0, 15, 25, 0, 0, 0, - 25, 0, 0, 0, 0, 3, 0, 4, 6, 0, 0, 0, 0, 0, - 0, 9, 0, 0, 3, 0, 0, 31, 0, 0, 0, 29, 0, 16, - 0, 6, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, - 0, 6, 0, 2, 0, 0, 11, 23, 0, 0, 0, 0, 0, 0, - 0, 8, 0, 0, 0, 30, 0, 0, 0, 0, 31, 23, 0, 0, - 0, 0, 15, 0, 20, 12, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 23, 0, 16, 0, 16, 0, 0, 0, 0, - 0, 0, 15, 0, 0, 9, 0, 0, 8, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, - 25, 0, 0, 12, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, - 29, 0, 0, 0, 3, 0, 37, 0, 18, 0, 0, 0, 0, 0, - 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 26, 0, 0, 22, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, - 0, 0, 22, 23, 0, 0, 0, 16, 32, 0, 0, 17, 0, 0, - 2, 0, 0, 28, 0, 15, 0, 15, 0, 0, 0, 15, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 9, 27, 0, 0, - 0, 24, 0, 15, 0, 25, 0, 11, 0, 15, 0, 9, 0, 0, - 16, 0, 0, 13, 0, 23, 0, 12, 0, 19, 0, 26, 0, 0, - 3, 19, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 3, 0, 4, 6, 0, 0, 0, 0, 0, 24, 0, 0, 0, - 0, 0, 0, 0, 34, 17, 0, 0, 12, 0, 0, 0, 31, 0, - 0, 0, 9, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, - 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 11, 0, - 16, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 2, - 0, 0, 0, 0, 0, 0, 15, 0, 0, 19, 15, 17, 0, 14, - 31, 0, 0, 0, 0, 14, 0, 0, 0, 0, 14, 12, 0, 0, - 35, 0, 14, 0, 11, 0, 0, 15, 29, 27, 0, 9, 0, 15, - 16, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 11, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 14, 0, 20, 16, 0, 0, 0, - 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, - 0, 0, 0, 18, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, - 0, 13, 0, 0, 0, 0, 15, 8, 0, 0, 0, 27, 0, 0, - 0, 0, 19, 0, 0, 14, 0, 0, 0, 42, 0, 0, 0, 24, - 0, 27, 0, 0, 0, 6, 0, 0, 0, 0, 0, 15, 34, 0, - 18, 0, 0, 0, 0, 0, 14, 15, 0, 0, 14, 0, 0, 0, - 0, 2, 32, 0, 0, 0, 0, 19, 0, 0, 17, 0, 0, 19, - 0, 0, 0, 21, 41, 0, 0, 33, 0, 0, 0, 8, 19, 0, - 32, 0, 0, 13, 23, 8, 0, 0, 0, 21, 0, 19, 0, 0, - 0, 0, 31, 0, 15, 0, 12, 18, 30, 15, 0, 0, 0, 15, - 0, 0, 0, 0, 22, 0, 12, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 26, 0, 0, 31, 0, 12, 0, 0, 0, 0, 0, 31, - 0, 2, 0, 0, 0, 0, 12, 0, 0, 15, 14, 0, 0, 0, - 0, 0, 11, 0, 0, 22, 14, 0, 15, 0, 0, 27, 0, 0, - 0, 39, 0, 0, 22, 31, 16, 24, 0, 0, 0, 0, 13, 0, - 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, - 0, 14, 0, 0, 0, 0, 14, 0, 28, 0, 0, 20, 14, 0, - 0, 0, 0, 0, 28, 0, 0, 0, 11, 15, 15, 0, 12, 0, - 11, 0, 0, 0, 0, 0, 0, 37, 0, 0, 15, 0, 0, 0, - 12, 0, 0, 0, 32, 15, 21, 0, 0, 0, 0, 22, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 23, 0, - 0, 0, 16, 0, 0, 0, 19, 0, 0, 0, 34, 0, 0, 0, - 0, 34, 0, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, - 0, 21, 0, 0, 0, 0, 25, 12, 12, 50, 16, 0, 0, 0, - 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 13, 0, 0, 18, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 14, 0, 0, 0, 22, 19, 0, 0, 0, - 0, 0, 37, 0, 0, 13, 0, 0, 0, 0, 0, 13, 13, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 23, 19, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 10, 0, - 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 24, 17, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 0, 0, - 12, 25, 0, 0, 0, 19, 0, 0, 0, 32, 0, 0, 32, 25, - 0, 0, 0, 0, 0, 0, 28, 0, 0, 15, 0, 0, 0, 0, - 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 8, 0, 0, 22, 0, 0, 0, 0, 14, 14, 12, 19, - 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 16, 0, 30, 16, 0, 0, 0, 13, 35, - 0, 0, 0, 0, 15, 0, 15, 0, 0, 0, 0, 18, 0, 0, + 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 16, 20, 0, 0, 0, 0, 0, 0, 15, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, - 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, - 15, 0, 0, 15, 0, 0, 0, 0, 15, 14, 0, 0, 0, 0, - 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, - 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 8, - 0, 0, 15, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 15, 0, 0, 0, 0, 0, 9, 20, 0, 0, 17, 18, 0, - 27, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, - 0, 0, 0, 23, 25, 0, 0, 0, 16, 0, 19, 0, 0, 2, - 27, 0, 0, 0, 0, 32, 0, 16, 0, 0, 0, 14, 0, 0, - 0, 0, 6, 0, 32, 14, 24, 0, 14, 0, 0, 28, 0, 0, - 0, 0, 14, 0, 0, 15, 14, 0, 0, 0, 0, 0, 13, 15, - 0, 0, 0, 0, 11, 31, 0, 0, 31, 19, 0, 0, 0, 0, - 0, 15, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 16, 0, - 0, 0, 0, 0, 23, 12, 0, 0, 0, 11, 0, 0, 20, 0, - 18, 20, 22, 18, 0, 0, 17, 0, 0, 23, 25, 18, 0, 0, - 0, 0, 0, 24, 22, 0, 0, 0, 12, 19, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 16, 26, 0, 0, 0, 0, 0, 0, 0, - 0, 17, 0, 0, 0, 29, 0, 0, 0, 0, 15, 13, 0, 0, - 0, 0, 0, 13, 0, 0, 0, 0, 22, 0, 0, 25, 0, 20, - 29, 17, 22, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 8, - 17, 25, 0, 0, 0, 24, 6, 0, 0, 0, 0, 0, 0, 19, - 0, 31, 7, 0, 0, 0, 31, 0, 34, 0, 0, 0, 0, 0, - 0, 28, 0, 0, 25, 0, 0, 33, 0, 0, 0, 0, 0, 0, - 37, 0, 0, 0, 0, 0, 0, 11, 25, 0, 0, 0, 0, 0, - 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, - 0, 13, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 28, 2, - 0, 18, 0, 0, 0, 0, 0, 0, 0, 19, 22, 0, 0, 0, - 0, 0, 11, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 17, 0, 11, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, - 0, 0, 25, 15, 0, 0, 28, 0, 0, 0, 0, 0, 0, 28, - 0, 0, 11, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 19, - 0, 0, 14, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 28, 0, 73, 74, 0, 0, 20, 0, - 18, 0, 0, 18, 0, 0, 24, 0, 0, 0, 0, 35, 0, 0, - 0, 0, 0, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, - 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 13, - 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 13, 0, 0, - 0, 0, 0, 0, 12, 0, 30, 0, 0, 0, 0, 0, 15, 0, - 0, 0, 11, 0, 15, 0, 0, 0, 8, 0, 15, 0, 12, 0, - 0, 0, 0, 13, 0, 0, 14, 0, 0, 0, 0, 0, 34, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, - 0, 0, 0, 0, 0, 0, 14, 0, 12, 14, 0, 0, 0, 0, - 0, 0, 0, 0, 25, 0, 0, 0, 14, 0, 0, 0, 0, 26, - 14, 18, 0, 31, 18, 20, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 20, 0, 2, 25, 0, 8, 0, - 24, 15, 0, 15, 18, 0, 12, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 36, 15, 0, 0, 15, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 15, + 0, 0, 0, 0, 0, 0, 0, 11, 22, 0, 0, 0, 0, 0, + 0, 0, 0, 17, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, + 0, 22, 0, 7, 19, 0, 0, 0, 0, 0, 17, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, + 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 11, 0, 19, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 28, 0, - 32, 0, 0, 0, 0, 21, 30, 0, 21, 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 18, 0, 0, 0, 28, 0, 0, 0, 0, 0, - 14, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 35, 0, 0, 0, 0, 15, 0, 0, 17, 0, 0, 17, 0, 0, - 0, 0, 0, 11, 0, 0, 0, 0, 0, 15, 0, 0, 29, 0, - 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 15, 26, 0, - 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 30, 10, 0, 30, - 0, 23, 27, 0, 11, 0, 0, 27, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 18, 0, 0, 21, 30, 0, 0, 10, 11, 0, 0, - 0, 0, 0, 0, 30, 0, 18, 0, 0, 18, 18, 0, 14, 18, - 0, 0, 0, 5, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 12, 16, 17, 0, 0, 12, 31, 0, 14, 0, 0, 43, - 0, 0, 0, 0, 0, 0, 24, 0, 0, 14, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, - 16, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, - 0, 32, 0, 11, 0, 0, 0, 0, 30, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 11, 0, 23, - 0, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 21, 0, 0, 13, 3, 0, 0, 16, 0, 23, 0, 24, 0, 0, - 0, 0, 0, 0, 23, 27, 0, 18, 0, 0, 0, 18, 34, 0, - 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, - 0, 19, 0, 0, 0, 0, 0, 15, 0, 0, 0, 15, 0, 18, - 0, 0, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 29, - 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 18, - 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 33, 0, 0, 35, - 0, 0, 15, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, - 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 0, 0, - 0, 10, 0, 0, 0, 0, 0, 0, 0, 23, 22, 0, 27, 22, - 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 24, - 14, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 17, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 19, - 0, 0, 0, 18, 35, 24, 0, 0, 0, 0, 0, 0, 22, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 29, 0, 0, 29, 0, 0, 0, 0, 0, 9, - 0, 29, 0, 0, 0, 23, 11, 0, 22, 0, 0, 30, 0, 24, - 0, 0, 0, 0, 0, 25, 0, 0, 0, 18, 0, 0, 0, 18, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, - 0, 0, 0, 33, 0, 9, 0, 0, 0, 0, 0, 0, 21, 0, - 0, 0, 0, 0, 0, 14, 0, 10, 0, 0, 0, 22, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, - 0, 14, 0, 2, 15, 0, 0, 0, 0, 0, 15, 0, 0, 0, - 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 24, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 29, 0, - 0, 29, 0, 0, 0, 0, 0, 0, 0, 23, 38, 13, 31, 12, + 0, 0, 0, 0, 0, 16, 0, 0, 0, 33, 17, 0, 0, 0, + 22, 0, 0, 0, 0, 15, 0, 0, 0, 0, 19, 22, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 22, 16, 0, 0, 0, 0, 0, + 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, + 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 19, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 11, 0, 0, + 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 16, 0, 0, 0, 14, 0, 16, 0, 0, 22, 0, + 0, 0, 0, 0, 0, 0, 28, 0, 15, 0, 0, 29, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 14, 0, 0, 10, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 29, 0, 0, 0, 17, 0, 0, 0, 0, + 0, 0, 0, 0, 16, 0, 0, 13, 27, 22, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 27, 0, + 0, 0, 0, 27, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, + 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, + 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 28, 0, 0, 0, 28, 2, 28, 2, 0, 0, 0, 10, 0, 0, - 0, 0, 33, 0, 0, 0, 0, 22, 0, 0, 0, 0, 32, 0, - 38, 0, 29, 0, 22, 0, 0, 0, 0, 0, 0, 32, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 19, 0, 0, 0, 0, 11, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 29, - 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, - 0, 16, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 22, - 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 20, 16, 0, 0, 0, 0, - 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 23, 0, 20, 0, - 17, 0, 0, 0, 0, 0, 0, 29, 0, 24, 30, 0, 0, 0, - 0, 24, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, - 19, 0, 26, 0, 0, 0, 19, 0, 0, 15, 0, 0, 0, 0, - 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 23, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 30, 14, 0, 10, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 27, 0, 0, 27, - 0, 16, 0, 0, 0, 0, 0, 14, 0, 30, 0, 14, 0, 0, - 0, 14, 36, 0, 6, 0, 0, 0, 0, 0, 14, 0, 0, 0, - 0, 0, 28, 22, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, - 0, 29, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 12, 0, 0, 0, 0, 36, 0, 0, 36, 0, 0, 8, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 24, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, - 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 27, 0, 0, - 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, - 0, 0, 19, 0, 0, 0, 0, 0, 36, 0, 7, 0, 0, 0, - 0, 0, 0, 0, 0, 2, 23, 0, 0, 0, 0, 0, 23, 0, - 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 35, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, - 18, 0, 28, 18, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 18, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, - 22, 14, 11, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, - 0, 11, 0, 13, 0, 0, 0, 0, 0, 0, 0, 9, 13, 0, - 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 24, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 22, 27, - 24, 0, 11, 0, 13, 0, 0, 0, 0, 0, 0, 0, 44, 0, - 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 34, 0, - 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, - 4, 0, 15, 0, 0, 0, 11, 26, 0, 0, 0, 6, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 17, 0, 0, 0, - 0, 18, 0, 0, 11, 0, 0, 0, 0, 0, 36, 0, 0, 0, - 0, 10, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, - 0, 15, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 4, 0, - 0, 0, 0, 0, 16, 0, 29, 7, 0, 27, 0, 0, 0, 7, - 27, 21, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 26, - 0, 0, 0, 0, 12, 0, 0, 0, 23, 0, 0, 16, 0, 0, - 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 16, 27, - 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 6, 0, 0, 0, - 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, - 19, 0, 0, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 20, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 16, 0, 0, - 0, 0, 0, 0, 0, 0, 22, 0, 0, 22, 0, 0, 0, 0, - 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 21, 0, 19, 0, 0, 0, 0, 14, - 0, 0, 18, 0, 0, 21, 35, 0, 0, 35, 14, 0, 0, 0, - 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 18, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 18, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 15, 16, 0, 0, 0, 13, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 24, 0, 22, 0, 0, 9, 0, 7, 0, - 0, 0, 9, 0, 0, 0, 24, 0, 0, 0, 24, 0, 37, 0, + 0, 22, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 25, 0, + 0, 0, 0, 15, 0, 0, 0, 29, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 20, 0, - 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, + 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 29, 0, 0, 0, 0, 15, 0, 0, 0, + 0, 0, 27, 0, 28, 18, 0, 0, 0, 22, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 35, 20, 0, 0, 0, 0, 0, 12, 0, + 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, 13, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, - 0, 0, 0, 0, 0, 0, 24, 0, 6, 30, 0, 0, 0, 0, - 0, 0, 0, 13, 0, 0, 0, 0, 0, 36, 0, 0, 0, 43, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 6, 0, 28, 0, 0, 28, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, + 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 24, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 35, 0, + 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, + 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, + 0, 0, 0, 27, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 27, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 15, 0, 0, 0, 43, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 16, 0, 15, 0, 27, 0, 0, 0, 23, 0, - 0, 11, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, - 0, 0, 0, 0, 30, 0, 0, 30, 3, 0, 0, 29, 22, 0, - 0, 22, 22, 0, 0, 22, 0, 0, 0, 6, 0, 0, 0, 0, - 0, 0, 0, 0, 12, 0, 0, 0, 0, 35, 0, 0, 0, 0, - 0, 0, 0, 0, 37, 24, 0, 0, 0, 0, 0, 24, 0, 0, - 0, 38, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 16, 0, - 0, 11, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 0, - 0, 0, 0, 29, 0, 0, 0, 42, 2, 0, 0, 0, 0, 31, - 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 14, 0, 0, 16, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 15, 0, 0, - 0, 0, 0, 0, 0, 30, 0, 0, 16, 0, 0, 0, 0, 22, - 0, 0, 0, 22, 0, 27, 29, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, + 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 16, 24, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 16, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, - 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, - 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 25, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 16, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 11, + 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 18, 0, 0, 24, 0, 0, 0, 0, 30, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 7, 0, 16, 0, 0, 0, 0, 0, + 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, + 0, 0, 43, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, - 24, 0, 0, 0, 0, 0, 0, 0, 28, 0, 8, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, - 33, 0, 0, 0, 2, 0, 0, 0, 24, 0, 0, 0, 0, 0, - 29, 0, 0, 0, 0, 0, 16, 30, 28, 0, 0, 0, 0, 0, - 28, 22, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 8, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 22, 0, 0, 0, 34, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 22, 0, 0, 7, 0, 0, 37, 0, 0, 0, 0, - 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 15, - 0, 2, 0, 0, 0, 15, 0, 0, 6, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, - 0, 0, 23, 0, 0, 0, 0, 0, 13, 0, 0, 0, 33, 0, - 0, 0, 16, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, - 0, 0, 9, 2, 0, 0, 0, 29, 25, 0, 0, 0, 0, 0, - 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, - 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, + 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 24, 0, 0, 5, 24, 22, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, - 0, 33, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 18, 0, 0, 0, 29, 0, 0, 28, 0, 0, 0, - 0, 0, 0, 0, 0, 3, 0, 0, 0, 23, 0, 0, 0, 0, - 0, 0, 23, 0, 0, 0, 0, 21, 24, 28, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, - 22, 15, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 0, - 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, - 0, 0, 0, 13, 25, 0, 0, 25, 0, 0, 25, 24, 0, 25, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, - 39, 0, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 15, 0, - 0, 0, 0, 15, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 70, 0, 0, 7, 0, + 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 29, 0, 0, 0, 21, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, + 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 25, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 30, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 24, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 16, 0, 0, 0, - 15, 0, 0, 0, 0, 25, 0, 11, 0, 0, 0, 25, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, + 13, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0, 0, 8, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, - 0, 0, 0, 0, 0, 0, 25, 0, 0, 25, 0, 0, 0, 0, - 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, - 16, 0, 0, 0, 0, 0, 22, 0, 0, 22, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, - 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 7, 0, 25, 0, 0, 0, 0, 0, 25, + 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 21, 0, - 0, 23, 0, 0, 0, 15, 11, 25, 0, 0, 16, 0, 0, 0, + 20, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, + 0, 26, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 14, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 22, 0, 0, + 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 3, 0, 0, 25, 0, 0, 0, 15, + 0, 0, 0, 0, 26, 0, 0, 0, 24, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 13, 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, + 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 17, 0, 0, 17, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, + 0, 0, 19, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 17, 0, 0, + 0, 33, 40, 0, 0, 0, 0, 14, 17, 14, 0, 0, 0, 0, + 0, 0, 27, 0, 17, 0, 0, 27, 33, 0, 0, 0, 0, 0, + 17, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 20, 14, 0, 0, 0, 0, 24, 0, + 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, + 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 20, 0, 0, 17, 0, 0, 0, 43, + 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 18, 0, 0, 30, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 16, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, - 0, 0, 25, 0, 0, 14, 0, 17, 0, 25, 0, 0, 0, 0, - 0, 22, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 32, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, - 0, 0, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 31, 0, 0, 0, 0, 17, 0, 0, 0, 33, 0, 0, 0, + 0, 25, 0, 0, 0, 15, 15, 6, 0, 0, 0, 0, 0, 0, + 24, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, + 0, 25, 0, 0, 0, 15, 4, 0, 0, 0, 0, 0, 24, 0, + 24, 0, 15, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, - 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 25, 0, 0, 25, - 28, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, - 13, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, + 0, 16, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 26, 32, 0, 24, 28, 0, 26, 0, 0, 0, 0, 0, - 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 20, - 0, 0, 21, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, - 15, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 25, 0, 0, - 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, - 0, 17, 17, 0, 21, 17, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, - 0, 14, 14, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, + 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 25, 0, 17, 0, 0, 0, 20, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 15, + 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 26, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 25, 0, 0, + 16, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 14, 17, 0, 0, 0, 0, 0, 0, + 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 25, 14, 0, 7, 15, 0, 17, 0, 0, + 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 32, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 26, 0, - 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 27, 0, - 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 17, - 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, - 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 25, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 70, 0, 15, 0, 0, - 0, 0, 0, 14, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, + 0, 25, 0, 0, 32, 31, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, + 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 17, 0, 31, 17, 0, 0, 0, 0, 0, 0, - 0, 0, 29, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 22, + 0, 0, 0, 0, 0, 0, 6, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, - 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 17, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 14, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 35, 0, 0, 0, - 31, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 32, 0, 0, 32, 0, 0, 0, 0, 0, 0, 20, + 0, 17, 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 17, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, + 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 31, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 37, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, - 0, 0, 31, 0, 0, 0, 7, 0, 0, 0, 17, 0, 7, 17, - 17, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, - 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, - 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, - 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, - 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 17, 0, 0, 17, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 19, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, + 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 24, 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, + 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, + 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 20, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, + 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, + 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 17, - 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 17, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 7, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 36, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, - 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, + 14, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 14, 0, 15, + 0, 0, 0, 36, 15, 0, 0, 0, 0, 0, 0, 0, 0, 16, + 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, - 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, + 0, 0, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 4, + 15, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 15, 17, 0, 0, + 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 4, 0, + 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 23, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, - 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 15, 2, 0, 0, 0, 0, 14, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, + 0, 14, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, + 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 17, 0, 0, 17, 0, 0, 0, 38, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 6, + 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, + 15, 0, 0, 0, 15, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, - 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, + 7, 0, 0, 0, 0, 0, 0, 0, 6, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 7, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 24, + 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, + 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 17, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 20, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 16, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 28, - 0, 0, 28, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, 28, 0, 0, - 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 28, 0, - 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 14, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 28, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, + 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 28, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 14, 0, 15, 23, 0, 0, 0, 0, - 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 6, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 6, 14, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, + 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 17, 0, - 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, + 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 28, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 28, 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 36, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, + 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, - 30, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 34, 0, - 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 6, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, + 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 15, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 34, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 36, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, - 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 15, 0, 0, - 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 13, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, - 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 17, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 6, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, - 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 15, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, - 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 25, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1250,81 +1303,77 @@ static const unsigned char lengthtable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, - 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 21, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 21, 0, 0, 15, 0, 27, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, + 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, + 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, - 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, - 0, 0, 0, 26, 0, 17, 0, 0, 17, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 15, 0, 0, - 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1335,42 +1384,44 @@ static const unsigned char lengthtable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 16, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, + 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1380,6 +1431,7 @@ static const unsigned char lengthtable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1388,16 +1440,19 @@ static const unsigned char lengthtable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1405,6 +1460,7 @@ static const unsigned char lengthtable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1419,7 +1475,6 @@ static const unsigned char lengthtable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1440,7 +1495,6 @@ static const unsigned char lengthtable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1467,7 +1521,6 @@ static const unsigned char lengthtable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1478,14 +1531,15 @@ static const unsigned char lengthtable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1505,7 +1559,7 @@ static const unsigned char lengthtable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1518,7 +1572,6 @@ static const unsigned char lengthtable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1555,18 +1608,15 @@ static const unsigned char lengthtable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 36, 0, 0, 36, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1576,7 +1626,9 @@ static const unsigned char lengthtable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1590,7 +1642,6 @@ static const unsigned char lengthtable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1622,9 +1673,7 @@ static const unsigned char lengthtable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1639,7 +1688,6 @@ static const unsigned char lengthtable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1681,6 +1729,7 @@ static const unsigned char lengthtable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1754,146 +1803,16 @@ static const unsigned char lengthtable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 17, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1930,23 +1849,6 @@ static const unsigned char lengthtable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -2005,9 +1907,11 @@ static const unsigned char lengthtable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -2017,7 +1921,9 @@ static const unsigned char lengthtable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -2038,7 +1944,6 @@ static const unsigned char lengthtable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -2085,7 +1990,6 @@ static const unsigned char lengthtable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -2180,6 +2084,7 @@ static const unsigned char lengthtable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -2232,6 +2137,7 @@ static const unsigned char lengthtable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -2244,6 +2150,7 @@ static const unsigned char lengthtable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -2342,7 +2249,6 @@ static const unsigned char lengthtable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -2468,6 +2374,7 @@ static const unsigned char lengthtable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -2567,6 +2474,7 @@ static const unsigned char lengthtable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -2707,4736 +2615,4525 @@ static const unsigned char lengthtable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 31 + 0, 0, 31 }; static const struct grib_keys_hash wordlist[] = { {""}, {""}, {""}, - {"n",1339}, - {""}, - {"nd",1349}, - {"ed",725}, - {"nnn",1353}, - {"td",2180}, - {"t",2169}, + {"n",1349}, {""}, - {"nt",1367}, - {"sd",1952}, - {"na",1342}, + {"nd",1359}, + {"ed",729}, + {"nnn",1363}, + {"td",2215}, + {"t",2204}, {""}, - {"m",1217}, + {"nt",1378}, + {"sd",1985}, + {"na",1352}, {""}, - {"dy",715}, - {"date",646}, + {"m",1225}, + {""}, {""}, + {"date",649}, + {""}, {""}, + {"name",1353}, + {"min",1308}, {""}, - {"year",2429}, - {"name",1343}, - {"min",1300}, - {"day",658}, - {"data",627}, + {"data",630}, {""}, {""}, - {"ident",961}, - {"one",1541}, - {"time",2206}, + {"ident",966}, + {"one",1558}, + {"time",2241}, {""}, {""}, {""}, - {"mars",1220}, + {"mars",1228}, {""}, {""}, - {"names",1348}, + {"names",1358}, {""}, {""}, {""}, - {"stream",2141}, - {"sort",2086}, + {"stream",2176}, + {"sort",2120}, {""}, - {"enorm",767}, + {"enorm",771}, {""}, {""}, - {"metadata",1296}, - {""}, - {"type",2252}, - {"system",2167}, - {"eps",772}, - {"domain",708}, - {"spare",2103}, + {"metadata",1304}, + {""}, {""}, {""}, + {"eps",776}, + {"domain",712}, + {"spare",2137}, {""}, {""}, {""}, - {"edition",726}, - {"oper",1553}, - {"present",1704}, - {"param",1652}, + {"edition",730}, + {"oper",1570}, + {"present",1721}, + {"param",1669}, {""}, {""}, {""}, {""}, {""}, {""}, - {"parameter",1658}, - {"iteration",1035}, + {"parameter",1675}, + {"iteration",1041}, {""}, - {"assertion",317}, - {"dimension",691}, + {"assertion",320}, + {"dimension",695}, {""}, - {"centre",401}, + {"centre",404}, {""}, {""}, {""}, - {"step",2130}, - {""}, - {"true",2241}, - {""}, {""}, {""}, - {"parameters",1666}, - {"core",602}, - {"timerepres",2220}, - {"opttime",1560}, - {"points",1692}, - {""}, {""}, - {"rectime",1791}, + {"step",2165}, + {"refdate",1814}, + {"true",2278}, {""}, {""}, {""}, - {"second",1953}, + {"parameters",1683}, + {"core",605}, + {"timerepres",2255}, + {"opttime",1577}, + {"points",1709}, {""}, {""}, - {"const",575}, - {"minute",1302}, - {"restricted",1832}, - {"dummy",710}, + {"rectime",1808}, {""}, - {"units",2301}, + {"dateTime",659}, {""}, - {"stepZero",2140}, - {"radius",1766}, + {"second",1986}, + {"dataTime",645}, + {"stepZero",2175}, + {"const",578}, + {"minute",1310}, + {"restricted",1850}, + {"range",1788}, + {"grid",915}, + {"units",2346}, {""}, {""}, - {"section",1977}, - {"status",2129}, + {"radius",1783}, + {"identifier",970}, + {""}, + {"section",2011}, + {"status",2164}, {""}, - {"partitions",1671}, + {"partitions",1688}, + {"isSens",1027}, + {"leadtime",1106}, + {"direction",698}, + {"nref",1377}, {""}, - {"leadtime",1100}, - {"direction",694}, + {"radials",1782}, + {"instrument",998}, + {""}, + {"dataStream",643}, + {""}, + {"minimum",1309}, + {""}, {""}, {""}, + {"marsStream",1253}, + {""}, {""}, + {"Latin",113}, + {"reference",1815}, {""}, {""}, - {"radials",1765}, - {"instrument",992}, + {"origin",1582}, + {"statistics",2163}, {""}, {""}, {""}, - {"minimum",1301}, + {"process",1751}, + {"ucs",2337}, {""}, {""}, {""}, - {"three",2193}, - {"dateTime",656}, + {"file",855}, + {"endStep",763}, {""}, - {"hdate",933}, - {"dataTime",642}, - {"landtype",1057}, - {""}, {""}, - {"statistics",2128}, + {"precision",1716}, + {"false",848}, {""}, {""}, {""}, - {"process",1734}, - {"ucs",2294}, - {"two",2250}, - {""}, {""}, {""}, {""}, {""}, - {"precision",1699}, - {""}, {""}, - {"dataType",643}, + {"offset",1521}, {""}, - {"method",1297}, + {"TT",239}, + {"count",619}, {""}, {""}, - {"count",616}, - {"marsType",1248}, - {""}, {""}, {""}, {""}, - {"class",429}, - {"phase",1685}, + {"operStream",1571}, + {""}, + {"anoffset",315}, + {"class",432}, {""}, - {"uco",2293}, + {"marsStep",1252}, + {"uco",2336}, + {"startStep",2157}, + {"offsetdate",1555}, + {""}, {""}, + {"g",892}, + {"Lap",108}, {""}, {""}, {""}, - {"country",620}, - {""}, {""}, {""}, {""}, {""}, - {"latitude",1065}, - {"pl",1689}, - {"char",426}, - {"Dy",42}, - {"stepType",2136}, - {"model",1320}, - {"correction",607}, + {"latitude",1071}, + {"pl",1706}, {""}, - {"total",2222}, - {"Di",30}, - {"normal",1356}, + {"offsettime",1556}, {""}, - {"consensus",573}, - {"product",1736}, + {"model",1329}, + {"correction",610}, + {"fcperiod",852}, + {"total",2257}, {""}, - {"latitudes",1096}, - {"hundred",953}, - {""}, {""}, - {"Dstart",38}, - {"reportType",1811}, + {"normal",1366}, + {"Lop",142}, + {"consensus",576}, + {"product",1753}, + {""}, + {"latitudes",1102}, + {"TS",237}, + {"three",2228}, + {"signature",2103}, + {"elementsTable",735}, + {"hdate",937}, {""}, {""}, - {"dataDate",630}, - {"range",1771}, - {"grid",911}, - {"million",1299}, - {"marsDir",1224}, - {"hour",944}, - {"dummyc",713}, + {"endTimeStep",765}, {""}, {""}, - {"isSens",1021}, - {"yFirst",2427}, - {""}, - {"masterDir",1253}, - {"discipline",700}, + {"million",1307}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"platform",1707}, {""}, - {"codeType",553}, + {"categories",387}, + {"discipline",704}, + {"oceanStream",1519}, + {""}, {""}, + {"daLoop",629}, + {"fgTime",854}, + {"method",1305}, {""}, - {"dataStream",640}, - {""}, {""}, {""}, {""}, {""}, - {"marsStream",1245}, + {"year",2477}, + {""}, {""}, {""}, + {"padding",1598}, + {""}, {""}, {""}, + {"phase",1702}, {""}, - {"refdate",1797}, + {"partitionTable",1687}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"flags",872}, {""}, - {"thousand",2192}, - {""}, {""}, {""}, - {"elementsTable",731}, - {""}, {""}, - {"origin",1565}, - {""}, {""}, {""}, {""}, - {"marsDomain",1225}, + {"section8",2050}, {""}, - {"endStep",759}, + {"efiOrder",733}, + {"char",429}, {""}, {""}, {""}, {""}, {""}, - {"temperature",2182}, + {"type",2289}, + {"system",2202}, {""}, {""}, {""}, {""}, {""}, - {"identifier",965}, - {"operStream",1554}, - {""}, {""}, {""}, {""}, - {"marsStep",1244}, - {"month",1327}, - {"startStep",2122}, - {"TT",237}, - {""}, {""}, - {"accuracy",293}, - {"partitionTable",1670}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"rectimeDay",1792}, - {""}, {""}, {""}, - {"reference",1798}, - {""}, {""}, - {"notDecoded",1366}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"marsQuantile",1241}, - {"reserved",1815}, - {"file",851}, - {""}, - {"signature",2069}, + {"gg",904}, + {"hundred",958}, + {""}, {""}, {""}, {""}, {""}, + {"two",2287}, {""}, - {"false",844}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"local",1140}, - {"dataKeys",632}, - {""}, {""}, {""}, - {"oceanStream",1502}, - {"standardDeviation",2115}, - {"categories",384}, - {""}, {""}, - {"ieeeFloats",966}, - {"version",2355}, - {"windSpeed",2399}, - {"varno",2350}, + {"diagnostic",691}, {""}, {""}, {""}, - {"eight",730}, - {""}, {""}, - {"section8",2016}, + {"hour",948}, {""}, {""}, {""}, - {"channel",424}, - {"fcperiod",848}, - {"endTimeStep",761}, - {"Ly",153}, - {"gridType",920}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"Latin",113}, - {"threshold",2194}, - {"localTime",1168}, + {"longitude",1184}, {""}, {""}, {""}, {""}, - {"yLast",2428}, + {"upperLimit",2368}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"eight",734}, {""}, - {"eleven",733}, + {"longitudes",1215}, {""}, - {"conceptDir",565}, - {""}, {""}, - {"platform",1690}, + {"selectedSecond",2087}, + {"thousand",2227}, + {"ieeeFloats",971}, {""}, - {"hideThis",938}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"diagnostic",687}, + {"dataOrigin",637}, {""}, {""}, {""}, - {"g",888}, + {"crcrlf",624}, {""}, {""}, {""}, - {"longitude",1176}, - {""}, {""}, - {"typicalDay",2284}, + {"local",1148}, + {"Di",30}, + {"flag",867}, {""}, - {"aerosolType",299}, - {""}, {""}, {""}, - {"Lap",108}, - {""}, {""}, {""}, - {"matchSort",1260}, - {"Lcy",120}, - {"longitudes",1207}, + {"localTime",1176}, {""}, - {"levtype",1124}, - {"elevation",732}, - {""}, {""}, {""}, {""}, {""}, - {"Lop",142}, - {"Luy",149}, - {"endDescriptors",738}, - {""}, {""}, {""}, {""}, - {"dataSelection",639}, - {"spectralType",2113}, - {""}, {""}, - {"localDir",1149}, + {"dataSelection",642}, + {"userTimeStart",2377}, {""}, - {"localDate",1141}, + {"temperature",2217}, {""}, - {"typicalTime",2289}, - {""}, {""}, - {"localDay",1143}, + {"Dstart",38}, + {"dataType",646}, {""}, - {"TS",235}, - {"countTotal",619}, - {""}, {""}, - {"unitsFactor",2307}, - {"padding",1581}, - {""}, {""}, - {"productType",1741}, - {"daLoop",626}, - {""}, {""}, - {"windDirection",2388}, - {"aerosolTypeName",300}, - {"values",2338}, + {"KS",96}, + {"dataDate",633}, {""}, {""}, - {"levels",1123}, - {""}, {""}, {""}, {""}, {""}, - {"userTimeStart",2332}, - {""}, - {"optionalData",1559}, + {"marsType",1256}, + {"marsDir",1232}, + {"reserved",1833}, {""}, - {"offset",1504}, + {"coefsFirst",560}, + {""}, {""}, {""}, {""}, + {"masterDir",1261}, {""}, - {"levelist",1122}, - {"Xo",270}, + {"landtype",1063}, {""}, {""}, {""}, {""}, - {"anoffset",312}, - {""}, {""}, {""}, {""}, {""}, - {"offsetdate",1538}, - {"recDateTime",1788}, + {"yLast",2476}, + {""}, {""}, + {"marsQuantile",1249}, + {"windSpeed",2447}, {""}, - {"band",329}, - {""}, {""}, {""}, - {"Xp",271}, + {"stepType",2171}, {""}, {""}, {""}, - {"offsettime",1539}, - {"average",321}, - {""}, {""}, {""}, - {"isFillup",1015}, - {"runwayState",1891}, - {"isSatellite",1019}, - {""}, - {"typicalDate",2282}, - {""}, {""}, - {"flags",868}, + {"version",2400}, {""}, - {"rdbtime",1777}, + {"varno",2395}, {""}, {""}, {""}, - {"upperLimit",2323}, - {"level",1116}, + {"K",95}, {""}, - {"coefsFirst",557}, - {""}, {""}, - {"centreDescription",402}, - {""}, {""}, - {"fgTime",850}, + {"matchSort",1268}, + {"forecastperiod",884}, + {"marsDomain",1233}, {""}, - {"TScalc",236}, + {"reportType",1829}, + {""}, {""}, {""}, {""}, {""}, + {"truncateLaplacian",2281}, {""}, {""}, - {"forecastperiod",880}, + {"TScalc",238}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"codeType",556}, + {"unitOfTime",2343}, {""}, {""}, - {"categoryType",385}, + {"countTotal",622}, + {"eleven",737}, + {"coefsSecond",561}, + {""}, {""}, {""}, + {"yFirst",2475}, {""}, - {"userDateStart",2328}, - {""}, {""}, - {"K",95}, + {"month",1336}, {""}, - {"statisticalProcess",2126}, - {""}, {""}, {""}, - {"fcmonth",847}, - {"oneThousand",1552}, + {"channel",427}, {""}, {""}, {""}, - {"codeFigure",552}, + {"gridType",924}, + {"instrumentIdentifier",999}, {""}, - {"overlayTemplate",1575}, - {""}, {""}, {""}, {""}, {""}, - {"obstype",1499}, - {"selectedSecond",2053}, - {""}, {""}, - {"number",1368}, - {"molarMass",1326}, + {"notDecoded",1376}, + {"unitsFactor",2352}, {""}, - {"statisticalProcessesList",2127}, - {""}, {""}, - {"referenceDate",1799}, - {"bitmap",367}, + {"codeFigure",555}, + {""}, + {"dummyc",717}, + {"average",324}, {""}, {""}, {""}, {""}, {""}, - {"forecastTime",879}, - {"levelType",1119}, - {"lowerLimit",1210}, + {"additionalParameter",300}, + {""}, + {"indicatorOfParameter",984}, {""}, {""}, - {"gg",900}, + {"dy",719}, + {"dataFlag",634}, {""}, {""}, {""}, {""}, - {"pv",1750}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"fgDate",849}, - {"satelliteSeries",1896}, - {""}, {""}, {""}, - {"startTimeStep",2124}, + {"day",661}, + {"elevation",736}, + {"dataKeys",635}, {""}, {""}, {""}, {""}, {""}, - {"truncateLaplacian",2244}, - {""}, {""}, {""}, {""}, - {"waveDomain",2378}, + {"forecastTime",883}, {""}, - {"ccsdsFlags",390}, + {"logTransform",1183}, + {""}, {""}, {""}, + {"forecastSteps",882}, {""}, - {"KS",96}, - {"rdbType",1775}, + {"fgDate",853}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"isSatellite",1025}, + {"oneThousand",1569}, + {"offsetSection9",1552}, + {""}, + {"hideThis",942}, {""}, {""}, - {"marsModel",1239}, - {"crcrlf",621}, - {""}, {""}, {""}, - {"efiOrder",729}, + {"isFillup",1021}, {""}, {""}, {""}, {""}, {""}, - {"dataOrigin",634}, + {"lowerLimit",1218}, {""}, {""}, - {"lev",1114}, - {"localDateTime",1142}, - {"nlev",1352}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"forecastSteps",878}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"ccsdsFlags",393}, + {"values",2383}, {""}, {""}, - {"validityTime",2337}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"fireTemplate",853}, - {"dataFlag",631}, + {"levels",1129}, {""}, - {"avg",325}, - {""}, {""}, - {"marsStartStep",1243}, - {""}, {""}, {""}, {""}, - {"LaD",105}, + {"localSecond",1171}, + {"conceptDir",568}, + {"threshold",2229}, {""}, - {"flag",863}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"representationMode",1812}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"localSecond",1163}, - {""}, {""}, - {"rdbtimeDay",1779}, - {""}, {""}, {""}, {""}, - {"isOctahedral",1017}, + {"avg",328}, {""}, {""}, - {"aerosolpacking",302}, + {"aerosolpacking",305}, {""}, {""}, - {"unitsDecimalScaleFactor",2305}, + {"levelist",1128}, {""}, {""}, - {"freeFormData",883}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"statisticalProcess",2161}, + {"dateOfForecast",651}, + {""}, {""}, {""}, {""}, {""}, + {"marsLatitude",1243}, {""}, - {"coordinatesPresent",601}, - {"parameterDiscipline",1661}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"rdbtimeTime",1784}, - {""}, {""}, - {"instrumentIdentifier",993}, - {"referenceStep",1806}, - {""}, {""}, - {"pressureLevel",1724}, - {""}, {""}, - {"logTransform",1175}, + {"offsetSection8",1551}, + {"siteLatitude",2111}, {""}, - {"indicatorOfParameter",979}, - {""}, {""}, {""}, {""}, - {"MS",158}, - {""}, {""}, - {"coefsSecond",558}, + {"timeOfForecast",2248}, {""}, {""}, {""}, {""}, - {"theMessage",2187}, - {""}, {""}, {""}, {""}, - {"marsLatitude",1235}, - {""}, {""}, - {"siteLatitude",2077}, - {""}, - {"tubeDomain",2248}, - {""}, {""}, {""}, - {"levelFactor",1117}, + {"dummy",714}, + {"fcmonth",851}, {""}, {""}, {""}, {""}, {""}, - {"userDateTimeStart",2330}, - {""}, - {"clusterMember9",544}, - {"dataLength",633}, + {"statisticalProcessesList",2162}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"band",332}, {""}, {""}, {""}, - {"marsLevel",1236}, - {""}, - {"siteId",2076}, - {"validityDate",2336}, - {""}, {""}, - {"offsetSection9",1535}, + {"Ly",153}, {""}, {""}, - {"thisMarsType",2191}, - {""}, - {"unitOfTime",2298}, - {"marsIdent",1231}, - {""}, - {"rdbtimeDate",1778}, - {"computeStatistics",564}, - {"laplacianOperator",1058}, - {""}, {""}, {""}, {""}, - {"firstDimension",854}, + {"level",1123}, {""}, {""}, {""}, - {"M",155}, - {"paramId",1653}, - {"gridDefinition",913}, - {""}, {""}, - {"distinctLatitudes",702}, - {"topLevel",2221}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"angleDivisor",306}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"oneMillionConstant",1543}, + {"localDir",1157}, {""}, - {"datasetForLocal",645}, - {""}, {""}, {""}, {""}, - {"localDecimalScaleFactor",1144}, - {"localDefinition",1147}, - {""}, {""}, - {"derivedForecast",685}, - {""}, {""}, {""}, - {"localMinute",1160}, + {"localDate",1149}, + {"isOctahedral",1023}, {""}, - {"iIncrement",958}, - {""}, {""}, {""}, {""}, - {"oldSubtype",1540}, - {""}, {""}, - {"newSubtype",1351}, - {""}, {""}, - {"setLocalDefinition",2060}, + {"userDateStart",2373}, {""}, - {"centreLongitude",407}, - {""}, {""}, - {"longitudesList",1208}, - {""}, {""}, {""}, - {"latitudesList",1097}, - {"ensembleSize",770}, + {"longitudesList",1216}, {""}, - {"localFlag",1151}, + {"satelliteSeries",1915}, {""}, - {"operatingMode",1555}, - {"decimalScaleFactor",667}, - {""}, {""}, - {"rdbDateTime",1773}, - {""}, {""}, {""}, {""}, {""}, - {"earthMinorAxis",719}, - {""}, {""}, - {"visibility",2369}, + {"rdbtime",1794}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"centreForLocal",406}, {""}, {""}, - {"angleMultiplier",307}, - {""}, - {"marsKeywords",1232}, - {""}, {""}, {""}, {""}, - {"latitudeSexagesimal",1093}, - {"localMonth",1161}, + {"periodOfTime",1698}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"global",901}, - {""}, - {"periodOfTime",1681}, + {"country",623}, + {""}, {""}, {""}, + {"latitudeSexagesimal",1099}, + {"dataLength",636}, {""}, - {"lengthDescriptors",1105}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"controlForecastCluster",580}, - {"spectralMode",2112}, + {"Lcy",120}, {""}, {""}, {""}, - {"integerScaleFactor",996}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"setDecimalPrecision",2059}, + {"marsLevel",1244}, + {"datasetForLocal",648}, + {""}, {""}, {""}, {""}, {""}, + {"Luy",149}, + {"number",1379}, {""}, {""}, {""}, {""}, {""}, {""}, - {"thisMarsStream",2190}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, - {"reservedOctet",1820}, + {"bitmap",370}, + {""}, {""}, {""}, + {"referenceSampleInterval",1823}, + {""}, {""}, {""}, {""}, + {"forecastLeadTime",875}, {""}, - {"scaledDirections",1920}, + {"aerosolType",302}, {""}, - {"centreForLocal",403}, - {"maximum",1266}, - {"localTimeForecastList",1169}, - {"verticalDomainTemplate",2365}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"offsetDescriptors",1518}, + {"recDateTime",1805}, {""}, {""}, - {"modelIdentifier",1322}, + {"topLevel",2256}, {""}, - {"clusterMember8",543}, - {"tiggeModel",2199}, - {"laplacianOperatorIsSet",1059}, + {"centreDescription",405}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"offsetSection8",1534}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"anoffsetFirst",313}, - {""}, {""}, {""}, {""}, {""}, - {"marsLamModel",1234}, + {"levtype",1130}, {""}, - {"isEps",1014}, + {"pv",1767}, + {"startTimeStep",2159}, {""}, - {"templatesLocalDir",2184}, - {""}, {""}, - {"offsetSection0",1524}, + {"standardDeviation",2149}, + {"localFlag",1159}, {""}, - {"scanningMode",1945}, + {"laplacianOperator",1064}, + {""}, {""}, + {"spectralType",2147}, + {"referenceDate",1816}, + {""}, {""}, + {"marsStartStep",1251}, + {"endDescriptors",742}, + {"fireTemplate",857}, + {"typicalTime",2332}, + {""}, {""}, {""}, {""}, + {"aerosolTypeName",303}, + {""}, {""}, + {"centreLongitude",410}, + {""}, {""}, + {"computeStatistics",567}, + {"referenceStep",1824}, + {"productType",1758}, + {""}, {""}, {""}, {""}, + {"Xo",272}, {""}, {""}, {""}, {""}, - {"dimensionType",693}, + {"accuracy",295}, + {""}, {""}, + {"latitudesList",1103}, + {""}, + {"windDirection",2436}, + {"lev",1121}, + {"originalSubCentreIdentifier",1586}, + {"nlev",1362}, {""}, - {"lcwfvSuiteName",1099}, + {"LaD",105}, + {""}, {""}, + {"Xp",273}, + {""}, {""}, {""}, {""}, + {"optionalData",1576}, {""}, {""}, {""}, - {"analysisOffsets",305}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"dateOfForecast",648}, + {"yearOfForecast",2481}, + {"localDateTime",1150}, {""}, {""}, - {"yearOfForecast",2433}, + {"anoffsetFirst",316}, + {""}, {""}, {""}, {""}, + {"coordinatesPresent",604}, + {"Dy",42}, + {""}, {""}, {""}, {""}, + {"unitsDecimalScaleFactor",2350}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"longitudeOfCentrePoint",1188}, {""}, {""}, {""}, {""}, - {"auxiliary",320}, - {"generatingProcessTemplate",897}, - {"representativeMember",1814}, - {"timeOfForecast",2213}, - {"overlayTemplateNumber",1576}, + {"laplacianOperatorIsSet",1065}, + {""}, {""}, {""}, {""}, + {"overlayTemplate",1592}, + {""}, {""}, {""}, {""}, + {"JS",94}, {""}, {""}, - {"anoffsetFrequency",314}, - {"xFirst",2420}, + {"dimensionType",697}, + {"preferLocalConcepts",1720}, {""}, {""}, {""}, {""}, - {"extraDim",798}, + {"hourOfForecast",951}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"templatesLocalDir",2219}, + {"setLocalDefinition",2094}, + {"incrementOfLengths",975}, + {"levelType",1125}, + {""}, {""}, {""}, + {"derivedForecast",689}, + {""}, {""}, + {"generatingProcessTemplate",901}, + {""}, + {"freeFormData",887}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"distinctLatitudes",706}, {""}, - {"observedData",1498}, + {"pressureLevel",1741}, + {"marsRange",1250}, + {"runwayState",1909}, + {""}, {""}, {""}, {""}, {""}, + {"offsetDescriptors",1535}, + {"controlForecastCluster",583}, + {""}, {""}, {""}, {""}, + {"gridDefinition",917}, {""}, - {"northernLatitudeOfDomain",1364}, - {"forecastLeadTime",871}, + {"referenceOfLengths",1819}, {""}, - {"originalSubCentreIdentifier",1569}, + {"obstype",1516}, + {"firstDimension",858}, + {"anoffsetLast",318}, + {"rdbtimeTime",1801}, {""}, - {"boustrophedonic",374}, - {""}, {""}, {""}, - {"longitudeOfCentrePoint",1180}, + {"stepRange",2169}, {""}, {""}, - {"stepTypeForConversion",2137}, - {"preferLocalConcepts",1703}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"referenceSampleInterval",1805}, + {"rectimeDay",1809}, {""}, {""}, {""}, - {"partitionItems",1668}, - {""}, {""}, {""}, - {"marsLevelist",1237}, + {"integerScalingFactorAppliedToDirections",1003}, + {"integerScalingFactorAppliedToFrequencies",1004}, + {"Nr",200}, + {""}, {""}, {""}, {""}, + {"userDateTimeStart",2375}, + {"rdbType",1792}, + {"ccsdsRsi",394}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"generatingProcessIdentifier",900}, + {""}, {""}, + {"Ni",198}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"anoffsetFrequency",317}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"categoryType",388}, + {"global",905}, + {"localDecimalScaleFactor",1152}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"localTimeMethod",1170}, + {"parameterDiscipline",1678}, {""}, {""}, {""}, {""}, {""}, - {"ccccIdentifiers",387}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"heightLevelName",935}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"gridDefinitionSection",915}, - {""}, {""}, {""}, - {"southernLatitudeOfDomain",2097}, - {"expandedTypes",789}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"gridDefinitionDescription",914}, - {""}, - {"dayOfForecast",661}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"expver",796}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"groupSplitting",924}, + {"angleDivisor",309}, {""}, {""}, - {"anoffsetLast",315}, + {"waveDomain",2424}, {""}, {""}, {""}, - {"incrementOfLengths",970}, - {""}, - {"bufrTemplate",379}, - {""}, {""}, - {"indexTemplate",971}, + {"groupSplitting",928}, + {"monthOfForecast",1339}, {""}, {""}, - {"integerScalingFactorAppliedToDirections",997}, - {"integerScalingFactorAppliedToFrequencies",998}, - {""}, {""}, - {"selectedDay",2048}, + {"typicalDate",2325}, + {""}, + {"centreLongitudeInDegrees",411}, + {""}, {""}, {""}, + {"ensembleSize",774}, + {""}, {""}, {""}, + {"integerScaleFactor",1002}, + {"upperRange",2369}, {""}, - {"marsEndStep",1226}, + {"analysisOffsets",308}, + {""}, {""}, {""}, + {"generatingProcessIdentificationNumber",899}, {""}, {""}, {""}, {""}, {""}, {""}, - {"xLast",2421}, - {""}, {""}, - {"JS",94}, + {"validityTime",2382}, {""}, {""}, {""}, {""}, - {"latitudeOfCentrePoint",1070}, - {"representationType",1813}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"longitudinalDirectionGridLength",1209}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"conceptsMasterDir",571}, + {"lcwfvSuiteName",1105}, + {""}, {""}, {""}, {""}, + {"NT",190}, + {"parameterName",1680}, + {""}, {""}, {""}, {""}, + {"Nf",197}, + {""}, {""}, {""}, {""}, + {"localDefinition",1155}, + {"suiteName",2195}, {""}, - {"conceptsLocalDirAll",568}, - {"rdbSubtype",1774}, - {""}, {""}, - {"hourOfForecast",947}, - {"bottomLevel",373}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"scanningMode8",1950}, + {"tubeDomain",2285}, + {"localTimeForecastList",1177}, + {""}, + {"gridName",922}, {""}, {""}, {""}, {""}, {""}, - {"secondOfForecast",1960}, - {""}, {""}, - {"minuteOfForecast",1305}, - {""}, {""}, {""}, - {"subSetK",2156}, - {""}, {""}, {""}, - {"climateDateFrom",431}, + {"decimalScaleFactor",671}, + {"modelName",1332}, + {"latitudeOfCentrePoint",1076}, + {"Nassigned",193}, + {"cfName",415}, + {""}, {""}, {""}, {""}, {""}, + {"heightLevelName",939}, {""}, - {"stepTypeInternal",2138}, - {"generatingProcessIdentifier",896}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"localDay",1151}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"defaultStepUnits",675}, + {"reservedOctet",1838}, + {""}, {""}, {""}, {""}, {""}, + {"conceptsLocalDirAll",571}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, - {"satelliteIdentifier",1894}, - {"monthOfForecast",1330}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"roundedMarsLatitude",1836}, {""}, {""}, {""}, {""}, {""}, {""}, - {"marsForecastMonth",1229}, - {"zeros",2438}, + {"endOfRange",762}, + {"typeOfLevel",2303}, + {""}, + {"setDecimalPrecision",2093}, {""}, {""}, - {"zero",2437}, - {"multiplicationFactorForLatLong",1338}, - {"stretchingFactor",2143}, - {""}, {""}, {""}, - {"biFourierMakeTemplate",357}, - {""}, {""}, {""}, - {"indexingTime",975}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"generatingProcessIdentificationNumber",895}, + {"lengthDescriptors",1111}, + {""}, + {"dayOfForecast",664}, {""}, {""}, - {"userTimeEnd",2331}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"typeOfLevel",2266}, - {"expoffset",795}, + {"siteId",2110}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"localDefinitionNumber",1148}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"tablesMasterDir",2175}, + {"marsIdent",1239}, + {"oldSubtype",1557}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, + {"paramId",1670}, + {""}, {""}, + {"NL",186}, + {""}, {""}, {""}, {""}, + {"rdbtimeDate",1795}, + {""}, {""}, {""}, + {"subSetK",2191}, + {"offsetSection0",1541}, {""}, {""}, - {"referenceOfLengths",1802}, + {"secondOfForecast",1993}, {""}, {""}, - {"DyInMetres",44}, + {"minuteOfForecast",1313}, {""}, {""}, - {"DiInMetres",33}, + {"listOfScaledFrequencies",1145}, {""}, {""}, {""}, - {"centreLatitude",405}, + {"matchLandType",1267}, + {"representationType",1831}, + {"shortName",2099}, {""}, {""}, {""}, {""}, {""}, {""}, - {"levelIndicator",1118}, - {""}, - {"diffInDays",689}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"marsLevelist",1245}, {""}, {""}, {""}, - {"secondLatitude",1957}, - {""}, - {"stretchingFactorScaled",2144}, + {"marsParam",1248}, + {"iIncrement",963}, + {""}, {""}, + {"marsKeywords",1240}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"numberOfFloats",1427}, + {"boustrophedonic",377}, {""}, - {"userDateEnd",2327}, - {""}, {""}, {""}, {""}, {""}, - {"centreLongitudeInDegrees",408}, - {""}, {""}, {""}, - {"typeOfStatisticalPostProcessingOfEnsembleMembers",2276}, + {"rdbDateTime",1790}, + {"lowerRange",1219}, + {""}, {""}, + {"scaledDirections",1946}, + {"multiplicationFactorForLatLong",1348}, {""}, - {"siteElevation",2075}, + {"gridDefinitionSection",919}, + {""}, {""}, {""}, {""}, + {"bottomLevel",376}, {""}, - {"longitudeSexagesimal",1206}, + {"longitudeSexagesimal",1214}, {""}, - {"numberOfFloats",1415}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"atmosphericChemicalOrPhysicalConstituentType",318}, + {"epsPoint",778}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"radiusInMetres",1767}, + {"realPart",1803}, {""}, {""}, - {"headersOnly",934}, - {""}, {""}, {""}, {""}, - {"rectimeMinute",1794}, - {"indexingDate",974}, - {""}, - {"userDateTimeEnd",2329}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"meanSize",1288}, - {"roundedMarsLongitude",1838}, - {"conceptsLocalMarsDirAll",570}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"matchLandType",1259}, + {"ifsParam",972}, {""}, {""}, - {"roundedMarsLevelist",1837}, - {""}, {""}, {""}, - {"masterTableNumber",1254}, + {"typicalDay",2327}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, - {"typeOfStatisticalProcessing",2277}, - {""}, {""}, - {"startOfMessage",2120}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"iteratorDisableUnrotate",1037}, {""}, {""}, {""}, {""}, {""}, {""}, - {"endOfInterval",755}, - {""}, - {"LyInMetres",154}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"subSetM",2157}, - {"groupSplittingMethodUsed",925}, + {"editionNumber",731}, {""}, - {"perturbedType",1684}, - {""}, {""}, {""}, {""}, {""}, - {"datumSize",657}, + {"newSubtype",1361}, {""}, {""}, {""}, {""}, - {"secondSize",1966}, + {"longitudinalDirectionGridLength",1217}, + {""}, + {"verticalDomainTemplate",2410}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"longitudeOfGridPoints",1195}, {""}, - {"SecondLatitude",226}, - {""}, {""}, {""}, {""}, {""}, - {"typicalMinute",2286}, + {"energyNorm",770}, {""}, {""}, - {"conceptsMasterMarsDir",572}, + {"typeOfStatisticalProcessing",2316}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"sequences",2056}, + {"typeOfStatisticalPostProcessingOfEnsembleMembers",2315}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"sectionNumber",2059}, + {""}, {""}, {""}, {""}, + {"modelIdentifier",1331}, + {""}, {""}, {""}, {""}, + {"numberOfTimeSteps",1492}, + {"J",93}, + {""}, {""}, {""}, {""}, + {"matchTimeRepres",1269}, {""}, {""}, {""}, {""}, {""}, - {"listOfScaledFrequencies",1139}, + {"numberOfSection",1483}, + {""}, {""}, {""}, {""}, + {"northernLatitudeOfDomain",1374}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"bufrTemplate",382}, {""}, {""}, - {"quantile",1762}, - {"offsetFreeFormData",1520}, - {"latitudeOfCentrePointInDegrees",1071}, - {"DyInDegrees",43}, + {"defaultName",675}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"Ny",207}, {""}, {""}, - {"DiInDegrees",32}, - {""}, - {"numberOfTimeSteps",1479}, - {""}, {""}, {""}, {""}, - {"numberOfDirections",1405}, - {""}, {""}, {""}, {""}, {""}, - {"FirstLatitude",67}, + {"minuteOfReference",1316}, {""}, {""}, {""}, - {"listOfModelIdentifiers",1137}, + {"numberingOrderOfDiamonds",1508}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, - {"qfe",1752}, - {""}, {""}, {""}, {""}, - {"ensembleForecastNumbers",768}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"typeOfStatisticalProcessingForTimeRangeForReferencePeriod",2317}, {""}, {""}, {""}, - {"marsLongitude",1238}, - {""}, {""}, - {"siteLongitude",2078}, + {"rdbtimeDay",1796}, + {"headersOnly",938}, + {"defaultStepUnits",679}, + {""}, + {"selectedDay",2082}, + {"dateOfReference",656}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"overlayTemplateNumber",1593}, + {""}, + {"timeOfReference",2251}, + {""}, {""}, {""}, {""}, {""}, + {"southernLatitudeOfDomain",2131}, + {"stepTypeForConversion",2172}, {""}, {""}, - {"firstLatitude",857}, + {"Ncy",196}, {""}, - {"localLatitude",1154}, + {"numberOfSubsets",1488}, + {"secondOfForecastUsedInLocalTime",1994}, + {"clusterNumber",548}, {""}, - {"qnh",1755}, + {"minuteOfForecastUsedInLocalTime",1314}, + {""}, {""}, {""}, {""}, + {"Nuy",205}, + {""}, + {"perturbedType",1701}, + {""}, {""}, {""}, {""}, + {"numberOfFrequencies",1434}, + {""}, {""}, {""}, + {"faFieldName",845}, {""}, {""}, - {"missingDataFlag",1311}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"gridDefinitionDescription",918}, {""}, {""}, {""}, {""}, {""}, {""}, - {"numberOfSection",1470}, + {"validityDate",2381}, + {"ccccIdentifiers",390}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"latitudeOfCentrePointInDegrees",1077}, {""}, - {"clutterFilterIndicator",549}, - {""}, {""}, - {"numberOfDiamonds",1404}, + {"angleOfRotation",311}, + {""}, + {"forecastPeriod",878}, + {""}, {""}, {""}, + {"qfe",1769}, + {""}, + {"defaultParameter",676}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"orderOfSpatialDifferencing",1579}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"numberOfSubsets",1475}, - {""}, {""}, - {"firstSize",862}, - {""}, {""}, - {"longitudeOfFirstGridPoint",1185}, - {""}, {""}, {""}, - {"dx",714}, - {""}, {""}, {""}, - {"listMembersUsed",1130}, + {"standardParallel",2150}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"visibility",2414}, + {""}, {""}, {""}, {""}, + {"observedData",1515}, + {""}, {""}, {""}, {""}, + {"scaleFactorOfSecondSize",1935}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"max",1264}, + {"unitOfOffsetFromReferenceTime",2342}, {""}, {""}, {""}, {""}, {""}, - {"expandedDescriptors",783}, + {"channelNumber",428}, + {""}, {""}, {""}, {""}, + {"epsStatisticsPoint",780}, {""}, {""}, {""}, {""}, {""}, - {"J",93}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, - {"rectimeSecond",1795}, + {"forecastPeriodTo",880}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"LaR",107}, {""}, {""}, - {"unsignedIntegers",2316}, + {"numberOfLocalDefinitions",1444}, + {"waveLevType",2426}, + {"rdbSubtype",1791}, {""}, {""}, {""}, {""}, - {"numberOfFrequencies",1422}, - {"localLongitude",1157}, - {""}, - {"crraSection",624}, - {""}, {""}, {""}, - {"binaryScaleFactor",365}, - {""}, - {"diagnosticNumber",688}, + {"climatologicalRegime",436}, + {""}, {""}, {""}, {""}, + {"LoR",127}, + {"atmosphericChemicalOrPhysicalConstituentType",321}, + {""}, {""}, {""}, {""}, + {"modeNumber",1328}, + {"sequences",2090}, {""}, {""}, {""}, {""}, {""}, - {"dataValues",644}, - {"optimisationTime",1557}, - {"secondOfForecastUsedInLocalTime",1961}, - {""}, {""}, - {"minuteOfForecastUsedInLocalTime",1306}, + {"numberOfForcasts",1428}, {""}, {""}, - {"frequency",884}, + {"quantile",1779}, + {"numberOfDirections",1417}, + {""}, {""}, {""}, {""}, + {"satelliteIdentifier",1913}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"localDefinitionNumber",1156}, + {""}, {""}, {""}, {""}, + {"yearOfReference",2484}, {""}, - {"ccsdsRsi",391}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"clusterSize",546}, + {"sectionPosition",2060}, {""}, {""}, {""}, {""}, - {"orderOfSpatialDifferencing",1562}, + {"stretchingFactor",2178}, + {""}, + {"windPresent",2446}, {""}, - {"numberOfStatisticallyProcessedFieldsForLocalTime",1473}, + {"partitionItems",1685}, {""}, {""}, - {"numberOfForecastsInTube",1420}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"numberOfDiamonds",1416}, + {"numberOfStatisticallyProcessedFieldsForLocalTime",1486}, + {""}, + {"scaleFactorOfFirstSize",1924}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, + {"rectimeSecond",1812}, + {""}, {""}, {""}, {""}, {""}, + {"uerraSection",2339}, + {""}, {""}, {""}, {""}, + {"crraSection",627}, + {""}, {""}, {""}, {""}, {""}, + {"hourOfReference",954}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"oceanLevName",1518}, + {""}, {""}, {""}, {""}, + {"spectralDataRepresentationMode",2144}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"angleOfRotationInDegrees",312}, + {""}, {""}, {""}, {""}, + {"faLevelName",846}, + {""}, {""}, {""}, + {"forecastPeriodFrom",879}, + {"endOfInterval",759}, + {"stretchingFactorScaled",2179}, + {""}, {""}, {""}, {""}, + {"legNumber",1109}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"originalParameterNumber",1584}, + {""}, {""}, {""}, + {"offsetFreeFormData",1537}, {""}, {""}, - {"conceptsLocalDirECMF",569}, - {""}, {""}, {""}, {""}, {""}, - {"numberingOrderOfDiamonds",1491}, - {"powerOfTenUsedToScaleClimateWeight",1696}, - {""}, - {"typicalSecond",2288}, - {"marsRange",1242}, + {"totalNumber",2261}, {""}, - {"longitudeOfGridPoints",1187}, - {""}, {""}, {""}, - {"LcyInMetres",121}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"generatingProcessTemplateNumber",902}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"trueLengthOfLastGroup",2279}, + {"referencePeriodList",1821}, {""}, - {"LuyInMetres",150}, + {"numberOfForecastsInTube",1432}, {""}, {""}, - {"Dx",39}, - {"secondOrderFlags",1963}, - {"stepRange",2134}, - {""}, {""}, {""}, - {"rdbtimeMinute",1781}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"scaleFactorOfStandardDeviation",1937}, {""}, {""}, - {"Nr",198}, - {"periodOfTimeIntervals",1682}, + {"dewPointTemperature",690}, + {""}, + {"endOfProduct",761}, + {""}, + {"standardParallelInDegrees",2151}, {""}, {""}, {""}, - {"observablePropertyTemplate",1493}, - {"typeOfDistributionFunction",2257}, + {"diffInDays",693}, + {"scaleFactorOfStandardDeviationInTheCluster",1938}, + {""}, {""}, + {"probPoint",1747}, + {"N",171}, {""}, {""}, {""}, {""}, {""}, - {"Ny",205}, + {"tiggeSection",2235}, + {""}, {""}, {""}, + {"treatmentOfMissingData",2277}, {""}, - {"localSection",1164}, + {"createNewData",625}, {""}, {""}, {""}, - {"Ni",196}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"yDirectionGridLength",2424}, - {"numberOfForcasts",1416}, - {""}, - {"charValues",427}, - {""}, {""}, - {"earthIsOblate",716}, + {"significanceOfReferenceTime",2105}, + {""}, {""}, {""}, {""}, {""}, + {"qnh",1772}, + {""}, {""}, {""}, + {"groupLeafNodeK",926}, + {"monthOfReference",1342}, + {"climateDateFrom",434}, {""}, - {"numberOfDataMatrices",1399}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"bitMapIndicator",366}, + {"SPD",227}, {""}, {""}, {""}, {""}, - {"latitudeLastInDegrees",1067}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"referenceValue",1807}, + {"numberOfOperationalForecastTube",1455}, {""}, - {"Ncy",194}, - {"upperRange",2324}, - {""}, {""}, - {"listOfDistributionFunctionParameter",1135}, + {"missingDataFlag",1320}, + {"optimisationTime",1574}, + {"masterTableNumber",1262}, + {""}, {""}, {""}, {""}, {""}, + {"localSection",1172}, {""}, - {"typeOfEnsembleForecast",2258}, - {"numberOfDistinctSection9s",1412}, - {"observablePropertyTemplateNumber",1494}, - {""}, {""}, - {"Nuy",203}, + {"scaleFactorOfSecondFixedSurface",1934}, + {""}, {""}, {""}, {""}, {""}, + {"defaultFaFieldName",672}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"ensembleForecastNumbersList",769}, + {"levTypeName",1122}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"numberOfModels",1440}, - {""}, {""}, - {"horizontalCoordinateSupplement",940}, + {"longitudeOfFirstGridPoint",1193}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, + {"neitherPresent",1360}, + {"changingPrecision",426}, + {""}, {""}, {""}, {""}, + {"postProcessing",1712}, {""}, {""}, - {"parameterName",1663}, + {"listOfDistributionFunctionParameter",1141}, + {"indicatorOfUnitOfTimeRange",990}, {""}, {""}, - {"Adelta",13}, - {"widthOfFirstOrderValues",2384}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"suiteName",2160}, + {"scaleFactorOfFirstFixedSurface",1923}, + {""}, {""}, + {"spectralDataRepresentationType",2145}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"maximum",1274}, + {"numberOfRadials",1475}, + {"levelIndicator",1124}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"powerOfTenUsedToScaleClimateWeight",1713}, + {"computeLaplacianOperator",566}, + {"xLast",2469}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, + {"longitudeOfIcosahedronPole",1196}, {""}, {""}, - {"numberOfLocalDefinitions",1432}, + {"defaultFaLevelName",673}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, + {"secondOrderFlags",1997}, {""}, {""}, - {"indicatorOfUnitForForecastTime",981}, - {"secondDimension",1954}, + {"widthOfFirstOrderValues",2432}, {""}, {""}, {""}, - {"optimizeScaleFactor",1558}, - {"modelName",1323}, - {"longitudeOfCentrePointInDegrees",1181}, - {""}, {""}, {""}, {""}, - {"lowerRange",1211}, + {"defaultShortName",678}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"Lx",151}, + {"averagingPeriod",327}, {""}, - {"LaDInDegrees",106}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"isAuto",1005}, + {"defaultTypeOfLevel",680}, + {"clusteringMethod",551}, {""}, {""}, - {"extractSubset",829}, + {"xFirst",2468}, + {""}, {""}, {""}, {""}, {""}, + {"expoffset",799}, + {"periodOfTimeIntervals",1699}, + {""}, + {"typicalSecond",2331}, {""}, {""}, {""}, {""}, - {"biFourierTruncationType",364}, + {"stepTypeInternal",2173}, {""}, - {"floatVal",869}, + {"numberOfForecastsUsedInLocalTime",1433}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, - {"shortName",2065}, + {""}, {""}, {""}, {""}, + {"subcentreOfAnalysis",2193}, + {"Nb",194}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, + {"MS",158}, + {""}, + {"boustrophedonicOrdering",378}, + {""}, + {"molarMass",1335}, + {"typeOfDistributionFunction",2294}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"subSetJ",2190}, + {"observablePropertyTemplate",1510}, {""}, {""}, {""}, - {"internalVersion",1000}, - {"NT",188}, - {"tiggeSection",2200}, + {"methodNumber",1306}, {""}, {""}, - {"numberOfDistinctSection8s",1411}, - {""}, {""}, {""}, - {"matchTimeRepres",1261}, + {"unitOfTimeIncrement",2344}, {""}, - {"horizontalCoordinateDefinition",939}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"Lcx",118}, + {"ensembleForecastNumbers",772}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, + {"applicationIdentifier",319}, {""}, {""}, {""}, - {"numberOfMembersInCluster",1434}, - {""}, {""}, - {"productDefinition",1737}, + {"waveDirectionNumber",2423}, + {"frequency",888}, {""}, {""}, {""}, - {"Lux",147}, - {"codedValues",556}, + {"systemNumber",2203}, {""}, {""}, {""}, - {"bufrDataEncoded",376}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"computeLaplacianOperator",563}, + {"orderOfSPD",1578}, {""}, - {"gridName",918}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"Nassigned",191}, + {"iDirectionIncrement",959}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"marsModel",1247}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"iteratorDisableUnrotate",1043}, + {"pvlLocation",1768}, + {"productDefinition",1754}, + {""}, {""}, {""}, + {"clutterFilterIndicator",552}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"firstLatitude",861}, + {""}, + {"simpleThinningSkip",2107}, {""}, - {"applicationIdentifier",316}, + {"XR",270}, {""}, {""}, {""}, - {"numberOfIterations",1430}, + {"observablePropertyTemplateNumber",1511}, {""}, {""}, {""}, {""}, - {"marsExpver",1228}, + {"addressOfFileFreeSpaceInfo",301}, + {""}, {""}, + {"yDirectionGridLength",2472}, + {""}, {""}, + {"extraDim",802}, {""}, - {"energyNorm",766}, - {""}, {""}, {""}, - {"subcentreOfAnalysis",2158}, + {"zeros",2487}, + {"unsignedIntegers",2361}, {""}, - {"iDirectionIncrement",954}, + {"zero",2486}, {""}, - {"editionNumber",727}, + {"inputDataPresentIndicator",991}, {""}, - {"dataAccessors",628}, + {"DiInDegrees",32}, + {"rdbtimeSecond",1800}, {""}, - {"lengthOfMessage",1110}, - {"rdbtimeSecond",1783}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, - {"cfName",412}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"monthlyVerificationTime",1336}, - {"TAFstr",233}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, - {"sectionNumber",2025}, - {""}, {""}, {""}, {""}, - {"numberOfOperationalForecastTube",1443}, + {"expver",800}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"numberOfForecastsUsedInLocalTime",1421}, + {"marsLongitude",1246}, + {"operatingMode",1572}, {""}, - {"DxInMetres",41}, + {"siteLongitude",2112}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, - {"tablesVersion",2176}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"typeOfEnsembleMember",2259}, - {"pvlLocation",1751}, - {"yDirectionGridLengthInMetres",2425}, - {"simpleThinningSkip",2073}, - {"addressOfFileFreeSpaceInfo",298}, {""}, {""}, {""}, - {"spectralDataRepresentationType",2111}, + {"longitudeOfCentrePointInDegrees",1189}, + {""}, + {"bitmapSectionPresent",372}, {""}, {""}, {""}, {""}, - {"monthlyVerificationDate",1334}, - {""}, {""}, {""}, - {"II",88}, + {"tubeNumber",2286}, {""}, {""}, {""}, - {"spectralDataRepresentationMode",2110}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, - {"numberOfInts",1429}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"Nf",195}, + {"ensembleForecastNumbersList",773}, + {""}, {""}, {""}, {""}, + {"P",211}, + {""}, {""}, {""}, {""}, + {"typeOfRelationToReferenceDataset",2311}, {""}, {""}, {""}, - {"verificationDate",2351}, - {""}, - {"doExtractDateTime",705}, + {"changeDecimalPrecision",421}, + {"meanSize",1296}, + {"indexingTime",980}, + {"theMessage",2222}, + {""}, {""}, {""}, {""}, + {"secondDimension",1987}, {""}, {""}, - {"clusterNumber",545}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"corr3Data",605}, - {""}, - {"unitOfOffsetFromReferenceTime",2297}, - {"corr2Data",604}, - {""}, - {"simpleThinningStart",2074}, + {"FirstLatitude",67}, + {""}, {""}, {""}, {""}, + {"lengthOfProjectLocalTemplate",1118}, {""}, {""}, {""}, - {"floatValues",870}, - {""}, - {"selectedMonth",2052}, - {""}, {""}, {""}, {""}, {""}, - {"northLatitudeOfCluster",1357}, + {"indexTemplate",976}, {""}, - {"TAF",232}, - {""}, {""}, {""}, {""}, {""}, - {"stringValues",2145}, - {"createNewData",622}, - {""}, {""}, {""}, - {"channelNumber",425}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"typeOfTimeIncrement",2318}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, - {"LxInMetres",152}, + {""}, + {"centreLatitude",408}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"defaultName",671}, {""}, {""}, {""}, - {"timeIncrement",2210}, + {"numberOfDistinctSection9s",1424}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"numberOfIterations",1442}, {""}, - {"correction3Part",613}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"yDirectionGridLengthInMillimetres",2426}, - {""}, {""}, {""}, {""}, {""}, - {"southLatitudeOfCluster",2093}, - {""}, {""}, {""}, {""}, - {"eastLongitudeOfCluster",721}, + {"secondLatitude",1990}, {""}, {""}, - {"endOfRange",758}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"tableNumber",2207}, + {""}, {""}, + {"tiggeModel",2234}, {""}, - {"DxInDegrees",40}, + {"firstSize",866}, + {"localLatitude",1162}, {""}, {""}, - {"marsExperimentOffset",1227}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"levelValues",1120}, + {"numberOfDistinctSection8s",1423}, {""}, - {"g2grid",891}, + {"datumSize",660}, + {""}, {""}, {""}, + {"angleMultiplier",310}, + {"secondSize",2000}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"subSetJ",2155}, - {""}, {""}, {""}, {""}, {""}, - {"deleteExtraLocalSection",682}, - {""}, {""}, {""}, {""}, - {"isAccumulation",1004}, + {"representationMode",1830}, {""}, {""}, - {"scalingFactorForFrequencies",1943}, - {""}, {""}, {""}, - {"modeNumber",1319}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"lengthIncrementForTheGroupLengths",1106}, - {"corr1Data",603}, - {""}, - {"forecastMonth",872}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"dataValues",647}, {""}, {""}, - {"numberOfMembersInEnsemble",1435}, - {""}, {""}, {""}, - {"faFieldName",841}, - {""}, {""}, {""}, - {"levTypeName",1115}, - {""}, - {"numberOfMissing",1436}, - {"westLongitudeOfCluster",2380}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"libraryVersion",1125}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"globalDomain",902}, + {"latitudeOfGridPoints",1080}, {""}, {""}, - {"NL",184}, - {""}, {""}, {""}, {""}, {""}, - {"indexingTimeMM",978}, - {""}, - {"unitsOfFirstFixedSurface",2309}, + {"oneMillionConstant",1560}, + {"angleOfRotationOfProjection",313}, + {"unitsOfSecondFixedSurface",2355}, {""}, {""}, - {"inputExtendedDelayedDescriptorReplicationFactor",987}, - {"angleSubdivisions",311}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"tileIndex",2205}, - {""}, {""}, {""}, - {"latLonValues",1064}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"distanceFromTubeToEnsembleMean",701}, + {"NR",188}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, - {"longitudeOfStretchingPole",1197}, {""}, {""}, {""}, {""}, - {"calendarIdPresent",381}, + {"simpleThinningStart",2108}, + {""}, {""}, {""}, + {"SecondLatitude",228}, + {""}, {""}, {""}, + {"temperatureAndDewpointPresent",2218}, + {""}, {""}, + {"expandedTypes",793}, + {"PLPresent",214}, + {"referenceValue",1825}, + {""}, {""}, {""}, {""}, + {"earthIsOblate",720}, {""}, {""}, {""}, {""}, {""}, {""}, - {"climatologicalRegime",433}, + {"marsLamModel",1242}, + {"numberOfPartitions",1459}, {""}, {""}, - {"numberOfIntegers",1428}, + {"DyInDegrees",43}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"typeOfTimeIncrement",2278}, + {"binaryScaleFactor",368}, + {""}, {""}, {""}, {""}, + {"indicatorOfUnitForForecastTime",986}, + {"scanningMode",1978}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"memberNumber",1302}, + {"spectralMode",2146}, {""}, {""}, {""}, - {"parameterIndicator",1662}, + {"dayOfStartOfReferencePeriod",668}, + {""}, {""}, {""}, {""}, + {"inputDelayedDescriptorReplicationFactor",992}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, + {"localMinute",1168}, + {"typeOfPostProcessing",2307}, {""}, - {"numberOfEffectiveValues",1414}, - {"internationalDataSubCategory",1001}, - {""}, {""}, {""}, - {"totalNumber",2226}, - {""}, {""}, - {"primaryMissingValue",1727}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"longitudeOfFirstGridPointInDegrees",1186}, + {"clusterMember9",547}, + {"Adelta",13}, + {""}, {""}, {""}, {""}, + {"auxiliary",323}, {""}, {""}, {""}, {""}, {""}, - {"unitOfTimeIncrement",2299}, - {""}, {""}, - {"simpleThinningMissingRadius",2072}, + {"verificationDate",2396}, + {""}, {""}, {""}, + {"floatVal",873}, {""}, {""}, {""}, {""}, {""}, - {"sensitiveAreaDomain",2055}, + {"LaDInDegrees",106}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"longitudeOfLastGridPoint",1197}, + {"isAuto",1011}, {""}, - {"verificationMonth",2352}, - {"angleOfRotation",308}, - {"indicatorOfUnitForTimeIncrement",982}, - {"extractSubsetList",832}, - {"monthOfForecastUsedInLocalTime",1331}, - {"windVariableDirection",2409}, + {"clusterMember8",546}, {""}, - {"minuteOfReference",1308}, - {""}, {""}, {""}, - {"systemNumber",2168}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"extractedDateTimeNumberOfSubsets",834}, + {"latitudeLastInDegrees",1073}, {""}, {""}, - {"LIMITS",98}, - {""}, - {"tablesVersionLatest",2177}, + {"earthMinorAxis",723}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"isEps",1020}, {""}, - {"secondDimensionPhysicalSignificance",1956}, + {"dataRepresentation",638}, {""}, {""}, {""}, {""}, - {"baseAddress",330}, + {"thisMarsStream",2225}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"widthOfSPD",2434}, + {""}, {""}, + {"isConstant",1017}, {""}, {""}, {""}, {""}, - {"dateOfReference",653}, - {"ensembleStandardDeviation",771}, - {""}, - {"yearOfReference",2436}, - {"LcxInMetres",119}, + {"scalingFactorForFrequencies",1976}, {""}, {""}, {""}, {""}, {""}, {""}, - {"timeOfReference",2216}, + {"additionalFlagPresent",299}, + {""}, {""}, {""}, {""}, + {"scanningMode8",1983}, + {"localLongitude",1165}, {""}, {""}, - {"marsParam",1240}, - {"LuxInMetres",148}, - {"legNumber",1103}, + {"numberOfInts",1441}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"isConstant",1011}, - {""}, - {"monthlyVerificationMonth",1335}, - {"meaningOfVerticalCoordinate",1293}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"oceanLevName",1501}, - {"epsPoint",774}, - {""}, {""}, {""}, - {"faModelName",843}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"corr4Data",606}, - {""}, {""}, - {"realPart",1786}, {""}, {""}, {""}, {""}, {""}, {""}, - {"scaleFactorOfFirstSize",1904}, + {"charValues",430}, {""}, - {"calendarIdentification",382}, - {""}, - {"xDirectionGridLength",2417}, - {""}, {""}, - {"verifyingMonth",2354}, + {"localMonth",1169}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"TAFstr",235}, {""}, {""}, {""}, {""}, {""}, - {"methodNumber",1298}, - {""}, {""}, {""}, - {"numberOfModeOfDistribution",1439}, - {""}, - {"Experiment_Identifier",55}, - {""}, - {"marsClass",1221}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"numericValues",1492}, + {"marsClass",1229}, {""}, {""}, - {"numberInTheAuxiliaryArray",1371}, - {""}, {""}, {""}, {""}, - {"indicatorOfUnitOfTimeRange",984}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"productIdentifier",1740}, + {"interpretationOfNumberOfPoints",1008}, + {"marsEndStep",1234}, {""}, {""}, {""}, {""}, {""}, {""}, - {"scaleFactorOfStandardDeviation",1916}, - {"Nb",192}, + {"eastLongitudeOfCluster",725}, + {""}, {""}, {""}, + {"dataAccessors",631}, + {""}, {""}, + {"startOfMessage",2155}, {""}, - {"accumulationInterval",292}, + {"qfePresent",1770}, {""}, {""}, {""}, - {"oneConstant",1542}, + {"numberOfReservedBytes",1480}, + {"optimizeScaleFactor",1575}, + {""}, + {"parameterCode",1677}, {""}, {""}, {""}, - {"minutesAfterDataCutoff",1309}, - {"scaleFactorOfStandardDeviationInTheCluster",1917}, - {""}, {""}, {""}, {""}, - {"primaryMissingValueSubstitute",1728}, + {"totalNumberOfdimensions",2276}, + {""}, {""}, {""}, + {"secondDimensionPhysicalSignificance",1989}, + {""}, {""}, {""}, + {"thisMarsType",2226}, + {""}, {""}, {""}, + {"clusterSize",549}, + {""}, {""}, {""}, + {"conceptsLocalMarsDirAll",573}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"numberOfMissingInStatisticalProcess",1437}, + {"scanPosition",1977}, {""}, {""}, {""}, {""}, - {"clusterIdentifier",534}, + {"dataRepresentationTemplate",639}, {""}, {""}, - {"correction4Part",615}, - {""}, {""}, - {"selectedMinute",2051}, - {"correction1Part",609}, - {""}, {""}, {""}, {""}, {""}, - {"integerValues",999}, + {"ensembleStandardDeviation",775}, {""}, - {"defaultTypeOfLevel",676}, + {"totalNumberOfTubes",2272}, {""}, {""}, - {"streamOfAnalysis",2142}, + {"internalVersion",1006}, {""}, {""}, - {"addExtraLocalSection",296}, - {"missingValue",1312}, - {"defaultShortName",674}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"extraValues",802}, + {"indexingDate",979}, {""}, {""}, {""}, {""}, - {"scaleFactorOfSecondSize",1914}, + {"listOfModelIdentifiers",1143}, + {""}, + {"versionNumOfFilesFreeSpaceStorage",2401}, + {""}, {""}, {""}, {""}, {""}, + {"northLatitudeOfCluster",1367}, {""}, - {"radialAngularSpacing",1764}, - {"hourOfReference",950}, - {"windPresent",2398}, + {"diagnosticNumber",692}, {""}, - {"thresholdIndicator",2195}, + {"userTimeEnd",2376}, {""}, {""}, - {"defaultFaFieldName",668}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"globalDomain",906}, + {"angleSubdivisions",314}, + {""}, {""}, {""}, {""}, + {"secondsOfReference",2010}, {""}, - {"TIDE",234}, + {"codedValues",559}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"scaleFactorAtReferencePoint",1916}, + {"TAF",234}, {""}, {""}, {""}, {""}, {""}, - {"ifsParam",967}, - {""}, - {"scaledFrequencies",1921}, + {"roundedMarsLongitude",1856}, + {"numberOfReferencePeriodTimeRanges",1476}, + {""}, {""}, + {"totalNumberOfQuantiles",2269}, + {"gridPointPosition",923}, + {""}, {""}, {""}, {""}, {""}, + {"qnhPresent",1774}, + {""}, {""}, + {"dataRepresentationTemplateNumber",640}, {""}, {""}, - {"calendarIdentificationTemplateNumber",383}, - {"parameterCode",1660}, - {"faLevelName",842}, + {"correction1Part",612}, + {""}, {""}, {""}, {""}, {""}, + {"setCalendarId",2092}, + {"scaleFactorOfDistributionFunctionParameter",1920}, + {""}, + {"orientationOfTheGrid",1580}, {""}, {""}, {""}, - {"trueLengthOfLastGroup",2242}, + {"oneConstant",1559}, {""}, - {"inputDelayedDescriptorReplicationFactor",986}, + {"gridDefinitionTemplateNumber",920}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"southLatitudeOfCluster",2127}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"timeIncrement",2245}, + {""}, {""}, {""}, {""}, {""}, + {"roundedMarsLatitude",1854}, + {""}, {""}, {""}, + {"verticalDomainTemplateNumber",2411}, + {"floatValues",874}, + {"dataRepresentationType",641}, + {""}, + {"section9Pointer",2055}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"iScansNegatively",964}, + {""}, {""}, + {"calendarIdPresent",384}, + {"scaleFactorOfRadiusOfSphericalEarth",1933}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"representativeMember",1832}, + {"section8Pointer",2052}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"westLongitudeOfCluster",2428}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"is_uerra",1030}, - {"sizeOfOffsets",2080}, - {"minuteOfAnalysis",1303}, + {"numberOfIntegers",1440}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, - {"latitudeOfStretchingPole",1084}, - {"nameOfFirstFixedSurface",1346}, - {"monthOfReference",1333}, + {"horizontalCoordinateDefinition",943}, + {""}, {""}, {""}, {""}, {""}, + {"expandedDescriptors",787}, + {"tiggeCentre",2231}, + {"biFourierMakeTemplate",360}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"numberOfTimeIncrementsOfForecastsUsedInLocalTime",1490}, {""}, {""}, {""}, {""}, - {"generatingProcessTemplateNumber",898}, + {"corr4Data",609}, + {"tablesVersion",2211}, + {""}, {""}, + {"decimalPrecision",670}, + {"localTimeMethod",1178}, + {""}, {""}, {""}, + {"roundedMarsLevelist",1855}, + {""}, {""}, + {"ITN",92}, + {""}, {""}, {""}, + {"correction3Part",616}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"unitsOfSecondFixedSurface",2310}, + {"monthOfForecastUsedInLocalTime",1340}, + {"g2grid",895}, + {"heightOrPressureOfLevel",940}, + {""}, {""}, + {"offsetAfterPadding",1526}, + {"horizontalCoordinateSupplement",944}, {""}, - {"expandedNames",784}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"dayOfAnalysis",659}, + {"tileClassification",2239}, {""}, - {"typeOfFirstFixedSurface",2260}, - {""}, {""}, {""}, - {"referenceValueError",1808}, + {"nosigPresent",1375}, + {"meaningOfVerticalCoordinate",1301}, {""}, - {"defaultFaLevelName",669}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"tubeNumber",2249}, - {"mAngleMultiplier",1218}, + {"totalNumberOfFrequencies",2266}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"defaultSequence",673}, - {""}, {""}, {""}, {""}, - {"short_name",2068}, - {""}, {""}, - {"_T",286}, - {""}, {""}, {""}, {""}, {""}, - {"normAtInitialTime",1355}, - {"sectionPosition",2026}, - {""}, {""}, {""}, {""}, {""}, {"CDFstr",22}, - {"verticalVisibility",2367}, - {"numberOfVerticalPoints",1490}, + {"stringValues",2180}, + {""}, {""}, {""}, {""}, {""}, + {"userDateEnd",2372}, + {"dayOfReference",667}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"radialAngularSpacing",1781}, + {""}, {""}, + {"parameterIndicator",1679}, + {"iScansPositively",965}, + {"falseNorthing",850}, + {""}, {""}, {""}, {""}, + {"totalNumberOfDirections",2264}, {""}, {""}, - {"standardParallel",2116}, + {"targetCompressionRatio",2214}, + {""}, + {"siteElevation",2109}, + {""}, + {"centuryOfReference",413}, {""}, {""}, {""}, {""}, - {"scaleFactorOfFirstFixedSurface",1903}, + {"groupSplittingMethodUsed",929}, + {""}, + {"expandedNames",788}, {""}, - {"boustrophedonicOrdering",375}, + {"longitudeOfStretchingPole",1205}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"indicatorOfUnitForTimeRange",988}, + {""}, {""}, {""}, {""}, + {"functionCode",891}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, + {"calendarIdentification",385}, + {"offsetAfterLocalSection",1525}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"dateOfForecastRun",652}, + {""}, {""}, {""}, {""}, {""}, + {"productDefinitionTemplateNumber",1755}, + {"latitudeOfStretchingPole",1090}, + {"latLonValues",1070}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"lengthOfIndexTemplate",1109}, - {""}, - {"dewPointTemperature",686}, - {"startStepInHours",2123}, - {"scanningModeForOneDiamond",1951}, + {"_T",288}, {""}, {""}, - {"numberOfVerticalCoordinateValues",1488}, - {""}, - {"is_aerosol",1022}, + {"is_uerra",1036}, + {""}, {""}, {""}, {""}, + {"verticalCoordinate",2408}, {""}, - {"numberInTheGridCoordinateList",1372}, + {"conceptsMasterDir",574}, {""}, {""}, {""}, {""}, {""}, {""}, - {"tableNumber",2172}, - {""}, - {"_endStep",289}, - {"section_09",2035}, + {"isAccumulation",1010}, {""}, - {"earthMinorAxisInMetres",720}, + {"spatialProcessing",2142}, + {"CDF",21}, + {""}, {""}, {""}, {""}, {""}, + {"md5Section9",1289}, {""}, {""}, {""}, - {"postAuxiliary",1693}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"NP",187}, + {""}, {""}, {""}, {""}, {""}, + {"perturbationNumber",1700}, {""}, {""}, - {"cnmc_isac",551}, + {"subCentre",2181}, + {""}, + {"corr3Data",608}, + {"_endStep",291}, + {"conceptsLocalDirECMF",572}, + {""}, {""}, + {"numberOfRemaininChars",1478}, + {"section0Pointer",2013}, + {"md5Section8",1288}, {""}, {""}, - {"xDirectionGridLengthInMetres",2418}, + {"levelValues",1126}, {""}, {""}, - {"offsetAfterPadding",1509}, + {"numberOfMembersInCluster",1446}, {""}, - {"tileClassification",2204}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"longitudeFirstInDegrees",1177}, + {"tableReference",2208}, + {"_anoffset",290}, {""}, - {"numberOfVerticalGridDescriptors",1489}, - {""}, {""}, {""}, - {"numberOfTimeIncrementsOfForecastsUsedInLocalTime",1477}, - {""}, {""}, - {"memberNumber",1294}, - {"parameterCategory",1659}, - {"iDirectionIncrementInDegrees",957}, - {"scaleValuesBy",1919}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"defaultFaModelName",670}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"extractSubset",833}, {""}, - {"numberOfRadials",1463}, + {"tableCode",2206}, + {"corr2Data",607}, + {""}, {""}, + {"productDefinitionTemplateNumberInternal",1756}, {""}, {""}, - {"forecastPeriod",874}, - {"local_use",1174}, + {"correction2Part",614}, {""}, - {"standardParallelInDegrees",2117}, - {"extraLocalSectionPresent",801}, + {"calendarIdentificationTemplateNumber",386}, + {"sizeOfOffsets",2114}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"cfVarName",418}, + {""}, {""}, {""}, + {"monthlyVerificationTime",1346}, + {"userDateTimeEnd",2374}, + {""}, {""}, {""}, + {"_TS",289}, {""}, - {"defaultParameter",672}, - {""}, {""}, {""}, {""}, {""}, - {"section_8",2045}, - {""}, {""}, {""}, {""}, - {"gts_header",931}, - {"SPD",225}, - {"numberOfDistributionFunctionParameters",1413}, + {"biFourierTruncationType",367}, {""}, {""}, - {"setCalendarId",2058}, - {""}, {""}, {""}, {""}, - {"CDF",21}, + {"faModelName",847}, + {"offsetAfterCentreLocalSection",1523}, {""}, {""}, {""}, - {"monthOfModelVersion",1332}, - {""}, - {"secondOfModelVersion",1962}, - {"indexTemplateNumber",972}, + {"II",88}, + {"numberInTheGridCoordinateList",1383}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"tablesMasterDir",2210}, + {"indicatorOfUnitForTimeRangeForReferencePeriod",989}, + {"tigge_name",2237}, {""}, - {"minuteOfModelVersion",1307}, - {""}, {""}, - {"targetCompressionRatio",2179}, - {"extractSubsetIntervalEnd",830}, - {"tiggeCentre",2196}, - {"cnmc_cmcc",550}, - {""}, {""}, {""}, - {"Azi",15}, + {"parameterCategory",1676}, + {""}, {""}, {""}, {""}, + {"md5Data",1275}, + {"orientationOfTheGridInDegrees",1581}, {""}, {""}, {""}, {""}, {""}, - {"numberOfOctetsExtraDescriptors",1442}, - {""}, {""}, - {"is_chemical",1024}, - {"angleOfRotationInDegrees",309}, - {"extractSubsetIntervalStart",831}, - {"neitherPresent",1350}, - {"verticalCoordinate",2363}, - {""}, - {"grib3divider",907}, - {"offsetAfterLocalSection",1508}, + {"numberOfModels",1452}, {""}, - {"grib2divider",906}, - {"extraLocalSectionNumber",800}, - {""}, {""}, {""}, - {"numberOfForecastsInEnsemble",1418}, - {"subCentre",2146}, - {"clusterMember10",536}, - {""}, {""}, {""}, - {"probPoint",1730}, - {""}, {""}, - {"doExtractSubsets",706}, - {""}, - {"tablesVersionLatestOfficial",2178}, + {"monthOfStartOfReferencePeriod",1343}, + {"is_aerosol",1028}, {""}, - {"offsetSection10",1526}, + {"productIdentifier",1757}, {""}, {""}, {""}, {""}, - {"efas_model",728}, - {"XRInMetres",269}, - {""}, {""}, {""}, - {"tableCode",2171}, - {""}, {""}, {""}, - {"coordinateIndexNumber",600}, - {"tigge_name",2202}, + {"short_name",2102}, {""}, - {"is_localtime",1027}, + {"identificationNumber",967}, + {"section_8",2079}, + {"marsForecastMonth",1237}, {""}, - {"offsetAfterCentreLocalSection",1506}, - {"xDirectionGridLengthInMillimetres",2419}, - {"jdSelected",1047}, - {"_TS",287}, + {"minutesAfterDataCutoff",1318}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"plusOneinOrdersOfSPD",1708}, + {"longitudeFirstInDegrees",1185}, + {"efas_model",732}, + {"lengthIncrementForTheGroupLengths",1112}, + {""}, {""}, {""}, + {"correction4Part",618}, + {"cnmc_isac",554}, + {"localDefNumberOne",1153}, + {"streamOfAnalysis",2177}, + {"clusterIdentifier",537}, + {"indexTemplateNumber",977}, + {""}, + {"accumulationInterval",294}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"longitudeOfFirstGridPointInDegrees",1194}, + {""}, {""}, {""}, {""}, + {"startStepInHours",2158}, + {"tablesVersionLatest",2212}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"observationGeneratingProcessIdentifier",1513}, {""}, {""}, - {"forecastPeriodTo",876}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"identificationNumber",962}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"originalParameterNumber",1567}, - {""}, {""}, {""}, - {"section_08",2034}, - {"constituentType",578}, + {"iDirectionIncrementInDegrees",962}, + {""}, + {"gts_header",935}, {""}, {""}, {""}, - {"julianDay",1048}, - {""}, {""}, {""}, {""}, {""}, - {"_anoffset",288}, + {"baseAddress",333}, {""}, {""}, - {"significanceOfReferenceTime",2071}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"numberOfLevelValues",1431}, + {"localSectionPresent",1173}, + {""}, {""}, {""}, + {"lengthOfMessage",1116}, {""}, {""}, {""}, {""}, - {"missingValueManagement",1313}, - {"observationGeneratingProcessIdentifier",1496}, - {""}, - {"inputDataPresentIndicator",985}, - {""}, - {"epsStatisticsPoint",776}, - {"dataRepresentation",635}, - {"parameterNumber",1664}, - {"iterationNumber",1036}, - {""}, {""}, - {"dimensionNumber",692}, + {"corr1Data",606}, + {"local_use",1182}, {""}, {""}, {""}, - {"constituentTypeName",579}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"SecondOfModelVersion",227}, - {""}, {""}, - {"partitionNumber",1669}, + {"totalNumberOfRepetitions",2270}, {""}, - {"truncateDegrees",2243}, - {"scaleFactorOfSecondFixedSurface",1913}, + {"DiInMetres",33}, + {"totalNumberOfTileAttributePairs",2271}, + {""}, {""}, {""}, {""}, {""}, + {"minuteOfAnalysis",1311}, + {""}, {""}, + {"indicatorOfUnitForTimeIncrement",987}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"modelVersionTime",1325}, + {"LyInMetres",154}, + {""}, {""}, {""}, {""}, + {"typeOfEnsembleForecast",2295}, {""}, {""}, {""}, {""}, {""}, {""}, - {"directionNumber",695}, - {"functionCode",887}, + {"NAT",174}, + {""}, {""}, + {"NFSP",181}, + {"cnmc_cmcc",553}, {""}, {""}, {""}, {""}, {""}, {""}, - {"grib1divider",903}, + {"typeOfCompressionUsed",2293}, + {"parameterNumber",1681}, + {"iterationNumber",1042}, + {""}, {""}, + {"dimensionNumber",696}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"bitmapPresent",371}, {""}, {""}, - {"referenceReflectivityForEchoTop",1804}, + {"defaultFaModelName",674}, + {"internationalDataSubCategory",1007}, {""}, {""}, - {"coordinate3Flag",592}, + {"latitudeOfFirstGridPoint",1078}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"partitionNumber",1686}, {""}, {""}, - {"treatmentOfMissingData",2240}, + {"sensitiveAreaDomain",2089}, + {""}, {""}, {""}, {""}, + {"radiusInMetres",1784}, + {""}, {""}, {""}, {""}, + {"endOfFileAddress",757}, {""}, {""}, {""}, - {"numberOfAnalysis",1375}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"versionNumberOfGribLocalTables",2405}, {""}, - {"forecastPeriodFrom",875}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, - {"isotopeIdentificationNumber",1034}, - {"verticalDomainTemplateNumber",2366}, + {"directionNumber",699}, {""}, {""}, - {"verticalCoordinateDefinition",2364}, - {""}, - {"dataRepresentationType",638}, + {"originOfPostProcessing",1583}, + {""}, {""}, + {"typeOfPreProcessing",2308}, + {"monthlyVerificationDate",1344}, + {"thresholdIndicator",2230}, + {"unitsOfFirstFixedSurface",2354}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"modelVersionDate",1324}, {""}, - {"temperatureAndDewpointPresent",2183}, - {""}, {""}, {""}, {""}, {""}, - {"timeDomainTemplate",2208}, - {""}, {""}, {""}, - {"aerosolbinnumber",301}, + {"verticalCoordinateDefinition",2409}, {""}, - {"driverInformationBlockAddress",709}, - {"satelliteNumber",1895}, - {""}, {""}, {""}, {""}, {""}, - {"endOfFileAddress",753}, + {"is_chemical",1030}, {""}, - {"LoVInDegrees",129}, + {"md5Structure",1290}, + {""}, {""}, {""}, {""}, + {"totalNumberOfForecastProbabilities",2265}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"complexPacking",563}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"standardParallelInMicrodegrees",2152}, + {"libraryVersion",1131}, {""}, - {"originatingCentre",1570}, - {""}, {""}, {""}, - {"climateDateTo",432}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"extractAreaWestLongitude",808}, - {"typicalDateTime",2283}, + {"numberOfDataMatrices",1411}, + {"numberOfVerticalPoints",1503}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, - {"groupLeafNodeK",922}, - {""}, {""}, {""}, {""}, {""}, - {"isSatelliteType",1020}, {""}, {""}, {""}, - {"scaleFactorOfDistributionFunctionParameter",1900}, + {"yearOfStartOfReferencePeriod",2485}, {""}, {""}, {""}, - {"jdLocal",1046}, - {"LoV",128}, + {"is_localtime",1033}, {""}, {""}, {""}, {""}, {""}, - {"dataRepresentationTemplate",636}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"dateOfForecastRun",649}, - {""}, {""}, {""}, {""}, - {"groupWidth",926}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"longitudeOfStretchingPoleInDegrees",1198}, - {""}, {""}, - {"biFourierSubTruncationType",363}, + {"classOfAnalysis",433}, {""}, - {"changeDecimalPrecision",418}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"clusteringMethod",548}, + {"satelliteNumber",1914}, + {"NDSP",179}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"gridDefinitionTemplateNumber",916}, - {""}, {""}, {""}, {""}, - {"postProcessing",1695}, - {""}, {""}, {""}, {""}, - {"projString",1744}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"averagingPeriod",324}, - {"monthOfAnalysis",1328}, - {"LaR",107}, - {""}, {""}, {""}, - {"classOfAnalysis",430}, {""}, - {"MonthOfModelVersion",170}, - {"dataRepresentationTemplateNumber",637}, - {""}, {""}, {""}, - {"MinuteOfModelVersion",159}, - {""}, {""}, {""}, - {"LoR",127}, - {"dirty_statistics",698}, - {"directionScalingFactor",697}, + {"numberOfVerticalCoordinateValues",1501}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"DyInMetres",44}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"hourOfStartOfReferencePeriod",955}, {""}, - {"Nx",204}, + {"section_09",2069}, {""}, - {"thisMarsClass",2189}, - {"typeOfCompressionUsed",2256}, - {""}, {""}, {""}, {""}, {""}, - {"changingPrecision",423}, - {""}, {""}, {""}, - {"standardParallelInMicrodegrees",2118}, - {""}, {""}, {""}, - {"projectLocalTemplate",1746}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"sfc_levtype",2062}, - {""}, {""}, {""}, {""}, {""}, - {"numberOfValues",1487}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"gts_ddhh00",930}, - {""}, {""}, {""}, - {"bitmapSectionPresent",369}, - {""}, {""}, {""}, {""}, {""}, - {"indicatorOfUnitForTimeRange",983}, - {""}, {""}, {""}, - {"Ncx",193}, + {"extractedDateTimeNumberOfSubsets",838}, {""}, {""}, - {"offsetAfterBitmap",1505}, - {"numberOfReservedBytes",1467}, - {""}, {""}, {""}, {""}, - {"XR",268}, + {"bufrDataEncoded",379}, + {""}, + {"numberOfPoints",1460}, {""}, - {"Nux",202}, - {"centralClusterDefinition",397}, - {"endOfProduct",757}, + {"md5TimeDomainSection",1291}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"expandedAbbreviations",778}, - {"orientationOfTheGrid",1563}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"predefined_grid",1701}, - {"groupWidths",927}, + {"monthOfAnalysis",1337}, + {""}, + {"longitudeOfLastGridPointInDegrees",1198}, + {""}, + {"numberOfVerticalGridDescriptors",1502}, + {""}, {""}, {""}, + {"dx",718}, + {"dataCategory",632}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"julianForecastDay",1049}, - {"consensusCount",574}, - {"centralLongitude",398}, + {"dayOfAnalysis",662}, + {"max",1272}, + {""}, {""}, + {"section_08",2068}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, - {"latitudeOfStretchingPoleInDegrees",1085}, {""}, - {"is_chemical_distfn",1025}, + {"extractSubsetList",836}, + {""}, + {"forecastProbabilityNumber",881}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, - {"iScansNegatively",959}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"laplacianScalingFactor",1060}, - {"originatingClass",1572}, - {""}, {""}, {""}, - {"dateOfAnalysis",647}, + {"listMembersUsed",1136}, + {"tablesVersionLatestOfficial",2213}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"numberOfMembersInEnsemble",1447}, {""}, {""}, - {"yearOfAnalysis",2430}, + {"centuryOfReferenceTimeOfData",414}, {""}, {""}, {""}, - {"cfVarName",415}, - {"isHindcast",1016}, + {"numberOfChars",1398}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"scaledValueOfSecondSize",1966}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"Lar2InDegrees",112}, - {"timeOfAnalysis",2212}, - {""}, {""}, {""}, - {"centreLatitudeInDegrees",406}, + {"numberOfMissing",1448}, {""}, {""}, - {"nameOfSecondFixedSurface",1347}, + {"scanningModeForOneDiamond",1984}, + {""}, + {"isotopeIdentificationNumber",1040}, + {""}, + {"scaleFactorOfLowerLimit",1928}, {""}, {""}, - {"jIncrement",1042}, + {"bitMapIndicator",369}, {""}, - {"N",171}, + {"implementationDateOfModelCycle",974}, + {"Lx",151}, + {""}, {""}, + {"md5DataSection",1276}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"xDirectionGridLength",2465}, {""}, - {"Lor2InDegrees",146}, - {"crraLocalVersion",623}, + {"numberOfLevelValues",1443}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, + {"isEPS",1019}, + {""}, {""}, + {"LcyInMetres",121}, {""}, {""}, {""}, - {"typeOfAnalysis",2253}, + {"dateOfAnalysis",650}, {""}, {""}, {""}, - {"northernLatitudeOfClusterDomain",1363}, - {""}, - {"orderOfSPD",1561}, - {"secondLatitudeInDegrees",1958}, - {"is_aerosol_optical",1023}, + {"biFourierCoefficients",359}, + {""}, {""}, + {"LuyInMetres",150}, + {"nameOfFirstFixedSurface",1356}, + {""}, {""}, + {"timeOfAnalysis",2247}, {""}, - {"easternLongitudeOfDomain",724}, + {"normAtInitialTime",1365}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"jdSelected",1053}, + {"Lcx",118}, + {""}, {""}, + {"timeRangeIndicator",2252}, {""}, {""}, {""}, {""}, - {"typeOfSecondFixedSurface",2274}, + {"windVariableDirection",2457}, + {""}, {""}, + {"Lux",147}, + {""}, {""}, + {"M",155}, {""}, {""}, {""}, {""}, - {"unitsBias",2302}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"operationalForecastCluster",1556}, + {"originalParameterTableNumber",1585}, + {"operationalForecastCluster",1573}, + {""}, {""}, {""}, + {"scaledValueOfFirstSize",1955}, + {""}, {""}, {""}, {""}, {""}, + {"defaultSequence",677}, + {"extraDimensionPresent",803}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, + {"numberOfModeOfDistribution",1451}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"earthMajorAxis",717}, + {"totalNumberOfIterations",2268}, + {"localDefNumberTwo",1154}, {""}, {""}, {""}, {""}, {""}, {""}, - {"startingAzimuth",2125}, + {"northernLatitudeOfClusterDomain",1373}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"projString",1761}, {""}, - {"messageLength",1295}, - {"typicalCentury",2281}, - {""}, {""}, {""}, {""}, - {"dataCategory",629}, + {"totalInitialConditions",2259}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"yDirectionGridLengthInMetres",2473}, + {"numberOfAnalysis",1387}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"coordinate4Flag",595}, - {""}, {""}, {""}, - {"coordinate1Flag",587}, - {""}, {""}, - {"firstMonthUsedToBuildClimateMonth2",860}, - {"scaleFactorOfDistanceFromEnsembleMean",1899}, + {"jdLocal",1052}, + {""}, {""}, {""}, {""}, + {"Dx",39}, + {"kurt",1060}, {""}, - {"totalInitialConditions",2224}, - {"selectedFcIndex",2049}, + {"lengthOfIndexTemplate",1115}, + {""}, {""}, {""}, {""}, + {"is_aerosol_optical",1029}, + {"lsdate_bug",1223}, {""}, - {"lsdate_bug",1215}, + {"scaledValueOfStandardDeviation",1968}, {""}, {""}, {""}, {""}, - {"projectionCenterFlag",1748}, + {"numberOfMissingInStatisticalProcess",1449}, {""}, - {"primaryBitmap",1726}, - {""}, {""}, {""}, - {"lstime_bug",1216}, + {"numberOfCharacters",1397}, {""}, - {"additionalFlagPresent",297}, + {"lstime_bug",1224}, + {"centralClusterDefinition",400}, {""}, - {"southernLatitudeOfClusterDomain",2096}, + {"scaledValueOfStandardDeviationInTheCluster",1969}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, + {"southernLatitudeOfClusterDomain",2130}, + {""}, {""}, {""}, {""}, {""}, + {"DxInDegrees",40}, + {""}, {""}, {""}, + {"originatingCentre",1587}, + {""}, {""}, + {"coordinate1Flag",590}, + {""}, {""}, {""}, + {"directionScalingFactor",701}, + {""}, {""}, + {"kurtosis",1061}, + {"yearOfAnalysis",2478}, + {"listOfContributingSpectralBands",1140}, + {"modelVersionTime",1334}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"originatorLocalTemplate",1573}, + {"projectLocalTemplate",1763}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"scaledValueOfSecondFixedSurface",1965}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"typeOfAnalysis",2290}, + {"sfc_levtype",2096}, + {""}, {""}, {""}, + {"typeOfFirstFixedSurface",2297}, + {"numberOfOctectsForNumberOfPoints",1453}, + {""}, + {"isCorrection",1018}, + {""}, {""}, {""}, {""}, + {"stepRangeInHours",2170}, {""}, - {"secondsOfReference",1976}, + {"grib3divider",911}, + {""}, {""}, {""}, {""}, {""}, + {"hourOfAnalysis",949}, + {"offsetSection10",1543}, {""}, - {"sampleSizeOfModelClimate",1892}, + {"numberOfCategories",1396}, + {""}, {""}, + {"groupInternalNodeK",925}, + {""}, {""}, {""}, + {"unitsBias",2347}, + {""}, {""}, {""}, + {"scaledFrequencies",1947}, + {"grib2divider",910}, + {""}, {""}, {""}, + {"verticalVisibility",2412}, {""}, {""}, {""}, - {"secondDimensionCoordinateValueDefinition",1955}, - {"identificationOfProject",964}, + {"rectimeMinute",1811}, + {"numberOfEffectiveValues",1426}, + {"numberOfDataPoints",1412}, + {"scaledValueOfFirstFixedSurface",1954}, + {""}, + {"yDirectionGridLengthInMillimetres",2474}, {""}, {""}, {""}, {""}, - {"westernLongitudeOfDomain",2383}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"rectimeHour",1793}, - {""}, {""}, - {"projectionCentreFlag",1749}, - {"epsContinous",773}, + {"gridCoordinate",916}, {""}, {""}, {""}, {""}, {""}, - {"expandedCodes",779}, - {"centralLongitudeInDegrees",399}, - {"averaging2Flag",323}, - {""}, {""}, {""}, - {"La2InDegrees",104}, - {"typeOfIntervalForFirstAndSecondSize",2264}, - {"param_value_min",1657}, + {"preProcessingParameter",1715}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"matchAerosolPacking",1266}, + {"timeRangeIndicatorFromStepRange",2253}, + {"coordinate3OfLastGridPoint",597}, {""}, - {"centuryOfReference",410}, + {"coordinateIndexNumber",603}, {""}, {""}, {""}, {""}, {""}, {""}, - {"Lar1InDegrees",110}, - {"implementationDateOfModelCycle",969}, + {"referenceReflectivityForEchoTop",1822}, + {""}, {""}, {""}, {""}, + {"gridDescriptionSectionPresent",921}, + {"dirty_statistics",702}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"section4Padding",2035}, {""}, {""}, - {"Lo2InDegrees",126}, + {"truncateDegrees",2280}, + {"skewness",2118}, + {"coordinate3Flag",595}, + {"numberOfRows",1481}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"unitsConversionOffset",2348}, + {""}, {""}, {""}, + {"simpleThinningMissingRadius",2106}, {""}, {""}, {""}, {""}, {""}, {""}, - {"md5Data",1267}, - {"dayOfEndOfOverallTimeInterval",660}, - {"typeOfSizeInterval",2275}, + {"laplacianScalingFactor",1066}, + {""}, {""}, {""}, + {"driverInformationBlockAddress",713}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"selectedMonth",2086}, {""}, - {"Lor1InDegrees",144}, + {"keySat",1058}, + {"forecastMonth",876}, + {"latitudeOfStretchingPoleInDegrees",1091}, + {"localNumberOfObservations",1170}, + {""}, {""}, {""}, + {"md5Product",1279}, + {""}, + {"codedNumberOfFirstOrderPackedValues",557}, + {""}, {""}, {""}, {""}, {""}, + {"unknown",2356}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, + {"numberOfForecastsInCluster",1429}, + {""}, {""}, {""}, + {"latitudeOfSouthernPole",1088}, {""}, {""}, {""}, {""}, - {"numberOfDataValues",1402}, - {"hourOfAnalysis",945}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"matrixOfValues",1263}, - {"instrumentType",994}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"isEPS",1013}, - {""}, {""}, - {"longitudeOfIcosahedronPole",1188}, - {""}, {""}, - {"NAT",174}, + {"referenceOfWidths",1820}, + {""}, {""}, {""}, + {"sampleSizeOfReferencePeriod",1911}, {""}, {""}, - {"localHour",1153}, - {""}, - {"secondaryMissingValue",1973}, + {"centralLongitude",401}, + {""}, {""}, {""}, + {"grib1divider",907}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"numberOfDistinctSection6s",1409}, + {"is_chemical_distfn",1031}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"modelVersionDate",1333}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"crraLocalVersion",626}, {""}, {""}, {""}, {""}, - {"tableReference",2173}, - {"typeOfAuxiliaryInformation",2254}, - {"widthOfSPD",2386}, - {""}, {""}, - {"perturbationNumber",1683}, - {"southEastLatitudeOfVerficationArea",2090}, - {""}, {""}, - {"doExtractArea",704}, - {"typicalHour",2285}, - {"firstMonthUsedToBuildClimateMonth1",859}, - {""}, {""}, - {"localDefNumberTwo",1146}, + {"predefined_grid",1718}, + {""}, {""}, {""}, {""}, {""}, + {"numberOfPackedValues",1456}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"listMembersMissing",1132}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"epsStatisticsContinous",779}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"nameOfSecondFixedSurface",1357}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, + {"identificationOfProject",969}, + {""}, {""}, {""}, {""}, {""}, + {"verificationMonth",2397}, + {"LoVInDegrees",129}, + {""}, {""}, {""}, + {"default_max_val",681}, + {"dayOfEndOfOverallTimeInterval",663}, + {""}, {""}, {""}, {""}, + {"originatingClass",1589}, + {""}, {""}, {""}, + {"primaryBitmap",1743}, {""}, - {"numberOfDistinctSection3s",1406}, - {"numberOfChars",1386}, + {"skew",2117}, {""}, {""}, {""}, - {"maxLevelValue",1265}, - {""}, {""}, - {"attributeOfTile",319}, + {"param_value_min",1674}, + {""}, {""}, {""}, {""}, {""}, + {"longitudeOfFirstDiamondCentreLine",1191}, + {"longitudeOfFirstDiamondCenterLine",1190}, + {"upperThreshold",2370}, + {""}, + {"numberOfDistributionFunctionParameters",1425}, + {"section3Padding",2030}, + {""}, + {"distanceFromTubeToEnsembleMean",705}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"longitudeOfFirstDiamondCentreLineInDegrees",1192}, + {""}, + {"projectionCenterFlag",1765}, + {"integerValues",1005}, {""}, {""}, - {"numberOfPartitions",1447}, + {"coordinate2Flag",593}, + {""}, {""}, {""}, + {"LIMITS",98}, + {"section2Padding",2024}, + {"missingValue",1321}, {""}, {""}, {""}, {""}, {""}, {""}, - {"md5Section9",1281}, - {"productDefinitionTemplateNumber",1738}, + {"totalLength",2260}, + {"versionNumOfRootGroupSymbolTableEntry",2402}, {""}, {""}, {""}, {""}, - {"typeOfIntervalForFirstAndSecondWavelength",2265}, - {""}, {""}, {""}, - {"secondaryBitmap",1968}, - {""}, {""}, - {"dayOfReference",664}, + {"PVPresent",216}, + {"legBaseTime",1108}, + {""}, {""}, {""}, {""}, + {"LoV",128}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"quantileValue",1763}, + {"typicalMinute",2329}, + {"numericValues",1509}, + {"numberOfForecastsInTheCluster",1431}, + {""}, {""}, {""}, {""}, + {"keyData",1056}, + {"g1conceptsMasterDir",894}, + {"rangeBinSpacing",1789}, + {""}, {""}, {""}, {""}, + {"longitudeOfStretchingPoleInDegrees",1206}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"XRInMetres",271}, + {"significanceOfReferenceDateAndTime",2104}, + {""}, {""}, + {"coordinate4OfLastGridPoint",600}, + {""}, {""}, {""}, {""}, {""}, + {"messageLength",1303}, {""}, - {"kurt",1054}, + {"easternLongitudeOfDomain",728}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"orientationOfTheGridInDegrees",1564}, + {"extraValues",806}, + {""}, {""}, {""}, + {"coordinate4Flag",598}, + {"tigge_short_name",2238}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"averaging1Flag",322}, + {"consensusCount",577}, {""}, {""}, {""}, - {"La1InDegrees",102}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"tigge_short_name",2203}, - {""}, {""}, - {"endOfMessage",756}, + {"isHindcast",1022}, + {"minutesAfterReferenceTimeOfDataCutoff",1319}, + {"projectionCentreFlag",1766}, {""}, {""}, {""}, {""}, - {"Lo1InDegrees",124}, + {"verifyingMonth",2399}, {""}, {""}, - {"n3",1341}, - {"projectLocalTemplateNumber",1747}, - {"probContinous",1729}, + {"longitudeOfNorthWestCornerOfArea",1199}, + {"latitudeOfFirstGridPointInDegrees",1079}, + {"Nx",206}, {""}, {""}, - {"halfByte",932}, - {"n2",1340}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"kurtosis",1055}, - {"correction2Part",611}, - {"productDefinitionTemplateNumberInternal",1739}, - {""}, {""}, - {"skewness",2084}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"WMO",261}, - {""}, {""}, {""}, - {"constantFieldHalfByte",577}, + {"Azi",15}, + {"halfByte",936}, + {"latitudeOfCentralPointInClusterDomain",1075}, + {"scaleFactorOfPrimeMeridianOffset",1932}, {""}, {""}, - {"md5Section8",1280}, - {"sp3",2100}, + {"julianDay",1054}, {""}, {""}, {""}, {""}, {""}, - {"sp2",2099}, + {"Yo",283}, {""}, {""}, {""}, {""}, - {"spare3",2106}, - {""}, {""}, {""}, - {"sphericalHarmonics",2114}, + {"section2Present",2026}, {""}, - {"spare2",2105}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"section6",2008}, + {"groupWidth",930}, + {"productionStatusOfProcessedData",1759}, + {"originatorLocalTemplate",1590}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"unknown",2311}, - {"keySat",1052}, + {"Yp",284}, + {"section1Padding",2021}, {""}, {""}, {""}, {""}, - {"keyData",1050}, + {"subSetM",2192}, {""}, {""}, - {"extraDimensionPresent",799}, - {"skew",2083}, + {"typeOfSecondFixedSurface",2313}, + {"scaleFactorOfDistanceFromEnsembleMean",1919}, + {"julianForecastDay",1055}, + {"extraLocalSectionPresent",805}, {""}, - {"extremeClockwiseWindDirection",835}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"numberOfCharacters",1385}, + {"lowerThreshold",1220}, + {"numberOfOctetsExtraDescriptors",1454}, + {"twoOrdersOfSPD",2288}, {""}, {""}, - {"legBaseTime",1102}, + {"timeCoordinateDefinition",2242}, {""}, {""}, - {"dummy2",712}, + {"Ncx",195}, {""}, - {"isCorrection",1012}, - {"secondsOfAnalysis",1975}, - {"biFourierCoefficients",356}, - {"secondaryBitmapPresent",1969}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"scanPosition",1944}, + {"secondsOfAnalysis",2009}, + {""}, + {"centralLongitudeInDegrees",402}, {""}, {""}, {""}, - {"falseNorthing",846}, + {"rdbtimeMinute",1798}, {""}, {""}, - {"yearOfCentury",2431}, - {"qnhPresent",1757}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"componentIndex",561}, - {""}, - {"listMembersMissing",1126}, - {"default_max_val",677}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"complexPacking",560}, + {"Nux",204}, {""}, {""}, {""}, - {"centuryOfAnalysis",409}, + {"packingType",1597}, + {"extractAreaWestLongitude",812}, + {"projectLocalTemplateNumber",1764}, {""}, {""}, {""}, - {"missing_values",1316}, + {"averaging2Flag",326}, {""}, {""}, - {"extendedFlag",797}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"correction3",612}, + {"inputProcessIdentifier",996}, + {""}, {""}, {""}, {""}, + {"constituentType",581}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"gts_ddhh00",934}, {""}, - {"marsType2",1250}, + {"typeOfCalendar",2292}, + {"timeDomainTemplate",2243}, + {""}, + {"typeOfSizeInterval",2314}, {""}, {""}, - {"legBaseDate",1101}, - {"fileConsistencyFlags",852}, - {"numberOfRemaininChars",1465}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"biFourierResolutionParameterN",363}, {""}, - {"sectionLengthLimitForEnsembles",2023}, - {"scaledValueOfFirstSize",1928}, - {""}, {""}, {""}, - {"table2Version",2170}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"secondaryBitmaps",1970}, + {"fileConsistencyFlags",856}, {""}, {""}, - {"versionOfModelClimate",2362}, + {"extraLocalSectionNumber",804}, + {"aerosolbinnumber",304}, + {""}, {""}, {""}, + {"constituentTypeName",582}, + {""}, {""}, {""}, + {"rectimeHour",1810}, {""}, - {"scaleFactorOfLowerLimit",1908}, - {"DjInMetres",37}, + {"climateDateTo",435}, + {""}, {""}, {""}, + {"groupLengths",927}, + {"latitudeOfIcosahedronPole",1081}, {""}, {""}, - {"section9Pointer",2021}, + {"legBaseDate",1107}, {""}, {""}, {""}, {""}, - {"rdbtimeHour",1780}, + {"isSatelliteType",1026}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"marsExpver",1236}, {""}, - {"coordinate1Start",588}, - {""}, {""}, - {"qfePresent",1753}, + {"expandedCodes",783}, + {""}, {""}, {""}, {""}, {""}, + {"secondaryBitmap",2002}, {""}, - {"predefined_grid_values",1702}, + {"secondDimensionCoordinateValueDefinition",1988}, {""}, - {"md5Structure",1282}, - {"formatVersionMajorNumber",881}, - {""}, {""}, {""}, {""}, {""}, - {"typeOfPostProcessing",2270}, - {"widthOfLengths",2385}, - {"lengthOfProjectLocalTemplate",1112}, + {"groupWidths",931}, + {"biFourierSubTruncationType",366}, + {"offsetBSection9",1530}, + {"section10Pointer",2016}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"westernLongitudeOfDomain",2431}, + {""}, {""}, {""}, {""}, + {"BufrTemplate",19}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"longitudeOfSubSatellitePoint",1207}, + {"jIncrement",1048}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"sectionLengthLimitForEnsembles",2057}, + {""}, + {"instrumentType",1000}, + {"longitudeOfSubSatellitePointInDegrees",1208}, + {"typeOfIntervalForFirstAndSecondSize",2301}, {""}, {""}, - {"numberOfCategories",1384}, + {"numberOfDistinctSection4s",1419}, + {"localHour",1161}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"selectedYear",2088}, + {"epsContinous",777}, + {""}, {""}, {""}, {""}, {""}, + {"secondaryBitmapPresent",2003}, {""}, {""}, {""}, {""}, - {"scaledValueOfStandardDeviation",1940}, - {"selectStepTemplateInstant",2046}, + {"deleteExtraLocalSection",686}, + {"addExtraLocalSection",298}, + {"localYear",1180}, + {""}, {""}, {""}, + {"startOfRange",2156}, + {""}, + {"averaging1Flag",325}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"numberOfRows",1468}, - {"scaledValueOfStandardDeviationInTheCluster",1941}, - {"iScansPositively",960}, {""}, - {"gridCoordinate",912}, + {"listOfEnsembleForecastNumbers",1142}, {""}, - {"longitudeOfFirstDiamondCentreLine",1183}, - {"longitudeOfFirstDiamondCenterLine",1182}, + {"biFourierResolutionSubSetParameterN",365}, + {""}, {""}, {""}, + {"radiusOfCentralCluster",1785}, + {"Lar2InDegrees",112}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"offsetBeforeData",1532}, {""}, - {"expandedOriginalCodes",785}, + {"tileIndex",2240}, {""}, {""}, - {"expandedOriginalWidths",788}, - {""}, - {"southEastLatitudeOfLPOArea",2089}, - {""}, - {"secondaryBitmapsCount",1971}, - {""}, - {"centralLongitudeInMicrodegrees",400}, - {"md5DataSection",1268}, + {"parametersVersion",1684}, {""}, - {"longitudeOfFirstDiamondCentreLineInDegrees",1184}, - {"typeOfHorizontalLine",2263}, - {""}, {""}, {""}, {""}, {""}, - {"DELETE",24}, + {"marsExperimentOffset",1235}, + {"Lor2InDegrees",146}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"paleontologicalOffset",1668}, {""}, {""}, {""}, {""}, - {"nameECMF",1344}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"BufrTemplate",19}, - {"numberOfForecastsInCluster",1417}, + {"listOfParametersUsedForClustering",1144}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, + {"extractSubsetIntervalEnd",834}, {""}, {""}, - {"reserved3",1818}, - {"timeRangeIndicator",2217}, + {"numberOfForecastsInEnsemble",1430}, + {""}, + {"widthOfLengths",2433}, {""}, {""}, - {"extractDateTimeYearStart",828}, - {"scaledValueOfSecondSize",1938}, - {"reserved2",1817}, - {""}, {""}, {""}, {""}, {""}, - {"section8Pointer",2018}, - {"angleOfRotationOfProjection",310}, - {"latitudeOfGridPoints",1074}, + {"centuryOfAnalysis",412}, + {""}, + {"qualityControl",1776}, {""}, {""}, {""}, {""}, {""}, {""}, - {"upperThreshold",2325}, - {"section0Pointer",1979}, - {""}, {""}, {""}, - {"keyMore",1051}, - {""}, {""}, - {"localDefNumberOne",1145}, + {"extractSubsetIntervalStart",835}, + {"directionOfVariation",700}, + {""}, + {"percentileValue",1697}, {""}, {""}, {""}, {""}, - {"nosigPresent",1365}, - {"versionNumOfFilesFreeSpaceStorage",2356}, - {"thisExperimentVersionNumber",2188}, + {"attributeOfTile",322}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"La2",103}, - {"expandedOriginalScales",787}, - {"Lar2",111}, - {"interpretationOfNumberOfPoints",1002}, + {"numberOfDistinctSection6s",1421}, {""}, - {"secondaryBitMap",1967}, - {"numberOfDistinctSection7s",1410}, - {""}, {""}, {""}, - {"numberOfDistinctSection4s",1407}, - {""}, {""}, {""}, {""}, - {"Lo2",125}, + {"typicalDateTime",2326}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"primaryMissingValue",1744}, + {"resolutionAndComponentFlags",1842}, {""}, - {"Lor2",145}, - {"Latin2",116}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"unitsECMF",2306}, + {"mAngleMultiplier",1226}, + {""}, + {"centreLatitudeInDegrees",409}, {""}, {""}, - {"sp1",2098}, + {"numberOfValues",1500}, + {"secondOfModelVersion",1995}, {""}, {""}, - {"listOfContributingSpectralBands",1134}, + {"minuteOfModelVersion",1315}, + {"La2InDegrees",104}, + {"typeOfOriginalFieldValues",2305}, {""}, {""}, {""}, - {"listOfEnsembleForecastNumbers",1136}, + {"numberOfComponents",1406}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"referenceValueError",1826}, {""}, - {"level_value_list",1121}, + {"secondLatitudeInDegrees",1991}, + {"Lo2InDegrees",126}, {""}, - {"spare1",2104}, - {""}, {""}, {""}, - {"lowerThreshold",1212}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"timeCoordinateDefinition",2207}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"DjInDegrees",36}, + {"typeOfIntervalForFirstAndSecondWavelength",2302}, + {""}, {""}, {""}, {""}, {""}, + {"LxInMetres",152}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"Lar1InDegrees",110}, {""}, {""}, - {"dummy1",711}, + {"scaledValueOfDistributionFunctionParameter",1951}, + {"conceptsMasterMarsDir",575}, + {""}, {""}, {""}, {""}, {""}, + {"numberOfDistinctSection3s",1418}, + {""}, {""}, {""}, {""}, + {"Lor1InDegrees",144}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"startOfHeaders",2154}, {""}, - {"X2",266}, - {""}, {""}, - {"packingType",1580}, - {"shapeOfVerificationArea",2064}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"section1",1980}, + {"SecondOfModelVersion",229}, + {"probContinous",1746}, + {"postAuxiliary",1710}, + {""}, + {"reservedNeedNotBePresent",1837}, {""}, {""}, {""}, - {"scaledValueOfFirstFixedSurface",1927}, + {"typeOfHorizontalLine",2300}, + {"typicalHour",2328}, {""}, {""}, {""}, {""}, - {"secondaryMissingValueSubstitute",1974}, - {"totalNumberOfdimensions",2239}, + {"secondaryBitmaps",2004}, + {"sphericalHarmonics",2148}, + {"local_padding",1181}, + {""}, {""}, {""}, {""}, {""}, + {"stepForClustering",2166}, {""}, {""}, {""}, {""}, - {"centreForTable2",404}, + {"predefined_grid_values",1719}, + {"scaledValueOfRadiusOfSphericalEarth",1964}, + {""}, {""}, + {"typicalYear",2333}, {""}, - {"md5TimeDomainSection",1283}, - {"endDayTrend3",736}, + {"waveFrequencyNumber",2425}, + {""}, {""}, {""}, {""}, + {"spare4",2141}, + {"primaryMissingValueSubstitute",1745}, + {""}, {""}, {""}, {""}, {""}, + {"coordinate1Start",591}, + {""}, {""}, {""}, {""}, + {"earthMinorAxisInMetres",724}, + {""}, {""}, + {"resolutionAndComponentFlags8",1849}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"heightOrPressureOfLevel",936}, + {"doExtractDateTime",709}, {""}, - {"Model_Identifier",168}, + {"extremeClockwiseWindDirection",839}, + {"scaleFactorOfAdditionalParameterForReferencePeriod",1917}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"thisMarsClass",2224}, + {""}, {""}, + {"secondaryBitmapsCount",2005}, + {""}, {""}, {""}, {""}, + {"La1InDegrees",102}, {""}, - {"decimalPrecision",666}, + {"boot_edition",375}, + {""}, {""}, {""}, {""}, {""}, + {"section4",2033}, {""}, {""}, {""}, {""}, {""}, {""}, - {"offsetBSection9",1513}, - {""}, {""}, - {"marsType1",1249}, - {""}, {""}, - {"expandBy",777}, + {"Lo1InDegrees",124}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"uerraLocalVersion",2338}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"lengthOfOriginatorLocalTemplate",1117}, + {"yCoordinateOfSubSatellitePoint",2471}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, - {"startOfHeaders",2119}, - {""}, {""}, {""}, {""}, - {"bufrdcExpandedDescriptors",380}, + {""}, + {"numberOfDistinctSection5s",1420}, {""}, {""}, - {"cloudsTitle3",524}, - {""}, {""}, {""}, - {"qualityControl",1759}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"numberOfForecastsInTheCluster",1419}, - {""}, {""}, {""}, - {"ITN",92}, + {"monthOfModelVersion",1341}, {""}, - {"latitudeOfCentralPointInClusterDomain",1069}, + {"level_value_list",1127}, {""}, - {"totalNumberOfTubes",2237}, - {""}, {""}, {""}, {""}, {""}, - {"expandedOriginalReferences",786}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"lengthOfHeaders",1114}, {""}, {""}, {""}, {""}, - {"extractDateTimeHourStart",815}, - {"coordinate3OfLastGridPoint",594}, - {""}, {""}, - {"totalNumberOfQuantiles",2234}, + {"DxInMetres",41}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"Yo",281}, + {"rdbtimeHour",1797}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"numberInTheAuxiliaryArray",1382}, + {""}, {""}, {""}, + {"NV",192}, {""}, {""}, {""}, {""}, {""}, - {"epsStatisticsContinous",775}, - {"numberIncludedInAverage",1373}, + {"constantFieldHalfByte",580}, + {""}, + {"rdbtimeYear",1802}, {""}, {""}, {""}, - {"stepRangeInHours",2135}, - {"sectionLengthLimitForProbability",2024}, - {""}, {""}, - {"referenceOfWidths",1803}, - {""}, {""}, - {"Yp",282}, + {"numberOfLogicals",1445}, + {"inputExtendedDelayedDescriptorReplicationFactor",993}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"scaleFactorOfLengthOfSemiMinorAxis",1927}, + {""}, {""}, {""}, + {"frequencyNumber",889}, {""}, {""}, - {"flagForAnyFurtherInformation",864}, + {"marsGrid",1238}, {""}, - {"windSpeedTrend3",2402}, - {""}, - {"rangeBinSpacing",1772}, + {"offsetAfterBitmap",1522}, + {""}, {""}, {""}, + {"LLCOSP",99}, {""}, {""}, {""}, - {"windSpeedTrend2",2401}, + {"totalNumberOfDataValuesMissingInStatisticalProcess",2263}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"windVariableDirectionTrend3",2412}, + {"numberOfDistinctSection7s",1422}, {""}, - {"reserved1",1816}, - {"windVariableDirectionTrend2",2411}, + {"tiggeLocalVersion",2233}, {""}, {""}, {""}, - {"longitudeOfLastGridPoint",1189}, - {""}, - {"numberOfColumns",1393}, - {""}, - {"typeOfOriginalFieldValues",2268}, - {""}, - {"totalLength",2225}, - {""}, - {"section10Length",1981}, - {""}, - {"stepUnits",2139}, + {"lengthOfTimeRange",1119}, + {""}, {""}, {""}, + {"startingAzimuth",2160}, {""}, {""}, - {"offsetBeforeData",1515}, + {"typeOfEnsembleMember",2296}, {""}, {""}, - {"bitmapPresent",368}, - {""}, - {"totalNumberOfDirections",2229}, - {""}, - {"selectedHour",2050}, - {""}, - {"windDirectionTrend3",2391}, - {""}, - {"selectStepTemplateInterval",2047}, + {"versionOfModelClimate",2407}, {""}, {""}, - {"La1",101}, - {"windDirectionTrend2",2390}, - {"Lar1",109}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"shortNameECMF",2100}, + {""}, {""}, {""}, {""}, + {"variationOfVisibilityDirection",2385}, + {""}, {""}, {""}, {""}, {""}, + {"variationOfVisibilityDirectionAngle",2386}, + {"formatVersionMajorNumber",885}, {""}, {""}, {""}, - {"Lo1",123}, + {"masterTablesVersionNumber",1263}, {""}, - {"Lor1",143}, - {"Latin1",114}, - {""}, {""}, {""}, {""}, {""}, - {"totalNumberOfFrequencies",2231}, + {"numberOfColumns",1405}, + {"section4Pointer",2036}, + {""}, {""}, {""}, + {"expandedAbbreviations",782}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"flagForIrregularGridCoordinateList",865}, - {"spatialProcessing",2108}, + {"firstOrderValues",865}, {""}, {""}, - {"boot_edition",372}, - {""}, {""}, {""}, - {"timeRangeIndicatorFromStepRange",2218}, - {""}, {""}, {""}, - {"windUnits",2404}, - {"centuryOfReferenceTimeOfData",411}, + {"backgroundProcess",331}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, + {"Experiment_Identifier",55}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"GTSstr",79}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"clusterMember6",541}, - {""}, - {"typicalMonth",2287}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"offsetSection6",1532}, - {""}, - {"stepInHours",2133}, - {""}, - {"bufrHeaderCentre",377}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"accuracyMultipliedByFactor",294}, {""}, {""}, {""}, {""}, {""}, - {"X1",264}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"lengthOfHeaders",1108}, - {""}, {""}, - {"localSectionPresent",1165}, - {"shapeOfTheEarth",2063}, - {"parametersVersion",1667}, + {"yearOfCentury",2479}, + {"LcxInMetres",119}, + {""}, {""}, {""}, + {"typeOfAuxiliaryInformation",2291}, + {"selectedMinute",2085}, {""}, - {"clusterMember3",538}, - {"scaledValueOfSecondFixedSurface",1937}, - {""}, {""}, {""}, {""}, - {"clusterMember2",537}, - {""}, {""}, {""}, {""}, - {"offsetSection3",1529}, - {"selectedYear",2054}, + {"compressedData",565}, + {"missing_values",1325}, {""}, {""}, - {"scaleFactorOfRadiusOfSphericalEarth",1912}, - {""}, - {"offsetSection2",1528}, - {""}, - {"correction1",608}, + {"LuxInMetres",148}, {""}, {""}, - {"endMinuteTrend3",747}, - {"gridDescriptionSectionPresent",917}, - {"windVariableDirectionTrend1",2410}, - {""}, - {"localYear",1172}, - {""}, - {"endMinuteTrend2",746}, - {"reservedSection3",1822}, - {""}, {""}, {""}, {""}, {""}, - {"southEastLongitudeOfVerficationArea",2092}, + {"secondOrderValuesDifferentWidths",1999}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"sampleSizeOfModelClimate",1910}, + {"typeOfWavePeriodInterval",2322}, {""}, {""}, {""}, {""}, {""}, {""}, - {"typicalYear",2290}, - {""}, - {"marsStream1",1246}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, - {"modelErrorType",1321}, + {"deleteCalendarId",685}, + {""}, {""}, + {"GTS",78}, {""}, - {"runwaySideCodeState3",1889}, - {"numberOfLogicals",1433}, - {""}, {""}, {""}, {""}, - {"runwaySideCodeState2",1888}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"versionNumberOfGribLocalTables",2360}, + {"offsetSection4",1547}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"qnhAPresent",1773}, + {""}, {""}, + {"variationOfVisibility",2384}, + {""}, {""}, {""}, + {"section6",2042}, {""}, {""}, {""}, {""}, {""}, - {"groupInternalNodeK",921}, - {"probabilityType",1732}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"masterTablesVersionNumberLatest",1264}, + {""}, {""}, {""}, {""}, {""}, + {"lengthOfTimeRangeForReferencePeriod",1120}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"yCoordinateOfOriginOfSectorImage",2470}, + {""}, {""}, + {"reducedGrid",1813}, + {"section6Pointer",2044}, + {""}, {""}, + {"coordinate2Start",594}, + {"n3",1351}, + {""}, {""}, {""}, + {"distinctLongitudes",707}, + {""}, + {"numberOfBits",1388}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"typicalCentury",2324}, + {""}, {""}, + {"monthlyVerificationMonth",1345}, + {"inputOriginatingCentre",994}, + {""}, {""}, {""}, + {"shapeOfVerificationArea",2098}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"sectionLengthLimitForProbability",2058}, {""}, {""}, {""}, {""}, - {"pressureUnits",1725}, + {"mars_labeling",1259}, {""}, - {"local_padding",1173}, + {"sp3",2134}, {""}, {""}, {""}, {""}, - {"percentileValue",1680}, - {"METARstr",157}, - {""}, {""}, {""}, - {"resolutionAndComponentFlags",1824}, + {"n2",1350}, + {""}, {""}, {""}, {""}, + {"xDirectionGridLengthInMetres",2466}, + {"spare3",2140}, {""}, {""}, {""}, {""}, - {"probabilityTypeName",1733}, + {"deletePV",688}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"gribDataQualityChecks",912}, {""}, {""}, - {"typeOfCalendar",2255}, + {"section3Pointer",2031}, {""}, {""}, {""}, - {"scaledValueOfDistributionFunctionParameter",1924}, + {"scaleFactorOfWaveDirections",1942}, + {"numberOfTimeRange",1491}, + {""}, {""}, + {"numberOfWaveFrequencies",1506}, {""}, {""}, {""}, - {"grib2LocalSectionPresent",905}, + {"windGust",2441}, {""}, - {"scaleFactorAtReferencePoint",1897}, + {"localFlagLatestVersion",1160}, + {"scaleFactorOfWaveDirectionSequenceParameter",1941}, + {"sp2",2133}, + {"marsStream1",1254}, {""}, {""}, {""}, - {"spare4",2107}, - {""}, {""}, {""}, {""}, {""}, - {"frequencyNumber",885}, - {"scaleFactorOfLengthOfSemiMinorAxis",1907}, + {"section2Pointer",2025}, + {""}, {""}, {""}, {""}, + {"numberOfDataValues",1414}, + {"spare2",2139}, {""}, - {"endOfHeadersMarker",754}, - {""}, {""}, {""}, {""}, {""}, - {"azimuthalWidth",326}, - {"windSpeedTrend1",2400}, + {"originatorLocalTemplateNumber",1591}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"scaleFactorOfWaveFrequencies",1943}, {""}, {""}, - {"section9Length",2020}, + {"shapeOfTheEarth",2097}, + {""}, {""}, + {"longitudeOfCentralPointInClusterDomain",1187}, + {""}, + {"correction3",615}, {""}, {""}, {""}, {""}, - {"NV",190}, - {"latitudeWhereDxAndDyAreSpecified",1094}, + {"spatialSmoothingOfProduct",2143}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"selectedFcIndex",2083}, + {"swapScanningLat",2198}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"swapScanningLon",2199}, + {""}, {""}, {""}, {""}, {""}, + {"correction1",611}, + {""}, + {"basicAngleOfTheInitialProductionDomain",338}, + {"flagForIrregularGridCoordinateList",869}, + {""}, + {"quantileValue",1780}, {""}, {""}, {""}, {""}, - {"runwayDepositState3",1849}, - {""}, {""}, - {"stepForClustering",2131}, + {"La2",103}, + {""}, + {"Lar2",111}, {""}, {""}, - {"runwayDepositState2",1848}, + {"selectStepTemplateInstant",2080}, {""}, {""}, {""}, - {"paleontologicalOffset",1651}, - {"latitudeWhereDxAndDyAreSpecifiedInDegrees",1095}, - {""}, {""}, - {"numberInMixedCoordinateDefinition",1370}, + {"timeDomainTemplateNumber",2244}, {""}, {""}, {""}, - {"section7",2012}, - {"jDirectionIncrement",1038}, + {"monthOfEndOfOverallTimeInterval",1338}, + {"latitudeLongitudeValues",1074}, + {"Lo2",125}, {""}, - {"longitudeOfNorthWestCornerOfArea",1191}, + {"Lor2",145}, + {"Latin2",116}, {""}, {""}, - {"scanningMode6",1948}, - {"grib2LocalSectionNumber",904}, - {"section4",1999}, - {""}, {""}, {""}, - {"unitsConversionOffset",2303}, + {"firstDimensionCoordinateValueDefinition",859}, {""}, - {"windDirectionTrend1",2389}, + {"secondOrderOfDifferentWidth",1998}, + {"latitudeOfSouthernPoleInDegrees",1089}, {""}, {""}, {""}, {""}, - {"monthOfEndOfOverallTimeInterval",1329}, + {"biFourierResolutionParameterM",362}, + {""}, {""}, {""}, {""}, {""}, + {"scaleFactorOfSecondWavelength",1936}, {""}, - {"swapScanningLat",2163}, + {"indicatorOfTypeOfLevel",985}, + {""}, {""}, + {"section10Length",2015}, + {""}, {""}, + {"table2Version",2205}, + {""}, {""}, + {"jDirectionIncrement",1044}, + {"xDirectionGridLengthInMillimetres",2467}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"correction4",617}, {""}, - {"tiggeLAMName",2197}, - {"distinctLongitudes",703}, - {"yearOfEndOfOverallTimeInterval",2432}, - {"coordinate2Flag",590}, + {"section5Pointer",2040}, + {""}, {""}, {""}, {""}, {""}, + {"section9Length",2054}, + {""}, {""}, + {"doSimpleThinning",711}, + {""}, {""}, + {"offsetSection6",1549}, {""}, {""}, {""}, - {"swapScanningLon",2164}, - {""}, {""}, {""}, {""}, - {"inputOriginatingCentre",988}, - {""}, - {"groupLengths",923}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"coordinate4OfLastGridPoint",597}, + {"bufrHeaderCentre",380}, + {""}, {""}, {""}, + {"section1Pointer",2022}, {""}, {""}, - {"lengthOfOriginatorLocalTemplate",1111}, + {"windSpeedTrend4",2451}, + {"numberOfRepresentativeMember",1479}, + {""}, {""}, + {"section8Length",2051}, {""}, - {"rdbtimeMonth",1782}, + {"typeOfGrid",2299}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"productionStatusOfProcessedData",1742}, - {""}, - {"NR",186}, + {"DjInDegrees",36}, {""}, {""}, {""}, {""}, - {"conceptsDir1",566}, - {""}, {""}, - {"normAtFinalTime",1354}, - {"section8Length",2017}, + {"unitsConversionScaleFactor",2349}, + {"extendedFlag",801}, {""}, {""}, {""}, {""}, {""}, - {"correction4",614}, + {"latitudeOfNorthWestCornerOfArea",1084}, + {"southEastLatitudeOfVerficationArea",2124}, + {""}, {""}, + {"missingValuesPresent",1324}, + {""}, + {"frequencyScalingFactor",890}, + {"scaleValuesBy",1945}, + {"expandedOriginalCodes",789}, {""}, {""}, - {"radiusOfCentralCluster",1768}, - {"section0Length",1978}, + {"expandedOriginalWidths",792}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"marsStream2",1255}, {""}, - {"subDefinitions2",2148}, + {"tiggeLAMName",2232}, + {"numberOfCoordinatesValues",1409}, {""}, {""}, - {"windVariableDirectionTrend4",2413}, + {"default_min_val",682}, {""}, {""}, {""}, - {"firstDimensionCoordinateValueDefinition",855}, + {"indexedStorageInternalNodeK",978}, + {"section7Pointer",2048}, + {""}, + {"unpackedSubsetPrecision",2359}, + {"md5Section6",1286}, + {"scaleFactorOfWaveFrequencySequenceParameter",1944}, + {""}, {""}, {""}, {""}, + {"secondOfEndOfOverallTimeInterval",1992}, {""}, {""}, - {"extractDateTimeYearEnd",826}, - {"totalNumberOfTileAttributePairs",2236}, - {"doSimpleThinning",707}, - {"latitudeOfFirstGridPoint",1072}, + {"minuteOfEndOfOverallTimeInterval",1312}, {""}, {""}, {""}, {""}, - {"unpackedError",2313}, - {""}, {""}, {""}, - {"endDayTrend1",734}, + {"biFourierResolutionSubSetParameterM",364}, + {""}, {""}, {""}, {""}, {""}, + {"reserved3",1836}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, - {"unitsConversionScaleFactor",2304}, - {""}, - {"clusterMember1",535}, {""}, {""}, {""}, {""}, - {"nameLegacyECMF",1345}, + {"dummy2",716}, {""}, - {"numberOfRepresentativeMember",1466}, + {"offsetBeforePL",1533}, {""}, {""}, - {"directionOfVariation",696}, - {"offsetSection1",1525}, + {"yearOfEndOfOverallTimeInterval",2480}, {""}, {""}, {""}, {""}, {""}, - {"resolutionAndComponentFlags8",1831}, - {""}, {""}, {""}, - {"diffInHours",690}, - {"endMinuteTrend1",745}, - {"coordinateFlag2",599}, + {"correction2",613}, + {""}, {""}, {""}, {""}, + {"expandedOriginalScales",791}, + {"numberOfWaveDirections",1505}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"offsetSection3",1546}, + {"marsType2",1258}, {""}, - {"numberOfBits",1376}, + {"numberOfDataBinsAlongRadials",1410}, + {"reserved2",1835}, {""}, - {"rdbtimeYear",1785}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"minutesAfterReferenceTimeOfDataCutoff",1310}, + {"NC",176}, {""}, {""}, - {"section2Present",1992}, - {""}, {""}, {""}, - {"cloudsTitle1",514}, + {"DiGiven",31}, + {""}, + {"sp1",2132}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"dayOfTheYearDate",669}, + {""}, + {"spare1",2138}, + {"rootGroupObjectHeaderAddress",1851}, + {""}, {""}, {""}, {""}, {""}, + {"hourOfEndOfOverallTimeInterval",950}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"section5",2038}, + {""}, + {"expandedOriginalReferences",790}, + {"scaledValueOfLowerLimit",1959}, + {"offsetSection2",1545}, {""}, {""}, {""}, - {"numberOfOctectsForNumberOfPoints",1441}, - {"observationType",1497}, - {"gribDataQualityChecks",908}, - {""}, {""}, {""}, {""}, - {"frequencyScalingFactor",886}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"unstructuredGrid",2362}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"numberOfCodedValues",1402}, {""}, {""}, {""}, {""}, - {"runwaySideCodeState1",1887}, - {"latitudeLongitudeValues",1068}, + {"centreForTable2",407}, {""}, {""}, {""}, - {"section10Pointer",1982}, + {"definitionFilesVersion",684}, {""}, {""}, {""}, - {"matchAerosolPacking",1258}, - {""}, {""}, {""}, - {"totalNumberOfForecastProbabilities",2230}, - {""}, {""}, {""}, {""}, - {"significanceOfReferenceDateAndTime",2070}, - {""}, {""}, {""}, {""}, - {"hourOfEndOfOverallTimeInterval",946}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"localExtensionPadding",1150}, + {"localTablesVersion",1174}, {""}, {""}, {""}, {""}, - {"masterTablesVersionNumber",1255}, - {"packingError",1579}, - {"startOfRange",2121}, - {"totalNumberOfDataValuesMissingInStatisticalProcess",2228}, - {"numberOfClusters",1389}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"P",209}, + {"numberOfParallelsBetweenAPoleAndTheEquator",1457}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"section1",2014}, + {""}, + {"southEastLatitudeOfLPOArea",2123}, + {"La1",101}, + {"unstructuredGridType",2364}, + {"Lar1",109}, {""}, {""}, {""}, {""}, - {"marsKeywords1",1233}, - {""}, {""}, - {"numberOfComponents",1394}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"totalNumberOfValuesInUnpackedSubset",2273}, {""}, - {"numberOfPoints",1448}, + {"endOfMessage",760}, + {"YR",279}, {""}, {""}, {""}, - {"latitudeOfSouthernPole",1082}, - {"g1conceptsMasterDir",890}, - {""}, {""}, {""}, {""}, {""}, - {"scaledValueOfDistanceFromEnsembleMean",1923}, - {""}, {""}, - {"mars_labeling",1251}, - {""}, {""}, {""}, {""}, {""}, - {"section3Flags",1994}, - {"spaceUnitFlag",2101}, + {"latitudinalDirectionGridLength",1104}, + {"Lo1",123}, + {"stepInHours",2168}, + {"Lor1",143}, + {"Latin1",114}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"totalNumberOfIterations",2233}, - {"runwayDepositState1",1847}, + {"bitsPerValue",373}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"numberOfClusters",1401}, + {"cloudsTitle3",527}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, - {"reservedNeedNotBePresent",1819}, - {""}, {""}, {""}, {""}, - {"section_10",2037}, - {""}, {""}, {""}, {""}, {""}, - {"deleteCalendarId",681}, {""}, {""}, {""}, {""}, {""}, - {"timeDomainTemplateNumber",2209}, - {"backgroundProcess",328}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"extractDateTimeHourEnd",813}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"variationOfVisibility",2339}, - {""}, {""}, - {"endDayTrend4",737}, - {"ijDirectionIncrementGiven",968}, + {"tiggeSuiteID",2236}, + {"windDirectionTrend4",2440}, {""}, {""}, {""}, - {"Ensemble_Identifier",51}, + {"section0Length",2012}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"conceptsDir1",569}, {""}, {""}, {""}, - {"secondOfEndOfOverallTimeInterval",1959}, - {""}, {""}, - {"minuteOfEndOfOverallTimeInterval",1304}, - {"latitudeOfIcosahedronPole",1075}, + {"cloudsTitle1",517}, {""}, {""}, {""}, {""}, {""}, {""}, - {"numberOfDataBinsAlongRadials",1398}, - {""}, {""}, - {"preBitmapValues",1697}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"subDefinitions1",2147}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, - {"marsGrid",1230}, - {""}, {""}, - {"indicatorOfTypeOfLevel",980}, - {""}, {""}, {""}, {""}, - {"endStepInHours",760}, - {"twoOrdersOfSPD",2251}, - {"cloudsTitle4",529}, - {"subLocalDefinition2",2150}, - {""}, - {"longitudeOfLastGridPointInDegrees",1190}, + {"clusterMember10",539}, + {""}, {""}, {""}, {""}, {""}, + {"keyMore",1057}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"diffInHours",694}, + {"rootTablesDir",1853}, + {"md5Section5",1285}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"is_ocean3d_param",1029}, - {""}, - {"variationOfVisibilityDirection",2340}, - {"is_ocean2d_param",1028}, + {"scaleFactorOfFirstWavelength",1925}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"identificationOfOriginatingGeneratingCentre",968}, {""}, {""}, {""}, - {"section1Flags",1985}, - {"variationOfVisibilityDirectionAngle",2341}, - {""}, {""}, {""}, {""}, - {"default_min_val",678}, + {"stepHumanReadable",2167}, {""}, - {"coordinateFlag1",598}, + {"earthMajorAxis",721}, + {"md5Section7",1287}, + {""}, {""}, + {"longitudeOfTangencyPoint",1209}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"section7",2046}, {""}, {""}, {""}, {""}, - {"numberOfDataPoints",1400}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"cloudsTitle4",532}, {""}, - {"coordinate2Start",591}, - {"secondaryBitmapsSize",1972}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"windSpeedTrend4",2403}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"swapScanningX",2165}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"numberOfCoordinatesValues",1397}, + {"endDayTrend3",740}, + {"matrixOfValues",1271}, {""}, {""}, {""}, {""}, {""}, - {"section3Padding",1996}, - {""}, {""}, - {"section2Padding",1990}, - {""}, {""}, {""}, {""}, - {"param_value_max",1656}, - {"compressedData",562}, + {"tablesLocalDir",2209}, {""}, {""}, {""}, {""}, {""}, - {"windDirectionTrend4",2392}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"numberOfPackedValues",1444}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"masterTablesVersionNumberLatest",1256}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"windGust",2393}, - {""}, {""}, - {"unitOfTimeRange",2300}, - {""}, {""}, - {"numberMissingFromAveragesOrAccumulations",1374}, + {"selectStepTemplateInterval",2081}, + {""}, + {"numberOfPointsInDomain",1471}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"_numberOfValues",291}, - {""}, {""}, {""}, {""}, {""}, - {"PLPresent",212}, - {"missingValuesPresent",1315}, {""}, {""}, - {"tiggeLocalVersion",2198}, - {"coordAveragingTims",585}, + {"numberOfAdditionalParametersForReferencePeriod",1386}, + {"tsectionNumber4",2283}, {""}, - {"secondOrderOfDifferentWidth",1964}, + {"isRotatedGrid",1024}, + {"endDayTrend1",738}, + {""}, {""}, + {"isectionNumber4",1039}, + {""}, {""}, + {"updateSequenceNumber",2367}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"originatingCentreOfAnalysis",1571}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"verticalVisibilityCoded",2368}, - {"numberOfDistinctSection5s",1408}, + {"dummy1",715}, {""}, {""}, {""}, - {"firstOrderValues",861}, - {""}, - {"offsetICEFieldsUsed",1523}, + {"runwaySideCodeState4",1908}, {""}, {""}, - {"AA",6}, - {"indexedStorageInternalNodeK",973}, - {""}, {""}, {""}, {""}, - {"scaleFactorOfPrimeMeridianOffset",1911}, + {"reservedSection3",1840}, + {""}, {""}, {""}, {""}, {""}, + {"longitudeOfThePoleOfStretching",1210}, {""}, - {"dateSSTFieldUsed",655}, - {""}, {""}, {""}, - {"clusterMember7",542}, + {"windSpeedTrend3",2450}, + {"WMO",263}, {""}, {""}, {""}, {""}, - {"GTSstr",79}, + {"probabilityType",1749}, + {"_numberOfValues",293}, {""}, - {"secondOrderValuesDifferentWidths",1965}, - {"clusterMember4",539}, - {"formatVersionMinorNumber",882}, + {"grib2LocalSectionPresent",909}, + {"marsType1",1257}, + {"offsetSection5",1548}, {""}, - {"offsetSection7",1533}, - {""}, {""}, - {"Model_Additional_Information",167}, + {"reserved1",1834}, {""}, {""}, {""}, {""}, - {"offsetSection4",1530}, - {""}, {""}, - {"coordAveraging0",581}, - {"localLatitude2",1156}, - {""}, {""}, {""}, {""}, {""}, - {"expandedUnits",790}, - {"endMinuteTrend4",748}, + {"ijDirectionIncrementGiven",973}, + {"X2",268}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"gribTablesVersionNo",914}, {""}, {""}, {""}, {""}, - {"paramIdECMF",1654}, - {"runwayFrictionCoefficientState3",1885}, - {""}, {""}, - {"runwayFrictionCoefficientState2",1884}, - {"numberOfCodedValues",1390}, - {""}, {""}, {""}, {""}, {""}, - {"section1Padding",1987}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"reservedSection4",1823}, - {""}, {""}, - {"listMembersUsed3",1132}, - {""}, {""}, {""}, {""}, {""}, - {"experimentVersionNumber",791}, - {"bitsPerValue",370}, - {""}, {""}, {""}, - {"reducedGrid",1796}, - {""}, {""}, - {"extractDateTimeStart",825}, + {"longitudeOfTheSouthernPoleOfProjection",1213}, {""}, - {"dateOfModelVersion",652}, - {"runwaySideCodeState4",1890}, - {"localFlagLatestVersion",1152}, - {"yearOfModelVersion",2435}, + {"probabilityTypeName",1750}, {""}, {""}, - {"lengthOfTimeRange",1113}, - {""}, {""}, - {"scaledValueOfLowerLimit",1932}, - {"longitudeOfReferencePoint",1192}, - {"timeOfModelVersion",2215}, - {""}, {""}, {""}, {""}, {""}, - {"extractDateTimeSecondEnd",822}, - {"inputProcessIdentifier",990}, - {""}, {""}, {""}, - {"falseEasting",845}, - {"subLocalDefinition1",2149}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"dayOfTheYearDate",665}, - {"extractDateTimeSecondStart",824}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"offsetEndSection4",1519}, - {""}, {""}, {""}, - {"originatorLocalTemplateNumber",1574}, - {""}, {""}, {""}, {""}, - {"localLongitude2",1159}, - {"presentTrend3",1707}, - {""}, {""}, {""}, {""}, {""}, - {"presentTrend2",1706}, - {""}, {""}, {""}, {""}, - {"definitionFilesVersion",680}, + {"endDayTrend4",741}, {""}, {""}, - {"forecastProbabilityNumber",877}, - {""}, - {"plusOneinOrdersOfSPD",1691}, - {"scaleFactorOfSecondWavelength",1915}, - {"gridPointPosition",919}, - {"alternativeRowScanning",303}, - {""}, {""}, {""}, - {"GTS",78}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"firstDimensionPhysicalSignificance",860}, {""}, {""}, - {"localTablesVersion",1166}, + {"windSpeedTrend2",2449}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"deletePV",684}, - {"dayOfModelVersion",663}, - {"Sub-Experiment_Identifier",231}, - {""}, {""}, {""}, - {"section9UniqueIdentifier",2022}, - {"ZLMULT",285}, + {"offsetSection1",1542}, {""}, {""}, {""}, {""}, {""}, {""}, - {"runwayDepositState4",1850}, - {""}, - {"latitudeOfNorthWestCornerOfArea",1078}, - {"DiGiven",31}, - {""}, {""}, {""}, - {"runwayFrictionCoefficientState1",1883}, - {""}, - {"northWestLatitudeOfVerficationArea",1360}, + {"localExtensionPadding",1158}, {""}, {""}, {""}, {""}, {""}, {""}, - {"longitudeOfSubSatellitePoint",1199}, + {"numberOfDaysInClimateSamplingWindow",1415}, + {""}, + {"numberOfCoefficientsOrValuesUsedToSpecifyFirstDimensionCoordinateFunction",1403}, + {"numberOfCoefficientsOrValuesUsedToSpecifySecondDimensionCoordinateFunction",1404}, + {"conceptsDir2",570}, + {"grib2LocalSectionNumber",908}, {""}, {""}, - {"heightPressureEtcOfLevels",937}, + {"cloudsTitle2",522}, + {""}, {""}, {""}, {""}, + {"expandBy",781}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"reservedSection4",1841}, {""}, {""}, - {"latitudeOfFirstGridPointInDegrees",1073}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"longitudeOfSubSatellitePointInDegrees",1200}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"baseTimeEPS",333}, - {"subLocalDefinitionLength2",2152}, + {"sourceOfGridDefinition",2121}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"numberOfTimeRange",1478}, + {"P_INST",217}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"correction2",610}, + {"preBitmapValues",1714}, {""}, {""}, {""}, {""}, - {"scanningMode7",1949}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"scanningMode4",1946}, + {"centralLongitudeInMicrodegrees",403}, {""}, {""}, - {"extractedAreaNumberOfSubsets",833}, - {"N2",173}, - {""}, - {"hourOfModelVersion",949}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"upperThresholdValue",2326}, - {"earthMajorAxisInMetres",718}, - {""}, {""}, {""}, {""}, {""}, - {"marsStream2",1247}, + {"windVariableDirectionTrend4",2461}, {""}, {""}, - {"section8UniqueIdentifier",2019}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"stepHumanReadable",2132}, + {"firstMonthUsedToBuildClimateMonth2",864}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"runwayFrictionCoefficientState4",1904}, {""}, - {"baseDateEPS",331}, - {""}, {""}, {""}, {""}, {""}, - {"Dj",34}, + {"numberIncludedInAverage",1384}, {""}, {""}, {""}, {""}, {""}, {""}, - {"localNumberOfObservations",1162}, - {"section4Padding",2001}, - {""}, {""}, - {"jDirectionIncrementInDegrees",1041}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"scaleFactorOfFirstWavelength",1905}, - {""}, {""}, - {"md5Section6",1278}, + {"versionNumberOfExperimentalSuite",2404}, + {""}, {""}, {""}, {""}, {""}, + {"missingValueManagement",1322}, {""}, {""}, {""}, {""}, {""}, {""}, - {"mBasicAngle",1219}, + {"stepUnits",2174}, {""}, {""}, {""}, - {"lowerThresholdValue",1213}, - {""}, {""}, - {"localLatitude1",1155}, + {"verticalVisibilityCoded",2413}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"maxLevelValue",1273}, {""}, - {"DayOfModelVersion",29}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"NrInRadiusOfEarthScaled",202}, + {"endDayTrend2",739}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, - {"typeOfGrid",2262}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, - {"originalParameterTableNumber",1568}, - {""}, - {"numberOfCoefficientsOrValuesUsedToSpecifyFirstDimensionCoordinateFunction",1391}, - {"numberOfCoefficientsOrValuesUsedToSpecifySecondDimensionCoordinateFunction",1392}, - {""}, {""}, - {"updateSequenceNumber",2322}, - {""}, - {"cloudsTitle3Trend3",527}, - {""}, {""}, - {"cloudsTitle3Trend2",526}, + {"offsetSection7",1550}, {""}, {""}, - {"totalNumberOfRepetitions",2235}, - {""}, {""}, {""}, {""}, - {"numberOfDaysInClimateSamplingWindow",1403}, + {"TIDE",236}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"biFourierResolutionParameterM",359}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"gribTablesVersionNo",910}, + {"N2",173}, + {""}, + {"jScansNegatively",1050}, + {"componentIndex",564}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"reservedSection2",1839}, {""}, - {"localLongitude1",1158}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"presentTrend1",1705}, + {"secondaryMissingValue",2007}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"runwayFrictionCoefficientState4",1886}, + {"runwayDepositState4",1868}, {""}, {""}, - {"shortNameECMF",2066}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"packedValues",1578}, + {"extractedAreaNumberOfSubsets",837}, {""}, - {"offsetFromReferenceOfFirstTime",1522}, + {"extractDateTimeYearStart",832}, {""}, {""}, {""}, {""}, {""}, - {"tsectionNumber3",2245}, - {""}, {""}, {""}, - {"qnhAPresent",1756}, - {""}, - {"isectionNumber3",1032}, - {""}, {""}, {""}, - {"qnhUnits",1758}, + {"flagForAnyFurtherInformation",868}, {""}, - {"isectionNumber2",1031}, + {"windDirectionTrend3",2439}, {""}, - {"conceptsDir2",567}, - {""}, {""}, {""}, {""}, - {"rootTablesDir",1835}, - {""}, {""}, - {"parameterUnits",1665}, - {""}, {""}, {""}, {""}, {""}, - {"flagShowingPostAuxiliaryArrayInUse",867}, + {"selectedHour",2084}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, - {"unstructuredGrid",2317}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"coordinate1End",586}, - {""}, - {"endDayTrend2",735}, - {"offsetValuesBy",1537}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"subLocalDefinitionLength1",2151}, - {""}, {""}, {""}, - {"endMonthTrend3",751}, - {""}, {""}, {""}, {""}, - {"northWestLatitudeOfLPOArea",1359}, - {"endMonthTrend2",750}, - {"cloudsTitle3Trend1",525}, - {""}, - {"latitudeOfSouthernPoleInDegrees",1083}, - {"templatesMasterDir",2185}, - {"unstructuredGridType",2319}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"countOfICEFieldsUsed",618}, {""}, - {"N1",172}, - {"spatialSmoothingOfProduct",2109}, - {""}, - {"qfeUnits",1754}, - {""}, - {"mixedCoordinateFieldFlag",1318}, - {"section6Pointer",2010}, - {""}, - {"patch_precip_fp",1676}, - {"default_step_units",679}, - {""}, - {"cloudsTitle2",519}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, - {"timeIncrementBetweenSuccessiveFields",2211}, - {"section3Pointer",1997}, + {"firstMonthUsedToBuildClimateMonth1",863}, + {""}, {""}, + {"baseTimeEPS",336}, + {"is_ocean3d_param",1035}, {""}, {""}, - {"section2Pointer",1991}, + {"NrInRadiusOfEarth",201}, + {""}, {""}, + {"unstructuredGridSubtype",2363}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"matchAerosolBinNumber",1257}, - {"Latin2InDegrees",117}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"is_ocean2d_param",1034}, {""}, {""}, {""}, - {"scaledValueOfRadiusOfSphericalEarth",1936}, + {"windDirectionTrend2",2438}, {""}, {""}, {""}, {""}, - {"rootGroupObjectHeaderAddress",1833}, - {""}, - {"yCoordinateOfOriginOfSectorImage",2422}, - {""}, {""}, {""}, {""}, - {"changeIndicatorTrend3",421}, - {"pentagonalResolutionParameterK",1678}, - {""}, - {"changeIndicatorTrend2",420}, + {"X1",266}, + {"upperThresholdValue",2371}, {""}, {""}, {""}, - {"versionNumOfRootGroupSymbolTableEntry",2357}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"forecastOrSingularVectorNumber",877}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"dateOfSSTFieldUsed",654}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"verificationYear",2398}, + {""}, {""}, {""}, {""}, {""}, + {"windVariableDirectionTrend3",2460}, {""}, {""}, - {"typeOfSSTFieldUsed",2273}, + {"windSpeedTrend1",2448}, + {""}, {""}, + {"normAtFinalTime",1364}, + {"jScansPositively",1051}, {""}, {""}, {""}, - {"dayOfForecastUsedInLocalTime",662}, - {""}, {""}, {""}, {""}, {""}, - {"tablesLocalDir",2174}, + {"runwayFrictionCoefficientState3",1903}, {""}, {""}, - {"FMULTM",66}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"windUnits",2452}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"windVariableDirectionTrend2",2459}, {""}, - {"biFourierResolutionSubSetParameterM",361}, - {""}, {""}, {""}, {""}, - {"dataSubCategory",641}, - {""}, {""}, - {"beginMinuteTrend3",346}, + {"latitudeOfSubSatellitePoint",1092}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"runwayFrictionCoefficientState2",1902}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"Model_Identifier",168}, {""}, {""}, - {"beginMinuteTrend2",345}, - {""}, {""}, {""}, {""}, {""}, - {"md5Section7",1279}, - {""}, {""}, {""}, {""}, {""}, - {"section1Pointer",1988}, + {"unpackedError",2358}, + {"tsectionNumber3",2282}, + {"secondaryBitMap",2001}, + {""}, + {"wrongPadding",2462}, {""}, {""}, - {"numberOfUnexpandedDescriptors",1480}, + {"isectionNumber3",1038}, + {"observationType",1514}, {""}, {""}, {""}, {""}, {""}, {""}, - {"easternLongitudeOfClusterDomain",723}, - {""}, {""}, {""}, {""}, {""}, - {"Latin1InDegrees",115}, - {"numberOfUsedTileAttributes",1483}, + {"P2",213}, {""}, {""}, {""}, {""}, {""}, {""}, - {"scaledValueOfLengthOfSemiMinorAxis",1931}, - {""}, {""}, {""}, {""}, - {"numberOfBytesInLocalDefinition",1381}, - {"cfNameECMF",413}, + {"runwaySideCodeState3",1907}, {""}, - {"pentagonalResolutionParameterM",1679}, + {"packingError",1596}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"presentTrend4",1725}, + {"patch_precip_fp",1693}, + {"default_step_units",683}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, + {"doExtractSubsets",710}, + {"isectionNumber2",1037}, + {""}, {""}, {""}, + {"extractDateTimeHourStart",819}, + {""}, {""}, + {"remarkPresent",1828}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"runwaySideCodeState2",1906}, {""}, - {"totalAerosolBinsNumbers",2223}, - {"scaleFactorOfEarthMajorAxis",1901}, + {"subDefinitions2",2183}, {""}, - {"_leg_number",290}, - {""}, {""}, - {"scaleFactorOfEarthMinorAxis",1902}, + {"section3Flags",2028}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"typicalMonth",2330}, + {"typeOfTimeIncrementBetweenSuccessiveFieldsUsedInTheStatisticalProcessing",2319}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"cloudsTitle3Trend4",528}, {""}, {""}, - {"changeIndicatorTrend1",419}, - {"numberOfStepsUsedForClustering",1474}, + {"scaledValueOfPrimeMeridianOffset",1963}, + {"southEastLongitudeOfVerficationArea",2126}, + {"reflectivityCalibrationConstant",1827}, + {"gaussianGridName",896}, + {"formatVersionMinorNumber",886}, + {"xCoordinateOfSubSatellitePoint",2464}, + {""}, {""}, {""}, + {"experimentVersionNumber",795}, + {""}, {""}, {""}, + {"longitudeOfSouthEastCornerOfArea",1202}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"N1",172}, + {"GDSPresent",68}, + {""}, {""}, {""}, {""}, + {"lowerThresholdValue",1221}, + {"coordAveragingTims",588}, + {""}, + {"windVariableDirectionTrend1",2458}, + {""}, {""}, {""}, + {"baseDateEPS",334}, + {""}, + {"scaledValueOfDistanceFromEnsembleMean",1950}, {""}, {""}, - {"md5Product",1271}, - {"satelliteID",1893}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"latitudinalDirectionGridLength",1098}, + {"numberOfClusterLowResolution",1400}, {""}, - {"cloudsTitle4Trend3",532}, + {"runwayFrictionCoefficientState1",1901}, {""}, {""}, - {"cloudsTitle4Trend2",531}, - {"cloudsTitle1Trend3",517}, + {"getNumberOfValues",903}, {""}, - {"beginDayTrend3",338}, - {"cloudsTitle1Trend2",516}, + {"pressureUnits",1742}, {""}, {""}, {""}, - {"METAR",156}, - {"beginDayTrend2",337}, + {"numberOfBytesPerInteger",1395}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, + {"section_10",2071}, + {""}, {""}, {""}, + {"totalNumberOfWaveDirections",2274}, {""}, {""}, - {"sizeOfLength",2079}, - {"reservedSection2",1821}, - {"cavokOrVisibility",386}, + {"satelliteID",1912}, {""}, {""}, - {"tiggeSuiteID",2201}, - {"westernLongitudeOfClusterDomain",2382}, + {"originatingCentreOfAnalysis",1588}, + {""}, {""}, + {"spaceUnitFlag",2135}, {""}, - {"endMonthTrend1",749}, + {"mBasicAngle",1227}, + {""}, {""}, {""}, + {"unitOfTimeRange",2345}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"numberInMixedCoordinateDefinition",1381}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"totalNumberOfWaveFrequencies",2275}, {""}, {""}, - {"identificationOfOriginatingGeneratingCentre",963}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"numberOfUsedSpatialTiles",1482}, + {"crraSuiteID",628}, + {""}, + {"heightPressureEtcOfLevels",941}, + {""}, + {"packedValues",1595}, + {"numberOfPointsAlongXAxis",1467}, {""}, {""}, - {"unpackedValues",2315}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, - {"produceLargeConstantFields",1735}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, - {"beginMinuteTrend1",344}, - {""}, {""}, {""}, {""}, - {"jScansNegatively",1044}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"listMembersUsed4",1133}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"longitudeOfSouthEastCornerOfArea",1194}, + {"MinuteOfModelVersion",159}, {""}, - {"ls_labeling",1214}, - {""}, {""}, {""}, {""}, - {"forecastOrSingularVectorNumber",873}, + {"dateOfModelVersion",655}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"typeOfTimeIncrementBetweenSuccessiveFieldsUsedInTheStatisticalProcessing",2279}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"crraSuiteID",625}, + {"coordinateFlag2",602}, + {"timeOfModelVersion",2250}, {""}, - {"oceanAtmosphereCoupling",1500}, - {""}, {""}, {""}, {""}, - {"expandedCrex_scales",780}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"unexpandedDescriptors",2295}, + {"windDirectionTrend1",2437}, {""}, {""}, - {"presentTrend4",1708}, - {"NUT",189}, - {""}, {""}, - {"verificationYear",2353}, - {""}, - {"monthlyVerificationYear",1337}, + {"rdbtimeMonth",1799}, + {""}, {""}, {""}, {""}, + {"swapScanningX",2200}, + {""}, {""}, {""}, {""}, {""}, + {"section1Flags",2019}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"jDirectionIncrementInDegrees",1047}, {""}, - {"longitudeOfTangencyPoint",1201}, + {"typeOfReferenceDataset",2310}, {""}, {""}, {""}, {""}, {""}, {""}, - {"unstructuredGridSubtype",2318}, - {"latitudeOfSubSatellitePoint",1086}, + {"backgroundGeneratingProcessIdentifier",330}, {""}, - {"cloudsTitle4Trend1",530}, - {""}, {""}, {""}, - {"cloudsTitle1Trend1",515}, - {"longitudeOfReferencePointInDegrees",1193}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"P2",211}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"typeOfPreProcessing",2271}, + {"oceanAtmosphereCoupling",1517}, {""}, {""}, {""}, {""}, {""}, - {"section7Pointer",2014}, + {"longitudeOfThePolePoint",1211}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"DjInMetres",37}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"section4Pointer",2002}, + {"runwayDepositState3",1867}, + {"dateSSTFieldUsed",658}, {""}, - {"expandedCrex_units",781}, + {"localTablesVersionNumber",1175}, + {""}, + {"_leg_number",292}, {""}, {""}, {""}, {""}, {""}, - {"qualityControlIndicator",1760}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"numberOfBytesOfFreeFormatData",1382}, + {"tsectionNumber5",2284}, + {""}, {""}, {""}, + {"sizeOfLength",2113}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"unexpandedDescriptorsEncoded",2296}, - {""}, {""}, {""}, {""}, {""}, - {"dateOfIceFieldUsed",651}, - {""}, {""}, {""}, {""}, - {"physicalMeaningOfVerticalCoordinate",1688}, + {"P1",212}, + {""}, {""}, {""}, + {"offsetEndSection4",1536}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"totalNumberOfClusters",2262}, {""}, {""}, {""}, {""}, {""}, - {"listOfParametersUsedForClustering",1138}, - {""}, {""}, - {"northWestLongitudeOfVerficationArea",1362}, + {"runwayDepositState2",1866}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"section11Length",1983}, - {""}, {""}, {""}, {""}, {""}, - {"changeIndicatorTrend4",422}, + {"subLocalDefinition2",2185}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"backgroundGeneratingProcessIdentifier",327}, + {""}, + {"clusteringDomain",550}, + {""}, {""}, + {"endOfHeadersMarker",758}, + {""}, + {"numberOfClusterHighResolution",1399}, + {""}, + {"runwaySideCodeState1",1905}, + {"marsKeywords1",1241}, + {"subDefinitions1",2182}, + {""}, {""}, + {"numberOfBytesInLocalDefinition",1393}, + {""}, {""}, + {"longitudeOfReferencePoint",1200}, + {"xCoordinateOfOriginOfSectorImage",2463}, {""}, {""}, {""}, {""}, {""}, {""}, - {"versionNumberOfExperimentalSuite",2359}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"integerPointValues",1001}, {""}, - {"gribMasterTablesVersionNumber",909}, + {"easternLongitudeOfClusterDomain",727}, + {"azimuthalWidth",329}, {""}, {""}, {""}, - {"marsClass2",1223}, + {"coordinate1End",589}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"referenceForGroupWidths",1801}, - {"runwayDesignatorState3",1865}, - {""}, - {"southEastLongitudeOfLPOArea",2091}, - {"runwayDesignatorState2",1864}, - {""}, {""}, {""}, {""}, {""}, - {"numberOfControlForecastTube",1396}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"extractAreaNorthLatitude",806}, - {"beginDayTrend1",336}, - {""}, {""}, {""}, {""}, {""}, - {"PVPresent",214}, - {""}, {""}, {""}, {""}, - {"beginMinuteTrend4",347}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, - {"latitudeFirstInDegrees",1066}, - {"expandedCrex_widths",782}, - {""}, {""}, {""}, - {"integerPointValues",995}, - {"totalNumberOfValuesInUnpackedSubset",2238}, - {"extractDateTimeMinuteEnd",816}, + {"latitudeOfTangencyPoint",1094}, {""}, {""}, {""}, {""}, {""}, {""}, - {"sourceOfGridDefinition",2087}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"extractDateTimeMinuteStart",818}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"dateOfForecastUsedInLocalTime",650}, - {""}, {""}, - {"yearOfForecastUsedInLocalTime",2434}, - {""}, {""}, {""}, {""}, {""}, - {"section_6",2043}, + {"longitudeLastInDegrees",1186}, + {""}, {""}, {""}, {""}, + {"MonthOfModelVersion",170}, {""}, - {"timeOfForecastUsedInLocalTime",2214}, + {"doExtractArea",708}, {""}, {""}, {""}, - {"extractDateTimeMonthEnd",819}, - {"cloudsCode3",504}, + {"latitudeOfLastGridPoint",1082}, {""}, - {"originOfPostProcessing",1566}, + {"produceLargeConstantFields",1752}, {""}, {""}, - {"pentagonalResolutionParameterJ",1677}, + {"deleteLocalDefinition",687}, + {"yearOfModelVersion",2483}, + {""}, {""}, {""}, {""}, + {"latitudeFirstInDegrees",1072}, {""}, - {"referenceForGroupLengths",1800}, - {""}, {""}, {""}, {""}, {""}, - {"extractDateTimeMonthStart",821}, - {""}, {""}, {""}, - {"cloudsTitle4Trend4",533}, - {""}, {""}, {""}, - {"cloudsTitle1Trend4",518}, + {"numberOfControlForecastTube",1408}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, + {"startDateOfReferencePeriod",2153}, {""}, {""}, {""}, {""}, - {"section_3",2040}, + {"northWestLatitudeOfVerficationArea",1370}, {""}, {""}, {""}, - {"numberOfContributingSpectralBands",1395}, - {""}, - {"section_2",2039}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"numberOfMissingValues",1438}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"section6Length",2009}, - {""}, - {"gts_TTAAii",929}, + {"presentTrend3",1724}, {""}, {""}, {""}, - {"runwayDesignatorState1",1863}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, - {"section3Length",1995}, - {""}, {""}, - {"section2Length",1989}, - {""}, - {"P1",210}, - {"tsectionNumber4",2246}, - {""}, {""}, {""}, {""}, {""}, - {"isectionNumber4",1033}, + {"cloudsTitle1Trend4",521}, + {""}, {""}, {""}, {""}, + {"numberOfWaveFrequencySequenceParameters",1507}, {""}, {""}, {""}, - {"scaleFactorOfMajorAxisOfOblateSpheroidEarth",1909}, + {"secondaryMissingValueSubstitute",2008}, + {""}, {""}, + {"AA",6}, + {""}, {""}, + {"hourOfModelVersion",953}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, - {"extractAreaEastLongitude",803}, + {""}, {""}, + {"endGridDefinition",743}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"secondaryBitmapsSize",2006}, {""}, - {"section_06",2032}, + {"presentTrend2",1723}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"runwayFrictionCodeValueState3",1877}, - {""}, {""}, - {"runwayFrictionCodeValueState2",1876}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"NrInRadiusOfEarthScaled",200}, - {"longitudeOfTheSouthernPoleOfProjection",1205}, - {"recentWeather",1789}, - {"reflectivityCalibrationConstant",1809}, - {"section2Used",1993}, + {"kindOfProduct",1059}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, - {"endMonthTrend4",752}, {""}, {""}, - {"section_03",2029}, - {""}, {""}, {""}, {""}, {""}, - {"section_02",2028}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"hourOfForecastUsedInLocalTime",948}, - {""}, {""}, {""}, - {"NrInRadiusOfEarth",199}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"matrixBitmapsPresent",1270}, + {"southPoleOnProjectionPlane",2129}, + {"Product_Identifier",220}, + {"coordinateFlag1",601}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"visibilityInKilometresTrend3",2372}, {""}, {""}, {""}, - {"numberOfClusterLowResolution",1388}, - {"NC",176}, - {"visibilityInKilometresTrend2",2371}, - {"NP",185}, - {""}, {""}, {""}, - {"marsClass1",1222}, - {""}, {""}, {""}, {""}, - {"numberOfBitsForScaledGroupLengths",1378}, - {""}, {""}, {""}, {""}, - {"longitudeLastInDegrees",1178}, - {""}, {""}, {""}, {""}, - {"scaledValueOfPrimeMeridianOffset",1935}, - {""}, - {"longitudeOfCentralPointInClusterDomain",1179}, - {""}, - {"numberOfClusterHighResolution",1387}, - {""}, - {"preProcessingParameter",1698}, + {"timeIncrementBetweenSuccessiveFields",2246}, {""}, {""}, {""}, {""}, {""}, {""}, - {"xCoordinateOfOriginOfSectorImage",2415}, - {""}, - {"section1Length",1986}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"jScansPositively",1045}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, - {"isRotatedGrid",1018}, - {""}, {""}, - {"runwayFrictionCodeValueState1",1875}, + {"inputShortDelayedDescriptorReplicationFactor",997}, {""}, {""}, {""}, {""}, {""}, - {"rdb_key",1776}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"INBITS",89}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"nameECMF",1354}, {""}, {""}, {""}, - {"ECMWF",45}, - {""}, - {"addEmptySection2",295}, + {"scaleFactorOfCentralWaveNumber",1918}, {""}, {""}, {""}, - {"clusteringDomain",547}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"runwayDesignatorState4",1866}, + {"bufrdcExpandedDescriptors",383}, {""}, {""}, {""}, {""}, - {"PUnset",213}, + {"modelErrorType",1330}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"unstructuredGridUUID",2320}, - {"section11Pointer",1984}, - {""}, {""}, {""}, {""}, {""}, - {"section_1",2036}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"scaleFactorOfUpperLimit",1918}, - {""}, - {"generalExtended2ordr",894}, - {""}, - {"endGridDefinition",739}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"scaledValueOfSecondWavelength",1939}, - {""}, - {"oneMinuteMeanMaximumRVR3",1546}, - {"longitudeOfThePoleOfStretching",1202}, + {"scaledValueOfAdditionalParameterForReferencePeriod",1948}, + {"section11Pointer",2018}, {""}, {""}, {""}, {""}, - {"oneMinuteMeanMaximumRVR2",1545}, + {"dayOfModelVersion",666}, {""}, {""}, {""}, {""}, {""}, - {"matrixBitmapsPresent",1262}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"cloudsAbbreviation3",444}, - {""}, - {"numberOfDataPointsExpected",1401}, + {"cloudsTitle3Trend4",531}, {""}, {""}, {""}, - {"cloudsAbbreviation2",439}, - {""}, {""}, - {"offsetSection11",1527}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"md5Headers",1270}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"unpackedSubsetPrecision",2314}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"inputOverriddenReferenceValues",989}, - {"beginDayTrend4",339}, + {"westernLongitudeOfClusterDomain",2430}, {""}, - {"YRInMetres",278}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, - {"subLocalDefinitionNumber2",2154}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, - {"section_01",2027}, + {"accuracyMultipliedByFactor",296}, {""}, {""}, {""}, {""}, - {"variationOfVisibilityTrend3",2348}, - {""}, {""}, - {"variationOfVisibilityTrend2",2347}, - {""}, - {"listMembersUsed2",1131}, - {""}, {""}, {""}, {""}, {""}, - {"numberOfGroups",1425}, + {"mixedCoordinateFieldFlag",1327}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"matchAerosolBinNumber",1265}, {""}, - {"numberOfSingularVectorsEvolved",1472}, + {"NUT",191}, {""}, - {"section7Length",2013}, + {"typeOfPacking",2306}, {""}, {""}, {""}, - {"section4Length",2000}, - {"latitudeOfSubSatellitePointInDegrees",1087}, - {""}, - {"INBITS",89}, - {""}, {""}, {""}, {""}, {""}, - {"coordinate2End",589}, - {""}, {""}, {""}, {""}, {""}, - {"visibilityInKilometresTrend1",2370}, - {"numberOfPointsInDomain",1459}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"wrongPadding",2414}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, - {"FMULTE",65}, - {""}, {""}, {""}, - {"runwayFrictionCodeValueState4",1878}, + {"northWestLatitudeOfLPOArea",1369}, {""}, {""}, {""}, {""}, - {"scaledValueOfFirstWavelength",1929}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"realPartOf00",1787}, - {""}, {""}, {""}, {""}, - {"variationOfVisibilityDirectionTrend3",2344}, + {"runwayDepositState1",1865}, + {"realPartOf00",1804}, + {"cfVarNameECMF",419}, {""}, {""}, - {"variationOfVisibilityDirectionTrend2",2343}, + {"unitsECMF",2351}, {""}, {""}, - {"section5",2004}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, - {"iDirectionIncrementGiven",955}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"physicalFlag2",1687}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"cloudsCode1",494}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"iDirectionIncrementGiven",960}, {""}, {""}, {""}, - {"biFourierResolutionParameterN",360}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"yCoordinateOfSubSatellitePoint",2423}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"subLocalDefinition1",2184}, {""}, {""}, - {"deleteLocalDefinition",683}, - {"variationOfVisibilityTrend1",2346}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"NEAREST",179}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"basicAngleOfTheInitialProductionDomain",335}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, - {"oneMinuteMeanMaximumRVR1",1544}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, - {"postAuxiliaryArrayPresent",1694}, - {""}, {""}, {""}, - {"cloudsAbbreviation1",434}, + {"subLocalDefinitionLength2",2187}, {""}, {""}, {""}, {""}, {""}, - {"variationOfVisibilityDirectionTrend1",2342}, - {""}, - {"HDF5str",81}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"Nj",197}, - {"runwayDepositCodeState3",1845}, - {""}, {""}, {""}, {""}, {""}, - {"runwayDepositCodeState2",1844}, + {"md5Headers",1278}, + {"cavokOrVisibility",389}, {""}, {""}, - {"tempPressureUnits",2181}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"coordAveraging0",584}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"cloudsTitle1Trend3",520}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"subLocalDefinitionNumber1",2153}, + {"endMinuteTrend4",752}, + {""}, {""}, {""}, {""}, + {"offsetFromReferenceOfFirstTime",1539}, + {"nameLegacyECMF",1355}, + {""}, {""}, {""}, {""}, {""}, + {"cloudsTitle1Trend2",519}, + {"clusterMember4",542}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, - {"numberOfBytesPerInteger",1383}, + {""}, {""}, + {"qualityControlIndicator",1777}, + {""}, {""}, + {"scaledValueOfLengthOfSemiMinorAxis",1958}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"codedNumberOfFirstOrderPackedValues",554}, - {""}, {""}, - {"ceilingAndVisibilityOK",392}, + {"numberOfBytesOfFreeFormatData",1394}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"cloudsTitle2Trend3",522}, - {""}, - {"weightAppliedToClimateMonth1",2379}, - {"cloudsTitle2Trend2",521}, - {""}, - {"SOH",224}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, - {"extractDateTimeEnd",812}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"localTablesVersionNumber",1167}, + {"PUnset",215}, {""}, {""}, {""}, {""}, - {"firstLatitudeInDegrees",858}, - {"offsetBeforePL",1516}, - {"md5Section5",1277}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"YR",277}, + {"scanningMode4",1979}, {""}, {""}, {""}, {""}, - {"cloudsCode4",509}, - {""}, - {"widthOfWidths",2387}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"section_7",2044}, - {"cfVarNameECMF",416}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"section_4",2041}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"numberOfPointsAlongXAxis",1455}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"offsetBBitmap",1510}, + {"offsetValuesBy",1554}, {""}, {""}, - {"numberOfRadarSitesUsed",1462}, - {"variationOfVisibilityTrend4",2349}, - {"section6UniqueIdentifier",2011}, + {"coordinate2End",592}, + {""}, {""}, {""}, + {"endStepInHours",764}, {""}, - {"commonBlock",559}, + {"Dj",34}, + {""}, {""}, {""}, {""}, + {"numberOfWaveDirectionSequenceParameters",1504}, {""}, - {"physicalFlag1",1686}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"inputShortDelayedDescriptorReplicationFactor",991}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"section3UniqueIdentifier",1998}, + {"numberMissingFromAveragesOrAccumulations",1385}, {""}, {""}, {""}, {""}, - {"scaleFactorOfLengthOfSemiMajorAxis",1906}, - {""}, {""}, - {"getNumberOfValues",899}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"biFourierResolutionSubSetParameterN",362}, + {"referenceForGroupWidths",1818}, {""}, {""}, {""}, - {"mask",1252}, + {"offsetICEFieldsUsed",1540}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"totalAerosolBinsNumbers",2258}, {""}, - {"localUsePresent",1171}, - {""}, {""}, {""}, - {"uuidOfVGrid",2334}, - {"missingValueManagementUsed",1314}, - {""}, {""}, {""}, - {"ZLBASE",284}, + {"alternativeRowScanning",306}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"visibilityTrend3",2376}, - {""}, {""}, - {"paramIdLegacyECMF",1655}, {""}, {""}, {""}, {""}, - {"cloudsTitle2Trend1",520}, - {""}, {""}, - {"cloudsBase3",464}, - {""}, {""}, {""}, {""}, {""}, - {"variationOfVisibilityDirectionTrend4",2345}, - {""}, {""}, {""}, {""}, - {"section_07",2033}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"section_04",2030}, - {""}, {""}, {""}, {""}, {""}, - {"section5Pointer",2006}, - {""}, {""}, - {"latitudeOfTangencyPoint",1088}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"pack",1577}, - {""}, {""}, {""}, {""}, {""}, - {"gaussianGridName",892}, + {"presentTrend1",1722}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"typeOfProcessedData",2309}, {""}, - {"iDirectionIncrementGridLength",956}, - {"Date_E3",27}, + {"cloudsTitle3Trend3",530}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"scaledValueOfEarthMajorAxis",1925}, - {""}, {""}, {""}, - {"Date_E2",26}, - {"scaledValueOfEarthMinorAxis",1926}, - {"totalNumberOfClusters",2227}, - {""}, {""}, {""}, {""}, - {"visibilityInKilometresTrend4",2373}, + {"cloudsTitle2Trend4",526}, + {"dataSubCategory",644}, + {"scaledValuesOfWaveFrequencies",1975}, {""}, {""}, {""}, {""}, {""}, {""}, - {"numberOfGroupsOfDataValues",1426}, - {""}, {""}, {""}, {""}, - {"timeUnitFlag",2219}, - {""}, {""}, {""}, - {"runwayDepositCodeState1",1843}, - {""}, {""}, - {"recentWeatherTry",1790}, + {"ls_labeling",1222}, + {"cloudsTitle3Trend2",529}, {""}, {""}, {""}, {""}, {""}, {""}, - {"md5Section3",1275}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"projTargetString",1745}, - {"Ensemble_Combination_Number",50}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"firstDimensionPhysicalSignificance",856}, - {""}, {""}, - {"unpack",2312}, + {"unexpandedDescriptors",2340}, + {""}, + {"physicalMeaningOfVerticalCoordinate",1705}, + {"cloudsTitle1Trend1",518}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"offsetAfterData",1507}, + {"flagShowingPostAuxiliaryArrayInUse",871}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"projSourceString",1743}, + {"METARstr",157}, {""}, {""}, {""}, - {"listMembersMissing3",1128}, - {""}, {""}, {""}, {""}, {""}, - {"listMembersMissing2",1127}, + {"Ensemble_Identifier",51}, + {""}, {""}, + {"DayOfModelVersion",29}, + {""}, {""}, + {"extractDateTimeMinuteEnd",820}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"checkInternalVersion",428}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"extractDateTimeMinuteStart",822}, + {""}, {""}, {""}, {""}, {""}, + {"cloudsTitle4Trend4",536}, + {""}, {""}, {""}, + {"templatesMasterDir",2220}, {""}, {""}, {""}, {""}, - {"southPoleOnProjectionPlane",2095}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"unexpandedDescriptorsEncoded",2341}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"constantAntennaElevationAngle",576}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"cloudsBaseCoded3",484}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"cloudsBaseCoded3Trend3",487}, - {""}, {""}, - {"cloudsBaseCoded3Trend2",486}, {""}, {""}, {""}, {""}, {""}, - {"remarkPresent",1810}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"theHindcastMarsStream",2186}, + {"unstructuredGridUUID",2365}, {""}, - {"lengthOf4DvarWindow",1107}, - {""}, {""}, {""}, {""}, - {"clusterMember5",540}, + {"dateOfSSTFieldUsed",657}, + {""}, + {"scaledValuesOfWaveDirections",1974}, {""}, {""}, - {"Product_Identifier",218}, + {"iDirectionIncrementGridLength",961}, {""}, {""}, - {"jPointsAreConsecutive",1043}, - {"runwayFrictionCoefficientCodeState3",1881}, + {"referenceForGroupLengths",1817}, + {""}, {""}, {""}, + {"subLocalDefinitionLength1",2186}, {""}, {""}, - {"runwayFrictionCoefficientCodeState2",1880}, - {"offsetSection5",1531}, + {"monthlyVerificationYear",1347}, {""}, {""}, {""}, {""}, - {"oneMinuteMeanMaximumRVR4",1547}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"cloudsTitle2Trend4",523}, - {""}, {""}, - {"cloudsAbbreviation4",449}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"expandedCrex_scales",784}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, + {"latitudeOfSubSatellitePointInDegrees",1093}, + {"clusterMember6",544}, + {""}, {""}, {""}, {""}, {""}, + {"variationOfVisibilityTrend4",2394}, {""}, {""}, - {"experimentVersionNumberOfAnalysis",794}, - {""}, {""}, {""}, - {"offsetBeforeBitmap",1514}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, - {"typeOfLevelECMF",2267}, - {"beginMonthTrend3",350}, - {""}, {""}, {""}, - {"kindOfProduct",1053}, + {"cloudsTitle3Trend1",528}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"extractDateTimeMonthEnd",823}, + {""}, {""}, {""}, {""}, {""}, + {"scaledValueOfWaveDirectionSequenceParameter",1972}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"extractDateTimeMonthStart",825}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"jPointsAreConsecutive",1049}, + {"scanningMode6",1981}, + {""}, {""}, {""}, {""}, + {"expandedCrex_units",785}, {""}, {""}, - {"legacyGaussSubarea",1104}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"typeOfWavelengthInterval",2280}, - {""}, - {"cloudsBaseCoded3Trend1",485}, + {"cloudsTitle2Trend3",525}, {""}, {""}, - {"Minute_E3",161}, + {"codedNumberOfGroups",558}, + {"latitudeWhereDxAndDyAreSpecified",1100}, {""}, - {"endMark",744}, + {"mask",1260}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"longitudeOfSouthernPole",1203}, {""}, {""}, {""}, - {"Minute_E2",160}, + {"falseEasting",849}, + {""}, {""}, + {"latitudeWhereDxAndDyAreSpecifiedInDegrees",1101}, + {"cloudsTitle2Trend2",524}, + {""}, {""}, {""}, {""}, {""}, + {"scaleFactorOfUpperLimit",1939}, {""}, {""}, {""}, - {"section7UniqueIdentifier",2015}, + {"variationOfVisibilityDirectionTrend4",2390}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"numberOfContributingSpectralBands",1407}, {""}, {""}, {""}, - {"section4UniqueIdentifier",2003}, - {""}, - {"versionNumOfSharedHeaderMessageFormat",2358}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"HDF5str",81}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"runwayFrictionCoefficientCodeState1",1879}, - {""}, {""}, {""}, {""}, - {"intervalBetweenTimes",1003}, + {"qfeUnits",1771}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"laplacianScalingFactorUnset",1061}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, - {"GDSPresent",68}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"horizontalDomainTemplate",942}, - {""}, - {"P_INST",215}, - {"xCoordinateOfSubSatellitePoint",2416}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"scanningMode5",1947}, + {"endMinuteTrend3",751}, + {""}, {""}, + {"section9UniqueIdentifier",2056}, {""}, {""}, {""}, {""}, {""}, - {"************_EXPERIMENT_************",2}, + {"pack",1594}, + {"localLatitude2",1164}, + {""}, {""}, + {"clusterMember3",541}, + {""}, {""}, + {"scaledValueOfSecondWavelength",1967}, {""}, {""}, {""}, - {"scaleFactorOfMinorAxisOfOblateSpheroidEarth",1910}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, - {"extractAreaSouthLatitude",807}, - {""}, {""}, {""}, {""}, - {"offsetFromOriginToInnerBound",1521}, + {"cloudsTitle4Trend3",535}, + {""}, {""}, {""}, + {"section8UniqueIdentifier",2053}, {""}, {""}, {""}, {""}, {""}, {""}, - {"hoursAfterReferenceTimeOfDataCutoff",952}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"latitudeOfReferencePoint",1079}, + {"uuidOfVGrid",2379}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"cloudsTitle4Trend2",534}, + {"endMinuteTrend2",750}, + {"offsetFromOriginToInnerBound",1538}, {""}, - {"sizeOfPostAuxiliaryArray",2081}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"thisExperimentVersionNumber",2223}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, - {"unitsLegacyECMF",2308}, + {"clusterMember2",540}, + {""}, + {"dayOfForecastUsedInLocalTime",665}, + {""}, + {"parameterUnits",1682}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"totalNumberOfGridPoints",2267}, + {""}, + {"offsetAfterData",1524}, + {""}, {""}, + {"typeOfSSTFieldUsed",2312}, + {""}, {""}, {""}, + {"unpack",2357}, + {"paramIdLegacyECMF",1672}, + {""}, {""}, {""}, {""}, {""}, + {"variationOfVisibilityTrend3",2393}, {""}, {""}, {""}, - {"scaledValueOfMajorAxisOfOblateSpheroidEarth",1933}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"rdb_key",1793}, + {"Model_Additional_Information",167}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"cloudsTitle2Trend1",523}, + {""}, {""}, {""}, {""}, {""}, + {"numberOfUnexpandedDescriptors",1493}, + {"variationOfVisibilityTrend2",2392}, + {""}, {""}, + {"expandedCrex_widths",786}, + {"beginDayTrend4",342}, {""}, - {"visibilityTrend1",2374}, + {"qnhUnits",1775}, {""}, - {"offsetBSection6",1512}, + {"numberOfStepsUsedForClustering",1487}, {""}, - {"swapScanningAlternativeRows",2162}, - {""}, {""}, {""}, - {"runwayDepositCodeState4",1846}, + {"numberOfPointsAlongXAxisInCouplingArea",1468}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"cloudsBase1",454}, + {"scaledValueOfWaveFrequencySequenceParameter",1973}, + {""}, + {"Latin2InDegrees",117}, + {""}, + {"numberOfGroups",1437}, + {"changeIndicatorTrend4",425}, + {""}, + {"numberOfUsedTileAttributes",1496}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"subLocalDefinitionNumber2",2189}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"cloudsBaseCoded3Trend4",488}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"runwayDepthOfDepositCodeState3",1853}, + {"param_value_max",1673}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"indexingTimeMM",983}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"variationOfVisibilityDirectionTrend3",2389}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"runwayDepthOfDepositCodeState2",1852}, - {"NC2",178}, + {"gts_TTAAii",933}, {""}, {""}, - {"northLatitudeOfDomainOfTubing",1358}, - {"cloudsBaseCoded4Trend3",492}, + {"Nj",199}, {""}, {""}, - {"cloudsBaseCoded4Trend2",491}, - {"cloudsBaseCoded1Trend3",477}, + {"cloudsTitle4Trend1",533}, {""}, {""}, - {"cloudsBaseCoded1Trend2",476}, - {""}, {""}, {""}, - {"RENAME",219}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"md5Section10",1273}, + {"variationOfVisibilityDirectionTrend2",2388}, + {""}, + {"numberOfUsedSpatialTiles",1495}, {""}, {""}, {""}, {""}, - {"runwayFrictionCoefficientCodeState4",1882}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"numberOfReforecastYearsInModelClimate",1464}, - {"oneMinuteMeanMinimumRVR3",1550}, + {"numberOfBitsForScaledGroupLengths",1390}, {""}, {""}, {""}, {""}, {""}, - {"oneMinuteMeanMinimumRVR2",1549}, - {""}, {""}, {""}, - {"numberOfPointsAlongXAxisInCouplingArea",1456}, + {"countOfICEFieldsUsed",621}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"northWestLongitudeOfVerficationArea",1372}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"recentWeather",1806}, + {"unpackedValues",2360}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"cloudsCode2",499}, - {""}, {""}, - {"cfNameLegacyECMF",414}, - {""}, {""}, - {"md5Section1",1272}, - {"LSTCUM",100}, + {"localLongitude2",1167}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"southLatitudeOfDomainOfTubing",2094}, - {""}, {""}, {""}, {""}, - {"eastLongitudeOfDomainOfTubing",722}, {""}, {""}, {""}, - {"numberOfParallelsBetweenAPoleAndTheEquator",1445}, - {"Y2",275}, - {""}, {""}, {""}, {""}, - {"numberOfSingularVectorsComputed",1471}, - {""}, {""}, {""}, {""}, - {"padding_local40_1",1642}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"tempPressureUnits",2216}, + {""}, + {"commonBlock",562}, + {"variationOfVisibilityTrend1",2391}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"section_4",2075}, {""}, {""}, {""}, {""}, {""}, - {"section5Length",2005}, + {"typeOfWaveFrequencySequence",2321}, + {""}, + {"marsClass2",1231}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"Latin1InDegrees",115}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"section4Length",2034}, {""}, {""}, - {"radiusOfTheEarth",1770}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"cloudsCode3",507}, + {""}, {""}, {""}, {""}, + {"WRAPstr",265}, + {""}, {""}, {""}, {""}, {""}, + {"localLatitude1",1163}, {""}, {""}, {""}, - {"baseTimeOfThisLeg",334}, + {"offsetBBitmap",1527}, + {"clusterMember5",543}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, - {"beginHourTrend3",342}, {""}, {""}, {""}, {""}, {""}, - {"beginHourTrend2",341}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"runwayDepthOfDepositCodeState1",1851}, + {"cloudsCode1",497}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, + {"endMinuteTrend1",749}, + {""}, + {"variationOfVisibilityDirectionTrend1",2387}, + {""}, {""}, + {"changeIndicatorTrend3",424}, {""}, {""}, - {"cloudsBaseCoded1",474}, + {"************_PRODUCT_***************",3}, + {""}, {""}, {""}, {""}, + {"clusterMember1",538}, + {""}, {""}, + {"section11Length",2017}, {""}, {""}, {""}, {""}, - {"cloudsBaseCoded4Trend1",490}, + {"scanningMode5",1980}, {""}, {""}, {""}, - {"cloudsBaseCoded1Trend1",475}, - {""}, - {"northWestLongitudeOfLPOArea",1361}, - {"westLongitudeOfDomainOfTubing",2381}, + {"visibilityInKilometresTrend4",2418}, + {"changeIndicatorTrend2",423}, + {""}, {""}, + {"localUsePresent",1179}, + {""}, {""}, + {"numberOfMissingValues",1450}, + {""}, {""}, {""}, + {"extractAreaNorthLatitude",810}, + {""}, {""}, {""}, + {"scaledValueOfFirstWavelength",1956}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, + {"theHindcastMarsStream",2221}, + {"cfNameECMF",416}, + {"cloudsCode4",512}, {""}, {""}, {""}, {""}, {""}, - {"DjGiven",35}, + {"secondOfStartOfReferencePeriod",1996}, + {"YRInMetres",280}, + {""}, + {"minuteOfStartOfReferencePeriod",1317}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"baseDateOfThisLeg",332}, + {""}, {""}, + {"METAR",156}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, + {"section6Length",2043}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"visibilityTrend4",2377}, - {"scaledValueOfUpperLimit",1942}, + {""}, {""}, + {"numberOfGridInReference",1435}, + {"subLocalDefinitionNumber1",2188}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"cloudsBase4",469}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"subdivisionsOfBasicAngle",2159}, + {"latitudeOfReferencePoint",1085}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"Date_E4",28}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, - {"meanRVR3",1286}, - {""}, {""}, {""}, {""}, {""}, - {"meanRVR2",1285}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, - {"Total_Number_Members_Used",256}, + {""}, {""}, {""}, {""}, + {"numberOfGroupsOfDataValues",1438}, {""}, {""}, - {"beginMonthTrend1",348}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"clusterMember7",545}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"postAuxiliaryArrayPresent",1711}, {""}, {""}, - {"padding_sec1_loc",1645}, + {"section3Length",2029}, {""}, - {"NC1",177}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"md5Section4",1276}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, - {"listMembersMissing4",1129}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"ceilingAndVisibilityOK",395}, {""}, {""}, {""}, {""}, {""}, - {"oneMinuteMeanMinimumRVR1",1548}, + {"numberOfRadarSitesUsed",1474}, {""}, {""}, {""}, {""}, {""}, {""}, - {"disableGrib1LocalSection",699}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"resolutionAndComponentFlags6",1829}, + {"changeIndicatorTrend1",422}, + {""}, {""}, {""}, {""}, {""}, + {"section2Length",2023}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"beginDayTrend3",341}, + {""}, {""}, {""}, {""}, + {"longitudeOfThePolePointInDegrees",1212}, + {"runwayFrictionCodeValueState4",1896}, + {"cloudsCode2",502}, + {"localLongitude1",1166}, + {""}, + {"scanningMode7",1982}, + {"section_6",2077}, {""}, {"ITERATOR",91}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, - {"runwayExtentOfContaminationState3",1873}, - {""}, {""}, - {"runwayExtentOfContaminationState2",1872}, - {""}, {""}, {""}, - {"Y1",273}, - {""}, {""}, {""}, - {"numberOfHorizontalPoints",1427}, - {""}, {""}, {""}, {""}, {""}, - {"Total_Number_Members_Possible",255}, - {""}, {""}, {""}, {""}, {""}, - {"cloudsBaseCoded4",489}, - {"runwayDepthOfDepositCodeState4",1854}, - {"resolutionAndComponentFlags3",1827}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"longitudeOfReferencePointInDegrees",1201}, {""}, {""}, {""}, {""}, {""}, - {"resolutionAndComponentFlags2",1826}, - {"cloudsBaseCoded4Trend4",493}, - {""}, {""}, {""}, - {"cloudsBaseCoded1Trend4",478}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"longitudeOfSouthernPole",1195}, + {"firstLatitudeInDegrees",862}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, + {"marsClass1",1230}, + {"numberOfDataPointsExpected",1413}, + {""}, + {"beginDayTrend2",340}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, + {"dateOfForecastUsedInLocalTime",653}, + {"md5Section3",1283}, + {"Sub-Experiment_Identifier",233}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"timeOfForecastUsedInLocalTime",2249}, + {""}, {""}, {""}, + {"section_04",2064}, {""}, {""}, {""}, {""}, - {"beginHourTrend1",340}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"expandedUnits",794}, + {""}, {""}, {""}, {""}, {""}, + {"offsetBeforeBitmap",1531}, + {""}, {""}, {""}, {""}, {""}, + {"md5Section1",1280}, {""}, {""}, {""}, {""}, - {"ccsdsCompressionOptionsMask",389}, + {"numberOfPointsAlongAMeridian",1461}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"skipExtraKeyAttributes",2085}, {""}, {""}, - {"WRAPstr",263}, - {""}, {""}, - {"numberOfBitsContainingEachPackedValue",1377}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"setToMissingIfOutOfRange",2061}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"windUnitsTrend3",2407}, + {"extractDateTimeStart",829}, + {""}, {""}, {""}, {""}, + {"eastLongitudeOfDomainOfTubing",726}, + {""}, {""}, {""}, {""}, {""}, + {"runwayDesignatorState4",1884}, + {""}, + {"section5Length",2039}, {""}, - {"NH",181}, + {"ZLMULT",287}, {""}, {""}, {""}, - {"windUnitsTrend2",2406}, + {"extractDateTimeSecondEnd",826}, + {"runwayDepthOfDepositCodeState4",1872}, + {""}, {""}, {""}, {""}, {""}, + {"gribMasterTablesVersionNumber",913}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"section1Length",2020}, + {"dateOfIceFieldUsed",654}, + {""}, + {"extractDateTimeSecondStart",828}, + {""}, {""}, {""}, {""}, + {"numberOfSecondOrderPackedValues",1482}, + {""}, + {"section_3",2074}, + {""}, + {"latitudeOfLastGridPointInDegrees",1083}, {""}, {""}, - {"LLCOSP",99}, + {"md5Section4",1284}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, - {"scaleFactorOfCentralWaveNumber",1898}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"longitudeOfThePolePoint",1203}, - {""}, {""}, {""}, {""}, {""}, - {"typeOfPacking",2269}, - {""}, {""}, {""}, - {"runwayExtentOfContaminationState1",1871}, - {""}, {""}, {""}, - {"beginMonthTrend4",351}, - {"typeOfGeneratingProcess",2261}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"ICPLSIZE",87}, {""}, {""}, - {"Minute_E4",162}, - {"NB",175}, + {"md5GridSection",1277}, {""}, {""}, {""}, - {"numberInHorizontalCoordinates",1369}, - {"Local_Number_Members_Used",138}, + {"numberOfPointsAlongSecondAxis",1464}, + {""}, + {"earthMajorAxisInMetres",722}, {""}, {""}, {""}, {""}, {""}, - {"typeOfProcessedData",2272}, + {"meanRVR4",1295}, + {""}, {""}, {""}, + {"section_2",2073}, + {""}, {""}, {""}, {""}, + {"northLatitudeOfDomainOfTubing",1368}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"section7Length",2047}, + {""}, {""}, {""}, {""}, + {"runwayFrictionCodeValueState3",1895}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, - {"meanRVR1",1284}, + {""}, {""}, {""}, {""}, + {"scaleFactorOfLowerWavePeriodLimit",1929}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"runwayFrictionCodeValueState2",1894}, {""}, - {"qualityValueAssociatedWithParameter",1761}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"scaleFactorOfMajorAxisOfOblateSpheroidEarth",1930}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, + {"visibilityInKilometresTrend3",2417}, + {"md5Section10",1281}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"disableGrib1LocalSection",703}, + {""}, + {"yearOfForecastUsedInLocalTime",2482}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, + {"southLatitudeOfDomainOfTubing",2128}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, - {"latitudeOfReferencePointInDegrees",1080}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, + {"visibilityInKilometresTrend2",2416}, + {"md5Section2",1282}, {""}, - {"presentWeather3Present",1719}, - {""}, - {"lastMonthUsedToBuildClimateMonth2",1063}, - {"presentWeather2Present",1714}, + {"runwayFrictionCoefficientCodeState4",1900}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, - {"unusedBitsInBitmap",2321}, {""}, {""}, {""}, - {"Local_Number_Members_Possible",134}, + {"hourOfForecastUsedInLocalTime",952}, {""}, {""}, - {"Total_Number_Members_Missing",254}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"NRj",187}, + {"NRj",189}, + {"widthOfWidths",2435}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"runwayDesignatorState3",1883}, + {"westLongitudeOfDomainOfTubing",2429}, {""}, {""}, {""}, - {"numberOfGridInReference",1423}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"latitudeOfLastGridPoint",1076}, + {"NB",175}, + {"scaleFactorOfLengthOfSemiMajorAxis",1926}, + {""}, {""}, + {"runwayDepthOfDepositCodeState3",1871}, {""}, {""}, {""}, {""}, - {"observationDiagnostic",1495}, - {"offsetToEndOf4DvarWindow",1536}, - {"numberOfPointsAlongAMeridian",1449}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"beginDayTrend1",339}, {""}, {""}, {""}, {""}, {""}, - {"resolutionAndComponentFlags1",1825}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"section_06",2066}, + {"runwayDesignatorState2",1882}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"runwayDepthOfDepositCodeState2",1870}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, + {"numberOfPointsAlongAParallel",1462}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, + {"runwayFrictionCodeValueState1",1893}, {""}, {""}, {""}, {""}, {""}, - {"scaledValueOfLengthOfSemiMajorAxis",1930}, + {"addEmptySection2",297}, + {""}, + {"endMonthTrend4",756}, + {""}, + {"versionNumOfSharedHeaderMessageFormat",2403}, + {"extractDateTimeYearEnd",830}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"CLNOMA",23}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, - {"runwayExtentOfContaminationState4",1874}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, - {"lastMonthUsedToBuildClimateMonth1",1062}, - {"presentWeather1Present",1709}, - {"windUnitsTrend1",2405}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"shortNameLegacyECMF",2067}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"HourOfModelVersion",82}, + {"NC2",178}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"section_5",2076}, + {"probProductDefinition",1748}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"numberOfSingularVectorsComputed",1484}, {""}, {""}, {""}, - {"endHourTrend3",742}, - {""}, {""}, {""}, {""}, {""}, - {"endHourTrend2",741}, - {"cloudsAbbreviation3Trend3",447}, - {""}, {""}, - {"cloudsAbbreviation2Trend3",442}, - {""}, {""}, - {"cloudsAbbreviation3Trend2",446}, - {"oneMinuteMeanMinimumRVR4",1551}, - {""}, - {"cloudsAbbreviation2Trend2",441}, + {"pentagonalResolutionParameterK",1695}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, - {"section_11",2038}, - {""}, - {"numberOfPressureLevelsUsedForClustering",1461}, + {""}, {""}, + {"section_03",2063}, {""}, {""}, {""}, {""}, - {"numberOfPointsAlongSecondAxis",1452}, + {"section_1",2070}, + {""}, {""}, {""}, + {"runwayDesignatorState1",1881}, {""}, {""}, {""}, {""}, {""}, {""}, - {"tsectionNumber5",2247}, - {""}, {""}, {""}, {""}, - {"coordAveraging3",584}, - {""}, {""}, {""}, {""}, {""}, - {"coordAveraging2",583}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"padding_sec1_loc",1662}, + {""}, + {"runwayDepthOfDepositCodeState1",1869}, + {""}, + {"runwayFrictionCoefficientCodeState3",1899}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, - {"section5UniqueIdentifier",2007}, - {""}, {""}, {""}, {""}, {""}, - {"md5GridSection",1269}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, - {"Local_Number_Members_Missing",130}, + {"legacyGaussSubarea",1110}, + {"runwayDepositCodeState4",1864}, + {"runwayFrictionCoefficientCodeState2",1898}, + {"section_02",2062}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"beginHourTrend4",343}, + {"extractAreaEastLongitude",807}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, - {"numberOfPointsAlongAParallel",1450}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"ICEFieldsUsed",86}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"generalExtended2ordr",898}, {""}, {""}, {""}, {""}, - {"beginYearTrend3",354}, + {"recentWeatherTry",1807}, {""}, - {"visibilityTrend2",2375}, + {"SOH",226}, {""}, {""}, {""}, - {"beginYearTrend2",353}, + {"extractDateTimeHourEnd",817}, + {""}, {""}, + {"Original_Parameter_Identifier",210}, {""}, {""}, {""}, {""}, - {"cloudsAbbreviation1Trend3",437}, - {""}, - {"cloudsBase2",459}, - {""}, {""}, {""}, - {"cloudsAbbreviation1Trend2",436}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, - {"spacingOfBinsAlongRadials",2102}, - {""}, {""}, {""}, {""}, {""}, - {"meanRVR4",1287}, + {"listMembersUsed3",1138}, {""}, {""}, {""}, {""}, - {"md5Section2",1274}, + {"checkInternalVersion",431}, + {""}, {""}, {""}, {""}, {""}, + {"visibilityInKilometresTrend1",2415}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"Extra_Data_FreeFormat_0_none",56}, + {"numberOfHorizontalPoints",1439}, + {""}, + {"meanRVR3",1294}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"listOfWaveFrequencySequenceParameters",1147}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, + {"section_7",2078}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"extractDateTimeDayStart",811}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"endHourTrend1",740}, + {"southEastLongitudeOfLPOArea",2125}, {""}, {""}, {""}, {""}, {""}, {""}, - {"cloudsAbbreviation3Trend1",445}, - {""}, {""}, - {"cloudsAbbreviation2Trend1",440}, - {""}, {""}, {""}, {""}, - {"experimentVersionNumber2",793}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"meanRVR2",1293}, {""}, - {"codedNumberOfGroups",555}, - {""}, {""}, - {"cloudsBaseCoded2",479}, + {"baseTimeOfThisLeg",337}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"cloudsBaseCoded2Trend3",482}, + {"NEAREST",180}, + {""}, {""}, {""}, {""}, + {"offsetSection11",1544}, {""}, {""}, - {"cloudsBaseCoded2Trend2",481}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"coordAveraging1",582}, + {"typeOfWavelengthInterval",2323}, + {"runwayFrictionCoefficientCodeState1",1897}, + {"swapScanningAlternativeRows",2197}, + {""}, {""}, + {"listMembersUsed4",1139}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, - {"resolutionAndComponentFlags7",1830}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"resolutionAndComponentFlags4",1828}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, + {"listMembersMissing4",1135}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, + {"horizontalDomainTemplate",946}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, - {"ECMWF_s",46}, {""}, - {"cloudsAbbreviation4Trend3",452}, + {"NC1",177}, {""}, {""}, {""}, {""}, {""}, - {"cloudsAbbreviation4Trend2",451}, + {"flagForNormalOrStaggeredGrid",870}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, - {"scaledValueOfMinorAxisOfOblateSpheroidEarth",1934}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"beginYearTrend1",352}, + {""}, {""}, {""}, + {"observationDiagnostic",1512}, + {"paramIdECMF",1671}, {""}, - {"radiusOfClusterDomain",1769}, + {"spacingOfBinsAlongRadials",2136}, + {"WRAP",264}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"totalNumberOfGridPoints",2232}, + {"longitudeOfSouthernPoleInDegrees",1204}, {""}, {""}, {""}, - {"windUnitsTrend4",2408}, - {"uuidOfHGrid",2333}, - {"cloudsAbbreviation1Trend1",435}, - {""}, {""}, - {"beginMonthTrend2",349}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"numberOfReforecastYearsInModelClimate",1477}, + {""}, {""}, {""}, {""}, {""}, + {"section_05",2065}, {""}, {""}, {""}, {""}, {""}, {""}, - {"cloudsBaseCoded2Trend1",480}, + {"radiusOfTheEarth",1787}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, + {"endMonthTrend3",755}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, + {"listMembersUsed2",1137}, {""}, {""}, {""}, - {"horizontalDimensionProcessed",941}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"pastTendencyRVR3",1674}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"cloudsCode3Trend3",507}, - {""}, {""}, - {"cloudsCode3Trend2",506}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"Original_Parameter_Identifier",208}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"section_01",2061}, {""}, - {"experimentVersionNumber1",792}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"longitudeOfSouthernPoleInDegrees",1196}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"cloudsAbbreviation4",452}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, - {"numberOfPointsUsed",1460}, {""}, {""}, - {"numberOfUsefulPointsAlongXAxis",1484}, + {"horizontalDimensionProcessed",945}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"endMonthTrend2",754}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"experimentVersionNumberOfAnalysis",798}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"baseDateOfThisLeg",335}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"cloudsBaseCoded1Trend4",481}, + {""}, {""}, + {"scaledValueOfCentralWaveNumber",1949}, + {""}, + {"pentagonalResolutionParameterJ",1694}, {""}, {""}, {""}, - {"numberOfSecondOrderPackedValues",1469}, - {""}, {""}, {""}, - {"rootGroupSymbolTableEntry",1834}, + {"beginMinuteTrend4",350}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"padding_loc9_2",1638}, + {"DjGiven",35}, + {""}, {""}, {""}, {""}, {""}, + {"latitudeOfReferencePointInDegrees",1086}, {""}, - {"cloudsCode3Trend1",505}, + {"latitudeOfThePolePoint",1096}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"cloudsAbbreviation4Trend1",450}, - {""}, {""}, {""}, {""}, {""}, - {"Ensemble_Identifier_E3",53}, + {"inputOverriddenReferenceValues",995}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"section2Used",2027}, {""}, {""}, - {"Ensemble_Identifier_E2",52}, + {"runwayDepositCodeState3",1863}, + {""}, {""}, + {"meanRVR1",1292}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, - {"longitudeOfThePolePointInDegrees",1204}, {""}, {""}, {""}, {""}, {""}, - {"cloudsBaseCoded2Trend4",483}, + {"section_07",2067}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"offsetBeforePV",1517}, - {""}, {""}, {""}, {""}, {""}, - {"countOfGroupLengths",617}, + {"typeOfGeneratingProcess",2298}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, + {"runwayDepositCodeState2",1862}, + {""}, + {"numberOfSingularVectorsEvolved",1485}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"section_5",2042}, - {""}, {""}, {""}, - {"endHourTrend4",743}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"cloudsAbbreviation3Trend4",448}, - {""}, {""}, - {"cloudsAbbreviation2Trend4",443}, - {"numberOfPointsAlongFirstAxis",1451}, - {""}, {""}, {""}, {""}, {""}, - {"YearOfModelVersion",280}, + {"lengthOf4DvarWindow",1113}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"cloudsBaseCoded3Trend4",491}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"latitudeOfThePolePoint",1090}, - {""}, {""}, {""}, {""}, {""}, - {"endYearTrend3",764}, - {""}, {""}, {""}, {""}, {""}, - {"endYearTrend2",763}, + {"subdivisionsOfBasicAngle",2194}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"cloudsBase3",467}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, - {"numberOfBitsUsedForTheScaledGroupLengths",1380}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, - {"runwayDepthOfDepositState3",1857}, - {"latitudeOfLastGridPointInDegrees",1077}, - {""}, - {"jDirectionIncrementGiven",1039}, - {"flagForNormalOrStaggeredGrid",866}, - {""}, - {"runwayDepthOfDepositState2",1856}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"section_05",2031}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, + {"cloudsBase1",457}, + {"cloudsBaseCoded1Trend3",480}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"runwayDesignatorRVR3",1861}, + {"beginMinuteTrend3",349}, {""}, {""}, {""}, {""}, {""}, - {"runwayDesignatorRVR2",1860}, - {""}, {""}, - {"probProductDefinition",1731}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"padding_local11_1",1639}, - {""}, {""}, {""}, {""}, - {"beginYearTrend4",355}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"cloudsCode3Trend4",508}, - {""}, - {"cloudsAbbreviation1Trend4",438}, + {"numberOfPressureLevelsUsedForClustering",1473}, {""}, {""}, {""}, {""}, {""}, - {"mixedCoordinateDefinition",1317}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"cloudsCode4Trend3",512}, - {""}, {""}, - {"cloudsCode4Trend2",511}, - {"cloudsCode1Trend3",497}, + {"cloudsBaseCoded1Trend2",479}, {""}, - {"extractDateTimeDayEnd",809}, - {"cloudsCode1Trend2",496}, + {"endMark",748}, + {"listMembersMissing3",1134}, + {""}, {""}, {""}, {""}, {""}, + {"beginMinuteTrend2",348}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"NH",183}, + {""}, {""}, + {"endMonthTrend1",753}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"g1conceptsLocalDirAll",889}, - {""}, {""}, {""}, {""}, - {"padding_loc9_1",1637}, - {"padding_loc7_1",1636}, {""}, {""}, {""}, {""}, - {"padding_loc6_1",1635}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"cloudsBase4",472}, + {""}, + {"listMembersMissing2",1133}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"unusedBitsInBitmap",2366}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, - {"typicalYear2",2291}, + {""}, {""}, {""}, {""}, + {"cloudsBaseCoded3",487}, {""}, {""}, {""}, - {"superblockExtensionAddress",2161}, - {""}, - {"scaledValueOfCentralWaveNumber",1922}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"sourceSinkChemicalPhysicalProcess",2122}, + {"padding_local40_1",1659}, {""}, {""}, {""}, - {"pastTendencyRVR1",1672}, + {"cloudsBaseCoded3Trend3",490}, + {""}, {""}, {""}, {""}, + {"setBitsPerValue",2091}, + {""}, {""}, {""}, {""}, + {"cloudsAbbreviation3",447}, + {"cloudsBaseCoded2Trend4",486}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"cloudsBaseCoded3Trend2",489}, + {"cloudsBaseCoded1",477}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"cloudsBaseCoded1Trend1",478}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"beginMinuteTrend1",347}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"runwayDepositCodeState1",1861}, {""}, {""}, {""}, - {"padding_loc5_1",1634}, + {"cloudsAbbreviation2",442}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"pastTendencyRVR3",1691}, {""}, {""}, {""}, {""}, - {"numberOfPointsAlongTheXAxis",1453}, - {""}, {""}, {""}, {""}, {""}, - {"Ensemble_Identifier_E4",54}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"cloudsCode4Trend1",510}, + {"cloudsBase2",462}, {""}, {""}, {""}, - {"cloudsCode1Trend1",495}, + {"projTargetString",1762}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"cloudsBaseCoded4",492}, {""}, {""}, {""}, - {"endYearTrend1",762}, + {"offsetBeforePV",1534}, + {""}, + {"pastTendencyRVR1",1689}, + {""}, {""}, + {"cloudsBaseCoded4Trend4",496}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"resolutionAndComponentFlags4",1846}, + {""}, + {"offsetBSection6",1529}, + {""}, {""}, + {"latitudeOfThePoleOfStretching",1095}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"projSourceString",1760}, + {""}, {""}, + {"scaledValueOfUpperLimit",1970}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"pastTendencyRVR4",1692}, + {""}, {""}, + {"physicalFlag2",1704}, + {"Ensemble_Combination_Number",50}, + {"cloudsBaseCoded3Trend1",488}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"typicalYearOfCentury",2292}, - {""}, {""}, {""}, {""}, - {"runwayDepthOfDepositState1",1855}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"cloudsAbbreviation4Trend4",453}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"altitudeOfTheCameraFromTheEarthsCentreMeasuredInUnitsOfTheEarthsRadius",304}, {""}, - {"padding_loc50_1",1633}, - {""}, {""}, {""}, {""}, {""}, - {"ccsdsBlockSize",388}, + {"Y2",277}, + {""}, + {"scaleFactorOfEarthMajorAxis",1921}, + {""}, {""}, {""}, {""}, + {"scaleFactorOfEarthMinorAxis",1922}, + {""}, {""}, {""}, {""}, + {"Total_Number_Members_Used",258}, {""}, {""}, {""}, {""}, {""}, - {"runwayDesignatorRVR1",1859}, + {"cloudsBaseCoded2Trend3",485}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, + {"cloudsBaseCoded2",482}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"cloudsBaseCoded2Trend2",484}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, - {"horizontalDomainTemplateNumber",943}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"shortNameLegacyECMF",2101}, + {""}, {""}, {""}, {""}, + {"uuidOfHGrid",2378}, {""}, {""}, - {"isCavok",1006}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"uvRelativeToGrid",2335}, + {"scaleFactorOfMinorAxisOfOblateSpheroidEarth",1931}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"pastTendencyRVR2",1690}, + {""}, + {"cloudsBaseCoded4Trend3",495}, {""}, {""}, {""}, {""}, {""}, {""}, - {"jDirectionIncrementGridLength",1040}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"cfNameLegacyECMF",417}, + {""}, {""}, {""}, + {"Local_Number_Members_Used",138}, {""}, {""}, {""}, {""}, - {"pastTendencyRVR4",1675}, + {"typeOfLevelECMF",2304}, + {""}, {""}, {""}, + {"Total_Number_Members_Possible",257}, + {"cloudsBaseCoded4Trend2",494}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, + {"cloudsAbbreviation1",437}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"cloudsCode4Trend4",513}, - {""}, {""}, {""}, - {"cloudsCode1Trend4",498}, + {"constantAntennaElevationAngle",579}, + {""}, {""}, {""}, {""}, + {"unitsLegacyECMF",2353}, + {""}, {""}, {""}, {""}, {""}, + {"coordinate3OfFirstGridPoint",596}, + {""}, + {"resolutionAndComponentFlags6",1847}, + {"numberOfPointsUsed",1472}, {""}, {""}, {""}, - {"Missing_Model_LBC",163}, + {"cloudsBaseCoded2Trend1",483}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"hoursAfterReferenceTimeOfDataCutoff",957}, + {"typicalYearOfCentury",2335}, + {""}, {""}, {""}, {""}, {""}, + {"timeUnitFlag",2254}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"Total_Number_Members_Missing",256}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"section4UniqueIdentifier",2037}, + {"Local_Number_Members_Possible",134}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"lBB",1056}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"radiusOfClusterDomain",1786}, + {""}, {""}, {""}, + {"physicalFlag1",1703}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, + {"cloudsBaseCoded4Trend1",493}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"Y1",275}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, + {"CLNOMA",23}, {""}, - {"cloudsBase3Trend3",467}, - {""}, - {"latitudeOfSouthEastCornerOfArea",1081}, - {"cloudsBase3Trend2",466}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"latitudeOfThePoleOfStretching",1089}, - {""}, - {"setBitsPerValue",2057}, + {"Local_Number_Members_Missing",130}, + {""}, {""}, + {"resolutionAndComponentFlags3",1845}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, - {"padding_grid90_1",1588}, + {"DELETE",24}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, + {"offsetBSection5",1528}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"cfVarNameLegacyECMF",417}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"resolutionAndComponentFlags2",1844}, + {""}, {""}, {""}, + {"section6UniqueIdentifier",2045}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, + {"extractAreaSouthLatitude",811}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, + {"northWestLongitudeOfLPOArea",1371}, + {""}, {""}, {""}, + {"laplacianScalingFactorUnset",1067}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, + {"section3UniqueIdentifier",2032}, + {""}, + {"numberOfPointsAlongFirstAxis",1463}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, + {"beginHourTrend4",346}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, + {"beginYearTrend4",358}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"coordinate4OfFirstGridPoint",599}, {""}, {""}, - {"************_ENSEMBLE_**************",1}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"sizeOfPostAuxiliaryArrayPlusOne",2082}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, - {"cloudsBase3Trend1",465}, - {"endYearTrend4",765}, + {"ccsdsCompressionOptionsMask",392}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"typeOfWaveDirectionSequence",2320}, + {""}, {""}, + {"isCavok",1012}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, - {"windGustTrend3",2396}, - {""}, {""}, {""}, {""}, {""}, - {"windGustTrend2",2395}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"runwayDepthOfDepositState4",1858}, - {""}, - {"Original_CodeTable_2_Version_Number",206}, - {""}, {""}, {""}, - {"latitudeOfThePolePointInDegrees",1091}, - {"bufrHeaderSubCentre",378}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"Local_Number_Members_Possible_E3",136}, + {"numberOfPointsAlongYAxis",1469}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"pentagonalResolutionParameterM",1696}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"Local_Number_Members_Possible_E2",135}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"runwayDesignatorRVR4",1862}, + {"visibilityTrend3",2421}, + {"section5UniqueIdentifier",2041}, + {"HDF5",80}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, + {"typicalYear2",2334}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"padding_local_7_1",1644}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, - {"HDF5",80}, + {"visibilityTrend1",2419}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, + {"intervalBetweenTimes",1009}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"extractAreaLongitudeRank",805}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, - {"XpInGridLengths",272}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"resolutionAndComponentFlags1",1843}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"Local_Number_Members_Missing_E3",132}, {""}, {""}, - {"Local_Number_Members_Missing_E2",131}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, - {"************_PRODUCT_***************",3}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, - {"runwayExtentOfContaminationCodeState3",1869}, + {"extractDateTimeEnd",816}, {""}, {""}, - {"runwayExtentOfContaminationCodeState2",1868}, + {"section7UniqueIdentifier",2049}, + {""}, {""}, {""}, {""}, + {"horizontalDomainTemplateNumber",947}, + {""}, {""}, {""}, {""}, + {"visibilityTrend4",2422}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, + {"Date_E4",28}, + {""}, + {"uvRelativeToGrid",2380}, + {""}, {""}, {""}, {""}, {""}, + {"sizeOfPostAuxiliaryArray",2115}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"cloudsBase3Trend4",468}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"Threshold_Or_Distribution_Units",247}, - {""}, {""}, {""}, - {"Hour_E3",84}, - {""}, {""}, {""}, - {"cloudsBase4Trend3",472}, - {""}, - {"Hour_E2",83}, - {"cloudsBase4Trend2",471}, - {"cloudsBase1Trend3",457}, {""}, {""}, - {"cloudsBase1Trend2",456}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"scaledValueOfLowerWavePeriodLimit",1960}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"scaledValueOfMajorAxisOfOblateSpheroidEarth",1961}, + {""}, {""}, {""}, {""}, + {"latitudeOfThePolePointInDegrees",1097}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, + {"jDirectionIncrementGiven",1045}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"sourceSinkChemicalPhysicalProcess",2088}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"resolutionAndComponentFlags7",1848}, + {""}, {""}, {""}, {""}, + {"ICPLSIZE",87}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, + {"presentWeather3Present",1736}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, + {"visibilityTrend2",2420}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"TYPE_FF",241}, + {"presentWeather2Present",1731}, + {""}, {""}, {""}, + {"scaledValueOfLengthOfSemiMajorAxis",1957}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"windGustTrend1",2394}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"runwayExtentOfContaminationCodeState1",1867}, + {""}, + {"runwayDepthOfDepositState4",1876}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"numberOfGridUsed",1424}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"beginHourTrend3",345}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"BUFR",18}, + {"numberOfBitsContainingEachPackedValue",1389}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, - {"ceilingAndVisibilityOKTrend3",395}, - {""}, {""}, {""}, {""}, {""}, - {"ceilingAndVisibilityOKTrend2",394}, + {""}, {""}, + {"beginYearTrend3",357}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, - {"cloudsBase4Trend1",470}, - {""}, {""}, {""}, - {"cloudsBase1Trend1",455}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"WRAP",262}, + {"beginHourTrend2",344}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"numberOfParametersUsedForClustering",1446}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"pastTendencyRVR2",1673}, + {"beginYearTrend2",356}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, - {"Local_Number_Members_Possible_E4",137}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"cloudsCode2Trend3",502}, + {"numberOfPointsAlongTheXAxis",1465}, + {""}, {""}, {""}, + {"endHourTrend4",747}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, + {"setToMissingIfOutOfRange",2095}, {""}, {""}, - {"cloudsCode2Trend2",501}, + {"ECMWF",45}, + {"offsetToEndOf4DvarWindow",1553}, + {"presentWeather1Present",1726}, + {""}, + {"endYearTrend4",769}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, - {"TYPE_OF",243}, - {"is_chemical_srcsink",1026}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"mixedCoordinateDefinition",1326}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"countOfGroupLengths",620}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"latitudeOfTheSouthernPoleOfProjection",1092}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, + {"jDirectionIncrementGridLength",1046}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"hoursAfterDataCutoff",951}, - {""}, {""}, {""}, {""}, - {"Local_Number_Members_Missing_E4",133}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"runwayExtentOfContaminationCodeState4",1870}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"altitudeOfTheCameraFromTheEarthsCentreMeasuredInUnitsOfTheEarthsRadius",307}, + {""}, {""}, + {"Date_E3",27}, + {""}, {""}, + {"NG",182}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"numberInHorizontalCoordinates",1380}, + {""}, {""}, {""}, + {"g1conceptsLocalDirAll",893}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"cloudsCode2Trend1",500}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, - {"offsetBSection5",1511}, + {"Date_E2",26}, {""}, {""}, {""}, {""}, {""}, {""}, - {"cloudsBase4Trend4",473}, - {""}, {""}, {""}, - {"cloudsBase1Trend4",458}, + {"HourOfModelVersion",82}, + {""}, {""}, {""}, {""}, + {"rootGroupSymbolTableEntry",1852}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"YearOfModelVersion",282}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, + {"beginHourTrend1",343}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"ceilingAndVisibilityOKTrend1",393}, - {""}, {""}, - {"indexingTimeHHMM",977}, + {"numberOfUsefulPointsAlongXAxis",1497}, + {""}, {""}, {""}, {""}, + {"beginYearTrend1",355}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, - {"numberOfPointsAlongYAxis",1457}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"runwayDepthOfDepositState3",1875}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, + {"weightAppliedToClimateMonth1",2427}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"ZLBASE",286}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"runwayDepthOfDepositState2",1874}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"TYPE_FX",242}, {""}, - {"padding_local_35",1643}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"numberOfParametersUsedForClustering",1458}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"windGustTrend4",2397}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"endHourTrend3",746}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"listOfWaveDirectionSequenceParameters",1146}, {""}, {""}, - {"indexingTimeHH",976}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"endYearTrend3",768}, + {""}, + {"latitudeOfTheSouthernPoleOfProjection",1098}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"endHourTrend2",745}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, - {"cloudsCode2Trend4",503}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, + {"endYearTrend2",767}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, + {"extractDateTimeDayStart",815}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"TYPE_FF",243}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, + {"TYPE_OF",245}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, + {"Threshold_Or_Distribution_Units",249}, + {""}, + {"numberOfTensOfThousandsOfYearsOfOffset",1489}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"7777",5}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"runwayDesignatorRVR4",1880}, + {"numberOfPointsAlongYAxisInCouplingArea",1470}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, - {"coordinate3OfFirstGridPoint",593}, + {""}, {""}, {""}, {""}, {""}, + {"cloudsCode1Trend4",501}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, + {"sizeOfPostAuxiliaryArrayPlusOne",2116}, + {""}, {""}, {""}, + {"runwayDepthOfDepositState1",1873}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"versionNumberOfSuperblock",2406}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, + {"padding_loc9_2",1655}, + {""}, + {"BUFR",18}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"Original_CodeTable_2_Version_Number",208}, + {""}, + {"skipExtraKeyAttributes",2119}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"padding_loc30_2",1627}, + {"section_11",2072}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"Hour_E4",85}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"Number_Combination_Ensembles_1_none",201}, + {""}, {""}, {""}, {""}, {""}, + {"lBB",1062}, + {""}, {""}, + {"cloudsAbbreviation4Trend4",456}, + {""}, {""}, {""}, + {"windUnitsTrend4",2456}, + {""}, {""}, {""}, {""}, + {"superblockExtensionAddress",2196}, + {""}, {""}, {""}, + {"oneMinuteMeanMaximumRVR4",1564}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, + {"cloudsCode3Trend4",511}, + {""}, + {"endHourTrend1",744}, + {""}, + {"runwayExtentOfContaminationState4",1892}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, + {"endYearTrend1",766}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"cloudsCode1Trend3",500}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"padding_sec3_1",1649}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"cloudsCode1Trend2",499}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"*********_EXTRA_DATA_***************",4}, + {"coordAveraging3",587}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"versionNumberOfSuperblock",2361}, - {"ceilingAndVisibilityOKTrend4",396}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, + {"coordAveraging2",586}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, - {"padding_loc3_1",1631}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"padding_local_35",1660}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"padding_grid1_2",1583}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"cloudsAbbreviation3Trend4",451}, + {""}, {""}, {""}, + {"cfVarNameLegacyECMF",420}, + {"is_chemical_srcsink",1032}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"cloudsAbbreviation2Trend4",446}, + {""}, {""}, {""}, {""}, {""}, + {"cloudsCode3Trend3",510}, + {""}, {""}, {""}, + {"runwayExtentOfContaminationState3",1891}, + {"numberOfBitsUsedForTheScaledGroupLengths",1392}, + {""}, {""}, {""}, {""}, + {"padding_loc9_1",1654}, + {"cloudsCode2Trend4",506}, + {"padding_loc7_1",1653}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"scaledValueOfEarthMajorAxis",1952}, + {""}, + {"cloudsCode3Trend2",509}, + {""}, {""}, + {"scaledValueOfEarthMinorAxis",1953}, + {"runwayExtentOfContaminationState2",1890}, + {""}, {""}, {""}, {""}, {""}, + {"cloudsCode1Trend1",498}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"beginMonthTrend3",353}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, + {"runwayDesignatorRVR3",1879}, + {"padding_loc6_1",1652}, + {""}, {""}, {""}, {""}, + {"experimentVersionNumber2",797}, + {""}, + {"windGustTrend4",2445}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, + {"beginMonthTrend1",351}, + {""}, {""}, + {"padding_loc5_1",1651}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, + {"runwayDesignatorRVR2",1878}, {""}, {""}, - {"padding_local1_31",1641}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"isCavokTrend3",1009}, + {"cloudsCode4Trend4",516}, + {""}, {""}, {""}, + {"scaledValueOfMinorAxisOfOblateSpheroidEarth",1962}, {""}, {""}, {""}, {""}, {""}, - {"isCavokTrend2",1008}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"padding_loc38_1",1630}, + {"padding_grid90_1",1605}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"padding_loc30_1",1626}, - {"NG",180}, - {""}, {""}, {""}, {""}, - {"padding_loc4_2",1632}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, - {"padding_loc19_2",1608}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, + {"beginMonthTrend4",354}, + {"cloudsAbbreviation1Trend4",441}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, + {"latitudeOfSouthEastCornerOfArea",1087}, + {""}, {""}, {""}, {""}, + {"cloudsCode3Trend1",508}, + {""}, {""}, {""}, + {"runwayExtentOfContaminationState1",1889}, + {""}, {""}, {""}, {""}, + {"cloudsAbbreviation4Trend3",455}, + {""}, {""}, {""}, + {"windUnitsTrend3",2455}, + {"XpInGridLengths",274}, + {"FMULTM",66}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"oneMinuteMeanMaximumRVR3",1563}, {""}, {""}, {""}, {""}, {""}, - {"padding_grid3_1",1584}, + {"************_EXPERIMENT_************",2}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"coordinate4OfFirstGridPoint",596}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"cloudsCode2Trend3",505}, {""}, {""}, {""}, - {"cloudsBase2Trend3",462}, - {""}, {""}, - {"cloudsBase2Trend2",461}, + {"cloudsAbbreviation4Trend2",454}, {""}, {""}, {""}, - {"numberOfTensOfThousandsOfYearsOfOffset",1476}, + {"windUnitsTrend2",2454}, + {"CCCC",20}, + {""}, {""}, {""}, {""}, {""}, + {"extractAreaLongitudeRank",809}, + {""}, + {"oneMinuteMeanMaximumRVR2",1562}, + {""}, + {"coordAveraging1",585}, + {""}, + {"cloudsCode2Trend2",504}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, + {"hoursAfterDataCutoff",956}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"padding_loc18_2",1602}, + {"beginMonthTrend2",352}, + {""}, {""}, {""}, {""}, {""}, + {"Minute_E4",162}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"numberOfPointsAlongYAxisInCouplingArea",1458}, + {""}, {""}, {""}, {""}, {""}, + {"ccsdsBlockSize",391}, + {""}, {""}, {""}, + {"cloudsCode4Trend3",515}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, - {"extractAreaLatitudeRank",804}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, + {"cloudsCode4Trend2",514}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"experimentVersionNumber1",796}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, + {"cloudsAbbreviation3Trend3",450}, + {""}, + {"cloudsCode2Trend1",503}, + {""}, {""}, {""}, + {"runwayDesignatorRVR1",1877}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"padding_grid1_1",1582}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, - {"padding_sec4_1",1650}, + {"cloudsAbbreviation2Trend3",445}, + {""}, + {"padding_loc50_1",1650}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"cloudsBase2Trend1",460}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"TYPE_PF",247}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, + {"cloudsAbbreviation3Trend2",449}, + {""}, {""}, {""}, + {"missingValueManagementUsed",1323}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, + {"************_ENSEMBLE_**************",1}, + {""}, {""}, {""}, {""}, {""}, + {"cloudsAbbreviation2Trend2",444}, {""}, {""}, - {"isCavokTrend1",1007}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"numberOfVGridUsed",1486}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"numberOfGridUsed",1436}, + {"qualityValueAssociatedWithParameter",1778}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"windGustTrend3",2444}, + {"cloudsCode4Trend1",513}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"scaleFactorOfUpperWavePeriodLimit",1940}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, + {"cloudsAbbreviation4Trend1",453}, + {"windGustTrend2",2443}, + {""}, + {"TYPE_FX",244}, + {"windUnitsTrend1",2453}, + {""}, + {"padding_local11_1",1656}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"oneMinuteMeanMaximumRVR1",1561}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, + {"Local_Number_Members_Possible_E4",137}, + {"Local_Number_Members_Missing_E4",133}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, + {"cloudsAbbreviation1Trend3",440}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, - {"padding_local1_1",1640}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"TYPE_OR",246}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"padding_loc18_1",1601}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"padding_loc10_1",1589}, + {"cloudsAbbreviation1Trend2",439}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, + {"LSTCUM",100}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, - {"padding_grid4_1",1585}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, - {"CCCC",20}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"cloudsBase2Trend4",463}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"padding_local_7_1",1661}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"biFourierPackingModeForAxes",358}, + {""}, {""}, {""}, + {"Minute_E3",161}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, + {"cloudsAbbreviation3Trend1",448}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"Minute_E2",160}, + {""}, + {"cloudsAbbreviation2Trend1",443}, + {""}, {""}, + {"Local_Number_Members_Possible_E3",136}, + {"Local_Number_Members_Missing_E3",132}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, + {"Local_Number_Members_Possible_E2",135}, + {"Local_Number_Members_Missing_E2",131}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"extremeValuesRVR3",839}, - {""}, {""}, - {"extremeValuesRVR2",838}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, - {"Missing_Model_LBC_E3",165}, - {""}, {""}, {""}, {""}, {""}, - {"Missing_Model_LBC_E2",164}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, + {"windGustTrend1",2442}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"Ensemble_Identifier_E4",54}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"ICEFieldsUsed",86}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"X2InGridLengths",267}, - {""}, - {"padding_loc190_1",1603}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, - {"presentWeather3PresentTrend3",1722}, - {""}, {""}, - {"presentWeather2PresentTrend3",1717}, - {""}, {""}, - {"presentWeather3PresentTrend2",1721}, - {""}, {""}, - {"presentWeather2PresentTrend2",1716}, + {""}, {""}, {""}, {""}, {""}, + {"cloudsAbbreviation1Trend1",438}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, - {"octetAtWichPackedDataBegins",1503}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"extremeValuesRVR1",837}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"extractAreaLatitudeRank",808}, + {""}, {""}, {""}, {""}, + {"cloudsBase1Trend4",461}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"ceilingAndVisibilityOKTrend4",399}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, - {"isCavokTrend4",1010}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, - {"X1InGridLengths",265}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"Ensemble_Identifier_E3",53}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"LBC_Initial_Conditions",97}, - {""}, - {"presentWeather1PresentTrend3",1712}, + {"isCavokTrend4",1016}, {""}, {""}, {""}, {""}, {""}, - {"presentWeather1PresentTrend2",1711}, + {"Ensemble_Identifier_E2",52}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"RENAME",221}, + {""}, + {"oneMinuteMeanMinimumRVR4",1568}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, - {"DIAG",25}, + {""}, {""}, {""}, {""}, {""}, + {"cloudsBase3Trend4",471}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"extractDateTimeSecondRank",823}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, - {"extractDateTimeYearRank",827}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, + {"cloudsBase1Trend3",460}, + {""}, + {"Number_Combination_Ensembles_1_none",203}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"cloudsBase1Trend2",459}, + {"FMULTE",65}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"extremeValuesRVR4",840}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"presentWeather3PresentTrend1",1720}, - {""}, {""}, - {"presentWeather2PresentTrend1",1715}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"YY",281}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"YY",279}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"bufrHeaderSubCentre",381}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, - {"padding_sec2_3",1648}, - {""}, {""}, {""}, {""}, {""}, - {"padding_sec2_2",1647}, + {""}, + {"cloudsBase3Trend3",470}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, + {"cloudsBase2Trend4",466}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"cloudsBase3Trend2",469}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"cloudsBase1Trend1",458}, + {""}, {""}, + {"*********_EXTRA_DATA_***************",4}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, - {"swapScanningY",2166}, - {""}, {""}, {""}, - {"presentWeather1PresentTrend1",1710}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, - {"padding_loc2_2",1625}, - {""}, - {"padding_loc29_3",1623}, - {"extractDateTimeHourRank",814}, {""}, {""}, {""}, {""}, - {"padding_loc29_2",1622}, + {"ceilingAndVisibilityOKTrend3",398}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, + {"cloudsBase4Trend4",476}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, + {"biFourierPackingModeForAxes",361}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"ceilingAndVisibilityOKTrend2",397}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, - {"RVR3_1",222}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"isCavokTrend3",1015}, {""}, {""}, - {"RVR2_1",221}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"cloudsBase3Trend1",468}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, + {"oneMinuteMeanMinimumRVR3",1567}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"Extra_Data_FreeFormat_0_none",56}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"TYPE_CF",239}, - {"TYPE_PF",245}, + {"isCavokTrend2",1014}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"cloudsBase2Trend3",465}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"oneMinuteMeanMinimumRVR2",1566}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, + {"cloudsBase2Trend2",464}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, + {"LBC_Initial_Conditions",97}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, + {"cloudsBase4Trend3",475}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, + {"ECMWF_s",46}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"cloudsBase4Trend2",474}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, + {"TYPE_CF",241}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"RVR1_1",220}, - {"padding_sec2_1",1646}, + {""}, {""}, {""}, {""}, + {"P_TACC",218}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, + {"extractDateTimeDayEnd",813}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"Missing_Model_LBC_E4",166}, + {"cloudsBase2Trend1",463}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"ceilingAndVisibilityOKTrend1",396}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, - {"ExtremeValuesRVR3",63}, - {""}, {""}, - {"ExtremeValuesRVR2",62}, - {""}, {""}, {""}, - {"padding_loc2_1",1624}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"padding_loc29_1",1621}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, - {"presentWeather3PresentTrend4",1723}, - {""}, {""}, - {"presentWeather2PresentTrend4",1718}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"Less_Than_Or_To_Overall_Distribution",122}, {""}, {""}, - {"Threshold_Or_Distribution_0_no_1_yes",246}, + {"cloudsBase4Trend1",473}, + {""}, + {"DIAG",25}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"precisionOfTheUnpackedSubset",1700}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"isCavokTrend1",1013}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, - {"padding_loc28_1",1620}, - {""}, {""}, {""}, - {"numberOfUsefulPointsAlongYAxis",1485}, {""}, {""}, {""}, {""}, {""}, - {"padding_loc20_1",1609}, - {""}, {""}, {""}, {""}, {""}, - {"Ensemble_Combinat_Number_0_none_E3",48}, - {""}, {""}, - {"Ensemble_Combinat_Number_0_none_E2",47}, + {"oneMinuteMeanMinimumRVR1",1565}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, - {"padding_grid5_1",1587}, - {""}, - {"ExtremeValuesRVR1",61}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, - {"RVR4_1",223}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, - {"presentWeather1PresentTrend4",1713}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"GRIBEditionNumber",74}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, + {"runwayExtentOfContaminationCodeState4",1888}, + {""}, + {"Less_Than_Or_To_Overall_Distribution",122}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"BBB",16}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"padding_loc19_2",1625}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, + {"padding_loc18_2",1619}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -7444,99 +7141,143 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"TYPE_OR",244}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"ExtremeValuesRVR4",64}, + {"swapScanningY",2201}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"padding_loc37_2",1629}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"padding_loc13_3",1593}, - {""}, {""}, {""}, {""}, {""}, - {"padding_loc13_2",1592}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, - {"extractDateTimeMinuteRank",817}, + {""}, + {"runwayExtentOfContaminationCodeState3",1887}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"padding_grid50_1",1586}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"padding_sec2_3",1665}, {""}, {""}, {""}, {""}, {""}, - {"Ensemble_Combinat_Number_0_none_E4",49}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"extractDateTimeMonthRank",820}, + {"runwayExtentOfContaminationCodeState2",1886}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, - {"numberOfPointsAlongTheYAxis",1454}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"padding_sec2_2",1664}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"padding_loc191_3",1606}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"padding_loc190_1",1620}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"octetAtWichPackedDataBegins",1520}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, + {"padding_sec3_1",1666}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"padding_loc2_2",1642}, + {""}, + {"padding_loc29_3",1640}, + {""}, {""}, {""}, + {"Threshold_Or_Distribution_0_no_1_yes",248}, + {"padding_loc18_1",1618}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"padding_local1_1",1657}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"runwayExtentOfContaminationCodeState1",1885}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"extremeCounterClockwiseWindDirection",836}, {""}, {""}, - {"genVertHeightCoords",893}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"padding_grid4_1",1602}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"padding_loc29_2",1639}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, + {"padding_loc3_1",1648}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, + {"padding_loc4_2",1649}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"extractDateTimeYearRank",831}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"padding_loc30_2",1644}, + {""}, {""}, + {"GRIB",70}, + {"padding_grid1_2",1600}, {""}, {""}, {""}, - {"padding_loc37_1",1628}, + {"scaledValueOfUpperWavePeriodLimit",1971}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"padding_loc16_1",1599}, + {"numberOfPointsAlongTheYAxis",1466}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"padding_loc38_1",1647}, + {"numberOfVGridUsed",1499}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"padding_local1_31",1658}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, - {"padding_loc13_1",1591}, - {""}, {""}, - {"padding_loc12_1",1590}, - {""}, {""}, {""}, {""}, {""}, - {"GRIB",70}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, + {"RVR4_1",225}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, + {"Hour_E4",85}, + {""}, {""}, + {"7777",5}, + {""}, {""}, {""}, {""}, {""}, + {"padding_sec2_1",1663}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, + {"padding_grid3_1",1601}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"extractDateTimeHourRank",818}, + {"padding_loc10_1",1606}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"extractDateTimeDayRank",810}, + {""}, {""}, + {"padding_loc2_1",1641}, + {""}, {""}, {""}, + {"padding_sec4_1",1667}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, - {"padding_loc17_2",1600}, {""}, {""}, {""}, - {"padding_loc14_2",1597}, + {"X2InGridLengths",269}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"padding_loc29_1",1638}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"padding_grid50_1",1603}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"Time_Range_One_E4",252}, + {""}, {""}, + {"padding_loc28_1",1637}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, + {"padding_grid5_1",1604}, + {"RVR3_1",224}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"numberOfUsefulPointsAlongYAxis",1498}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"padding_loc30_1",1643}, + {""}, {""}, {""}, + {"padding_grid1_1",1599}, + {""}, + {"RVR2_1",223}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"Time_Range_One_E3",249}, - {""}, {""}, - {"Time_Range_One_E2",248}, + {""}, {""}, {""}, {""}, {""}, + {"X1InGridLengths",267}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -7544,30 +7285,44 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"padding_loc192_1",1607}, - {""}, {""}, - {"P_TACC",216}, + {"extractDateTimeMinuteRank",821}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"numberOfUnusedBitsAtEndOfSection3",1481}, + {"TYPE_AN",240}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"RVR1_1",222}, + {""}, + {"Time_Range_One_E3",251}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, + {"Time_Range_One_E2",250}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"Hour_E3",84}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"indexingTimeHH",981}, + {""}, {""}, {""}, {""}, + {"extractDateTimeMonthRank",824}, + {"padding_loc20_1",1626}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"Missing_Model_LBC",163}, + {""}, {""}, {""}, + {"Hour_E2",83}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"padding_loc14_1",1596}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"padding_loc191_1",1604}, + {"gts_CCCC",932}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"GG",69}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -7577,9 +7332,6 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"padding_loc13_4",1594}, - {""}, {""}, {""}, {""}, {""}, - {"YpInGridLengths",283}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -7590,17 +7342,16 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"Time_Range_One_E4",250}, + {""}, {""}, {""}, + {"BBB",16}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, + {"GRIBEditionNumber",74}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"runwayBrakingActionState3",1841}, - {""}, {""}, {""}, {""}, {""}, - {"runwayBrakingActionState2",1840}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -7616,7 +7367,13 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, + {"presentWeather3PresentTrend4",1740}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, + {"indexingTimeHHMM",982}, + {""}, {""}, {""}, {""}, {""}, + {"presentWeather2PresentTrend4",1735}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -7630,14 +7387,16 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"Local_Number_Members_Used_E3",140}, - {""}, {""}, {""}, {""}, {""}, - {"Local_Number_Members_Used_E2",139}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, + {"Ensemble_Combinat_Number_0_none_E4",49}, + {""}, {""}, {""}, {""}, + {"extractDateTimeDayRank",814}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"presentWeather1PresentTrend4",1730}, + {"YpInGridLengths",285}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"runwayBrakingActionState1",1839}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -7646,98 +7405,91 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"extractDateTimeSecondRank",827}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, + {"TYPE_FC",242}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"gts_CCCC",928}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, - {"GG",69}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"Ensemble_Combinat_Number_0_none_E3",48}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, - {"bitsPerValueAndRepack",371}, {""}, {""}, - {"padding_loc26_1",1617}, - {""}, - {"Model_LBC_Member_Identifier",169}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"padding_loc23_1",1611}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"Ensemble_Combinat_Number_0_none_E2",47}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"lastMonthUsedToBuildClimateMonth2",1069}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, + {"presentWeather3PresentTrend3",1739}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, + {"presentWeather2PresentTrend3",1734}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, + {"presentWeather3PresentTrend2",1738}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, + {"presentWeather2PresentTrend2",1733}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, - {"padding_loc27_2",1619}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, + {"padding_loc13_4",1611}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"padding_loc21_1",1610}, + {"lastMonthUsedToBuildClimateMonth1",1068}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, + {"presentWeather1PresentTrend3",1729}, + {""}, + {"genVertHeightCoords",897}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"TYPE_FC",240}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"Model_LBC_Member_Identifier",169}, + {""}, {""}, {""}, {""}, + {"presentWeather1PresentTrend2",1728}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, - {"padding_loc191_2",1605}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, - {"runwayBrakingActionState4",1842}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"meanValueRVR3",1291}, - {""}, {""}, {""}, {""}, {""}, - {"meanValueRVR2",1290}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, + {"presentWeather3PresentTrend1",1737}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"padding_loc14_2",1614}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, - {"ExtremeValuesInMaximumRVR3",59}, - {""}, {""}, {""}, {""}, {""}, - {"ExtremeValuesInMaximumRVR2",58}, {""}, - {"Time_Range_Two_E3",252}, - {""}, {""}, - {"Time_Range_Two_E2",251}, + {"presentWeather2PresentTrend1",1732}, + {""}, {""}, {""}, {""}, {""}, + {"INGRIB",90}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, - {"TYPE_AN",238}, - {""}, {""}, - {"padding_loc27_1",1618}, {""}, {""}, {""}, - {"padding_loc15_1",1598}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"precisionOfTheUnpackedSubset",1717}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -7749,52 +7501,79 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"extremeCounterClockwiseWindDirection",840}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"presentWeather1PresentTrend1",1727}, + {""}, {""}, {""}, + {"padding_loc13_3",1610}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, + {"padding_loc192_1",1624}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"Local_Number_Members_Used_E4",141}, + {""}, {""}, {""}, + {"padding_loc13_2",1609}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"meanValueRVR1",1289}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, + {"padding_loc14_1",1613}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"ExtremeValuesInMaximumRVR1",57}, + {""}, {""}, {""}, + {"padding_loc191_3",1623}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, + {"padding_loc191_1",1621}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, + {"Original_Parameter_Iden_CodeTable2",209}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"Time_Range_Two_E4",253}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, + {"padding_loc16_1",1616}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, + {"padding_loc17_2",1617}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"padding_loc13_5",1612}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, + {"padding_loc13_1",1608}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, + {"padding_loc12_1",1607}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, + {"padding_loc191_2",1622}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, + {"NINT_RITZ_EXP",185}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"padding_loc37_2",1646}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -7802,14 +7581,14 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, + {"padding_loc15_1",1615}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, - {"Original_Parameter_Iden_CodeTable2",207}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -7818,25 +7597,24 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, + {"padding_loc26_1",1634}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, + {"padding_loc27_2",1636}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"meanValueRVR4",1292}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"extremeValuesRVR4",844}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, + {"runwayBrakingActionState4",1860}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"padding_loc23_1",1628}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"ExtremeValuesInMaximumRVR4",60}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, - {"Y2InGridLengths",276}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"padding_loc37_1",1645}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -7845,27 +7623,27 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, - {"INGRIB",90}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"Used_Model_LBC",257}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, - {"Y1InGridLengths",274}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"padding_loc21_1",1627}, + {""}, {""}, {""}, {""}, {""}, + {"extremeValuesRVR3",843}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, + {"extremeValuesRVR2",842}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, + {"padding_loc27_1",1635}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -7873,27 +7651,32 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, + {"Local_Number_Members_Used_E4",141}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"extremeValuesRVR1",841}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, + {"runwayBrakingActionState3",1859}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, + {"runwayBrakingActionState2",1858}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, - {"padding_loc13_5",1595}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"GRIBEXSection1Problem",71}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -7914,12 +7697,23 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"GRIBEXSection1Problem",71}, + {""}, {""}, {""}, {""}, + {"Time_Range_Two_E4",255}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"bitsPerValueAndRepack",374}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, + {"Local_Number_Members_Used_E3",140}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, + {"runwayBrakingActionState1",1857}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, + {"Local_Number_Members_Used_E2",139}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -7934,17 +7728,22 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, + {"Time_Range_Two_E3",254}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, + {"Time_Range_Two_E2",253}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, + {"meanValueRVR4",1300}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"Y2InGridLengths",278}, {""}, {""}, {""}, - {"numberOfBitsUsedForTheGroupWidths",1379}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"numberOfUnusedBitsAtEndOfSection3",1494}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -7960,8 +7759,11 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, + {"Y1InGridLengths",276}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"P_TAVG",219}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -7975,8 +7777,6 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, - {"padding_loc244_3",1614}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -7986,15 +7786,21 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, + {"meanValueRVR3",1299}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, + {"meanValueRVR2",1298}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, + {"ExtremeValuesInMaximumRVR4",60}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -8012,15 +7818,19 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"padding_loc244_3",1631}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, + {"padding_loc244_1",1629}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, - {"BUDG",17}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"meanValueRVR1",1297}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -8038,13 +7848,17 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, + {"padding_loc244_2",1630}, + {""}, {""}, {""}, {""}, + {"ExtremeValuesInMaximumRVR3",59}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, + {"ExtremeValuesInMaximumRVR2",58}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, - {"padding_loc244_1",1612}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -8054,6 +7868,8 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, + {"padding_loc245_1",1632}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -8072,16 +7888,20 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, + {"ExtremeValuesRVR4",64}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"ExtremeValuesInMaximumRVR1",57}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, + {"padding_loc245_2",1633}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"P_TAVG",217}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -8094,16 +7914,20 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, + {"Missing_Model_LBC_E4",166}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"ExtremeValuesRVR3",63}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, + {"ExtremeValuesRVR2",62}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"GRIBEXShBugPresent",72}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -8113,6 +7937,8 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"ExtremeValuesRVR1",61}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -8131,18 +7957,28 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, + {"At_least__Or_Distribut_Proportion_Of",14}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, + {"BUDG",17}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, + {"Missing_Model_LBC_E3",165}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, + {"Missing_Model_LBC_E2",164}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, + {"Used_Model_LBC",259}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -8154,6 +7990,8 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"numberOfBitsUsedForTheGroupWidths",1391}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -8161,22 +7999,14 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, - {"padding_loc244_2",1613}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, - {"GRIBEX_boustrophedonic",73}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, - {"Show_Combination_Ensem_E3_0_no_1_yes",229}, - {""}, {""}, - {"Show_Combination_Ensem_E2_0_no_1_yes",228}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -8184,8 +8014,6 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, - {"padding_loc245_1",1615}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -8223,8 +8051,6 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, - {"Show_Combination_Ensem_E4_0_no_1_yes",230}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -8274,13 +8100,10 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"At_least__Or_Distribut_Proportion_Of",14}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"NINT_RITZ_EXP",183}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"GRIBEXShBugPresent",72}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -8292,6 +8115,8 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, + {"GRIBEX_boustrophedonic",73}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -8303,9 +8128,6 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"NINT_LOG10_RITZ",182}, - {""}, {""}, {""}, {""}, - {"padding_loc245_2",1616}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -8326,6 +8148,8 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, + {"NINT_LOG10_RITZ",184}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -8408,6 +8232,8 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, + {"Show_Combination_Ensem_E4_0_no_1_yes",232}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -8430,8 +8256,11 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"Show_Combination_Ensem_E3_0_no_1_yes",231}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, + {"Show_Combination_Ensem_E2_0_no_1_yes",230}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -8490,9 +8319,6 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"Used_Model_LBC_E3",259}, - {""}, {""}, - {"Used_Model_LBC_E2",258}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -8538,7 +8364,6 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"Used_Model_LBC_E4",260}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -8592,6 +8417,8 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"AEC_PAD_RSI_OPTION_MASK",11}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -8655,8 +8482,6 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"GRIB_LATITUDE",76}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -8679,8 +8504,6 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"GRIB_DEPTH",75}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -8705,13 +8528,13 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, - {"AEC_PAD_RSI_OPTION_MASK",11}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"GRIB_DEPTH",75}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -8778,8 +8601,6 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, - {"AEC_RESTRICTED_OPTION_MASK",12}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -8790,8 +8611,6 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"AEC_DATA_SIGNED_OPTION_MASK",10}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -8878,11 +8697,15 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, + {"Used_Model_LBC_E4",262}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"GRIB_LATITUDE",76}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -8899,8 +8722,12 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, + {"Used_Model_LBC_E3",261}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, + {"Used_Model_LBC_E2",260}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -8935,8 +8762,6 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, - {"AEC_DATA_3BYTE_OPTION_MASK",7}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -9009,8 +8834,6 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"GRIB_LONGITUDE",77}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -9155,6 +8978,8 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"GRIB_LONGITUDE",77}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -9237,6 +9062,7 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"AEC_RESTRICTED_OPTION_MASK",12}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -9256,6 +9082,8 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"AEC_DATA_SIGNED_OPTION_MASK",10}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -9411,8 +9239,6 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"AEC_DATA_MSB_OPTION_MASK",8}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -9606,6 +9432,8 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, + {"AEC_DATA_3BYTE_OPTION_MASK",7}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -9761,6 +9589,8 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"AEC_DATA_MSB_OPTION_MASK",8}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, diff --git a/tests/keys b/tests/keys index 6f911d9a1..2177ad243 100644 --- a/tests/keys +++ b/tests/keys @@ -181,2263 +181,2312 @@ NB,175 NC,176 NC1,177 NC2,178 -NEAREST,179 -NG,180 -NH,181 -NINT_LOG10_RITZ,182 -NINT_RITZ_EXP,183 -NL,184 -NP,185 -NR,186 -NRj,187 -NT,188 -NUT,189 -NV,190 -Nassigned,191 -Nb,192 -Ncx,193 -Ncy,194 -Nf,195 -Ni,196 -Nj,197 -Nr,198 -NrInRadiusOfEarth,199 -NrInRadiusOfEarthScaled,200 -Number_Combination_Ensembles_1_none,201 -Nux,202 -Nuy,203 -Nx,204 -Ny,205 -Original_CodeTable_2_Version_Number,206 -Original_Parameter_Iden_CodeTable2,207 -Original_Parameter_Identifier,208 -P,209 -P1,210 -P2,211 -PLPresent,212 -PUnset,213 -PVPresent,214 -P_INST,215 -P_TACC,216 -P_TAVG,217 -Product_Identifier,218 -RENAME,219 -RVR1_1,220 -RVR2_1,221 -RVR3_1,222 -RVR4_1,223 -SOH,224 -SPD,225 -SecondLatitude,226 -SecondOfModelVersion,227 -Show_Combination_Ensem_E2_0_no_1_yes,228 -Show_Combination_Ensem_E3_0_no_1_yes,229 -Show_Combination_Ensem_E4_0_no_1_yes,230 -Sub-Experiment_Identifier,231 -TAF,232 -TAFstr,233 -TIDE,234 -TS,235 -TScalc,236 -TT,237 -TYPE_AN,238 -TYPE_CF,239 -TYPE_FC,240 -TYPE_FF,241 -TYPE_FX,242 -TYPE_OF,243 -TYPE_OR,244 -TYPE_PF,245 -Threshold_Or_Distribution_0_no_1_yes,246 -Threshold_Or_Distribution_Units,247 -Time_Range_One_E2,248 -Time_Range_One_E3,249 -Time_Range_One_E4,250 -Time_Range_Two_E2,251 -Time_Range_Two_E3,252 -Time_Range_Two_E4,253 -Total_Number_Members_Missing,254 -Total_Number_Members_Possible,255 -Total_Number_Members_Used,256 -Used_Model_LBC,257 -Used_Model_LBC_E2,258 -Used_Model_LBC_E3,259 -Used_Model_LBC_E4,260 -WMO,261 -WRAP,262 -WRAPstr,263 -X1,264 -X1InGridLengths,265 -X2,266 -X2InGridLengths,267 -XR,268 -XRInMetres,269 -Xo,270 -Xp,271 -XpInGridLengths,272 -Y1,273 -Y1InGridLengths,274 -Y2,275 -Y2InGridLengths,276 -YR,277 -YRInMetres,278 -YY,279 -YearOfModelVersion,280 -Yo,281 -Yp,282 -YpInGridLengths,283 -ZLBASE,284 -ZLMULT,285 -_T,286 -_TS,287 -_anoffset,288 -_endStep,289 -_leg_number,290 -_numberOfValues,291 -accumulationInterval,292 -accuracy,293 -accuracyMultipliedByFactor,294 -addEmptySection2,295 -addExtraLocalSection,296 -additionalFlagPresent,297 -addressOfFileFreeSpaceInfo,298 -aerosolType,299 -aerosolTypeName,300 -aerosolbinnumber,301 -aerosolpacking,302 -alternativeRowScanning,303 -altitudeOfTheCameraFromTheEarthsCentreMeasuredInUnitsOfTheEarthsRadius,304 -analysisOffsets,305 -angleDivisor,306 -angleMultiplier,307 -angleOfRotation,308 -angleOfRotationInDegrees,309 -angleOfRotationOfProjection,310 -angleSubdivisions,311 -anoffset,312 -anoffsetFirst,313 -anoffsetFrequency,314 -anoffsetLast,315 -applicationIdentifier,316 -assertion,317 -atmosphericChemicalOrPhysicalConstituentType,318 -attributeOfTile,319 -auxiliary,320 -average,321 -averaging1Flag,322 -averaging2Flag,323 -averagingPeriod,324 -avg,325 -azimuthalWidth,326 -backgroundGeneratingProcessIdentifier,327 -backgroundProcess,328 -band,329 -baseAddress,330 -baseDateEPS,331 -baseDateOfThisLeg,332 -baseTimeEPS,333 -baseTimeOfThisLeg,334 -basicAngleOfTheInitialProductionDomain,335 -beginDayTrend1,336 -beginDayTrend2,337 -beginDayTrend3,338 -beginDayTrend4,339 -beginHourTrend1,340 -beginHourTrend2,341 -beginHourTrend3,342 -beginHourTrend4,343 -beginMinuteTrend1,344 -beginMinuteTrend2,345 -beginMinuteTrend3,346 -beginMinuteTrend4,347 -beginMonthTrend1,348 -beginMonthTrend2,349 -beginMonthTrend3,350 -beginMonthTrend4,351 -beginYearTrend1,352 -beginYearTrend2,353 -beginYearTrend3,354 -beginYearTrend4,355 -biFourierCoefficients,356 -biFourierMakeTemplate,357 -biFourierPackingModeForAxes,358 -biFourierResolutionParameterM,359 -biFourierResolutionParameterN,360 -biFourierResolutionSubSetParameterM,361 -biFourierResolutionSubSetParameterN,362 -biFourierSubTruncationType,363 -biFourierTruncationType,364 -binaryScaleFactor,365 -bitMapIndicator,366 -bitmap,367 -bitmapPresent,368 -bitmapSectionPresent,369 -bitsPerValue,370 -bitsPerValueAndRepack,371 -boot_edition,372 -bottomLevel,373 -boustrophedonic,374 -boustrophedonicOrdering,375 -bufrDataEncoded,376 -bufrHeaderCentre,377 -bufrHeaderSubCentre,378 -bufrTemplate,379 -bufrdcExpandedDescriptors,380 -calendarIdPresent,381 -calendarIdentification,382 -calendarIdentificationTemplateNumber,383 -categories,384 -categoryType,385 -cavokOrVisibility,386 -ccccIdentifiers,387 -ccsdsBlockSize,388 -ccsdsCompressionOptionsMask,389 -ccsdsFlags,390 -ccsdsRsi,391 -ceilingAndVisibilityOK,392 -ceilingAndVisibilityOKTrend1,393 -ceilingAndVisibilityOKTrend2,394 -ceilingAndVisibilityOKTrend3,395 -ceilingAndVisibilityOKTrend4,396 -centralClusterDefinition,397 -centralLongitude,398 -centralLongitudeInDegrees,399 -centralLongitudeInMicrodegrees,400 -centre,401 -centreDescription,402 -centreForLocal,403 -centreForTable2,404 -centreLatitude,405 -centreLatitudeInDegrees,406 -centreLongitude,407 -centreLongitudeInDegrees,408 -centuryOfAnalysis,409 -centuryOfReference,410 -centuryOfReferenceTimeOfData,411 -cfName,412 -cfNameECMF,413 -cfNameLegacyECMF,414 -cfVarName,415 -cfVarNameECMF,416 -cfVarNameLegacyECMF,417 -changeDecimalPrecision,418 -changeIndicatorTrend1,419 -changeIndicatorTrend2,420 -changeIndicatorTrend3,421 -changeIndicatorTrend4,422 -changingPrecision,423 -channel,424 -channelNumber,425 -char,426 -charValues,427 -checkInternalVersion,428 -class,429 -classOfAnalysis,430 -climateDateFrom,431 -climateDateTo,432 -climatologicalRegime,433 -cloudsAbbreviation1,434 -cloudsAbbreviation1Trend1,435 -cloudsAbbreviation1Trend2,436 -cloudsAbbreviation1Trend3,437 -cloudsAbbreviation1Trend4,438 -cloudsAbbreviation2,439 -cloudsAbbreviation2Trend1,440 -cloudsAbbreviation2Trend2,441 -cloudsAbbreviation2Trend3,442 -cloudsAbbreviation2Trend4,443 -cloudsAbbreviation3,444 -cloudsAbbreviation3Trend1,445 -cloudsAbbreviation3Trend2,446 -cloudsAbbreviation3Trend3,447 -cloudsAbbreviation3Trend4,448 -cloudsAbbreviation4,449 -cloudsAbbreviation4Trend1,450 -cloudsAbbreviation4Trend2,451 -cloudsAbbreviation4Trend3,452 -cloudsAbbreviation4Trend4,453 -cloudsBase1,454 -cloudsBase1Trend1,455 -cloudsBase1Trend2,456 -cloudsBase1Trend3,457 -cloudsBase1Trend4,458 -cloudsBase2,459 -cloudsBase2Trend1,460 -cloudsBase2Trend2,461 -cloudsBase2Trend3,462 -cloudsBase2Trend4,463 -cloudsBase3,464 -cloudsBase3Trend1,465 -cloudsBase3Trend2,466 -cloudsBase3Trend3,467 -cloudsBase3Trend4,468 -cloudsBase4,469 -cloudsBase4Trend1,470 -cloudsBase4Trend2,471 -cloudsBase4Trend3,472 -cloudsBase4Trend4,473 -cloudsBaseCoded1,474 -cloudsBaseCoded1Trend1,475 -cloudsBaseCoded1Trend2,476 -cloudsBaseCoded1Trend3,477 -cloudsBaseCoded1Trend4,478 -cloudsBaseCoded2,479 -cloudsBaseCoded2Trend1,480 -cloudsBaseCoded2Trend2,481 -cloudsBaseCoded2Trend3,482 -cloudsBaseCoded2Trend4,483 -cloudsBaseCoded3,484 -cloudsBaseCoded3Trend1,485 -cloudsBaseCoded3Trend2,486 -cloudsBaseCoded3Trend3,487 -cloudsBaseCoded3Trend4,488 -cloudsBaseCoded4,489 -cloudsBaseCoded4Trend1,490 -cloudsBaseCoded4Trend2,491 -cloudsBaseCoded4Trend3,492 -cloudsBaseCoded4Trend4,493 -cloudsCode1,494 -cloudsCode1Trend1,495 -cloudsCode1Trend2,496 -cloudsCode1Trend3,497 -cloudsCode1Trend4,498 -cloudsCode2,499 -cloudsCode2Trend1,500 -cloudsCode2Trend2,501 -cloudsCode2Trend3,502 -cloudsCode2Trend4,503 -cloudsCode3,504 -cloudsCode3Trend1,505 -cloudsCode3Trend2,506 -cloudsCode3Trend3,507 -cloudsCode3Trend4,508 -cloudsCode4,509 -cloudsCode4Trend1,510 -cloudsCode4Trend2,511 -cloudsCode4Trend3,512 -cloudsCode4Trend4,513 -cloudsTitle1,514 -cloudsTitle1Trend1,515 -cloudsTitle1Trend2,516 -cloudsTitle1Trend3,517 -cloudsTitle1Trend4,518 -cloudsTitle2,519 -cloudsTitle2Trend1,520 -cloudsTitle2Trend2,521 -cloudsTitle2Trend3,522 -cloudsTitle2Trend4,523 -cloudsTitle3,524 -cloudsTitle3Trend1,525 -cloudsTitle3Trend2,526 -cloudsTitle3Trend3,527 -cloudsTitle3Trend4,528 -cloudsTitle4,529 -cloudsTitle4Trend1,530 -cloudsTitle4Trend2,531 -cloudsTitle4Trend3,532 -cloudsTitle4Trend4,533 -clusterIdentifier,534 -clusterMember1,535 -clusterMember10,536 -clusterMember2,537 -clusterMember3,538 -clusterMember4,539 -clusterMember5,540 -clusterMember6,541 -clusterMember7,542 -clusterMember8,543 -clusterMember9,544 -clusterNumber,545 -clusterSize,546 -clusteringDomain,547 -clusteringMethod,548 -clutterFilterIndicator,549 -cnmc_cmcc,550 -cnmc_isac,551 -codeFigure,552 -codeType,553 -codedNumberOfFirstOrderPackedValues,554 -codedNumberOfGroups,555 -codedValues,556 -coefsFirst,557 -coefsSecond,558 -commonBlock,559 -complexPacking,560 -componentIndex,561 -compressedData,562 -computeLaplacianOperator,563 -computeStatistics,564 -conceptDir,565 -conceptsDir1,566 -conceptsDir2,567 -conceptsLocalDirAll,568 -conceptsLocalDirECMF,569 -conceptsLocalMarsDirAll,570 -conceptsMasterDir,571 -conceptsMasterMarsDir,572 -consensus,573 -consensusCount,574 -const,575 -constantAntennaElevationAngle,576 -constantFieldHalfByte,577 -constituentType,578 -constituentTypeName,579 -controlForecastCluster,580 -coordAveraging0,581 -coordAveraging1,582 -coordAveraging2,583 -coordAveraging3,584 -coordAveragingTims,585 -coordinate1End,586 -coordinate1Flag,587 -coordinate1Start,588 -coordinate2End,589 -coordinate2Flag,590 -coordinate2Start,591 -coordinate3Flag,592 -coordinate3OfFirstGridPoint,593 -coordinate3OfLastGridPoint,594 -coordinate4Flag,595 -coordinate4OfFirstGridPoint,596 -coordinate4OfLastGridPoint,597 -coordinateFlag1,598 -coordinateFlag2,599 -coordinateIndexNumber,600 -coordinatesPresent,601 -core,602 -corr1Data,603 -corr2Data,604 -corr3Data,605 -corr4Data,606 -correction,607 -correction1,608 -correction1Part,609 -correction2,610 -correction2Part,611 -correction3,612 -correction3Part,613 -correction4,614 -correction4Part,615 -count,616 -countOfGroupLengths,617 -countOfICEFieldsUsed,618 -countTotal,619 -country,620 -crcrlf,621 -createNewData,622 -crraLocalVersion,623 -crraSection,624 -crraSuiteID,625 -daLoop,626 -data,627 -dataAccessors,628 -dataCategory,629 -dataDate,630 -dataFlag,631 -dataKeys,632 -dataLength,633 -dataOrigin,634 -dataRepresentation,635 -dataRepresentationTemplate,636 -dataRepresentationTemplateNumber,637 -dataRepresentationType,638 -dataSelection,639 -dataStream,640 -dataSubCategory,641 -dataTime,642 -dataType,643 -dataValues,644 -datasetForLocal,645 -date,646 -dateOfAnalysis,647 -dateOfForecast,648 -dateOfForecastRun,649 -dateOfForecastUsedInLocalTime,650 -dateOfIceFieldUsed,651 -dateOfModelVersion,652 -dateOfReference,653 -dateOfSSTFieldUsed,654 -dateSSTFieldUsed,655 -dateTime,656 -datumSize,657 -day,658 -dayOfAnalysis,659 -dayOfEndOfOverallTimeInterval,660 -dayOfForecast,661 -dayOfForecastUsedInLocalTime,662 -dayOfModelVersion,663 -dayOfReference,664 -dayOfTheYearDate,665 -decimalPrecision,666 -decimalScaleFactor,667 -defaultFaFieldName,668 -defaultFaLevelName,669 -defaultFaModelName,670 -defaultName,671 -defaultParameter,672 -defaultSequence,673 -defaultShortName,674 -defaultStepUnits,675 -defaultTypeOfLevel,676 -default_max_val,677 -default_min_val,678 -default_step_units,679 -definitionFilesVersion,680 -deleteCalendarId,681 -deleteExtraLocalSection,682 -deleteLocalDefinition,683 -deletePV,684 -derivedForecast,685 -dewPointTemperature,686 -diagnostic,687 -diagnosticNumber,688 -diffInDays,689 -diffInHours,690 -dimension,691 -dimensionNumber,692 -dimensionType,693 -direction,694 -directionNumber,695 -directionOfVariation,696 -directionScalingFactor,697 -dirty_statistics,698 -disableGrib1LocalSection,699 -discipline,700 -distanceFromTubeToEnsembleMean,701 -distinctLatitudes,702 -distinctLongitudes,703 -doExtractArea,704 -doExtractDateTime,705 -doExtractSubsets,706 -doSimpleThinning,707 -domain,708 -driverInformationBlockAddress,709 -dummy,710 -dummy1,711 -dummy2,712 -dummyc,713 -dx,714 -dy,715 -earthIsOblate,716 -earthMajorAxis,717 -earthMajorAxisInMetres,718 -earthMinorAxis,719 -earthMinorAxisInMetres,720 -eastLongitudeOfCluster,721 -eastLongitudeOfDomainOfTubing,722 -easternLongitudeOfClusterDomain,723 -easternLongitudeOfDomain,724 -ed,725 -edition,726 -editionNumber,727 -efas_model,728 -efiOrder,729 -eight,730 -elementsTable,731 -elevation,732 -eleven,733 -endDayTrend1,734 -endDayTrend2,735 -endDayTrend3,736 -endDayTrend4,737 -endDescriptors,738 -endGridDefinition,739 -endHourTrend1,740 -endHourTrend2,741 -endHourTrend3,742 -endHourTrend4,743 -endMark,744 -endMinuteTrend1,745 -endMinuteTrend2,746 -endMinuteTrend3,747 -endMinuteTrend4,748 -endMonthTrend1,749 -endMonthTrend2,750 -endMonthTrend3,751 -endMonthTrend4,752 -endOfFileAddress,753 -endOfHeadersMarker,754 -endOfInterval,755 -endOfMessage,756 -endOfProduct,757 -endOfRange,758 -endStep,759 -endStepInHours,760 -endTimeStep,761 -endYearTrend1,762 -endYearTrend2,763 -endYearTrend3,764 -endYearTrend4,765 -energyNorm,766 -enorm,767 -ensembleForecastNumbers,768 -ensembleForecastNumbersList,769 -ensembleSize,770 -ensembleStandardDeviation,771 -eps,772 -epsContinous,773 -epsPoint,774 -epsStatisticsContinous,775 -epsStatisticsPoint,776 -expandBy,777 -expandedAbbreviations,778 -expandedCodes,779 -expandedCrex_scales,780 -expandedCrex_units,781 -expandedCrex_widths,782 -expandedDescriptors,783 -expandedNames,784 -expandedOriginalCodes,785 -expandedOriginalReferences,786 -expandedOriginalScales,787 -expandedOriginalWidths,788 -expandedTypes,789 -expandedUnits,790 -experimentVersionNumber,791 -experimentVersionNumber1,792 -experimentVersionNumber2,793 -experimentVersionNumberOfAnalysis,794 -expoffset,795 -expver,796 -extendedFlag,797 -extraDim,798 -extraDimensionPresent,799 -extraLocalSectionNumber,800 -extraLocalSectionPresent,801 -extraValues,802 -extractAreaEastLongitude,803 -extractAreaLatitudeRank,804 -extractAreaLongitudeRank,805 -extractAreaNorthLatitude,806 -extractAreaSouthLatitude,807 -extractAreaWestLongitude,808 -extractDateTimeDayEnd,809 -extractDateTimeDayRank,810 -extractDateTimeDayStart,811 -extractDateTimeEnd,812 -extractDateTimeHourEnd,813 -extractDateTimeHourRank,814 -extractDateTimeHourStart,815 -extractDateTimeMinuteEnd,816 -extractDateTimeMinuteRank,817 -extractDateTimeMinuteStart,818 -extractDateTimeMonthEnd,819 -extractDateTimeMonthRank,820 -extractDateTimeMonthStart,821 -extractDateTimeSecondEnd,822 -extractDateTimeSecondRank,823 -extractDateTimeSecondStart,824 -extractDateTimeStart,825 -extractDateTimeYearEnd,826 -extractDateTimeYearRank,827 -extractDateTimeYearStart,828 -extractSubset,829 -extractSubsetIntervalEnd,830 -extractSubsetIntervalStart,831 -extractSubsetList,832 -extractedAreaNumberOfSubsets,833 -extractedDateTimeNumberOfSubsets,834 -extremeClockwiseWindDirection,835 -extremeCounterClockwiseWindDirection,836 -extremeValuesRVR1,837 -extremeValuesRVR2,838 -extremeValuesRVR3,839 -extremeValuesRVR4,840 -faFieldName,841 -faLevelName,842 -faModelName,843 -false,844 -falseEasting,845 -falseNorthing,846 -fcmonth,847 -fcperiod,848 -fgDate,849 -fgTime,850 -file,851 -fileConsistencyFlags,852 -fireTemplate,853 -firstDimension,854 -firstDimensionCoordinateValueDefinition,855 -firstDimensionPhysicalSignificance,856 -firstLatitude,857 -firstLatitudeInDegrees,858 -firstMonthUsedToBuildClimateMonth1,859 -firstMonthUsedToBuildClimateMonth2,860 -firstOrderValues,861 -firstSize,862 -flag,863 -flagForAnyFurtherInformation,864 -flagForIrregularGridCoordinateList,865 -flagForNormalOrStaggeredGrid,866 -flagShowingPostAuxiliaryArrayInUse,867 -flags,868 -floatVal,869 -floatValues,870 -forecastLeadTime,871 -forecastMonth,872 -forecastOrSingularVectorNumber,873 -forecastPeriod,874 -forecastPeriodFrom,875 -forecastPeriodTo,876 -forecastProbabilityNumber,877 -forecastSteps,878 -forecastTime,879 -forecastperiod,880 -formatVersionMajorNumber,881 -formatVersionMinorNumber,882 -freeFormData,883 -frequency,884 -frequencyNumber,885 -frequencyScalingFactor,886 -functionCode,887 -g,888 -g1conceptsLocalDirAll,889 -g1conceptsMasterDir,890 -g2grid,891 -gaussianGridName,892 -genVertHeightCoords,893 -generalExtended2ordr,894 -generatingProcessIdentificationNumber,895 -generatingProcessIdentifier,896 -generatingProcessTemplate,897 -generatingProcessTemplateNumber,898 -getNumberOfValues,899 -gg,900 -global,901 -globalDomain,902 -grib1divider,903 -grib2LocalSectionNumber,904 -grib2LocalSectionPresent,905 -grib2divider,906 -grib3divider,907 -gribDataQualityChecks,908 -gribMasterTablesVersionNumber,909 -gribTablesVersionNo,910 -grid,911 -gridCoordinate,912 -gridDefinition,913 -gridDefinitionDescription,914 -gridDefinitionSection,915 -gridDefinitionTemplateNumber,916 -gridDescriptionSectionPresent,917 -gridName,918 -gridPointPosition,919 -gridType,920 -groupInternalNodeK,921 -groupLeafNodeK,922 -groupLengths,923 -groupSplitting,924 -groupSplittingMethodUsed,925 -groupWidth,926 -groupWidths,927 -gts_CCCC,928 -gts_TTAAii,929 -gts_ddhh00,930 -gts_header,931 -halfByte,932 -hdate,933 -headersOnly,934 -heightLevelName,935 -heightOrPressureOfLevel,936 -heightPressureEtcOfLevels,937 -hideThis,938 -horizontalCoordinateDefinition,939 -horizontalCoordinateSupplement,940 -horizontalDimensionProcessed,941 -horizontalDomainTemplate,942 -horizontalDomainTemplateNumber,943 -hour,944 -hourOfAnalysis,945 -hourOfEndOfOverallTimeInterval,946 -hourOfForecast,947 -hourOfForecastUsedInLocalTime,948 -hourOfModelVersion,949 -hourOfReference,950 -hoursAfterDataCutoff,951 -hoursAfterReferenceTimeOfDataCutoff,952 -hundred,953 -iDirectionIncrement,954 -iDirectionIncrementGiven,955 -iDirectionIncrementGridLength,956 -iDirectionIncrementInDegrees,957 -iIncrement,958 -iScansNegatively,959 -iScansPositively,960 -ident,961 -identificationNumber,962 -identificationOfOriginatingGeneratingCentre,963 -identificationOfProject,964 -identifier,965 -ieeeFloats,966 -ifsParam,967 -ijDirectionIncrementGiven,968 -implementationDateOfModelCycle,969 -incrementOfLengths,970 -indexTemplate,971 -indexTemplateNumber,972 -indexedStorageInternalNodeK,973 -indexingDate,974 -indexingTime,975 -indexingTimeHH,976 -indexingTimeHHMM,977 -indexingTimeMM,978 -indicatorOfParameter,979 -indicatorOfTypeOfLevel,980 -indicatorOfUnitForForecastTime,981 -indicatorOfUnitForTimeIncrement,982 -indicatorOfUnitForTimeRange,983 -indicatorOfUnitOfTimeRange,984 -inputDataPresentIndicator,985 -inputDelayedDescriptorReplicationFactor,986 -inputExtendedDelayedDescriptorReplicationFactor,987 -inputOriginatingCentre,988 -inputOverriddenReferenceValues,989 -inputProcessIdentifier,990 -inputShortDelayedDescriptorReplicationFactor,991 -instrument,992 -instrumentIdentifier,993 -instrumentType,994 -integerPointValues,995 -integerScaleFactor,996 -integerScalingFactorAppliedToDirections,997 -integerScalingFactorAppliedToFrequencies,998 -integerValues,999 -internalVersion,1000 -internationalDataSubCategory,1001 -interpretationOfNumberOfPoints,1002 -intervalBetweenTimes,1003 -isAccumulation,1004 -isAuto,1005 -isCavok,1006 -isCavokTrend1,1007 -isCavokTrend2,1008 -isCavokTrend3,1009 -isCavokTrend4,1010 -isConstant,1011 -isCorrection,1012 -isEPS,1013 -isEps,1014 -isFillup,1015 -isHindcast,1016 -isOctahedral,1017 -isRotatedGrid,1018 -isSatellite,1019 -isSatelliteType,1020 -isSens,1021 -is_aerosol,1022 -is_aerosol_optical,1023 -is_chemical,1024 -is_chemical_distfn,1025 -is_chemical_srcsink,1026 -is_localtime,1027 -is_ocean2d_param,1028 -is_ocean3d_param,1029 -is_uerra,1030 -isectionNumber2,1031 -isectionNumber3,1032 -isectionNumber4,1033 -isotopeIdentificationNumber,1034 -iteration,1035 -iterationNumber,1036 -iteratorDisableUnrotate,1037 -jDirectionIncrement,1038 -jDirectionIncrementGiven,1039 -jDirectionIncrementGridLength,1040 -jDirectionIncrementInDegrees,1041 -jIncrement,1042 -jPointsAreConsecutive,1043 -jScansNegatively,1044 -jScansPositively,1045 -jdLocal,1046 -jdSelected,1047 -julianDay,1048 -julianForecastDay,1049 -keyData,1050 -keyMore,1051 -keySat,1052 -kindOfProduct,1053 -kurt,1054 -kurtosis,1055 -lBB,1056 -landtype,1057 -laplacianOperator,1058 -laplacianOperatorIsSet,1059 -laplacianScalingFactor,1060 -laplacianScalingFactorUnset,1061 -lastMonthUsedToBuildClimateMonth1,1062 -lastMonthUsedToBuildClimateMonth2,1063 -latLonValues,1064 -latitude,1065 -latitudeFirstInDegrees,1066 -latitudeLastInDegrees,1067 -latitudeLongitudeValues,1068 -latitudeOfCentralPointInClusterDomain,1069 -latitudeOfCentrePoint,1070 -latitudeOfCentrePointInDegrees,1071 -latitudeOfFirstGridPoint,1072 -latitudeOfFirstGridPointInDegrees,1073 -latitudeOfGridPoints,1074 -latitudeOfIcosahedronPole,1075 -latitudeOfLastGridPoint,1076 -latitudeOfLastGridPointInDegrees,1077 -latitudeOfNorthWestCornerOfArea,1078 -latitudeOfReferencePoint,1079 -latitudeOfReferencePointInDegrees,1080 -latitudeOfSouthEastCornerOfArea,1081 -latitudeOfSouthernPole,1082 -latitudeOfSouthernPoleInDegrees,1083 -latitudeOfStretchingPole,1084 -latitudeOfStretchingPoleInDegrees,1085 -latitudeOfSubSatellitePoint,1086 -latitudeOfSubSatellitePointInDegrees,1087 -latitudeOfTangencyPoint,1088 -latitudeOfThePoleOfStretching,1089 -latitudeOfThePolePoint,1090 -latitudeOfThePolePointInDegrees,1091 -latitudeOfTheSouthernPoleOfProjection,1092 -latitudeSexagesimal,1093 -latitudeWhereDxAndDyAreSpecified,1094 -latitudeWhereDxAndDyAreSpecifiedInDegrees,1095 -latitudes,1096 -latitudesList,1097 -latitudinalDirectionGridLength,1098 -lcwfvSuiteName,1099 -leadtime,1100 -legBaseDate,1101 -legBaseTime,1102 -legNumber,1103 -legacyGaussSubarea,1104 -lengthDescriptors,1105 -lengthIncrementForTheGroupLengths,1106 -lengthOf4DvarWindow,1107 -lengthOfHeaders,1108 -lengthOfIndexTemplate,1109 -lengthOfMessage,1110 -lengthOfOriginatorLocalTemplate,1111 -lengthOfProjectLocalTemplate,1112 -lengthOfTimeRange,1113 -lev,1114 -levTypeName,1115 -level,1116 -levelFactor,1117 -levelIndicator,1118 -levelType,1119 -levelValues,1120 -level_value_list,1121 -levelist,1122 -levels,1123 -levtype,1124 -libraryVersion,1125 -listMembersMissing,1126 -listMembersMissing2,1127 -listMembersMissing3,1128 -listMembersMissing4,1129 -listMembersUsed,1130 -listMembersUsed2,1131 -listMembersUsed3,1132 -listMembersUsed4,1133 -listOfContributingSpectralBands,1134 -listOfDistributionFunctionParameter,1135 -listOfEnsembleForecastNumbers,1136 -listOfModelIdentifiers,1137 -listOfParametersUsedForClustering,1138 -listOfScaledFrequencies,1139 -local,1140 -localDate,1141 -localDateTime,1142 -localDay,1143 -localDecimalScaleFactor,1144 -localDefNumberOne,1145 -localDefNumberTwo,1146 -localDefinition,1147 -localDefinitionNumber,1148 -localDir,1149 -localExtensionPadding,1150 -localFlag,1151 -localFlagLatestVersion,1152 -localHour,1153 -localLatitude,1154 -localLatitude1,1155 -localLatitude2,1156 -localLongitude,1157 -localLongitude1,1158 -localLongitude2,1159 -localMinute,1160 -localMonth,1161 -localNumberOfObservations,1162 -localSecond,1163 -localSection,1164 -localSectionPresent,1165 -localTablesVersion,1166 -localTablesVersionNumber,1167 -localTime,1168 -localTimeForecastList,1169 -localTimeMethod,1170 -localUsePresent,1171 -localYear,1172 -local_padding,1173 -local_use,1174 -logTransform,1175 -longitude,1176 -longitudeFirstInDegrees,1177 -longitudeLastInDegrees,1178 -longitudeOfCentralPointInClusterDomain,1179 -longitudeOfCentrePoint,1180 -longitudeOfCentrePointInDegrees,1181 -longitudeOfFirstDiamondCenterLine,1182 -longitudeOfFirstDiamondCentreLine,1183 -longitudeOfFirstDiamondCentreLineInDegrees,1184 -longitudeOfFirstGridPoint,1185 -longitudeOfFirstGridPointInDegrees,1186 -longitudeOfGridPoints,1187 -longitudeOfIcosahedronPole,1188 -longitudeOfLastGridPoint,1189 -longitudeOfLastGridPointInDegrees,1190 -longitudeOfNorthWestCornerOfArea,1191 -longitudeOfReferencePoint,1192 -longitudeOfReferencePointInDegrees,1193 -longitudeOfSouthEastCornerOfArea,1194 -longitudeOfSouthernPole,1195 -longitudeOfSouthernPoleInDegrees,1196 -longitudeOfStretchingPole,1197 -longitudeOfStretchingPoleInDegrees,1198 -longitudeOfSubSatellitePoint,1199 -longitudeOfSubSatellitePointInDegrees,1200 -longitudeOfTangencyPoint,1201 -longitudeOfThePoleOfStretching,1202 -longitudeOfThePolePoint,1203 -longitudeOfThePolePointInDegrees,1204 -longitudeOfTheSouthernPoleOfProjection,1205 -longitudeSexagesimal,1206 -longitudes,1207 -longitudesList,1208 -longitudinalDirectionGridLength,1209 -lowerLimit,1210 -lowerRange,1211 -lowerThreshold,1212 -lowerThresholdValue,1213 -ls_labeling,1214 -lsdate_bug,1215 -lstime_bug,1216 -m,1217 -mAngleMultiplier,1218 -mBasicAngle,1219 -mars,1220 -marsClass,1221 -marsClass1,1222 -marsClass2,1223 -marsDir,1224 -marsDomain,1225 -marsEndStep,1226 -marsExperimentOffset,1227 -marsExpver,1228 -marsForecastMonth,1229 -marsGrid,1230 -marsIdent,1231 -marsKeywords,1232 -marsKeywords1,1233 -marsLamModel,1234 -marsLatitude,1235 -marsLevel,1236 -marsLevelist,1237 -marsLongitude,1238 -marsModel,1239 -marsParam,1240 -marsQuantile,1241 -marsRange,1242 -marsStartStep,1243 -marsStep,1244 -marsStream,1245 -marsStream1,1246 -marsStream2,1247 -marsType,1248 -marsType1,1249 -marsType2,1250 -mars_labeling,1251 -mask,1252 -masterDir,1253 -masterTableNumber,1254 -masterTablesVersionNumber,1255 -masterTablesVersionNumberLatest,1256 -matchAerosolBinNumber,1257 -matchAerosolPacking,1258 -matchLandType,1259 -matchSort,1260 -matchTimeRepres,1261 -matrixBitmapsPresent,1262 -matrixOfValues,1263 -max,1264 -maxLevelValue,1265 -maximum,1266 -md5Data,1267 -md5DataSection,1268 -md5GridSection,1269 -md5Headers,1270 -md5Product,1271 -md5Section1,1272 -md5Section10,1273 -md5Section2,1274 -md5Section3,1275 -md5Section4,1276 -md5Section5,1277 -md5Section6,1278 -md5Section7,1279 -md5Section8,1280 -md5Section9,1281 -md5Structure,1282 -md5TimeDomainSection,1283 -meanRVR1,1284 -meanRVR2,1285 -meanRVR3,1286 -meanRVR4,1287 -meanSize,1288 -meanValueRVR1,1289 -meanValueRVR2,1290 -meanValueRVR3,1291 -meanValueRVR4,1292 -meaningOfVerticalCoordinate,1293 -memberNumber,1294 -messageLength,1295 -metadata,1296 -method,1297 -methodNumber,1298 -million,1299 -min,1300 -minimum,1301 -minute,1302 -minuteOfAnalysis,1303 -minuteOfEndOfOverallTimeInterval,1304 -minuteOfForecast,1305 -minuteOfForecastUsedInLocalTime,1306 -minuteOfModelVersion,1307 -minuteOfReference,1308 -minutesAfterDataCutoff,1309 -minutesAfterReferenceTimeOfDataCutoff,1310 -missingDataFlag,1311 -missingValue,1312 -missingValueManagement,1313 -missingValueManagementUsed,1314 -missingValuesPresent,1315 -missing_values,1316 -mixedCoordinateDefinition,1317 -mixedCoordinateFieldFlag,1318 -modeNumber,1319 -model,1320 -modelErrorType,1321 -modelIdentifier,1322 -modelName,1323 -modelVersionDate,1324 -modelVersionTime,1325 -molarMass,1326 -month,1327 -monthOfAnalysis,1328 -monthOfEndOfOverallTimeInterval,1329 -monthOfForecast,1330 -monthOfForecastUsedInLocalTime,1331 -monthOfModelVersion,1332 -monthOfReference,1333 -monthlyVerificationDate,1334 -monthlyVerificationMonth,1335 -monthlyVerificationTime,1336 -monthlyVerificationYear,1337 -multiplicationFactorForLatLong,1338 -n,1339 -n2,1340 -n3,1341 -na,1342 -name,1343 -nameECMF,1344 -nameLegacyECMF,1345 -nameOfFirstFixedSurface,1346 -nameOfSecondFixedSurface,1347 -names,1348 -nd,1349 -neitherPresent,1350 -newSubtype,1351 -nlev,1352 -nnn,1353 -normAtFinalTime,1354 -normAtInitialTime,1355 -normal,1356 -northLatitudeOfCluster,1357 -northLatitudeOfDomainOfTubing,1358 -northWestLatitudeOfLPOArea,1359 -northWestLatitudeOfVerficationArea,1360 -northWestLongitudeOfLPOArea,1361 -northWestLongitudeOfVerficationArea,1362 -northernLatitudeOfClusterDomain,1363 -northernLatitudeOfDomain,1364 -nosigPresent,1365 -notDecoded,1366 -nt,1367 -number,1368 -numberInHorizontalCoordinates,1369 -numberInMixedCoordinateDefinition,1370 -numberInTheAuxiliaryArray,1371 -numberInTheGridCoordinateList,1372 -numberIncludedInAverage,1373 -numberMissingFromAveragesOrAccumulations,1374 -numberOfAnalysis,1375 -numberOfBits,1376 -numberOfBitsContainingEachPackedValue,1377 -numberOfBitsForScaledGroupLengths,1378 -numberOfBitsUsedForTheGroupWidths,1379 -numberOfBitsUsedForTheScaledGroupLengths,1380 -numberOfBytesInLocalDefinition,1381 -numberOfBytesOfFreeFormatData,1382 -numberOfBytesPerInteger,1383 -numberOfCategories,1384 -numberOfCharacters,1385 -numberOfChars,1386 -numberOfClusterHighResolution,1387 -numberOfClusterLowResolution,1388 -numberOfClusters,1389 -numberOfCodedValues,1390 -numberOfCoefficientsOrValuesUsedToSpecifyFirstDimensionCoordinateFunction,1391 -numberOfCoefficientsOrValuesUsedToSpecifySecondDimensionCoordinateFunction,1392 -numberOfColumns,1393 -numberOfComponents,1394 -numberOfContributingSpectralBands,1395 -numberOfControlForecastTube,1396 -numberOfCoordinatesValues,1397 -numberOfDataBinsAlongRadials,1398 -numberOfDataMatrices,1399 -numberOfDataPoints,1400 -numberOfDataPointsExpected,1401 -numberOfDataValues,1402 -numberOfDaysInClimateSamplingWindow,1403 -numberOfDiamonds,1404 -numberOfDirections,1405 -numberOfDistinctSection3s,1406 -numberOfDistinctSection4s,1407 -numberOfDistinctSection5s,1408 -numberOfDistinctSection6s,1409 -numberOfDistinctSection7s,1410 -numberOfDistinctSection8s,1411 -numberOfDistinctSection9s,1412 -numberOfDistributionFunctionParameters,1413 -numberOfEffectiveValues,1414 -numberOfFloats,1415 -numberOfForcasts,1416 -numberOfForecastsInCluster,1417 -numberOfForecastsInEnsemble,1418 -numberOfForecastsInTheCluster,1419 -numberOfForecastsInTube,1420 -numberOfForecastsUsedInLocalTime,1421 -numberOfFrequencies,1422 -numberOfGridInReference,1423 -numberOfGridUsed,1424 -numberOfGroups,1425 -numberOfGroupsOfDataValues,1426 -numberOfHorizontalPoints,1427 -numberOfIntegers,1428 -numberOfInts,1429 -numberOfIterations,1430 -numberOfLevelValues,1431 -numberOfLocalDefinitions,1432 -numberOfLogicals,1433 -numberOfMembersInCluster,1434 -numberOfMembersInEnsemble,1435 -numberOfMissing,1436 -numberOfMissingInStatisticalProcess,1437 -numberOfMissingValues,1438 -numberOfModeOfDistribution,1439 -numberOfModels,1440 -numberOfOctectsForNumberOfPoints,1441 -numberOfOctetsExtraDescriptors,1442 -numberOfOperationalForecastTube,1443 -numberOfPackedValues,1444 -numberOfParallelsBetweenAPoleAndTheEquator,1445 -numberOfParametersUsedForClustering,1446 -numberOfPartitions,1447 -numberOfPoints,1448 -numberOfPointsAlongAMeridian,1449 -numberOfPointsAlongAParallel,1450 -numberOfPointsAlongFirstAxis,1451 -numberOfPointsAlongSecondAxis,1452 -numberOfPointsAlongTheXAxis,1453 -numberOfPointsAlongTheYAxis,1454 -numberOfPointsAlongXAxis,1455 -numberOfPointsAlongXAxisInCouplingArea,1456 -numberOfPointsAlongYAxis,1457 -numberOfPointsAlongYAxisInCouplingArea,1458 -numberOfPointsInDomain,1459 -numberOfPointsUsed,1460 -numberOfPressureLevelsUsedForClustering,1461 -numberOfRadarSitesUsed,1462 -numberOfRadials,1463 -numberOfReforecastYearsInModelClimate,1464 -numberOfRemaininChars,1465 -numberOfRepresentativeMember,1466 -numberOfReservedBytes,1467 -numberOfRows,1468 -numberOfSecondOrderPackedValues,1469 -numberOfSection,1470 -numberOfSingularVectorsComputed,1471 -numberOfSingularVectorsEvolved,1472 -numberOfStatisticallyProcessedFieldsForLocalTime,1473 -numberOfStepsUsedForClustering,1474 -numberOfSubsets,1475 -numberOfTensOfThousandsOfYearsOfOffset,1476 -numberOfTimeIncrementsOfForecastsUsedInLocalTime,1477 -numberOfTimeRange,1478 -numberOfTimeSteps,1479 -numberOfUnexpandedDescriptors,1480 -numberOfUnusedBitsAtEndOfSection3,1481 -numberOfUsedSpatialTiles,1482 -numberOfUsedTileAttributes,1483 -numberOfUsefulPointsAlongXAxis,1484 -numberOfUsefulPointsAlongYAxis,1485 -numberOfVGridUsed,1486 -numberOfValues,1487 -numberOfVerticalCoordinateValues,1488 -numberOfVerticalGridDescriptors,1489 -numberOfVerticalPoints,1490 -numberingOrderOfDiamonds,1491 -numericValues,1492 -observablePropertyTemplate,1493 -observablePropertyTemplateNumber,1494 -observationDiagnostic,1495 -observationGeneratingProcessIdentifier,1496 -observationType,1497 -observedData,1498 -obstype,1499 -oceanAtmosphereCoupling,1500 -oceanLevName,1501 -oceanStream,1502 -octetAtWichPackedDataBegins,1503 -offset,1504 -offsetAfterBitmap,1505 -offsetAfterCentreLocalSection,1506 -offsetAfterData,1507 -offsetAfterLocalSection,1508 -offsetAfterPadding,1509 -offsetBBitmap,1510 -offsetBSection5,1511 -offsetBSection6,1512 -offsetBSection9,1513 -offsetBeforeBitmap,1514 -offsetBeforeData,1515 -offsetBeforePL,1516 -offsetBeforePV,1517 -offsetDescriptors,1518 -offsetEndSection4,1519 -offsetFreeFormData,1520 -offsetFromOriginToInnerBound,1521 -offsetFromReferenceOfFirstTime,1522 -offsetICEFieldsUsed,1523 -offsetSection0,1524 -offsetSection1,1525 -offsetSection10,1526 -offsetSection11,1527 -offsetSection2,1528 -offsetSection3,1529 -offsetSection4,1530 -offsetSection5,1531 -offsetSection6,1532 -offsetSection7,1533 -offsetSection8,1534 -offsetSection9,1535 -offsetToEndOf4DvarWindow,1536 -offsetValuesBy,1537 -offsetdate,1538 -offsettime,1539 -oldSubtype,1540 -one,1541 -oneConstant,1542 -oneMillionConstant,1543 -oneMinuteMeanMaximumRVR1,1544 -oneMinuteMeanMaximumRVR2,1545 -oneMinuteMeanMaximumRVR3,1546 -oneMinuteMeanMaximumRVR4,1547 -oneMinuteMeanMinimumRVR1,1548 -oneMinuteMeanMinimumRVR2,1549 -oneMinuteMeanMinimumRVR3,1550 -oneMinuteMeanMinimumRVR4,1551 -oneThousand,1552 -oper,1553 -operStream,1554 -operatingMode,1555 -operationalForecastCluster,1556 -optimisationTime,1557 -optimizeScaleFactor,1558 -optionalData,1559 -opttime,1560 -orderOfSPD,1561 -orderOfSpatialDifferencing,1562 -orientationOfTheGrid,1563 -orientationOfTheGridInDegrees,1564 -origin,1565 -originOfPostProcessing,1566 -originalParameterNumber,1567 -originalParameterTableNumber,1568 -originalSubCentreIdentifier,1569 -originatingCentre,1570 -originatingCentreOfAnalysis,1571 -originatingClass,1572 -originatorLocalTemplate,1573 -originatorLocalTemplateNumber,1574 -overlayTemplate,1575 -overlayTemplateNumber,1576 -pack,1577 -packedValues,1578 -packingError,1579 -packingType,1580 -padding,1581 -padding_grid1_1,1582 -padding_grid1_2,1583 -padding_grid3_1,1584 -padding_grid4_1,1585 -padding_grid50_1,1586 -padding_grid5_1,1587 -padding_grid90_1,1588 -padding_loc10_1,1589 -padding_loc12_1,1590 -padding_loc13_1,1591 -padding_loc13_2,1592 -padding_loc13_3,1593 -padding_loc13_4,1594 -padding_loc13_5,1595 -padding_loc14_1,1596 -padding_loc14_2,1597 -padding_loc15_1,1598 -padding_loc16_1,1599 -padding_loc17_2,1600 -padding_loc18_1,1601 -padding_loc18_2,1602 -padding_loc190_1,1603 -padding_loc191_1,1604 -padding_loc191_2,1605 -padding_loc191_3,1606 -padding_loc192_1,1607 -padding_loc19_2,1608 -padding_loc20_1,1609 -padding_loc21_1,1610 -padding_loc23_1,1611 -padding_loc244_1,1612 -padding_loc244_2,1613 -padding_loc244_3,1614 -padding_loc245_1,1615 -padding_loc245_2,1616 -padding_loc26_1,1617 -padding_loc27_1,1618 -padding_loc27_2,1619 -padding_loc28_1,1620 -padding_loc29_1,1621 -padding_loc29_2,1622 -padding_loc29_3,1623 -padding_loc2_1,1624 -padding_loc2_2,1625 -padding_loc30_1,1626 -padding_loc30_2,1627 -padding_loc37_1,1628 -padding_loc37_2,1629 -padding_loc38_1,1630 -padding_loc3_1,1631 -padding_loc4_2,1632 -padding_loc50_1,1633 -padding_loc5_1,1634 -padding_loc6_1,1635 -padding_loc7_1,1636 -padding_loc9_1,1637 -padding_loc9_2,1638 -padding_local11_1,1639 -padding_local1_1,1640 -padding_local1_31,1641 -padding_local40_1,1642 -padding_local_35,1643 -padding_local_7_1,1644 -padding_sec1_loc,1645 -padding_sec2_1,1646 -padding_sec2_2,1647 -padding_sec2_3,1648 -padding_sec3_1,1649 -padding_sec4_1,1650 -paleontologicalOffset,1651 -param,1652 -paramId,1653 -paramIdECMF,1654 -paramIdLegacyECMF,1655 -param_value_max,1656 -param_value_min,1657 -parameter,1658 -parameterCategory,1659 -parameterCode,1660 -parameterDiscipline,1661 -parameterIndicator,1662 -parameterName,1663 -parameterNumber,1664 -parameterUnits,1665 -parameters,1666 -parametersVersion,1667 -partitionItems,1668 -partitionNumber,1669 -partitionTable,1670 -partitions,1671 -pastTendencyRVR1,1672 -pastTendencyRVR2,1673 -pastTendencyRVR3,1674 -pastTendencyRVR4,1675 -patch_precip_fp,1676 -pentagonalResolutionParameterJ,1677 -pentagonalResolutionParameterK,1678 -pentagonalResolutionParameterM,1679 -percentileValue,1680 -periodOfTime,1681 -periodOfTimeIntervals,1682 -perturbationNumber,1683 -perturbedType,1684 -phase,1685 -physicalFlag1,1686 -physicalFlag2,1687 -physicalMeaningOfVerticalCoordinate,1688 -pl,1689 -platform,1690 -plusOneinOrdersOfSPD,1691 -points,1692 -postAuxiliary,1693 -postAuxiliaryArrayPresent,1694 -postProcessing,1695 -powerOfTenUsedToScaleClimateWeight,1696 -preBitmapValues,1697 -preProcessingParameter,1698 -precision,1699 -precisionOfTheUnpackedSubset,1700 -predefined_grid,1701 -predefined_grid_values,1702 -preferLocalConcepts,1703 -present,1704 -presentTrend1,1705 -presentTrend2,1706 -presentTrend3,1707 -presentTrend4,1708 -presentWeather1Present,1709 -presentWeather1PresentTrend1,1710 -presentWeather1PresentTrend2,1711 -presentWeather1PresentTrend3,1712 -presentWeather1PresentTrend4,1713 -presentWeather2Present,1714 -presentWeather2PresentTrend1,1715 -presentWeather2PresentTrend2,1716 -presentWeather2PresentTrend3,1717 -presentWeather2PresentTrend4,1718 -presentWeather3Present,1719 -presentWeather3PresentTrend1,1720 -presentWeather3PresentTrend2,1721 -presentWeather3PresentTrend3,1722 -presentWeather3PresentTrend4,1723 -pressureLevel,1724 -pressureUnits,1725 -primaryBitmap,1726 -primaryMissingValue,1727 -primaryMissingValueSubstitute,1728 -probContinous,1729 -probPoint,1730 -probProductDefinition,1731 -probabilityType,1732 -probabilityTypeName,1733 -process,1734 -produceLargeConstantFields,1735 -product,1736 -productDefinition,1737 -productDefinitionTemplateNumber,1738 -productDefinitionTemplateNumberInternal,1739 -productIdentifier,1740 -productType,1741 -productionStatusOfProcessedData,1742 -projSourceString,1743 -projString,1744 -projTargetString,1745 -projectLocalTemplate,1746 -projectLocalTemplateNumber,1747 -projectionCenterFlag,1748 -projectionCentreFlag,1749 -pv,1750 -pvlLocation,1751 -qfe,1752 -qfePresent,1753 -qfeUnits,1754 -qnh,1755 -qnhAPresent,1756 -qnhPresent,1757 -qnhUnits,1758 -qualityControl,1759 -qualityControlIndicator,1760 -qualityValueAssociatedWithParameter,1761 -quantile,1762 -quantileValue,1763 -radialAngularSpacing,1764 -radials,1765 -radius,1766 -radiusInMetres,1767 -radiusOfCentralCluster,1768 -radiusOfClusterDomain,1769 -radiusOfTheEarth,1770 -range,1771 -rangeBinSpacing,1772 -rdbDateTime,1773 -rdbSubtype,1774 -rdbType,1775 -rdb_key,1776 -rdbtime,1777 -rdbtimeDate,1778 -rdbtimeDay,1779 -rdbtimeHour,1780 -rdbtimeMinute,1781 -rdbtimeMonth,1782 -rdbtimeSecond,1783 -rdbtimeTime,1784 -rdbtimeYear,1785 -realPart,1786 -realPartOf00,1787 -recDateTime,1788 -recentWeather,1789 -recentWeatherTry,1790 -rectime,1791 -rectimeDay,1792 -rectimeHour,1793 -rectimeMinute,1794 -rectimeSecond,1795 -reducedGrid,1796 -refdate,1797 -reference,1798 -referenceDate,1799 -referenceForGroupLengths,1800 -referenceForGroupWidths,1801 -referenceOfLengths,1802 -referenceOfWidths,1803 -referenceReflectivityForEchoTop,1804 -referenceSampleInterval,1805 -referenceStep,1806 -referenceValue,1807 -referenceValueError,1808 -reflectivityCalibrationConstant,1809 -remarkPresent,1810 -reportType,1811 -representationMode,1812 -representationType,1813 -representativeMember,1814 -reserved,1815 -reserved1,1816 -reserved2,1817 -reserved3,1818 -reservedNeedNotBePresent,1819 -reservedOctet,1820 -reservedSection2,1821 -reservedSection3,1822 -reservedSection4,1823 -resolutionAndComponentFlags,1824 -resolutionAndComponentFlags1,1825 -resolutionAndComponentFlags2,1826 -resolutionAndComponentFlags3,1827 -resolutionAndComponentFlags4,1828 -resolutionAndComponentFlags6,1829 -resolutionAndComponentFlags7,1830 -resolutionAndComponentFlags8,1831 -restricted,1832 -rootGroupObjectHeaderAddress,1833 -rootGroupSymbolTableEntry,1834 -rootTablesDir,1835 -roundedMarsLatitude,1836 -roundedMarsLevelist,1837 -roundedMarsLongitude,1838 -runwayBrakingActionState1,1839 -runwayBrakingActionState2,1840 -runwayBrakingActionState3,1841 -runwayBrakingActionState4,1842 -runwayDepositCodeState1,1843 -runwayDepositCodeState2,1844 -runwayDepositCodeState3,1845 -runwayDepositCodeState4,1846 -runwayDepositState1,1847 -runwayDepositState2,1848 -runwayDepositState3,1849 -runwayDepositState4,1850 -runwayDepthOfDepositCodeState1,1851 -runwayDepthOfDepositCodeState2,1852 -runwayDepthOfDepositCodeState3,1853 -runwayDepthOfDepositCodeState4,1854 -runwayDepthOfDepositState1,1855 -runwayDepthOfDepositState2,1856 -runwayDepthOfDepositState3,1857 -runwayDepthOfDepositState4,1858 -runwayDesignatorRVR1,1859 -runwayDesignatorRVR2,1860 -runwayDesignatorRVR3,1861 -runwayDesignatorRVR4,1862 -runwayDesignatorState1,1863 -runwayDesignatorState2,1864 -runwayDesignatorState3,1865 -runwayDesignatorState4,1866 -runwayExtentOfContaminationCodeState1,1867 -runwayExtentOfContaminationCodeState2,1868 -runwayExtentOfContaminationCodeState3,1869 -runwayExtentOfContaminationCodeState4,1870 -runwayExtentOfContaminationState1,1871 -runwayExtentOfContaminationState2,1872 -runwayExtentOfContaminationState3,1873 -runwayExtentOfContaminationState4,1874 -runwayFrictionCodeValueState1,1875 -runwayFrictionCodeValueState2,1876 -runwayFrictionCodeValueState3,1877 -runwayFrictionCodeValueState4,1878 -runwayFrictionCoefficientCodeState1,1879 -runwayFrictionCoefficientCodeState2,1880 -runwayFrictionCoefficientCodeState3,1881 -runwayFrictionCoefficientCodeState4,1882 -runwayFrictionCoefficientState1,1883 -runwayFrictionCoefficientState2,1884 -runwayFrictionCoefficientState3,1885 -runwayFrictionCoefficientState4,1886 -runwaySideCodeState1,1887 -runwaySideCodeState2,1888 -runwaySideCodeState3,1889 -runwaySideCodeState4,1890 -runwayState,1891 -sampleSizeOfModelClimate,1892 -satelliteID,1893 -satelliteIdentifier,1894 -satelliteNumber,1895 -satelliteSeries,1896 -scaleFactorAtReferencePoint,1897 -scaleFactorOfCentralWaveNumber,1898 -scaleFactorOfDistanceFromEnsembleMean,1899 -scaleFactorOfDistributionFunctionParameter,1900 -scaleFactorOfEarthMajorAxis,1901 -scaleFactorOfEarthMinorAxis,1902 -scaleFactorOfFirstFixedSurface,1903 -scaleFactorOfFirstSize,1904 -scaleFactorOfFirstWavelength,1905 -scaleFactorOfLengthOfSemiMajorAxis,1906 -scaleFactorOfLengthOfSemiMinorAxis,1907 -scaleFactorOfLowerLimit,1908 -scaleFactorOfMajorAxisOfOblateSpheroidEarth,1909 -scaleFactorOfMinorAxisOfOblateSpheroidEarth,1910 -scaleFactorOfPrimeMeridianOffset,1911 -scaleFactorOfRadiusOfSphericalEarth,1912 -scaleFactorOfSecondFixedSurface,1913 -scaleFactorOfSecondSize,1914 -scaleFactorOfSecondWavelength,1915 -scaleFactorOfStandardDeviation,1916 -scaleFactorOfStandardDeviationInTheCluster,1917 -scaleFactorOfUpperLimit,1918 -scaleValuesBy,1919 -scaledDirections,1920 -scaledFrequencies,1921 -scaledValueOfCentralWaveNumber,1922 -scaledValueOfDistanceFromEnsembleMean,1923 -scaledValueOfDistributionFunctionParameter,1924 -scaledValueOfEarthMajorAxis,1925 -scaledValueOfEarthMinorAxis,1926 -scaledValueOfFirstFixedSurface,1927 -scaledValueOfFirstSize,1928 -scaledValueOfFirstWavelength,1929 -scaledValueOfLengthOfSemiMajorAxis,1930 -scaledValueOfLengthOfSemiMinorAxis,1931 -scaledValueOfLowerLimit,1932 -scaledValueOfMajorAxisOfOblateSpheroidEarth,1933 -scaledValueOfMinorAxisOfOblateSpheroidEarth,1934 -scaledValueOfPrimeMeridianOffset,1935 -scaledValueOfRadiusOfSphericalEarth,1936 -scaledValueOfSecondFixedSurface,1937 -scaledValueOfSecondSize,1938 -scaledValueOfSecondWavelength,1939 -scaledValueOfStandardDeviation,1940 -scaledValueOfStandardDeviationInTheCluster,1941 -scaledValueOfUpperLimit,1942 -scalingFactorForFrequencies,1943 -scanPosition,1944 -scanningMode,1945 -scanningMode4,1946 -scanningMode5,1947 -scanningMode6,1948 -scanningMode7,1949 -scanningMode8,1950 -scanningModeForOneDiamond,1951 -sd,1952 -second,1953 -secondDimension,1954 -secondDimensionCoordinateValueDefinition,1955 -secondDimensionPhysicalSignificance,1956 -secondLatitude,1957 -secondLatitudeInDegrees,1958 -secondOfEndOfOverallTimeInterval,1959 -secondOfForecast,1960 -secondOfForecastUsedInLocalTime,1961 -secondOfModelVersion,1962 -secondOrderFlags,1963 -secondOrderOfDifferentWidth,1964 -secondOrderValuesDifferentWidths,1965 -secondSize,1966 -secondaryBitMap,1967 -secondaryBitmap,1968 -secondaryBitmapPresent,1969 -secondaryBitmaps,1970 -secondaryBitmapsCount,1971 -secondaryBitmapsSize,1972 -secondaryMissingValue,1973 -secondaryMissingValueSubstitute,1974 -secondsOfAnalysis,1975 -secondsOfReference,1976 -section,1977 -section0Length,1978 -section0Pointer,1979 -section1,1980 -section10Length,1981 -section10Pointer,1982 -section11Length,1983 -section11Pointer,1984 -section1Flags,1985 -section1Length,1986 -section1Padding,1987 -section1Pointer,1988 -section2Length,1989 -section2Padding,1990 -section2Pointer,1991 -section2Present,1992 -section2Used,1993 -section3Flags,1994 -section3Length,1995 -section3Padding,1996 -section3Pointer,1997 -section3UniqueIdentifier,1998 -section4,1999 -section4Length,2000 -section4Padding,2001 -section4Pointer,2002 -section4UniqueIdentifier,2003 -section5,2004 -section5Length,2005 -section5Pointer,2006 -section5UniqueIdentifier,2007 -section6,2008 -section6Length,2009 -section6Pointer,2010 -section6UniqueIdentifier,2011 -section7,2012 -section7Length,2013 -section7Pointer,2014 -section7UniqueIdentifier,2015 -section8,2016 -section8Length,2017 -section8Pointer,2018 -section8UniqueIdentifier,2019 -section9Length,2020 -section9Pointer,2021 -section9UniqueIdentifier,2022 -sectionLengthLimitForEnsembles,2023 -sectionLengthLimitForProbability,2024 -sectionNumber,2025 -sectionPosition,2026 -section_01,2027 -section_02,2028 -section_03,2029 -section_04,2030 -section_05,2031 -section_06,2032 -section_07,2033 -section_08,2034 -section_09,2035 -section_1,2036 -section_10,2037 -section_11,2038 -section_2,2039 -section_3,2040 -section_4,2041 -section_5,2042 -section_6,2043 -section_7,2044 -section_8,2045 -selectStepTemplateInstant,2046 -selectStepTemplateInterval,2047 -selectedDay,2048 -selectedFcIndex,2049 -selectedHour,2050 -selectedMinute,2051 -selectedMonth,2052 -selectedSecond,2053 -selectedYear,2054 -sensitiveAreaDomain,2055 -sequences,2056 -setBitsPerValue,2057 -setCalendarId,2058 -setDecimalPrecision,2059 -setLocalDefinition,2060 -setToMissingIfOutOfRange,2061 -sfc_levtype,2062 -shapeOfTheEarth,2063 -shapeOfVerificationArea,2064 -shortName,2065 -shortNameECMF,2066 -shortNameLegacyECMF,2067 -short_name,2068 -signature,2069 -significanceOfReferenceDateAndTime,2070 -significanceOfReferenceTime,2071 -simpleThinningMissingRadius,2072 -simpleThinningSkip,2073 -simpleThinningStart,2074 -siteElevation,2075 -siteId,2076 -siteLatitude,2077 -siteLongitude,2078 -sizeOfLength,2079 -sizeOfOffsets,2080 -sizeOfPostAuxiliaryArray,2081 -sizeOfPostAuxiliaryArrayPlusOne,2082 -skew,2083 -skewness,2084 -skipExtraKeyAttributes,2085 -sort,2086 -sourceOfGridDefinition,2087 -sourceSinkChemicalPhysicalProcess,2088 -southEastLatitudeOfLPOArea,2089 -southEastLatitudeOfVerficationArea,2090 -southEastLongitudeOfLPOArea,2091 -southEastLongitudeOfVerficationArea,2092 -southLatitudeOfCluster,2093 -southLatitudeOfDomainOfTubing,2094 -southPoleOnProjectionPlane,2095 -southernLatitudeOfClusterDomain,2096 -southernLatitudeOfDomain,2097 -sp1,2098 -sp2,2099 -sp3,2100 -spaceUnitFlag,2101 -spacingOfBinsAlongRadials,2102 -spare,2103 -spare1,2104 -spare2,2105 -spare3,2106 -spare4,2107 -spatialProcessing,2108 -spatialSmoothingOfProduct,2109 -spectralDataRepresentationMode,2110 -spectralDataRepresentationType,2111 -spectralMode,2112 -spectralType,2113 -sphericalHarmonics,2114 -standardDeviation,2115 -standardParallel,2116 -standardParallelInDegrees,2117 -standardParallelInMicrodegrees,2118 -startOfHeaders,2119 -startOfMessage,2120 -startOfRange,2121 -startStep,2122 -startStepInHours,2123 -startTimeStep,2124 -startingAzimuth,2125 -statisticalProcess,2126 -statisticalProcessesList,2127 -statistics,2128 -status,2129 -step,2130 -stepForClustering,2131 -stepHumanReadable,2132 -stepInHours,2133 -stepRange,2134 -stepRangeInHours,2135 -stepType,2136 -stepTypeForConversion,2137 -stepTypeInternal,2138 -stepUnits,2139 -stepZero,2140 -stream,2141 -streamOfAnalysis,2142 -stretchingFactor,2143 -stretchingFactorScaled,2144 -stringValues,2145 -subCentre,2146 -subDefinitions1,2147 -subDefinitions2,2148 -subLocalDefinition1,2149 -subLocalDefinition2,2150 -subLocalDefinitionLength1,2151 -subLocalDefinitionLength2,2152 -subLocalDefinitionNumber1,2153 -subLocalDefinitionNumber2,2154 -subSetJ,2155 -subSetK,2156 -subSetM,2157 -subcentreOfAnalysis,2158 -subdivisionsOfBasicAngle,2159 -suiteName,2160 -superblockExtensionAddress,2161 -swapScanningAlternativeRows,2162 -swapScanningLat,2163 -swapScanningLon,2164 -swapScanningX,2165 -swapScanningY,2166 -system,2167 -systemNumber,2168 -t,2169 -table2Version,2170 -tableCode,2171 -tableNumber,2172 -tableReference,2173 -tablesLocalDir,2174 -tablesMasterDir,2175 -tablesVersion,2176 -tablesVersionLatest,2177 -tablesVersionLatestOfficial,2178 -targetCompressionRatio,2179 -td,2180 -tempPressureUnits,2181 -temperature,2182 -temperatureAndDewpointPresent,2183 -templatesLocalDir,2184 -templatesMasterDir,2185 -theHindcastMarsStream,2186 -theMessage,2187 -thisExperimentVersionNumber,2188 -thisMarsClass,2189 -thisMarsStream,2190 -thisMarsType,2191 -thousand,2192 -three,2193 -threshold,2194 -thresholdIndicator,2195 -tiggeCentre,2196 -tiggeLAMName,2197 -tiggeLocalVersion,2198 -tiggeModel,2199 -tiggeSection,2200 -tiggeSuiteID,2201 -tigge_name,2202 -tigge_short_name,2203 -tileClassification,2204 -tileIndex,2205 -time,2206 -timeCoordinateDefinition,2207 -timeDomainTemplate,2208 -timeDomainTemplateNumber,2209 -timeIncrement,2210 -timeIncrementBetweenSuccessiveFields,2211 -timeOfAnalysis,2212 -timeOfForecast,2213 -timeOfForecastUsedInLocalTime,2214 -timeOfModelVersion,2215 -timeOfReference,2216 -timeRangeIndicator,2217 -timeRangeIndicatorFromStepRange,2218 -timeUnitFlag,2219 -timerepres,2220 -topLevel,2221 -total,2222 -totalAerosolBinsNumbers,2223 -totalInitialConditions,2224 -totalLength,2225 -totalNumber,2226 -totalNumberOfClusters,2227 -totalNumberOfDataValuesMissingInStatisticalProcess,2228 -totalNumberOfDirections,2229 -totalNumberOfForecastProbabilities,2230 -totalNumberOfFrequencies,2231 -totalNumberOfGridPoints,2232 -totalNumberOfIterations,2233 -totalNumberOfQuantiles,2234 -totalNumberOfRepetitions,2235 -totalNumberOfTileAttributePairs,2236 -totalNumberOfTubes,2237 -totalNumberOfValuesInUnpackedSubset,2238 -totalNumberOfdimensions,2239 -treatmentOfMissingData,2240 -true,2241 -trueLengthOfLastGroup,2242 -truncateDegrees,2243 -truncateLaplacian,2244 -tsectionNumber3,2245 -tsectionNumber4,2246 -tsectionNumber5,2247 -tubeDomain,2248 -tubeNumber,2249 -two,2250 -twoOrdersOfSPD,2251 -type,2252 -typeOfAnalysis,2253 -typeOfAuxiliaryInformation,2254 -typeOfCalendar,2255 -typeOfCompressionUsed,2256 -typeOfDistributionFunction,2257 -typeOfEnsembleForecast,2258 -typeOfEnsembleMember,2259 -typeOfFirstFixedSurface,2260 -typeOfGeneratingProcess,2261 -typeOfGrid,2262 -typeOfHorizontalLine,2263 -typeOfIntervalForFirstAndSecondSize,2264 -typeOfIntervalForFirstAndSecondWavelength,2265 -typeOfLevel,2266 -typeOfLevelECMF,2267 -typeOfOriginalFieldValues,2268 -typeOfPacking,2269 -typeOfPostProcessing,2270 -typeOfPreProcessing,2271 -typeOfProcessedData,2272 -typeOfSSTFieldUsed,2273 -typeOfSecondFixedSurface,2274 -typeOfSizeInterval,2275 -typeOfStatisticalPostProcessingOfEnsembleMembers,2276 -typeOfStatisticalProcessing,2277 -typeOfTimeIncrement,2278 -typeOfTimeIncrementBetweenSuccessiveFieldsUsedInTheStatisticalProcessing,2279 -typeOfWavelengthInterval,2280 -typicalCentury,2281 -typicalDate,2282 -typicalDateTime,2283 -typicalDay,2284 -typicalHour,2285 -typicalMinute,2286 -typicalMonth,2287 -typicalSecond,2288 -typicalTime,2289 -typicalYear,2290 -typicalYear2,2291 -typicalYearOfCentury,2292 -uco,2293 -ucs,2294 -unexpandedDescriptors,2295 -unexpandedDescriptorsEncoded,2296 -unitOfOffsetFromReferenceTime,2297 -unitOfTime,2298 -unitOfTimeIncrement,2299 -unitOfTimeRange,2300 -units,2301 -unitsBias,2302 -unitsConversionOffset,2303 -unitsConversionScaleFactor,2304 -unitsDecimalScaleFactor,2305 -unitsECMF,2306 -unitsFactor,2307 -unitsLegacyECMF,2308 -unitsOfFirstFixedSurface,2309 -unitsOfSecondFixedSurface,2310 -unknown,2311 -unpack,2312 -unpackedError,2313 -unpackedSubsetPrecision,2314 -unpackedValues,2315 -unsignedIntegers,2316 -unstructuredGrid,2317 -unstructuredGridSubtype,2318 -unstructuredGridType,2319 -unstructuredGridUUID,2320 -unusedBitsInBitmap,2321 -updateSequenceNumber,2322 -upperLimit,2323 -upperRange,2324 -upperThreshold,2325 -upperThresholdValue,2326 -userDateEnd,2327 -userDateStart,2328 -userDateTimeEnd,2329 -userDateTimeStart,2330 -userTimeEnd,2331 -userTimeStart,2332 -uuidOfHGrid,2333 -uuidOfVGrid,2334 -uvRelativeToGrid,2335 -validityDate,2336 -validityTime,2337 -values,2338 -variationOfVisibility,2339 -variationOfVisibilityDirection,2340 -variationOfVisibilityDirectionAngle,2341 -variationOfVisibilityDirectionTrend1,2342 -variationOfVisibilityDirectionTrend2,2343 -variationOfVisibilityDirectionTrend3,2344 -variationOfVisibilityDirectionTrend4,2345 -variationOfVisibilityTrend1,2346 -variationOfVisibilityTrend2,2347 -variationOfVisibilityTrend3,2348 -variationOfVisibilityTrend4,2349 -varno,2350 -verificationDate,2351 -verificationMonth,2352 -verificationYear,2353 -verifyingMonth,2354 -version,2355 -versionNumOfFilesFreeSpaceStorage,2356 -versionNumOfRootGroupSymbolTableEntry,2357 -versionNumOfSharedHeaderMessageFormat,2358 -versionNumberOfExperimentalSuite,2359 -versionNumberOfGribLocalTables,2360 -versionNumberOfSuperblock,2361 -versionOfModelClimate,2362 -verticalCoordinate,2363 -verticalCoordinateDefinition,2364 -verticalDomainTemplate,2365 -verticalDomainTemplateNumber,2366 -verticalVisibility,2367 -verticalVisibilityCoded,2368 -visibility,2369 -visibilityInKilometresTrend1,2370 -visibilityInKilometresTrend2,2371 -visibilityInKilometresTrend3,2372 -visibilityInKilometresTrend4,2373 -visibilityTrend1,2374 -visibilityTrend2,2375 -visibilityTrend3,2376 -visibilityTrend4,2377 -waveDomain,2378 -weightAppliedToClimateMonth1,2379 -westLongitudeOfCluster,2380 -westLongitudeOfDomainOfTubing,2381 -westernLongitudeOfClusterDomain,2382 -westernLongitudeOfDomain,2383 -widthOfFirstOrderValues,2384 -widthOfLengths,2385 -widthOfSPD,2386 -widthOfWidths,2387 -windDirection,2388 -windDirectionTrend1,2389 -windDirectionTrend2,2390 -windDirectionTrend3,2391 -windDirectionTrend4,2392 -windGust,2393 -windGustTrend1,2394 -windGustTrend2,2395 -windGustTrend3,2396 -windGustTrend4,2397 -windPresent,2398 -windSpeed,2399 -windSpeedTrend1,2400 -windSpeedTrend2,2401 -windSpeedTrend3,2402 -windSpeedTrend4,2403 -windUnits,2404 -windUnitsTrend1,2405 -windUnitsTrend2,2406 -windUnitsTrend3,2407 -windUnitsTrend4,2408 -windVariableDirection,2409 -windVariableDirectionTrend1,2410 -windVariableDirectionTrend2,2411 -windVariableDirectionTrend3,2412 -windVariableDirectionTrend4,2413 -wrongPadding,2414 -xCoordinateOfOriginOfSectorImage,2415 -xCoordinateOfSubSatellitePoint,2416 -xDirectionGridLength,2417 -xDirectionGridLengthInMetres,2418 -xDirectionGridLengthInMillimetres,2419 -xFirst,2420 -xLast,2421 -yCoordinateOfOriginOfSectorImage,2422 -yCoordinateOfSubSatellitePoint,2423 -yDirectionGridLength,2424 -yDirectionGridLengthInMetres,2425 -yDirectionGridLengthInMillimetres,2426 -yFirst,2427 -yLast,2428 -year,2429 -yearOfAnalysis,2430 -yearOfCentury,2431 -yearOfEndOfOverallTimeInterval,2432 -yearOfForecast,2433 -yearOfForecastUsedInLocalTime,2434 -yearOfModelVersion,2435 -yearOfReference,2436 -zero,2437 -zeros,2438 +NDSP,179 +NEAREST,180 +NFSP,181 +NG,182 +NH,183 +NINT_LOG10_RITZ,184 +NINT_RITZ_EXP,185 +NL,186 +NP,187 +NR,188 +NRj,189 +NT,190 +NUT,191 +NV,192 +Nassigned,193 +Nb,194 +Ncx,195 +Ncy,196 +Nf,197 +Ni,198 +Nj,199 +Nr,200 +NrInRadiusOfEarth,201 +NrInRadiusOfEarthScaled,202 +Number_Combination_Ensembles_1_none,203 +Nux,204 +Nuy,205 +Nx,206 +Ny,207 +Original_CodeTable_2_Version_Number,208 +Original_Parameter_Iden_CodeTable2,209 +Original_Parameter_Identifier,210 +P,211 +P1,212 +P2,213 +PLPresent,214 +PUnset,215 +PVPresent,216 +P_INST,217 +P_TACC,218 +P_TAVG,219 +Product_Identifier,220 +RENAME,221 +RVR1_1,222 +RVR2_1,223 +RVR3_1,224 +RVR4_1,225 +SOH,226 +SPD,227 +SecondLatitude,228 +SecondOfModelVersion,229 +Show_Combination_Ensem_E2_0_no_1_yes,230 +Show_Combination_Ensem_E3_0_no_1_yes,231 +Show_Combination_Ensem_E4_0_no_1_yes,232 +Sub-Experiment_Identifier,233 +TAF,234 +TAFstr,235 +TIDE,236 +TS,237 +TScalc,238 +TT,239 +TYPE_AN,240 +TYPE_CF,241 +TYPE_FC,242 +TYPE_FF,243 +TYPE_FX,244 +TYPE_OF,245 +TYPE_OR,246 +TYPE_PF,247 +Threshold_Or_Distribution_0_no_1_yes,248 +Threshold_Or_Distribution_Units,249 +Time_Range_One_E2,250 +Time_Range_One_E3,251 +Time_Range_One_E4,252 +Time_Range_Two_E2,253 +Time_Range_Two_E3,254 +Time_Range_Two_E4,255 +Total_Number_Members_Missing,256 +Total_Number_Members_Possible,257 +Total_Number_Members_Used,258 +Used_Model_LBC,259 +Used_Model_LBC_E2,260 +Used_Model_LBC_E3,261 +Used_Model_LBC_E4,262 +WMO,263 +WRAP,264 +WRAPstr,265 +X1,266 +X1InGridLengths,267 +X2,268 +X2InGridLengths,269 +XR,270 +XRInMetres,271 +Xo,272 +Xp,273 +XpInGridLengths,274 +Y1,275 +Y1InGridLengths,276 +Y2,277 +Y2InGridLengths,278 +YR,279 +YRInMetres,280 +YY,281 +YearOfModelVersion,282 +Yo,283 +Yp,284 +YpInGridLengths,285 +ZLBASE,286 +ZLMULT,287 +_T,288 +_TS,289 +_anoffset,290 +_endStep,291 +_leg_number,292 +_numberOfValues,293 +accumulationInterval,294 +accuracy,295 +accuracyMultipliedByFactor,296 +addEmptySection2,297 +addExtraLocalSection,298 +additionalFlagPresent,299 +additionalParameter,300 +addressOfFileFreeSpaceInfo,301 +aerosolType,302 +aerosolTypeName,303 +aerosolbinnumber,304 +aerosolpacking,305 +alternativeRowScanning,306 +altitudeOfTheCameraFromTheEarthsCentreMeasuredInUnitsOfTheEarthsRadius,307 +analysisOffsets,308 +angleDivisor,309 +angleMultiplier,310 +angleOfRotation,311 +angleOfRotationInDegrees,312 +angleOfRotationOfProjection,313 +angleSubdivisions,314 +anoffset,315 +anoffsetFirst,316 +anoffsetFrequency,317 +anoffsetLast,318 +applicationIdentifier,319 +assertion,320 +atmosphericChemicalOrPhysicalConstituentType,321 +attributeOfTile,322 +auxiliary,323 +average,324 +averaging1Flag,325 +averaging2Flag,326 +averagingPeriod,327 +avg,328 +azimuthalWidth,329 +backgroundGeneratingProcessIdentifier,330 +backgroundProcess,331 +band,332 +baseAddress,333 +baseDateEPS,334 +baseDateOfThisLeg,335 +baseTimeEPS,336 +baseTimeOfThisLeg,337 +basicAngleOfTheInitialProductionDomain,338 +beginDayTrend1,339 +beginDayTrend2,340 +beginDayTrend3,341 +beginDayTrend4,342 +beginHourTrend1,343 +beginHourTrend2,344 +beginHourTrend3,345 +beginHourTrend4,346 +beginMinuteTrend1,347 +beginMinuteTrend2,348 +beginMinuteTrend3,349 +beginMinuteTrend4,350 +beginMonthTrend1,351 +beginMonthTrend2,352 +beginMonthTrend3,353 +beginMonthTrend4,354 +beginYearTrend1,355 +beginYearTrend2,356 +beginYearTrend3,357 +beginYearTrend4,358 +biFourierCoefficients,359 +biFourierMakeTemplate,360 +biFourierPackingModeForAxes,361 +biFourierResolutionParameterM,362 +biFourierResolutionParameterN,363 +biFourierResolutionSubSetParameterM,364 +biFourierResolutionSubSetParameterN,365 +biFourierSubTruncationType,366 +biFourierTruncationType,367 +binaryScaleFactor,368 +bitMapIndicator,369 +bitmap,370 +bitmapPresent,371 +bitmapSectionPresent,372 +bitsPerValue,373 +bitsPerValueAndRepack,374 +boot_edition,375 +bottomLevel,376 +boustrophedonic,377 +boustrophedonicOrdering,378 +bufrDataEncoded,379 +bufrHeaderCentre,380 +bufrHeaderSubCentre,381 +bufrTemplate,382 +bufrdcExpandedDescriptors,383 +calendarIdPresent,384 +calendarIdentification,385 +calendarIdentificationTemplateNumber,386 +categories,387 +categoryType,388 +cavokOrVisibility,389 +ccccIdentifiers,390 +ccsdsBlockSize,391 +ccsdsCompressionOptionsMask,392 +ccsdsFlags,393 +ccsdsRsi,394 +ceilingAndVisibilityOK,395 +ceilingAndVisibilityOKTrend1,396 +ceilingAndVisibilityOKTrend2,397 +ceilingAndVisibilityOKTrend3,398 +ceilingAndVisibilityOKTrend4,399 +centralClusterDefinition,400 +centralLongitude,401 +centralLongitudeInDegrees,402 +centralLongitudeInMicrodegrees,403 +centre,404 +centreDescription,405 +centreForLocal,406 +centreForTable2,407 +centreLatitude,408 +centreLatitudeInDegrees,409 +centreLongitude,410 +centreLongitudeInDegrees,411 +centuryOfAnalysis,412 +centuryOfReference,413 +centuryOfReferenceTimeOfData,414 +cfName,415 +cfNameECMF,416 +cfNameLegacyECMF,417 +cfVarName,418 +cfVarNameECMF,419 +cfVarNameLegacyECMF,420 +changeDecimalPrecision,421 +changeIndicatorTrend1,422 +changeIndicatorTrend2,423 +changeIndicatorTrend3,424 +changeIndicatorTrend4,425 +changingPrecision,426 +channel,427 +channelNumber,428 +char,429 +charValues,430 +checkInternalVersion,431 +class,432 +classOfAnalysis,433 +climateDateFrom,434 +climateDateTo,435 +climatologicalRegime,436 +cloudsAbbreviation1,437 +cloudsAbbreviation1Trend1,438 +cloudsAbbreviation1Trend2,439 +cloudsAbbreviation1Trend3,440 +cloudsAbbreviation1Trend4,441 +cloudsAbbreviation2,442 +cloudsAbbreviation2Trend1,443 +cloudsAbbreviation2Trend2,444 +cloudsAbbreviation2Trend3,445 +cloudsAbbreviation2Trend4,446 +cloudsAbbreviation3,447 +cloudsAbbreviation3Trend1,448 +cloudsAbbreviation3Trend2,449 +cloudsAbbreviation3Trend3,450 +cloudsAbbreviation3Trend4,451 +cloudsAbbreviation4,452 +cloudsAbbreviation4Trend1,453 +cloudsAbbreviation4Trend2,454 +cloudsAbbreviation4Trend3,455 +cloudsAbbreviation4Trend4,456 +cloudsBase1,457 +cloudsBase1Trend1,458 +cloudsBase1Trend2,459 +cloudsBase1Trend3,460 +cloudsBase1Trend4,461 +cloudsBase2,462 +cloudsBase2Trend1,463 +cloudsBase2Trend2,464 +cloudsBase2Trend3,465 +cloudsBase2Trend4,466 +cloudsBase3,467 +cloudsBase3Trend1,468 +cloudsBase3Trend2,469 +cloudsBase3Trend3,470 +cloudsBase3Trend4,471 +cloudsBase4,472 +cloudsBase4Trend1,473 +cloudsBase4Trend2,474 +cloudsBase4Trend3,475 +cloudsBase4Trend4,476 +cloudsBaseCoded1,477 +cloudsBaseCoded1Trend1,478 +cloudsBaseCoded1Trend2,479 +cloudsBaseCoded1Trend3,480 +cloudsBaseCoded1Trend4,481 +cloudsBaseCoded2,482 +cloudsBaseCoded2Trend1,483 +cloudsBaseCoded2Trend2,484 +cloudsBaseCoded2Trend3,485 +cloudsBaseCoded2Trend4,486 +cloudsBaseCoded3,487 +cloudsBaseCoded3Trend1,488 +cloudsBaseCoded3Trend2,489 +cloudsBaseCoded3Trend3,490 +cloudsBaseCoded3Trend4,491 +cloudsBaseCoded4,492 +cloudsBaseCoded4Trend1,493 +cloudsBaseCoded4Trend2,494 +cloudsBaseCoded4Trend3,495 +cloudsBaseCoded4Trend4,496 +cloudsCode1,497 +cloudsCode1Trend1,498 +cloudsCode1Trend2,499 +cloudsCode1Trend3,500 +cloudsCode1Trend4,501 +cloudsCode2,502 +cloudsCode2Trend1,503 +cloudsCode2Trend2,504 +cloudsCode2Trend3,505 +cloudsCode2Trend4,506 +cloudsCode3,507 +cloudsCode3Trend1,508 +cloudsCode3Trend2,509 +cloudsCode3Trend3,510 +cloudsCode3Trend4,511 +cloudsCode4,512 +cloudsCode4Trend1,513 +cloudsCode4Trend2,514 +cloudsCode4Trend3,515 +cloudsCode4Trend4,516 +cloudsTitle1,517 +cloudsTitle1Trend1,518 +cloudsTitle1Trend2,519 +cloudsTitle1Trend3,520 +cloudsTitle1Trend4,521 +cloudsTitle2,522 +cloudsTitle2Trend1,523 +cloudsTitle2Trend2,524 +cloudsTitle2Trend3,525 +cloudsTitle2Trend4,526 +cloudsTitle3,527 +cloudsTitle3Trend1,528 +cloudsTitle3Trend2,529 +cloudsTitle3Trend3,530 +cloudsTitle3Trend4,531 +cloudsTitle4,532 +cloudsTitle4Trend1,533 +cloudsTitle4Trend2,534 +cloudsTitle4Trend3,535 +cloudsTitle4Trend4,536 +clusterIdentifier,537 +clusterMember1,538 +clusterMember10,539 +clusterMember2,540 +clusterMember3,541 +clusterMember4,542 +clusterMember5,543 +clusterMember6,544 +clusterMember7,545 +clusterMember8,546 +clusterMember9,547 +clusterNumber,548 +clusterSize,549 +clusteringDomain,550 +clusteringMethod,551 +clutterFilterIndicator,552 +cnmc_cmcc,553 +cnmc_isac,554 +codeFigure,555 +codeType,556 +codedNumberOfFirstOrderPackedValues,557 +codedNumberOfGroups,558 +codedValues,559 +coefsFirst,560 +coefsSecond,561 +commonBlock,562 +complexPacking,563 +componentIndex,564 +compressedData,565 +computeLaplacianOperator,566 +computeStatistics,567 +conceptDir,568 +conceptsDir1,569 +conceptsDir2,570 +conceptsLocalDirAll,571 +conceptsLocalDirECMF,572 +conceptsLocalMarsDirAll,573 +conceptsMasterDir,574 +conceptsMasterMarsDir,575 +consensus,576 +consensusCount,577 +const,578 +constantAntennaElevationAngle,579 +constantFieldHalfByte,580 +constituentType,581 +constituentTypeName,582 +controlForecastCluster,583 +coordAveraging0,584 +coordAveraging1,585 +coordAveraging2,586 +coordAveraging3,587 +coordAveragingTims,588 +coordinate1End,589 +coordinate1Flag,590 +coordinate1Start,591 +coordinate2End,592 +coordinate2Flag,593 +coordinate2Start,594 +coordinate3Flag,595 +coordinate3OfFirstGridPoint,596 +coordinate3OfLastGridPoint,597 +coordinate4Flag,598 +coordinate4OfFirstGridPoint,599 +coordinate4OfLastGridPoint,600 +coordinateFlag1,601 +coordinateFlag2,602 +coordinateIndexNumber,603 +coordinatesPresent,604 +core,605 +corr1Data,606 +corr2Data,607 +corr3Data,608 +corr4Data,609 +correction,610 +correction1,611 +correction1Part,612 +correction2,613 +correction2Part,614 +correction3,615 +correction3Part,616 +correction4,617 +correction4Part,618 +count,619 +countOfGroupLengths,620 +countOfICEFieldsUsed,621 +countTotal,622 +country,623 +crcrlf,624 +createNewData,625 +crraLocalVersion,626 +crraSection,627 +crraSuiteID,628 +daLoop,629 +data,630 +dataAccessors,631 +dataCategory,632 +dataDate,633 +dataFlag,634 +dataKeys,635 +dataLength,636 +dataOrigin,637 +dataRepresentation,638 +dataRepresentationTemplate,639 +dataRepresentationTemplateNumber,640 +dataRepresentationType,641 +dataSelection,642 +dataStream,643 +dataSubCategory,644 +dataTime,645 +dataType,646 +dataValues,647 +datasetForLocal,648 +date,649 +dateOfAnalysis,650 +dateOfForecast,651 +dateOfForecastRun,652 +dateOfForecastUsedInLocalTime,653 +dateOfIceFieldUsed,654 +dateOfModelVersion,655 +dateOfReference,656 +dateOfSSTFieldUsed,657 +dateSSTFieldUsed,658 +dateTime,659 +datumSize,660 +day,661 +dayOfAnalysis,662 +dayOfEndOfOverallTimeInterval,663 +dayOfForecast,664 +dayOfForecastUsedInLocalTime,665 +dayOfModelVersion,666 +dayOfReference,667 +dayOfStartOfReferencePeriod,668 +dayOfTheYearDate,669 +decimalPrecision,670 +decimalScaleFactor,671 +defaultFaFieldName,672 +defaultFaLevelName,673 +defaultFaModelName,674 +defaultName,675 +defaultParameter,676 +defaultSequence,677 +defaultShortName,678 +defaultStepUnits,679 +defaultTypeOfLevel,680 +default_max_val,681 +default_min_val,682 +default_step_units,683 +definitionFilesVersion,684 +deleteCalendarId,685 +deleteExtraLocalSection,686 +deleteLocalDefinition,687 +deletePV,688 +derivedForecast,689 +dewPointTemperature,690 +diagnostic,691 +diagnosticNumber,692 +diffInDays,693 +diffInHours,694 +dimension,695 +dimensionNumber,696 +dimensionType,697 +direction,698 +directionNumber,699 +directionOfVariation,700 +directionScalingFactor,701 +dirty_statistics,702 +disableGrib1LocalSection,703 +discipline,704 +distanceFromTubeToEnsembleMean,705 +distinctLatitudes,706 +distinctLongitudes,707 +doExtractArea,708 +doExtractDateTime,709 +doExtractSubsets,710 +doSimpleThinning,711 +domain,712 +driverInformationBlockAddress,713 +dummy,714 +dummy1,715 +dummy2,716 +dummyc,717 +dx,718 +dy,719 +earthIsOblate,720 +earthMajorAxis,721 +earthMajorAxisInMetres,722 +earthMinorAxis,723 +earthMinorAxisInMetres,724 +eastLongitudeOfCluster,725 +eastLongitudeOfDomainOfTubing,726 +easternLongitudeOfClusterDomain,727 +easternLongitudeOfDomain,728 +ed,729 +edition,730 +editionNumber,731 +efas_model,732 +efiOrder,733 +eight,734 +elementsTable,735 +elevation,736 +eleven,737 +endDayTrend1,738 +endDayTrend2,739 +endDayTrend3,740 +endDayTrend4,741 +endDescriptors,742 +endGridDefinition,743 +endHourTrend1,744 +endHourTrend2,745 +endHourTrend3,746 +endHourTrend4,747 +endMark,748 +endMinuteTrend1,749 +endMinuteTrend2,750 +endMinuteTrend3,751 +endMinuteTrend4,752 +endMonthTrend1,753 +endMonthTrend2,754 +endMonthTrend3,755 +endMonthTrend4,756 +endOfFileAddress,757 +endOfHeadersMarker,758 +endOfInterval,759 +endOfMessage,760 +endOfProduct,761 +endOfRange,762 +endStep,763 +endStepInHours,764 +endTimeStep,765 +endYearTrend1,766 +endYearTrend2,767 +endYearTrend3,768 +endYearTrend4,769 +energyNorm,770 +enorm,771 +ensembleForecastNumbers,772 +ensembleForecastNumbersList,773 +ensembleSize,774 +ensembleStandardDeviation,775 +eps,776 +epsContinous,777 +epsPoint,778 +epsStatisticsContinous,779 +epsStatisticsPoint,780 +expandBy,781 +expandedAbbreviations,782 +expandedCodes,783 +expandedCrex_scales,784 +expandedCrex_units,785 +expandedCrex_widths,786 +expandedDescriptors,787 +expandedNames,788 +expandedOriginalCodes,789 +expandedOriginalReferences,790 +expandedOriginalScales,791 +expandedOriginalWidths,792 +expandedTypes,793 +expandedUnits,794 +experimentVersionNumber,795 +experimentVersionNumber1,796 +experimentVersionNumber2,797 +experimentVersionNumberOfAnalysis,798 +expoffset,799 +expver,800 +extendedFlag,801 +extraDim,802 +extraDimensionPresent,803 +extraLocalSectionNumber,804 +extraLocalSectionPresent,805 +extraValues,806 +extractAreaEastLongitude,807 +extractAreaLatitudeRank,808 +extractAreaLongitudeRank,809 +extractAreaNorthLatitude,810 +extractAreaSouthLatitude,811 +extractAreaWestLongitude,812 +extractDateTimeDayEnd,813 +extractDateTimeDayRank,814 +extractDateTimeDayStart,815 +extractDateTimeEnd,816 +extractDateTimeHourEnd,817 +extractDateTimeHourRank,818 +extractDateTimeHourStart,819 +extractDateTimeMinuteEnd,820 +extractDateTimeMinuteRank,821 +extractDateTimeMinuteStart,822 +extractDateTimeMonthEnd,823 +extractDateTimeMonthRank,824 +extractDateTimeMonthStart,825 +extractDateTimeSecondEnd,826 +extractDateTimeSecondRank,827 +extractDateTimeSecondStart,828 +extractDateTimeStart,829 +extractDateTimeYearEnd,830 +extractDateTimeYearRank,831 +extractDateTimeYearStart,832 +extractSubset,833 +extractSubsetIntervalEnd,834 +extractSubsetIntervalStart,835 +extractSubsetList,836 +extractedAreaNumberOfSubsets,837 +extractedDateTimeNumberOfSubsets,838 +extremeClockwiseWindDirection,839 +extremeCounterClockwiseWindDirection,840 +extremeValuesRVR1,841 +extremeValuesRVR2,842 +extremeValuesRVR3,843 +extremeValuesRVR4,844 +faFieldName,845 +faLevelName,846 +faModelName,847 +false,848 +falseEasting,849 +falseNorthing,850 +fcmonth,851 +fcperiod,852 +fgDate,853 +fgTime,854 +file,855 +fileConsistencyFlags,856 +fireTemplate,857 +firstDimension,858 +firstDimensionCoordinateValueDefinition,859 +firstDimensionPhysicalSignificance,860 +firstLatitude,861 +firstLatitudeInDegrees,862 +firstMonthUsedToBuildClimateMonth1,863 +firstMonthUsedToBuildClimateMonth2,864 +firstOrderValues,865 +firstSize,866 +flag,867 +flagForAnyFurtherInformation,868 +flagForIrregularGridCoordinateList,869 +flagForNormalOrStaggeredGrid,870 +flagShowingPostAuxiliaryArrayInUse,871 +flags,872 +floatVal,873 +floatValues,874 +forecastLeadTime,875 +forecastMonth,876 +forecastOrSingularVectorNumber,877 +forecastPeriod,878 +forecastPeriodFrom,879 +forecastPeriodTo,880 +forecastProbabilityNumber,881 +forecastSteps,882 +forecastTime,883 +forecastperiod,884 +formatVersionMajorNumber,885 +formatVersionMinorNumber,886 +freeFormData,887 +frequency,888 +frequencyNumber,889 +frequencyScalingFactor,890 +functionCode,891 +g,892 +g1conceptsLocalDirAll,893 +g1conceptsMasterDir,894 +g2grid,895 +gaussianGridName,896 +genVertHeightCoords,897 +generalExtended2ordr,898 +generatingProcessIdentificationNumber,899 +generatingProcessIdentifier,900 +generatingProcessTemplate,901 +generatingProcessTemplateNumber,902 +getNumberOfValues,903 +gg,904 +global,905 +globalDomain,906 +grib1divider,907 +grib2LocalSectionNumber,908 +grib2LocalSectionPresent,909 +grib2divider,910 +grib3divider,911 +gribDataQualityChecks,912 +gribMasterTablesVersionNumber,913 +gribTablesVersionNo,914 +grid,915 +gridCoordinate,916 +gridDefinition,917 +gridDefinitionDescription,918 +gridDefinitionSection,919 +gridDefinitionTemplateNumber,920 +gridDescriptionSectionPresent,921 +gridName,922 +gridPointPosition,923 +gridType,924 +groupInternalNodeK,925 +groupLeafNodeK,926 +groupLengths,927 +groupSplitting,928 +groupSplittingMethodUsed,929 +groupWidth,930 +groupWidths,931 +gts_CCCC,932 +gts_TTAAii,933 +gts_ddhh00,934 +gts_header,935 +halfByte,936 +hdate,937 +headersOnly,938 +heightLevelName,939 +heightOrPressureOfLevel,940 +heightPressureEtcOfLevels,941 +hideThis,942 +horizontalCoordinateDefinition,943 +horizontalCoordinateSupplement,944 +horizontalDimensionProcessed,945 +horizontalDomainTemplate,946 +horizontalDomainTemplateNumber,947 +hour,948 +hourOfAnalysis,949 +hourOfEndOfOverallTimeInterval,950 +hourOfForecast,951 +hourOfForecastUsedInLocalTime,952 +hourOfModelVersion,953 +hourOfReference,954 +hourOfStartOfReferencePeriod,955 +hoursAfterDataCutoff,956 +hoursAfterReferenceTimeOfDataCutoff,957 +hundred,958 +iDirectionIncrement,959 +iDirectionIncrementGiven,960 +iDirectionIncrementGridLength,961 +iDirectionIncrementInDegrees,962 +iIncrement,963 +iScansNegatively,964 +iScansPositively,965 +ident,966 +identificationNumber,967 +identificationOfOriginatingGeneratingCentre,968 +identificationOfProject,969 +identifier,970 +ieeeFloats,971 +ifsParam,972 +ijDirectionIncrementGiven,973 +implementationDateOfModelCycle,974 +incrementOfLengths,975 +indexTemplate,976 +indexTemplateNumber,977 +indexedStorageInternalNodeK,978 +indexingDate,979 +indexingTime,980 +indexingTimeHH,981 +indexingTimeHHMM,982 +indexingTimeMM,983 +indicatorOfParameter,984 +indicatorOfTypeOfLevel,985 +indicatorOfUnitForForecastTime,986 +indicatorOfUnitForTimeIncrement,987 +indicatorOfUnitForTimeRange,988 +indicatorOfUnitForTimeRangeForReferencePeriod,989 +indicatorOfUnitOfTimeRange,990 +inputDataPresentIndicator,991 +inputDelayedDescriptorReplicationFactor,992 +inputExtendedDelayedDescriptorReplicationFactor,993 +inputOriginatingCentre,994 +inputOverriddenReferenceValues,995 +inputProcessIdentifier,996 +inputShortDelayedDescriptorReplicationFactor,997 +instrument,998 +instrumentIdentifier,999 +instrumentType,1000 +integerPointValues,1001 +integerScaleFactor,1002 +integerScalingFactorAppliedToDirections,1003 +integerScalingFactorAppliedToFrequencies,1004 +integerValues,1005 +internalVersion,1006 +internationalDataSubCategory,1007 +interpretationOfNumberOfPoints,1008 +intervalBetweenTimes,1009 +isAccumulation,1010 +isAuto,1011 +isCavok,1012 +isCavokTrend1,1013 +isCavokTrend2,1014 +isCavokTrend3,1015 +isCavokTrend4,1016 +isConstant,1017 +isCorrection,1018 +isEPS,1019 +isEps,1020 +isFillup,1021 +isHindcast,1022 +isOctahedral,1023 +isRotatedGrid,1024 +isSatellite,1025 +isSatelliteType,1026 +isSens,1027 +is_aerosol,1028 +is_aerosol_optical,1029 +is_chemical,1030 +is_chemical_distfn,1031 +is_chemical_srcsink,1032 +is_localtime,1033 +is_ocean2d_param,1034 +is_ocean3d_param,1035 +is_uerra,1036 +isectionNumber2,1037 +isectionNumber3,1038 +isectionNumber4,1039 +isotopeIdentificationNumber,1040 +iteration,1041 +iterationNumber,1042 +iteratorDisableUnrotate,1043 +jDirectionIncrement,1044 +jDirectionIncrementGiven,1045 +jDirectionIncrementGridLength,1046 +jDirectionIncrementInDegrees,1047 +jIncrement,1048 +jPointsAreConsecutive,1049 +jScansNegatively,1050 +jScansPositively,1051 +jdLocal,1052 +jdSelected,1053 +julianDay,1054 +julianForecastDay,1055 +keyData,1056 +keyMore,1057 +keySat,1058 +kindOfProduct,1059 +kurt,1060 +kurtosis,1061 +lBB,1062 +landtype,1063 +laplacianOperator,1064 +laplacianOperatorIsSet,1065 +laplacianScalingFactor,1066 +laplacianScalingFactorUnset,1067 +lastMonthUsedToBuildClimateMonth1,1068 +lastMonthUsedToBuildClimateMonth2,1069 +latLonValues,1070 +latitude,1071 +latitudeFirstInDegrees,1072 +latitudeLastInDegrees,1073 +latitudeLongitudeValues,1074 +latitudeOfCentralPointInClusterDomain,1075 +latitudeOfCentrePoint,1076 +latitudeOfCentrePointInDegrees,1077 +latitudeOfFirstGridPoint,1078 +latitudeOfFirstGridPointInDegrees,1079 +latitudeOfGridPoints,1080 +latitudeOfIcosahedronPole,1081 +latitudeOfLastGridPoint,1082 +latitudeOfLastGridPointInDegrees,1083 +latitudeOfNorthWestCornerOfArea,1084 +latitudeOfReferencePoint,1085 +latitudeOfReferencePointInDegrees,1086 +latitudeOfSouthEastCornerOfArea,1087 +latitudeOfSouthernPole,1088 +latitudeOfSouthernPoleInDegrees,1089 +latitudeOfStretchingPole,1090 +latitudeOfStretchingPoleInDegrees,1091 +latitudeOfSubSatellitePoint,1092 +latitudeOfSubSatellitePointInDegrees,1093 +latitudeOfTangencyPoint,1094 +latitudeOfThePoleOfStretching,1095 +latitudeOfThePolePoint,1096 +latitudeOfThePolePointInDegrees,1097 +latitudeOfTheSouthernPoleOfProjection,1098 +latitudeSexagesimal,1099 +latitudeWhereDxAndDyAreSpecified,1100 +latitudeWhereDxAndDyAreSpecifiedInDegrees,1101 +latitudes,1102 +latitudesList,1103 +latitudinalDirectionGridLength,1104 +lcwfvSuiteName,1105 +leadtime,1106 +legBaseDate,1107 +legBaseTime,1108 +legNumber,1109 +legacyGaussSubarea,1110 +lengthDescriptors,1111 +lengthIncrementForTheGroupLengths,1112 +lengthOf4DvarWindow,1113 +lengthOfHeaders,1114 +lengthOfIndexTemplate,1115 +lengthOfMessage,1116 +lengthOfOriginatorLocalTemplate,1117 +lengthOfProjectLocalTemplate,1118 +lengthOfTimeRange,1119 +lengthOfTimeRangeForReferencePeriod,1120 +lev,1121 +levTypeName,1122 +level,1123 +levelIndicator,1124 +levelType,1125 +levelValues,1126 +level_value_list,1127 +levelist,1128 +levels,1129 +levtype,1130 +libraryVersion,1131 +listMembersMissing,1132 +listMembersMissing2,1133 +listMembersMissing3,1134 +listMembersMissing4,1135 +listMembersUsed,1136 +listMembersUsed2,1137 +listMembersUsed3,1138 +listMembersUsed4,1139 +listOfContributingSpectralBands,1140 +listOfDistributionFunctionParameter,1141 +listOfEnsembleForecastNumbers,1142 +listOfModelIdentifiers,1143 +listOfParametersUsedForClustering,1144 +listOfScaledFrequencies,1145 +listOfWaveDirectionSequenceParameters,1146 +listOfWaveFrequencySequenceParameters,1147 +local,1148 +localDate,1149 +localDateTime,1150 +localDay,1151 +localDecimalScaleFactor,1152 +localDefNumberOne,1153 +localDefNumberTwo,1154 +localDefinition,1155 +localDefinitionNumber,1156 +localDir,1157 +localExtensionPadding,1158 +localFlag,1159 +localFlagLatestVersion,1160 +localHour,1161 +localLatitude,1162 +localLatitude1,1163 +localLatitude2,1164 +localLongitude,1165 +localLongitude1,1166 +localLongitude2,1167 +localMinute,1168 +localMonth,1169 +localNumberOfObservations,1170 +localSecond,1171 +localSection,1172 +localSectionPresent,1173 +localTablesVersion,1174 +localTablesVersionNumber,1175 +localTime,1176 +localTimeForecastList,1177 +localTimeMethod,1178 +localUsePresent,1179 +localYear,1180 +local_padding,1181 +local_use,1182 +logTransform,1183 +longitude,1184 +longitudeFirstInDegrees,1185 +longitudeLastInDegrees,1186 +longitudeOfCentralPointInClusterDomain,1187 +longitudeOfCentrePoint,1188 +longitudeOfCentrePointInDegrees,1189 +longitudeOfFirstDiamondCenterLine,1190 +longitudeOfFirstDiamondCentreLine,1191 +longitudeOfFirstDiamondCentreLineInDegrees,1192 +longitudeOfFirstGridPoint,1193 +longitudeOfFirstGridPointInDegrees,1194 +longitudeOfGridPoints,1195 +longitudeOfIcosahedronPole,1196 +longitudeOfLastGridPoint,1197 +longitudeOfLastGridPointInDegrees,1198 +longitudeOfNorthWestCornerOfArea,1199 +longitudeOfReferencePoint,1200 +longitudeOfReferencePointInDegrees,1201 +longitudeOfSouthEastCornerOfArea,1202 +longitudeOfSouthernPole,1203 +longitudeOfSouthernPoleInDegrees,1204 +longitudeOfStretchingPole,1205 +longitudeOfStretchingPoleInDegrees,1206 +longitudeOfSubSatellitePoint,1207 +longitudeOfSubSatellitePointInDegrees,1208 +longitudeOfTangencyPoint,1209 +longitudeOfThePoleOfStretching,1210 +longitudeOfThePolePoint,1211 +longitudeOfThePolePointInDegrees,1212 +longitudeOfTheSouthernPoleOfProjection,1213 +longitudeSexagesimal,1214 +longitudes,1215 +longitudesList,1216 +longitudinalDirectionGridLength,1217 +lowerLimit,1218 +lowerRange,1219 +lowerThreshold,1220 +lowerThresholdValue,1221 +ls_labeling,1222 +lsdate_bug,1223 +lstime_bug,1224 +m,1225 +mAngleMultiplier,1226 +mBasicAngle,1227 +mars,1228 +marsClass,1229 +marsClass1,1230 +marsClass2,1231 +marsDir,1232 +marsDomain,1233 +marsEndStep,1234 +marsExperimentOffset,1235 +marsExpver,1236 +marsForecastMonth,1237 +marsGrid,1238 +marsIdent,1239 +marsKeywords,1240 +marsKeywords1,1241 +marsLamModel,1242 +marsLatitude,1243 +marsLevel,1244 +marsLevelist,1245 +marsLongitude,1246 +marsModel,1247 +marsParam,1248 +marsQuantile,1249 +marsRange,1250 +marsStartStep,1251 +marsStep,1252 +marsStream,1253 +marsStream1,1254 +marsStream2,1255 +marsType,1256 +marsType1,1257 +marsType2,1258 +mars_labeling,1259 +mask,1260 +masterDir,1261 +masterTableNumber,1262 +masterTablesVersionNumber,1263 +masterTablesVersionNumberLatest,1264 +matchAerosolBinNumber,1265 +matchAerosolPacking,1266 +matchLandType,1267 +matchSort,1268 +matchTimeRepres,1269 +matrixBitmapsPresent,1270 +matrixOfValues,1271 +max,1272 +maxLevelValue,1273 +maximum,1274 +md5Data,1275 +md5DataSection,1276 +md5GridSection,1277 +md5Headers,1278 +md5Product,1279 +md5Section1,1280 +md5Section10,1281 +md5Section2,1282 +md5Section3,1283 +md5Section4,1284 +md5Section5,1285 +md5Section6,1286 +md5Section7,1287 +md5Section8,1288 +md5Section9,1289 +md5Structure,1290 +md5TimeDomainSection,1291 +meanRVR1,1292 +meanRVR2,1293 +meanRVR3,1294 +meanRVR4,1295 +meanSize,1296 +meanValueRVR1,1297 +meanValueRVR2,1298 +meanValueRVR3,1299 +meanValueRVR4,1300 +meaningOfVerticalCoordinate,1301 +memberNumber,1302 +messageLength,1303 +metadata,1304 +method,1305 +methodNumber,1306 +million,1307 +min,1308 +minimum,1309 +minute,1310 +minuteOfAnalysis,1311 +minuteOfEndOfOverallTimeInterval,1312 +minuteOfForecast,1313 +minuteOfForecastUsedInLocalTime,1314 +minuteOfModelVersion,1315 +minuteOfReference,1316 +minuteOfStartOfReferencePeriod,1317 +minutesAfterDataCutoff,1318 +minutesAfterReferenceTimeOfDataCutoff,1319 +missingDataFlag,1320 +missingValue,1321 +missingValueManagement,1322 +missingValueManagementUsed,1323 +missingValuesPresent,1324 +missing_values,1325 +mixedCoordinateDefinition,1326 +mixedCoordinateFieldFlag,1327 +modeNumber,1328 +model,1329 +modelErrorType,1330 +modelIdentifier,1331 +modelName,1332 +modelVersionDate,1333 +modelVersionTime,1334 +molarMass,1335 +month,1336 +monthOfAnalysis,1337 +monthOfEndOfOverallTimeInterval,1338 +monthOfForecast,1339 +monthOfForecastUsedInLocalTime,1340 +monthOfModelVersion,1341 +monthOfReference,1342 +monthOfStartOfReferencePeriod,1343 +monthlyVerificationDate,1344 +monthlyVerificationMonth,1345 +monthlyVerificationTime,1346 +monthlyVerificationYear,1347 +multiplicationFactorForLatLong,1348 +n,1349 +n2,1350 +n3,1351 +na,1352 +name,1353 +nameECMF,1354 +nameLegacyECMF,1355 +nameOfFirstFixedSurface,1356 +nameOfSecondFixedSurface,1357 +names,1358 +nd,1359 +neitherPresent,1360 +newSubtype,1361 +nlev,1362 +nnn,1363 +normAtFinalTime,1364 +normAtInitialTime,1365 +normal,1366 +northLatitudeOfCluster,1367 +northLatitudeOfDomainOfTubing,1368 +northWestLatitudeOfLPOArea,1369 +northWestLatitudeOfVerficationArea,1370 +northWestLongitudeOfLPOArea,1371 +northWestLongitudeOfVerficationArea,1372 +northernLatitudeOfClusterDomain,1373 +northernLatitudeOfDomain,1374 +nosigPresent,1375 +notDecoded,1376 +nref,1377 +nt,1378 +number,1379 +numberInHorizontalCoordinates,1380 +numberInMixedCoordinateDefinition,1381 +numberInTheAuxiliaryArray,1382 +numberInTheGridCoordinateList,1383 +numberIncludedInAverage,1384 +numberMissingFromAveragesOrAccumulations,1385 +numberOfAdditionalParametersForReferencePeriod,1386 +numberOfAnalysis,1387 +numberOfBits,1388 +numberOfBitsContainingEachPackedValue,1389 +numberOfBitsForScaledGroupLengths,1390 +numberOfBitsUsedForTheGroupWidths,1391 +numberOfBitsUsedForTheScaledGroupLengths,1392 +numberOfBytesInLocalDefinition,1393 +numberOfBytesOfFreeFormatData,1394 +numberOfBytesPerInteger,1395 +numberOfCategories,1396 +numberOfCharacters,1397 +numberOfChars,1398 +numberOfClusterHighResolution,1399 +numberOfClusterLowResolution,1400 +numberOfClusters,1401 +numberOfCodedValues,1402 +numberOfCoefficientsOrValuesUsedToSpecifyFirstDimensionCoordinateFunction,1403 +numberOfCoefficientsOrValuesUsedToSpecifySecondDimensionCoordinateFunction,1404 +numberOfColumns,1405 +numberOfComponents,1406 +numberOfContributingSpectralBands,1407 +numberOfControlForecastTube,1408 +numberOfCoordinatesValues,1409 +numberOfDataBinsAlongRadials,1410 +numberOfDataMatrices,1411 +numberOfDataPoints,1412 +numberOfDataPointsExpected,1413 +numberOfDataValues,1414 +numberOfDaysInClimateSamplingWindow,1415 +numberOfDiamonds,1416 +numberOfDirections,1417 +numberOfDistinctSection3s,1418 +numberOfDistinctSection4s,1419 +numberOfDistinctSection5s,1420 +numberOfDistinctSection6s,1421 +numberOfDistinctSection7s,1422 +numberOfDistinctSection8s,1423 +numberOfDistinctSection9s,1424 +numberOfDistributionFunctionParameters,1425 +numberOfEffectiveValues,1426 +numberOfFloats,1427 +numberOfForcasts,1428 +numberOfForecastsInCluster,1429 +numberOfForecastsInEnsemble,1430 +numberOfForecastsInTheCluster,1431 +numberOfForecastsInTube,1432 +numberOfForecastsUsedInLocalTime,1433 +numberOfFrequencies,1434 +numberOfGridInReference,1435 +numberOfGridUsed,1436 +numberOfGroups,1437 +numberOfGroupsOfDataValues,1438 +numberOfHorizontalPoints,1439 +numberOfIntegers,1440 +numberOfInts,1441 +numberOfIterations,1442 +numberOfLevelValues,1443 +numberOfLocalDefinitions,1444 +numberOfLogicals,1445 +numberOfMembersInCluster,1446 +numberOfMembersInEnsemble,1447 +numberOfMissing,1448 +numberOfMissingInStatisticalProcess,1449 +numberOfMissingValues,1450 +numberOfModeOfDistribution,1451 +numberOfModels,1452 +numberOfOctectsForNumberOfPoints,1453 +numberOfOctetsExtraDescriptors,1454 +numberOfOperationalForecastTube,1455 +numberOfPackedValues,1456 +numberOfParallelsBetweenAPoleAndTheEquator,1457 +numberOfParametersUsedForClustering,1458 +numberOfPartitions,1459 +numberOfPoints,1460 +numberOfPointsAlongAMeridian,1461 +numberOfPointsAlongAParallel,1462 +numberOfPointsAlongFirstAxis,1463 +numberOfPointsAlongSecondAxis,1464 +numberOfPointsAlongTheXAxis,1465 +numberOfPointsAlongTheYAxis,1466 +numberOfPointsAlongXAxis,1467 +numberOfPointsAlongXAxisInCouplingArea,1468 +numberOfPointsAlongYAxis,1469 +numberOfPointsAlongYAxisInCouplingArea,1470 +numberOfPointsInDomain,1471 +numberOfPointsUsed,1472 +numberOfPressureLevelsUsedForClustering,1473 +numberOfRadarSitesUsed,1474 +numberOfRadials,1475 +numberOfReferencePeriodTimeRanges,1476 +numberOfReforecastYearsInModelClimate,1477 +numberOfRemaininChars,1478 +numberOfRepresentativeMember,1479 +numberOfReservedBytes,1480 +numberOfRows,1481 +numberOfSecondOrderPackedValues,1482 +numberOfSection,1483 +numberOfSingularVectorsComputed,1484 +numberOfSingularVectorsEvolved,1485 +numberOfStatisticallyProcessedFieldsForLocalTime,1486 +numberOfStepsUsedForClustering,1487 +numberOfSubsets,1488 +numberOfTensOfThousandsOfYearsOfOffset,1489 +numberOfTimeIncrementsOfForecastsUsedInLocalTime,1490 +numberOfTimeRange,1491 +numberOfTimeSteps,1492 +numberOfUnexpandedDescriptors,1493 +numberOfUnusedBitsAtEndOfSection3,1494 +numberOfUsedSpatialTiles,1495 +numberOfUsedTileAttributes,1496 +numberOfUsefulPointsAlongXAxis,1497 +numberOfUsefulPointsAlongYAxis,1498 +numberOfVGridUsed,1499 +numberOfValues,1500 +numberOfVerticalCoordinateValues,1501 +numberOfVerticalGridDescriptors,1502 +numberOfVerticalPoints,1503 +numberOfWaveDirectionSequenceParameters,1504 +numberOfWaveDirections,1505 +numberOfWaveFrequencies,1506 +numberOfWaveFrequencySequenceParameters,1507 +numberingOrderOfDiamonds,1508 +numericValues,1509 +observablePropertyTemplate,1510 +observablePropertyTemplateNumber,1511 +observationDiagnostic,1512 +observationGeneratingProcessIdentifier,1513 +observationType,1514 +observedData,1515 +obstype,1516 +oceanAtmosphereCoupling,1517 +oceanLevName,1518 +oceanStream,1519 +octetAtWichPackedDataBegins,1520 +offset,1521 +offsetAfterBitmap,1522 +offsetAfterCentreLocalSection,1523 +offsetAfterData,1524 +offsetAfterLocalSection,1525 +offsetAfterPadding,1526 +offsetBBitmap,1527 +offsetBSection5,1528 +offsetBSection6,1529 +offsetBSection9,1530 +offsetBeforeBitmap,1531 +offsetBeforeData,1532 +offsetBeforePL,1533 +offsetBeforePV,1534 +offsetDescriptors,1535 +offsetEndSection4,1536 +offsetFreeFormData,1537 +offsetFromOriginToInnerBound,1538 +offsetFromReferenceOfFirstTime,1539 +offsetICEFieldsUsed,1540 +offsetSection0,1541 +offsetSection1,1542 +offsetSection10,1543 +offsetSection11,1544 +offsetSection2,1545 +offsetSection3,1546 +offsetSection4,1547 +offsetSection5,1548 +offsetSection6,1549 +offsetSection7,1550 +offsetSection8,1551 +offsetSection9,1552 +offsetToEndOf4DvarWindow,1553 +offsetValuesBy,1554 +offsetdate,1555 +offsettime,1556 +oldSubtype,1557 +one,1558 +oneConstant,1559 +oneMillionConstant,1560 +oneMinuteMeanMaximumRVR1,1561 +oneMinuteMeanMaximumRVR2,1562 +oneMinuteMeanMaximumRVR3,1563 +oneMinuteMeanMaximumRVR4,1564 +oneMinuteMeanMinimumRVR1,1565 +oneMinuteMeanMinimumRVR2,1566 +oneMinuteMeanMinimumRVR3,1567 +oneMinuteMeanMinimumRVR4,1568 +oneThousand,1569 +oper,1570 +operStream,1571 +operatingMode,1572 +operationalForecastCluster,1573 +optimisationTime,1574 +optimizeScaleFactor,1575 +optionalData,1576 +opttime,1577 +orderOfSPD,1578 +orderOfSpatialDifferencing,1579 +orientationOfTheGrid,1580 +orientationOfTheGridInDegrees,1581 +origin,1582 +originOfPostProcessing,1583 +originalParameterNumber,1584 +originalParameterTableNumber,1585 +originalSubCentreIdentifier,1586 +originatingCentre,1587 +originatingCentreOfAnalysis,1588 +originatingClass,1589 +originatorLocalTemplate,1590 +originatorLocalTemplateNumber,1591 +overlayTemplate,1592 +overlayTemplateNumber,1593 +pack,1594 +packedValues,1595 +packingError,1596 +packingType,1597 +padding,1598 +padding_grid1_1,1599 +padding_grid1_2,1600 +padding_grid3_1,1601 +padding_grid4_1,1602 +padding_grid50_1,1603 +padding_grid5_1,1604 +padding_grid90_1,1605 +padding_loc10_1,1606 +padding_loc12_1,1607 +padding_loc13_1,1608 +padding_loc13_2,1609 +padding_loc13_3,1610 +padding_loc13_4,1611 +padding_loc13_5,1612 +padding_loc14_1,1613 +padding_loc14_2,1614 +padding_loc15_1,1615 +padding_loc16_1,1616 +padding_loc17_2,1617 +padding_loc18_1,1618 +padding_loc18_2,1619 +padding_loc190_1,1620 +padding_loc191_1,1621 +padding_loc191_2,1622 +padding_loc191_3,1623 +padding_loc192_1,1624 +padding_loc19_2,1625 +padding_loc20_1,1626 +padding_loc21_1,1627 +padding_loc23_1,1628 +padding_loc244_1,1629 +padding_loc244_2,1630 +padding_loc244_3,1631 +padding_loc245_1,1632 +padding_loc245_2,1633 +padding_loc26_1,1634 +padding_loc27_1,1635 +padding_loc27_2,1636 +padding_loc28_1,1637 +padding_loc29_1,1638 +padding_loc29_2,1639 +padding_loc29_3,1640 +padding_loc2_1,1641 +padding_loc2_2,1642 +padding_loc30_1,1643 +padding_loc30_2,1644 +padding_loc37_1,1645 +padding_loc37_2,1646 +padding_loc38_1,1647 +padding_loc3_1,1648 +padding_loc4_2,1649 +padding_loc50_1,1650 +padding_loc5_1,1651 +padding_loc6_1,1652 +padding_loc7_1,1653 +padding_loc9_1,1654 +padding_loc9_2,1655 +padding_local11_1,1656 +padding_local1_1,1657 +padding_local1_31,1658 +padding_local40_1,1659 +padding_local_35,1660 +padding_local_7_1,1661 +padding_sec1_loc,1662 +padding_sec2_1,1663 +padding_sec2_2,1664 +padding_sec2_3,1665 +padding_sec3_1,1666 +padding_sec4_1,1667 +paleontologicalOffset,1668 +param,1669 +paramId,1670 +paramIdECMF,1671 +paramIdLegacyECMF,1672 +param_value_max,1673 +param_value_min,1674 +parameter,1675 +parameterCategory,1676 +parameterCode,1677 +parameterDiscipline,1678 +parameterIndicator,1679 +parameterName,1680 +parameterNumber,1681 +parameterUnits,1682 +parameters,1683 +parametersVersion,1684 +partitionItems,1685 +partitionNumber,1686 +partitionTable,1687 +partitions,1688 +pastTendencyRVR1,1689 +pastTendencyRVR2,1690 +pastTendencyRVR3,1691 +pastTendencyRVR4,1692 +patch_precip_fp,1693 +pentagonalResolutionParameterJ,1694 +pentagonalResolutionParameterK,1695 +pentagonalResolutionParameterM,1696 +percentileValue,1697 +periodOfTime,1698 +periodOfTimeIntervals,1699 +perturbationNumber,1700 +perturbedType,1701 +phase,1702 +physicalFlag1,1703 +physicalFlag2,1704 +physicalMeaningOfVerticalCoordinate,1705 +pl,1706 +platform,1707 +plusOneinOrdersOfSPD,1708 +points,1709 +postAuxiliary,1710 +postAuxiliaryArrayPresent,1711 +postProcessing,1712 +powerOfTenUsedToScaleClimateWeight,1713 +preBitmapValues,1714 +preProcessingParameter,1715 +precision,1716 +precisionOfTheUnpackedSubset,1717 +predefined_grid,1718 +predefined_grid_values,1719 +preferLocalConcepts,1720 +present,1721 +presentTrend1,1722 +presentTrend2,1723 +presentTrend3,1724 +presentTrend4,1725 +presentWeather1Present,1726 +presentWeather1PresentTrend1,1727 +presentWeather1PresentTrend2,1728 +presentWeather1PresentTrend3,1729 +presentWeather1PresentTrend4,1730 +presentWeather2Present,1731 +presentWeather2PresentTrend1,1732 +presentWeather2PresentTrend2,1733 +presentWeather2PresentTrend3,1734 +presentWeather2PresentTrend4,1735 +presentWeather3Present,1736 +presentWeather3PresentTrend1,1737 +presentWeather3PresentTrend2,1738 +presentWeather3PresentTrend3,1739 +presentWeather3PresentTrend4,1740 +pressureLevel,1741 +pressureUnits,1742 +primaryBitmap,1743 +primaryMissingValue,1744 +primaryMissingValueSubstitute,1745 +probContinous,1746 +probPoint,1747 +probProductDefinition,1748 +probabilityType,1749 +probabilityTypeName,1750 +process,1751 +produceLargeConstantFields,1752 +product,1753 +productDefinition,1754 +productDefinitionTemplateNumber,1755 +productDefinitionTemplateNumberInternal,1756 +productIdentifier,1757 +productType,1758 +productionStatusOfProcessedData,1759 +projSourceString,1760 +projString,1761 +projTargetString,1762 +projectLocalTemplate,1763 +projectLocalTemplateNumber,1764 +projectionCenterFlag,1765 +projectionCentreFlag,1766 +pv,1767 +pvlLocation,1768 +qfe,1769 +qfePresent,1770 +qfeUnits,1771 +qnh,1772 +qnhAPresent,1773 +qnhPresent,1774 +qnhUnits,1775 +qualityControl,1776 +qualityControlIndicator,1777 +qualityValueAssociatedWithParameter,1778 +quantile,1779 +quantileValue,1780 +radialAngularSpacing,1781 +radials,1782 +radius,1783 +radiusInMetres,1784 +radiusOfCentralCluster,1785 +radiusOfClusterDomain,1786 +radiusOfTheEarth,1787 +range,1788 +rangeBinSpacing,1789 +rdbDateTime,1790 +rdbSubtype,1791 +rdbType,1792 +rdb_key,1793 +rdbtime,1794 +rdbtimeDate,1795 +rdbtimeDay,1796 +rdbtimeHour,1797 +rdbtimeMinute,1798 +rdbtimeMonth,1799 +rdbtimeSecond,1800 +rdbtimeTime,1801 +rdbtimeYear,1802 +realPart,1803 +realPartOf00,1804 +recDateTime,1805 +recentWeather,1806 +recentWeatherTry,1807 +rectime,1808 +rectimeDay,1809 +rectimeHour,1810 +rectimeMinute,1811 +rectimeSecond,1812 +reducedGrid,1813 +refdate,1814 +reference,1815 +referenceDate,1816 +referenceForGroupLengths,1817 +referenceForGroupWidths,1818 +referenceOfLengths,1819 +referenceOfWidths,1820 +referencePeriodList,1821 +referenceReflectivityForEchoTop,1822 +referenceSampleInterval,1823 +referenceStep,1824 +referenceValue,1825 +referenceValueError,1826 +reflectivityCalibrationConstant,1827 +remarkPresent,1828 +reportType,1829 +representationMode,1830 +representationType,1831 +representativeMember,1832 +reserved,1833 +reserved1,1834 +reserved2,1835 +reserved3,1836 +reservedNeedNotBePresent,1837 +reservedOctet,1838 +reservedSection2,1839 +reservedSection3,1840 +reservedSection4,1841 +resolutionAndComponentFlags,1842 +resolutionAndComponentFlags1,1843 +resolutionAndComponentFlags2,1844 +resolutionAndComponentFlags3,1845 +resolutionAndComponentFlags4,1846 +resolutionAndComponentFlags6,1847 +resolutionAndComponentFlags7,1848 +resolutionAndComponentFlags8,1849 +restricted,1850 +rootGroupObjectHeaderAddress,1851 +rootGroupSymbolTableEntry,1852 +rootTablesDir,1853 +roundedMarsLatitude,1854 +roundedMarsLevelist,1855 +roundedMarsLongitude,1856 +runwayBrakingActionState1,1857 +runwayBrakingActionState2,1858 +runwayBrakingActionState3,1859 +runwayBrakingActionState4,1860 +runwayDepositCodeState1,1861 +runwayDepositCodeState2,1862 +runwayDepositCodeState3,1863 +runwayDepositCodeState4,1864 +runwayDepositState1,1865 +runwayDepositState2,1866 +runwayDepositState3,1867 +runwayDepositState4,1868 +runwayDepthOfDepositCodeState1,1869 +runwayDepthOfDepositCodeState2,1870 +runwayDepthOfDepositCodeState3,1871 +runwayDepthOfDepositCodeState4,1872 +runwayDepthOfDepositState1,1873 +runwayDepthOfDepositState2,1874 +runwayDepthOfDepositState3,1875 +runwayDepthOfDepositState4,1876 +runwayDesignatorRVR1,1877 +runwayDesignatorRVR2,1878 +runwayDesignatorRVR3,1879 +runwayDesignatorRVR4,1880 +runwayDesignatorState1,1881 +runwayDesignatorState2,1882 +runwayDesignatorState3,1883 +runwayDesignatorState4,1884 +runwayExtentOfContaminationCodeState1,1885 +runwayExtentOfContaminationCodeState2,1886 +runwayExtentOfContaminationCodeState3,1887 +runwayExtentOfContaminationCodeState4,1888 +runwayExtentOfContaminationState1,1889 +runwayExtentOfContaminationState2,1890 +runwayExtentOfContaminationState3,1891 +runwayExtentOfContaminationState4,1892 +runwayFrictionCodeValueState1,1893 +runwayFrictionCodeValueState2,1894 +runwayFrictionCodeValueState3,1895 +runwayFrictionCodeValueState4,1896 +runwayFrictionCoefficientCodeState1,1897 +runwayFrictionCoefficientCodeState2,1898 +runwayFrictionCoefficientCodeState3,1899 +runwayFrictionCoefficientCodeState4,1900 +runwayFrictionCoefficientState1,1901 +runwayFrictionCoefficientState2,1902 +runwayFrictionCoefficientState3,1903 +runwayFrictionCoefficientState4,1904 +runwaySideCodeState1,1905 +runwaySideCodeState2,1906 +runwaySideCodeState3,1907 +runwaySideCodeState4,1908 +runwayState,1909 +sampleSizeOfModelClimate,1910 +sampleSizeOfReferencePeriod,1911 +satelliteID,1912 +satelliteIdentifier,1913 +satelliteNumber,1914 +satelliteSeries,1915 +scaleFactorAtReferencePoint,1916 +scaleFactorOfAdditionalParameterForReferencePeriod,1917 +scaleFactorOfCentralWaveNumber,1918 +scaleFactorOfDistanceFromEnsembleMean,1919 +scaleFactorOfDistributionFunctionParameter,1920 +scaleFactorOfEarthMajorAxis,1921 +scaleFactorOfEarthMinorAxis,1922 +scaleFactorOfFirstFixedSurface,1923 +scaleFactorOfFirstSize,1924 +scaleFactorOfFirstWavelength,1925 +scaleFactorOfLengthOfSemiMajorAxis,1926 +scaleFactorOfLengthOfSemiMinorAxis,1927 +scaleFactorOfLowerLimit,1928 +scaleFactorOfLowerWavePeriodLimit,1929 +scaleFactorOfMajorAxisOfOblateSpheroidEarth,1930 +scaleFactorOfMinorAxisOfOblateSpheroidEarth,1931 +scaleFactorOfPrimeMeridianOffset,1932 +scaleFactorOfRadiusOfSphericalEarth,1933 +scaleFactorOfSecondFixedSurface,1934 +scaleFactorOfSecondSize,1935 +scaleFactorOfSecondWavelength,1936 +scaleFactorOfStandardDeviation,1937 +scaleFactorOfStandardDeviationInTheCluster,1938 +scaleFactorOfUpperLimit,1939 +scaleFactorOfUpperWavePeriodLimit,1940 +scaleFactorOfWaveDirectionSequenceParameter,1941 +scaleFactorOfWaveDirections,1942 +scaleFactorOfWaveFrequencies,1943 +scaleFactorOfWaveFrequencySequenceParameter,1944 +scaleValuesBy,1945 +scaledDirections,1946 +scaledFrequencies,1947 +scaledValueOfAdditionalParameterForReferencePeriod,1948 +scaledValueOfCentralWaveNumber,1949 +scaledValueOfDistanceFromEnsembleMean,1950 +scaledValueOfDistributionFunctionParameter,1951 +scaledValueOfEarthMajorAxis,1952 +scaledValueOfEarthMinorAxis,1953 +scaledValueOfFirstFixedSurface,1954 +scaledValueOfFirstSize,1955 +scaledValueOfFirstWavelength,1956 +scaledValueOfLengthOfSemiMajorAxis,1957 +scaledValueOfLengthOfSemiMinorAxis,1958 +scaledValueOfLowerLimit,1959 +scaledValueOfLowerWavePeriodLimit,1960 +scaledValueOfMajorAxisOfOblateSpheroidEarth,1961 +scaledValueOfMinorAxisOfOblateSpheroidEarth,1962 +scaledValueOfPrimeMeridianOffset,1963 +scaledValueOfRadiusOfSphericalEarth,1964 +scaledValueOfSecondFixedSurface,1965 +scaledValueOfSecondSize,1966 +scaledValueOfSecondWavelength,1967 +scaledValueOfStandardDeviation,1968 +scaledValueOfStandardDeviationInTheCluster,1969 +scaledValueOfUpperLimit,1970 +scaledValueOfUpperWavePeriodLimit,1971 +scaledValueOfWaveDirectionSequenceParameter,1972 +scaledValueOfWaveFrequencySequenceParameter,1973 +scaledValuesOfWaveDirections,1974 +scaledValuesOfWaveFrequencies,1975 +scalingFactorForFrequencies,1976 +scanPosition,1977 +scanningMode,1978 +scanningMode4,1979 +scanningMode5,1980 +scanningMode6,1981 +scanningMode7,1982 +scanningMode8,1983 +scanningModeForOneDiamond,1984 +sd,1985 +second,1986 +secondDimension,1987 +secondDimensionCoordinateValueDefinition,1988 +secondDimensionPhysicalSignificance,1989 +secondLatitude,1990 +secondLatitudeInDegrees,1991 +secondOfEndOfOverallTimeInterval,1992 +secondOfForecast,1993 +secondOfForecastUsedInLocalTime,1994 +secondOfModelVersion,1995 +secondOfStartOfReferencePeriod,1996 +secondOrderFlags,1997 +secondOrderOfDifferentWidth,1998 +secondOrderValuesDifferentWidths,1999 +secondSize,2000 +secondaryBitMap,2001 +secondaryBitmap,2002 +secondaryBitmapPresent,2003 +secondaryBitmaps,2004 +secondaryBitmapsCount,2005 +secondaryBitmapsSize,2006 +secondaryMissingValue,2007 +secondaryMissingValueSubstitute,2008 +secondsOfAnalysis,2009 +secondsOfReference,2010 +section,2011 +section0Length,2012 +section0Pointer,2013 +section1,2014 +section10Length,2015 +section10Pointer,2016 +section11Length,2017 +section11Pointer,2018 +section1Flags,2019 +section1Length,2020 +section1Padding,2021 +section1Pointer,2022 +section2Length,2023 +section2Padding,2024 +section2Pointer,2025 +section2Present,2026 +section2Used,2027 +section3Flags,2028 +section3Length,2029 +section3Padding,2030 +section3Pointer,2031 +section3UniqueIdentifier,2032 +section4,2033 +section4Length,2034 +section4Padding,2035 +section4Pointer,2036 +section4UniqueIdentifier,2037 +section5,2038 +section5Length,2039 +section5Pointer,2040 +section5UniqueIdentifier,2041 +section6,2042 +section6Length,2043 +section6Pointer,2044 +section6UniqueIdentifier,2045 +section7,2046 +section7Length,2047 +section7Pointer,2048 +section7UniqueIdentifier,2049 +section8,2050 +section8Length,2051 +section8Pointer,2052 +section8UniqueIdentifier,2053 +section9Length,2054 +section9Pointer,2055 +section9UniqueIdentifier,2056 +sectionLengthLimitForEnsembles,2057 +sectionLengthLimitForProbability,2058 +sectionNumber,2059 +sectionPosition,2060 +section_01,2061 +section_02,2062 +section_03,2063 +section_04,2064 +section_05,2065 +section_06,2066 +section_07,2067 +section_08,2068 +section_09,2069 +section_1,2070 +section_10,2071 +section_11,2072 +section_2,2073 +section_3,2074 +section_4,2075 +section_5,2076 +section_6,2077 +section_7,2078 +section_8,2079 +selectStepTemplateInstant,2080 +selectStepTemplateInterval,2081 +selectedDay,2082 +selectedFcIndex,2083 +selectedHour,2084 +selectedMinute,2085 +selectedMonth,2086 +selectedSecond,2087 +selectedYear,2088 +sensitiveAreaDomain,2089 +sequences,2090 +setBitsPerValue,2091 +setCalendarId,2092 +setDecimalPrecision,2093 +setLocalDefinition,2094 +setToMissingIfOutOfRange,2095 +sfc_levtype,2096 +shapeOfTheEarth,2097 +shapeOfVerificationArea,2098 +shortName,2099 +shortNameECMF,2100 +shortNameLegacyECMF,2101 +short_name,2102 +signature,2103 +significanceOfReferenceDateAndTime,2104 +significanceOfReferenceTime,2105 +simpleThinningMissingRadius,2106 +simpleThinningSkip,2107 +simpleThinningStart,2108 +siteElevation,2109 +siteId,2110 +siteLatitude,2111 +siteLongitude,2112 +sizeOfLength,2113 +sizeOfOffsets,2114 +sizeOfPostAuxiliaryArray,2115 +sizeOfPostAuxiliaryArrayPlusOne,2116 +skew,2117 +skewness,2118 +skipExtraKeyAttributes,2119 +sort,2120 +sourceOfGridDefinition,2121 +sourceSinkChemicalPhysicalProcess,2122 +southEastLatitudeOfLPOArea,2123 +southEastLatitudeOfVerficationArea,2124 +southEastLongitudeOfLPOArea,2125 +southEastLongitudeOfVerficationArea,2126 +southLatitudeOfCluster,2127 +southLatitudeOfDomainOfTubing,2128 +southPoleOnProjectionPlane,2129 +southernLatitudeOfClusterDomain,2130 +southernLatitudeOfDomain,2131 +sp1,2132 +sp2,2133 +sp3,2134 +spaceUnitFlag,2135 +spacingOfBinsAlongRadials,2136 +spare,2137 +spare1,2138 +spare2,2139 +spare3,2140 +spare4,2141 +spatialProcessing,2142 +spatialSmoothingOfProduct,2143 +spectralDataRepresentationMode,2144 +spectralDataRepresentationType,2145 +spectralMode,2146 +spectralType,2147 +sphericalHarmonics,2148 +standardDeviation,2149 +standardParallel,2150 +standardParallelInDegrees,2151 +standardParallelInMicrodegrees,2152 +startDateOfReferencePeriod,2153 +startOfHeaders,2154 +startOfMessage,2155 +startOfRange,2156 +startStep,2157 +startStepInHours,2158 +startTimeStep,2159 +startingAzimuth,2160 +statisticalProcess,2161 +statisticalProcessesList,2162 +statistics,2163 +status,2164 +step,2165 +stepForClustering,2166 +stepHumanReadable,2167 +stepInHours,2168 +stepRange,2169 +stepRangeInHours,2170 +stepType,2171 +stepTypeForConversion,2172 +stepTypeInternal,2173 +stepUnits,2174 +stepZero,2175 +stream,2176 +streamOfAnalysis,2177 +stretchingFactor,2178 +stretchingFactorScaled,2179 +stringValues,2180 +subCentre,2181 +subDefinitions1,2182 +subDefinitions2,2183 +subLocalDefinition1,2184 +subLocalDefinition2,2185 +subLocalDefinitionLength1,2186 +subLocalDefinitionLength2,2187 +subLocalDefinitionNumber1,2188 +subLocalDefinitionNumber2,2189 +subSetJ,2190 +subSetK,2191 +subSetM,2192 +subcentreOfAnalysis,2193 +subdivisionsOfBasicAngle,2194 +suiteName,2195 +superblockExtensionAddress,2196 +swapScanningAlternativeRows,2197 +swapScanningLat,2198 +swapScanningLon,2199 +swapScanningX,2200 +swapScanningY,2201 +system,2202 +systemNumber,2203 +t,2204 +table2Version,2205 +tableCode,2206 +tableNumber,2207 +tableReference,2208 +tablesLocalDir,2209 +tablesMasterDir,2210 +tablesVersion,2211 +tablesVersionLatest,2212 +tablesVersionLatestOfficial,2213 +targetCompressionRatio,2214 +td,2215 +tempPressureUnits,2216 +temperature,2217 +temperatureAndDewpointPresent,2218 +templatesLocalDir,2219 +templatesMasterDir,2220 +theHindcastMarsStream,2221 +theMessage,2222 +thisExperimentVersionNumber,2223 +thisMarsClass,2224 +thisMarsStream,2225 +thisMarsType,2226 +thousand,2227 +three,2228 +threshold,2229 +thresholdIndicator,2230 +tiggeCentre,2231 +tiggeLAMName,2232 +tiggeLocalVersion,2233 +tiggeModel,2234 +tiggeSection,2235 +tiggeSuiteID,2236 +tigge_name,2237 +tigge_short_name,2238 +tileClassification,2239 +tileIndex,2240 +time,2241 +timeCoordinateDefinition,2242 +timeDomainTemplate,2243 +timeDomainTemplateNumber,2244 +timeIncrement,2245 +timeIncrementBetweenSuccessiveFields,2246 +timeOfAnalysis,2247 +timeOfForecast,2248 +timeOfForecastUsedInLocalTime,2249 +timeOfModelVersion,2250 +timeOfReference,2251 +timeRangeIndicator,2252 +timeRangeIndicatorFromStepRange,2253 +timeUnitFlag,2254 +timerepres,2255 +topLevel,2256 +total,2257 +totalAerosolBinsNumbers,2258 +totalInitialConditions,2259 +totalLength,2260 +totalNumber,2261 +totalNumberOfClusters,2262 +totalNumberOfDataValuesMissingInStatisticalProcess,2263 +totalNumberOfDirections,2264 +totalNumberOfForecastProbabilities,2265 +totalNumberOfFrequencies,2266 +totalNumberOfGridPoints,2267 +totalNumberOfIterations,2268 +totalNumberOfQuantiles,2269 +totalNumberOfRepetitions,2270 +totalNumberOfTileAttributePairs,2271 +totalNumberOfTubes,2272 +totalNumberOfValuesInUnpackedSubset,2273 +totalNumberOfWaveDirections,2274 +totalNumberOfWaveFrequencies,2275 +totalNumberOfdimensions,2276 +treatmentOfMissingData,2277 +true,2278 +trueLengthOfLastGroup,2279 +truncateDegrees,2280 +truncateLaplacian,2281 +tsectionNumber3,2282 +tsectionNumber4,2283 +tsectionNumber5,2284 +tubeDomain,2285 +tubeNumber,2286 +two,2287 +twoOrdersOfSPD,2288 +type,2289 +typeOfAnalysis,2290 +typeOfAuxiliaryInformation,2291 +typeOfCalendar,2292 +typeOfCompressionUsed,2293 +typeOfDistributionFunction,2294 +typeOfEnsembleForecast,2295 +typeOfEnsembleMember,2296 +typeOfFirstFixedSurface,2297 +typeOfGeneratingProcess,2298 +typeOfGrid,2299 +typeOfHorizontalLine,2300 +typeOfIntervalForFirstAndSecondSize,2301 +typeOfIntervalForFirstAndSecondWavelength,2302 +typeOfLevel,2303 +typeOfLevelECMF,2304 +typeOfOriginalFieldValues,2305 +typeOfPacking,2306 +typeOfPostProcessing,2307 +typeOfPreProcessing,2308 +typeOfProcessedData,2309 +typeOfReferenceDataset,2310 +typeOfRelationToReferenceDataset,2311 +typeOfSSTFieldUsed,2312 +typeOfSecondFixedSurface,2313 +typeOfSizeInterval,2314 +typeOfStatisticalPostProcessingOfEnsembleMembers,2315 +typeOfStatisticalProcessing,2316 +typeOfStatisticalProcessingForTimeRangeForReferencePeriod,2317 +typeOfTimeIncrement,2318 +typeOfTimeIncrementBetweenSuccessiveFieldsUsedInTheStatisticalProcessing,2319 +typeOfWaveDirectionSequence,2320 +typeOfWaveFrequencySequence,2321 +typeOfWavePeriodInterval,2322 +typeOfWavelengthInterval,2323 +typicalCentury,2324 +typicalDate,2325 +typicalDateTime,2326 +typicalDay,2327 +typicalHour,2328 +typicalMinute,2329 +typicalMonth,2330 +typicalSecond,2331 +typicalTime,2332 +typicalYear,2333 +typicalYear2,2334 +typicalYearOfCentury,2335 +uco,2336 +ucs,2337 +uerraLocalVersion,2338 +uerraSection,2339 +unexpandedDescriptors,2340 +unexpandedDescriptorsEncoded,2341 +unitOfOffsetFromReferenceTime,2342 +unitOfTime,2343 +unitOfTimeIncrement,2344 +unitOfTimeRange,2345 +units,2346 +unitsBias,2347 +unitsConversionOffset,2348 +unitsConversionScaleFactor,2349 +unitsDecimalScaleFactor,2350 +unitsECMF,2351 +unitsFactor,2352 +unitsLegacyECMF,2353 +unitsOfFirstFixedSurface,2354 +unitsOfSecondFixedSurface,2355 +unknown,2356 +unpack,2357 +unpackedError,2358 +unpackedSubsetPrecision,2359 +unpackedValues,2360 +unsignedIntegers,2361 +unstructuredGrid,2362 +unstructuredGridSubtype,2363 +unstructuredGridType,2364 +unstructuredGridUUID,2365 +unusedBitsInBitmap,2366 +updateSequenceNumber,2367 +upperLimit,2368 +upperRange,2369 +upperThreshold,2370 +upperThresholdValue,2371 +userDateEnd,2372 +userDateStart,2373 +userDateTimeEnd,2374 +userDateTimeStart,2375 +userTimeEnd,2376 +userTimeStart,2377 +uuidOfHGrid,2378 +uuidOfVGrid,2379 +uvRelativeToGrid,2380 +validityDate,2381 +validityTime,2382 +values,2383 +variationOfVisibility,2384 +variationOfVisibilityDirection,2385 +variationOfVisibilityDirectionAngle,2386 +variationOfVisibilityDirectionTrend1,2387 +variationOfVisibilityDirectionTrend2,2388 +variationOfVisibilityDirectionTrend3,2389 +variationOfVisibilityDirectionTrend4,2390 +variationOfVisibilityTrend1,2391 +variationOfVisibilityTrend2,2392 +variationOfVisibilityTrend3,2393 +variationOfVisibilityTrend4,2394 +varno,2395 +verificationDate,2396 +verificationMonth,2397 +verificationYear,2398 +verifyingMonth,2399 +version,2400 +versionNumOfFilesFreeSpaceStorage,2401 +versionNumOfRootGroupSymbolTableEntry,2402 +versionNumOfSharedHeaderMessageFormat,2403 +versionNumberOfExperimentalSuite,2404 +versionNumberOfGribLocalTables,2405 +versionNumberOfSuperblock,2406 +versionOfModelClimate,2407 +verticalCoordinate,2408 +verticalCoordinateDefinition,2409 +verticalDomainTemplate,2410 +verticalDomainTemplateNumber,2411 +verticalVisibility,2412 +verticalVisibilityCoded,2413 +visibility,2414 +visibilityInKilometresTrend1,2415 +visibilityInKilometresTrend2,2416 +visibilityInKilometresTrend3,2417 +visibilityInKilometresTrend4,2418 +visibilityTrend1,2419 +visibilityTrend2,2420 +visibilityTrend3,2421 +visibilityTrend4,2422 +waveDirectionNumber,2423 +waveDomain,2424 +waveFrequencyNumber,2425 +waveLevType,2426 +weightAppliedToClimateMonth1,2427 +westLongitudeOfCluster,2428 +westLongitudeOfDomainOfTubing,2429 +westernLongitudeOfClusterDomain,2430 +westernLongitudeOfDomain,2431 +widthOfFirstOrderValues,2432 +widthOfLengths,2433 +widthOfSPD,2434 +widthOfWidths,2435 +windDirection,2436 +windDirectionTrend1,2437 +windDirectionTrend2,2438 +windDirectionTrend3,2439 +windDirectionTrend4,2440 +windGust,2441 +windGustTrend1,2442 +windGustTrend2,2443 +windGustTrend3,2444 +windGustTrend4,2445 +windPresent,2446 +windSpeed,2447 +windSpeedTrend1,2448 +windSpeedTrend2,2449 +windSpeedTrend3,2450 +windSpeedTrend4,2451 +windUnits,2452 +windUnitsTrend1,2453 +windUnitsTrend2,2454 +windUnitsTrend3,2455 +windUnitsTrend4,2456 +windVariableDirection,2457 +windVariableDirectionTrend1,2458 +windVariableDirectionTrend2,2459 +windVariableDirectionTrend3,2460 +windVariableDirectionTrend4,2461 +wrongPadding,2462 +xCoordinateOfOriginOfSectorImage,2463 +xCoordinateOfSubSatellitePoint,2464 +xDirectionGridLength,2465 +xDirectionGridLengthInMetres,2466 +xDirectionGridLengthInMillimetres,2467 +xFirst,2468 +xLast,2469 +yCoordinateOfOriginOfSectorImage,2470 +yCoordinateOfSubSatellitePoint,2471 +yDirectionGridLength,2472 +yDirectionGridLengthInMetres,2473 +yDirectionGridLengthInMillimetres,2474 +yFirst,2475 +yLast,2476 +year,2477 +yearOfAnalysis,2478 +yearOfCentury,2479 +yearOfEndOfOverallTimeInterval,2480 +yearOfForecast,2481 +yearOfForecastUsedInLocalTime,2482 +yearOfModelVersion,2483 +yearOfReference,2484 +yearOfStartOfReferencePeriod,2485 +zero,2486 +zeros,2487 From ed45083cfb53375ba09d98011f189a533f1e7165 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 12 May 2023 16:46:46 +0100 Subject: [PATCH 159/378] Testing: encoding spectral values --- definitions/add_params_from_tsv.pl | 439 ----------------------------- tests/grib_sh_spectral_complex.cc | 9 +- 2 files changed, 5 insertions(+), 443 deletions(-) delete mode 100755 definitions/add_params_from_tsv.pl diff --git a/definitions/add_params_from_tsv.pl b/definitions/add_params_from_tsv.pl deleted file mode 100755 index 6aa471bd4..000000000 --- a/definitions/add_params_from_tsv.pl +++ /dev/null @@ -1,439 +0,0 @@ -#!/usr/bin/env perl -# -# (C) Copyright 2005- ECMWF. -# -# This software is licensed under the terms of the Apache Licence Version 2.0 -# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -# -# In applying this licence, ECMWF does not waive the privileges and immunities -# granted to it by virtue of its status as an intergovernmental organisation -# nor does it submit to any jurisdiction. -# -####################################################################### -# Script for GRIB2 parameter definitions -# Can either write the *.def files or push to the Parameter DB -# -# Reads an input TSV (tab-separated-value) file which should contain -# parameter keys as columns. See the @columns variable for expected contents -# -####################################################################### -$|=1; -use strict; -use warnings; -use DBI; -use Time::localtime; -use Getopt::Long; - -my $SANITY_CHECK = 0; -my $WRITE_TO_FILES = 0; -my $WRITE_TO_PARAMDB = 0; # Be careful. Fill in $contactId before proceeding -my $contactId; # JIRA issue ID - -# Process arguments. Must be at least one file -if (scalar @ARGV < 1) { - &usage; -} -my $result = GetOptions ( - "s" => \$SANITY_CHECK, - "f" => \$WRITE_TO_FILES, - "p" => \$WRITE_TO_PARAMDB, - "c:s" => \$contactId - ); - -$ARGV[0] or &usage; - - -my ($paramId, $shortName, $name, $units, $cfVarName, $interpol); -my ($discipline, $pcategory, $pnumber, $type1, $type2, $scaledValue1, $scaleFactor1, $scaledValue2, $scaleFactor2); -my ($stat, $aero, $constit); -my ($typeGen, $localTV, $typeOfWLInt, $scaleFactorWL1, $scaledValueWL1, $scaleFactorWL2, $scaledValueWL2, $sourceSink); - -my @columns = ("paramId", "shortName", "name", "units", "interpolation", - "discipline", "parameterCategory", "parameterNumber", - "typeOfFirstFixedSurface", "scaleFactorOfFirstFixedSurface", "scaledValueOfFirstFixedSurface", - "typeOfSecondFixedSurface", "scaleFactorOfSecondFixedSurface", "scaledValueOfSecondFixedSurface", - "typeOfStatisticalProcessing", "aerosolType", "constituentType", "typeOfGeneratingProcess", "localTablesVersion", - "typeOfWavelengthInterval", "scaleFactorOfFirstWavelength", "scaledValueOfFirstWavelength", - "scaleFactorOfSecondWavelength", "scaledValueOfSecondWavelength", "sourceSinkChemicalPhysicalProcess"); - -my %key_to_attrib_map = ( - 'discipline' => 4, - 'parameterCategory' => 8, - 'parameterNumber' => 5, - 'localTablesVersion' => 16, - 'typeOfFirstFixedSurface' => 6, - 'scaleFactorOfFirstFixedSurface' => 7, - 'scaledValueOfFirstFixedSurface' => 9, - 'typeOfStatisticalProcessing' => 11, - 'typeOfSecondFixedSurface' => 13, - 'scaledValueOfSecondFixedSurface' => 14, - 'scaleFactorOfSecondFixedSurface' => 15, - 'typeOfGeneratingProcess' => 28, - 'constituentType' => 40, - 'aerosolType' => 46 -); -my $db = "param"; -my $host = $ENV{'PARAM_DB_HOST'} || 'unknown'; -my $user = $ENV{'PARAM_DB_USER'} || 'unknown'; -my $pass = $ENV{'PARAM_DB_PASS'} || 'unknown'; -my $dbh = 0; -my $centre_wmo = -3; # WMO centre ID -my $centre_ecmwf = 98; # ECMWF centre ID -my $edition = 2; # GRIB edition 2 - -my $PARAMID_FILENAME = "paramId.def"; -my $SHORTNAME_FILENAME = "shortName.def"; -my $NAME_FILENAME = "name.def"; -my $UNITS_FILENAME = "units.def"; -my $CFVARNAME_FILENAME = "cfVarName.def"; - -my $tm = localtime; -my $today_date = sprintf("%04d-%02d-%02d", $tm->year+1900, ($tm->mon)+1, $tm->mday); - -if ($WRITE_TO_PARAMDB || $SANITY_CHECK) { - print "Connecting to database ...\n"; - $dbh = DBI->connect("dbi:mysql(RaiseError=>1):database=$db;host=$host",$user,$pass) or die $DBI::errstr; - # STRICT_TRANS_TABLES: - # Strict mode controls how MySQL handles invalid or missing values in data-change statements such as INSERT or UPDATE. - # A value can be invalid for several reasons e.g., it might have the wrong data type for the column, or it might be out of range. - $dbh->do( q{SET sql_mode = 'STRICT_TRANS_TABLES'} ); -} - -my $first = 1; -my $lcount = 0; - -if ($SANITY_CHECK) { - my %map_sn = (); # map of shortNames - my %map_pid = (); # map of paramIds - my $sanity_error_count = 0; - print "Checking sanity: uniqueness of paramId and shortName keys ...\n"; - while (<>) { - chomp; - $lcount++; - s/\r//g; # Remove DOS carriage returns - if ($first == 1) { - $first = 0; - next; - } - - ($paramId, $shortName, $name, $units) = split(/\t/); - - die "Error: shortName=$shortName is duplicated (line $lcount)\n" if (exists $map_sn{$shortName}); - $map_sn{$shortName}++; # increment count in shortName map - - die "Error: paramId=$paramId is duplicated (line $lcount)\n" if (exists $map_pid{$paramId}); - $map_pid{$paramId}++; # increment count in paramId map - - if (!is_integer($paramId)) { - warn "Error: paramId=$paramId is not an integer (line $lcount)\n"; - $sanity_error_count++; - } - - my $x = $dbh->selectrow_array("select * from param.param where id = ?",undef,$paramId); - if (defined $x) { - warn "Error: paramId=$x exists in the database (line $lcount)\n"; - $sanity_error_count++; - } - - if ($name =~ / $/) { - warn "Error: Name '$name': ends in space" ; - $sanity_error_count++; - } - if ($name =~ /^ /) { - warn "Error: Name '$name': starts with space" ; - $sanity_error_count++; - } - if ($name !~ /^[A-Z0-9]/) { - warn "Error: name \"$name\" should have uppercase 1st letter or digit (line $lcount)\n"; - $sanity_error_count++; - } - - $x = $dbh->selectrow_array("select shortName from param.param where shortName = ?",undef,$shortName); - if (defined $x) { - warn "Error: shortName=$x exists in the database (line $lcount)\n"; - $sanity_error_count++; - } - - if (!check_units($units)) { - warn "Error: Database does not contain units=$units (line $lcount)\n"; - $sanity_error_count++; - } - } - if ($sanity_error_count == 0) { - print "\nSanity checking completed. $lcount rows checked. No errors.\n"; - } else { - die "\nSanity checking FAILED. $lcount rows checked. $sanity_error_count error(s).\n"; - } - exit 0; -} - -if ($WRITE_TO_FILES) { - create_or_append(\*OUT_PARAMID, "$PARAMID_FILENAME"); - create_or_append(\*OUT_SHORTNAME, "$SHORTNAME_FILENAME"); - create_or_append(\*OUT_NAME, "$NAME_FILENAME"); - create_or_append(\*OUT_UNITS, "$UNITS_FILENAME"); - create_or_append(\*OUT_CFVARNAME, "$CFVARNAME_FILENAME"); -} - - -while (<>) { - chomp; - s/\r//g; # Remove DOS carriage returns - if ($first == 1) { - check_first_row_column_names($_); - $first = 0; - next; - } - $lcount++; - - ($paramId, $shortName, $name, $units, $interpol, - $discipline, $pcategory, $pnumber, - $type1, $scaleFactor1, $scaledValue1, $type2, $scaleFactor2, $scaledValue2, - $stat, $aero, $constit, - $typeGen, $localTV, $typeOfWLInt, $scaleFactorWL1, $scaledValueWL1, $scaleFactorWL2, $scaledValueWL2, $sourceSink - ) = split(/\t/); - - die "Error: paramID \"$paramId\" is not an integer (input row=$lcount)!\n" if (!is_integer($paramId)); - die "Error: shortName \"$shortName\" has an invalid character (input row=$lcount)!\n" if ($shortName =~ /[ '"]/); - die "Error: name \"$name\" should have uppercase 1st letter or digit (input row=$lcount)!\n" if ($name !~ /^[A-Z0-9]/); - die "Error: typeOfFirstFixedSurface \"$type1\" is not an integer (input row=$lcount)!\tPick a value from Code Table 4.5\n" - if ($type1 ne "" && !is_integer($type1)); - die "Error: typeOfSecondFixedSurface \"$type2\" is not an integer (input row=$lcount)!\tPick a value from Code Table 4.5\n" - if ($type2 ne "" && !is_integer($type2)); - - $units = "~" if ($units eq ""); - $cfVarName = $shortName; - $cfVarName = '\\'.$shortName if ($shortName =~ /^[0-9]/); - $scaleFactorWL1 = undef if ($scaleFactorWL1 =~ /missing/); - $scaledValueWL1 = undef if ($scaledValueWL1 =~ /missing/); - $scaleFactorWL2 = undef if ($scaleFactorWL2 =~ /missing/); - $scaledValueWL2 = undef if ($scaledValueWL2 =~ /missing/); - - $scaledValue1 = undef if ($scaledValue1 =~ /missing/); - $scaleFactor1 = undef if ($scaleFactor1 =~ /missing/); - $scaledValue2 = undef if ($scaledValue2 =~ /missing/); - $scaleFactor2 = undef if ($scaleFactor2 =~ /missing/); - - if ($WRITE_TO_FILES) { - write_out_file(\*OUT_PARAMID, $name, $paramId); - write_out_file(\*OUT_SHORTNAME, $name, $shortName); - write_out_file(\*OUT_NAME, $name, $name); - write_out_file(\*OUT_UNITS, $name, $units); - write_out_file(\*OUT_CFVARNAME, $name, $cfVarName); - } - - if ($WRITE_TO_PARAMDB) { - my $units_code = get_db_units_code($units); - my $is_chem = ""; - my $is_aero = ""; - my $is_srcsink = ""; - if ($aero ne "") { - $is_aero = "1"; - $is_chem = ""; - $is_srcsink = ""; - } - if ($constit ne "") { - $is_aero = ""; - $is_chem = "1"; - $is_srcsink = ""; - } - if ($sourceSink ne "") { - $is_aero = ""; - $is_chem = ""; - $is_srcsink = "1"; - } - my $centre = $localTV ne "" ? $centre_ecmwf : $centre_wmo; - - die "Error: Both aerosolType and constituentType cannot be set!" if ($constit ne "" && $aero ne ""); - die "Error: No contact ID provided\n" if (!$contactId); - print "Inserting paramId $paramId (centre=" . centre_as_str($centre) . ") ...\n"; - $dbh->do("insert into param(id,shortName,name,units_id,insert_date,update_date,contact) values (?,?,?,?,?,?,?)",undef, - $paramId, $shortName, $name , $units_code, $today_date, $today_date, $contactId) or die $dbh->errstr; - - # Check what we inserted did actually go in - my $x = $dbh->selectrow_array("select shortName from param.param where shortName = ?",undef,$shortName); - die "Insertion of $paramId did not work - problem with shortName $shortName\n" if (! defined $x); - - # Table 'grib' columns: param_id edition centre attribute_id attribute_value param_version - $dbh->do("insert into grib values (?,?,?,?,?,?)",undef, $paramId,$edition,$centre,4, $discipline,0); - $dbh->do("insert into grib values (?,?,?,?,?,?)",undef, $paramId,$edition,$centre,8, $pcategory,0); - $dbh->do("insert into grib values (?,?,?,?,?,?)",undef, $paramId,$edition,$centre,5, $pnumber,0); - $dbh->do("insert into grib values (?,?,?,?,?,?)",undef, $paramId,$edition,$centre,6, $type1,0) if ($type1 ne ""); - $dbh->do("insert into grib values (?,?,?,?,?,?)",undef, $paramId,$edition,$centre,13,$type2,0) if ($type2 ne ""); - - # Either missing or has a value - if (! defined $scaledValue1 || $scaledValue1 ne "") { - $dbh->do("insert into grib values (?,?,?,?,?,?)",undef, $paramId,$edition,$centre,9, $scaledValue1,0); - } - if (! defined $scaleFactor1 || $scaleFactor1 ne "") { - $dbh->do("insert into grib values (?,?,?,?,?,?)",undef, $paramId,$edition,$centre,7, $scaleFactor1,0); - } - if (! defined $scaledValue2 || $scaledValue2 ne "") { - $dbh->do("insert into grib values (?,?,?,?,?,?)",undef, $paramId,$edition,$centre,14,$scaledValue2,0); - } - if (! defined $scaleFactor2 || $scaleFactor2 ne "") { - $dbh->do("insert into grib values (?,?,?,?,?,?)",undef, $paramId,$edition,$centre,15,$scaleFactor2,0); - } - $dbh->do("insert into grib values (?,?,?,?,?,?)",undef, $paramId,$edition,$centre,11,$stat,0) if ($stat ne ""); - - $dbh->do("insert into grib values (?,?,?,?,?,?)",undef, $paramId,$edition,$centre,46,$aero,0) if ($aero ne ""); - $dbh->do("insert into grib values (?,?,?,?,?,?)",undef, $paramId,$edition,$centre,40,$constit,0) if ($constit ne ""); - - $dbh->do("insert into grib values (?,?,?,?,?,?)",undef, $paramId,$edition,$centre,53,$is_chem,0) if ($is_chem ne ""); - $dbh->do("insert into grib values (?,?,?,?,?,?)",undef, $paramId,$edition,$centre,54,$is_aero,0) if ($is_aero ne ""); - $dbh->do("insert into grib values (?,?,?,?,?,?)",undef, $paramId,$edition,$centre,28,$typeGen,0) if ($typeGen ne ""); - - $dbh->do("insert into grib values (?,?,?,?,?,?)",undef, $paramId,$edition,$centre,16,$localTV,0) if ($localTV ne ""); - $dbh->do("insert into grib values (?,?,?,?,?,?)",undef, $paramId,$edition,$centre,57,$typeOfWLInt,0) if ($typeOfWLInt ne ""); - - if (! defined $scaleFactorWL1 || $scaleFactorWL1 ne "") { - $dbh->do("insert into grib values (?,?,?,?,?,?)",undef, $paramId,$edition,$centre,58,$scaleFactorWL1,0); - } - if (! defined $scaledValueWL1 || $scaledValueWL1 ne "") { - $dbh->do("insert into grib values (?,?,?,?,?,?)",undef, $paramId,$edition,$centre,59,$scaledValueWL1,0); - } - if (! defined $scaleFactorWL2 ||$scaleFactorWL2 ne "") { - $dbh->do("insert into grib values (?,?,?,?,?,?)",undef, $paramId,$edition,$centre,60,$scaleFactorWL2,0); - } - if (! defined $scaledValueWL2 || $scaledValueWL2 ne "") { - $dbh->do("insert into grib values (?,?,?,?,?,?)",undef, $paramId,$edition,$centre,61,$scaledValueWL2,0); - } - $dbh->do("insert into grib values (?,?,?,?,?,?)",undef, $paramId,$edition,$centre,64,$sourceSink,0) if ($is_srcsink ne ""); - $dbh->do("insert into grib values (?,?,?,?,?,?)",undef, $paramId,$edition,$centre,65,1,0) if ($is_srcsink eq "1"); - - # format is only GRIB2 hence grib1 entry=0 and grib2=1 - $dbh->do("insert into param_format(param_id,grib1,grib2) values (?,?,?)",undef,$paramId,0,1); - } -} # for each input line - -if ($WRITE_TO_FILES) { - print "Wrote output files: $PARAMID_FILENAME $SHORTNAME_FILENAME $NAME_FILENAME $UNITS_FILENAME $CFVARNAME_FILENAME\n"; - close(OUT_PARAMID) or die "$PARAMID_FILENAME: $!"; - close(OUT_SHORTNAME) or die "$SHORTNAME_FILENAME: $!"; - close(OUT_NAME) or die "$NAME_FILENAME: $!"; - close(OUT_UNITS) or die "$UNITS_FILENAME: $!"; - close(OUT_CFVARNAME) or die "$CFVARNAME_FILENAME: $!"; -} -if ($WRITE_TO_PARAMDB) { - print "Wrote to Parameter Database. Number of rows processed = $lcount\n"; -} - -# ------------------------------------------------------------------- -sub centre_as_str { - my $cc = shift; - return "WMO" if ($cc eq $centre_wmo); - return "ECMWF" if ($cc eq $centre_ecmwf); - return "Unknown"; -} -sub check_units { - my $u = shift; - my $unit_id = $dbh->selectrow_array("select id from units where name = ?",undef,$u); - return 0 if (!$unit_id); - return 1; -} - -sub get_db_units_code { - my $u = shift; - my $unit_id = $dbh->selectrow_array("select id from units where name = ?",undef,$u); - die "Error: Unit not found: '$u'\n" if (!$unit_id); - return $unit_id; -} - -sub write_out_file { - my $outfile = $_[0]; - my $name = $_[1]; - my $key = $_[2]; - - # Assuming every parameter definition has at least discipline, category and number - print $outfile "#$name\n"; - print $outfile "'$key' = {\n"; - print $outfile " discipline = $discipline ;\n"; - print $outfile " parameterCategory = $pcategory ;\n"; - print $outfile " parameterNumber = $pnumber ;\n"; - - # Optional keys - print $outfile " typeOfFirstFixedSurface = $type1 ;\n" if ($type1 ne ""); - print $outfile " typeOfSecondFixedSurface = $type2 ;\n" if ($type2 ne ""); - - $scaledValue1 = "missing()" if (! defined $scaledValue1); - $scaledValue2 = "missing()" if (! defined $scaledValue2); - $scaleFactor1 = "missing()" if (! defined $scaleFactor1); - $scaleFactor2 = "missing()" if (! defined $scaleFactor2); - - print $outfile " scaledValueOfFirstFixedSurface = $scaledValue1 ;\n" if ($scaledValue1 ne ""); - print $outfile " scaleFactorOfFirstFixedSurface = $scaleFactor1 ;\n" if ($scaleFactor1 ne ""); - print $outfile " scaledValueOfSecondFixedSurface = $scaledValue2 ;\n" if ($scaledValue2 ne ""); - print $outfile " scaleFactorOfSecondFixedSurface = $scaleFactor2 ;\n" if ($scaleFactor2 ne ""); - print $outfile " typeOfStatisticalProcessing = $stat ;\n" if ($stat ne ""); - - print $outfile " aerosolType = $aero ;\n" if ($aero ne ""); - print $outfile " constituentType = $constit ;\n" if ($constit ne ""); - if ($sourceSink eq "") { - print $outfile " is_aerosol = 1 ;\n" if ($aero ne ""); - print $outfile " is_chemical = 1 ;\n" if ($constit ne ""); - } else { - print $outfile " is_chemical_srcsink = 1 ;\n"; - print $outfile " sourceSinkChemicalPhysicalProcess = $sourceSink ;\n"; - } - print $outfile " typeOfGeneratingProcess = $typeGen ;\n" if ($typeGen ne ""); - print $outfile " localTablesVersion = $localTV ;\n" if ($localTV ne ""); - - print $outfile " typeOfWavelengthInterval = $typeOfWLInt ;\n" if ($typeOfWLInt ne ""); - print $outfile " scaleFactorOfFirstWavelength = $scaleFactorWL1 ;\n" if ($scaleFactorWL1 ne ""); - print $outfile " scaledValueOfFirstWavelength = $scaledValueWL1 ;\n" if ($scaledValueWL1 ne ""); - print $outfile " scaleFactorOfSecondWavelength = $scaleFactorWL2 ;\n" if ($scaleFactorWL2 ne ""); - print $outfile " scaledValueOfSecondWavelength = $scaledValueWL2 ;\n" if ($scaledValueWL2 ne ""); - - print $outfile "}\n"; -} - -sub check_first_row_column_names { - my $line = shift; # This is the first row - my @keys = split(/\t/, $line); - my $c = 0; - my $numkeys = scalar @keys; - my $numcols = scalar @columns; - die "Error: 1st row column titles wrong: Expected $numcols columns, got $numkeys.\nColumns should be:\n@columns\n" - if ($numkeys != $numcols); - for ( my $i = 0; $i < $numkeys; $i++ ) { - if ( $keys[$i] ne $columns[$i] ) { - die "Error: 1st row column titles wrong: check column ", $i+1, ". Expected '$columns[$i]', got '$keys[$i]'.\n"; - } - } - #if (@keys ~~ @columns) { - # print "[@keys] and [@columns] match\n"; - #} else { - # die "Error: must use these columns: @columns\n"; - #} -} - -sub create_or_append { - my $outfile = $_[0]; - my $fname = $_[1]; - - if (-f "$fname") { - open($outfile, ">>$fname") or die "Error: $fname: $!"; - } else { - open($outfile, ">$fname") or die "Error: $fname: $!"; - } -} - -sub is_integer { - my $val = shift; - return ($val =~ /^\d+$/); -} - -sub usage { - print < 1e-5) { - fprintf(stderr, "Unpacked value different: i=%d values[i]=%g zval[i]=%g\n", i, values[i], zval[i]); + if (diff > TOLERANCE) { + fprintf(stderr, "Unpacked value different: i=%d values[i]=%.10g zval[i]=%.10g (diff=%.10g)\n", i, values[i], zval[i], diff); return 1; } } @@ -84,8 +85,8 @@ int main(int argc, char* argv[]) GRIB_CHECK(grib_get_double_array(h, "values", zval, &len), 0); for (i = 0; i < ILCHAM; ++i) { const double diff = fabs(zval[i] - values[i]); - if (diff > 1e-5) { - fprintf(stderr, "Unpacked value different: i=%d values[i]=%g zval[i]=%g\n", i, values[i], zval[i]); + if (diff > TOLERANCE) { + fprintf(stderr, "Unpacked value different: i=%d values[i]=%.10g zval[i]=%.10g (diff=%.10g)\n", i, values[i], zval[i], diff); return 1; } } From c0522795ca96392b7fe6be7966f468e17c5ba5bf Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 15 May 2023 12:18:59 +0000 Subject: [PATCH 160/378] ECC-1589: GRIB2: Change unit of 152; logarithm of surface pressure parameter --- definitions/grib1/localConcepts/ecmf/units.def | 4 ++-- definitions/grib2/localConcepts/ecmf/units.def | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/definitions/grib1/localConcepts/ecmf/units.def b/definitions/grib1/localConcepts/ecmf/units.def index f6ea925d0..eef5268c8 100644 --- a/definitions/grib1/localConcepts/ecmf/units.def +++ b/definitions/grib1/localConcepts/ecmf/units.def @@ -1090,12 +1090,12 @@ indicatorOfParameter = 151 ; } #Logarithm of surface pressure -'~' = { +'Numeric' = { table2Version = 128 ; indicatorOfParameter = 152 ; } #Logarithm of surface pressure -'~' = { +'Numeric' = { table2Version = 160 ; indicatorOfParameter = 152 ; } diff --git a/definitions/grib2/localConcepts/ecmf/units.def b/definitions/grib2/localConcepts/ecmf/units.def index 9b6427360..23ca34d67 100644 --- a/definitions/grib2/localConcepts/ecmf/units.def +++ b/definitions/grib2/localConcepts/ecmf/units.def @@ -692,7 +692,7 @@ parameterNumber = 150 ; } #Logarithm of surface pressure -'~' = { +'Numeric' = { discipline = 0 ; parameterCategory = 3 ; parameterNumber = 25 ; From 4fdab7df582d0ed92a060045f79cbd7c6d63a6e6 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 15 May 2023 12:47:26 +0000 Subject: [PATCH 161/378] ECC-1588: GRIB2: Modification of albedo parameters (part 1) --- definitions/grib2/localConcepts/ecmf/cfVarName.legacy.def | 6 ++++++ definitions/grib2/localConcepts/ecmf/name.legacy.def | 6 ++++++ definitions/grib2/localConcepts/ecmf/paramId.legacy.def | 6 ++++++ definitions/grib2/localConcepts/ecmf/shortName.legacy.def | 6 ++++++ definitions/grib2/localConcepts/ecmf/units.legacy.def | 6 ++++++ 5 files changed, 30 insertions(+) diff --git a/definitions/grib2/localConcepts/ecmf/cfVarName.legacy.def b/definitions/grib2/localConcepts/ecmf/cfVarName.legacy.def index 782e4fb08..18d766e6b 100644 --- a/definitions/grib2/localConcepts/ecmf/cfVarName.legacy.def +++ b/definitions/grib2/localConcepts/ecmf/cfVarName.legacy.def @@ -616,3 +616,9 @@ parameterCategory = 228 ; parameterNumber = 28 ; } +#Forecast albedo +'fal' = { + discipline = 192 ; + parameterCategory = 128 ; + parameterNumber = 243 ; +} diff --git a/definitions/grib2/localConcepts/ecmf/name.legacy.def b/definitions/grib2/localConcepts/ecmf/name.legacy.def index c697ac4ac..19a33dada 100644 --- a/definitions/grib2/localConcepts/ecmf/name.legacy.def +++ b/definitions/grib2/localConcepts/ecmf/name.legacy.def @@ -616,3 +616,9 @@ parameterCategory = 228 ; parameterNumber = 28 ; } +#Forecast albedo +'Forecast albedo' = { + discipline = 192 ; + parameterCategory = 128 ; + parameterNumber = 243 ; +} diff --git a/definitions/grib2/localConcepts/ecmf/paramId.legacy.def b/definitions/grib2/localConcepts/ecmf/paramId.legacy.def index ade474512..1311d4121 100644 --- a/definitions/grib2/localConcepts/ecmf/paramId.legacy.def +++ b/definitions/grib2/localConcepts/ecmf/paramId.legacy.def @@ -616,3 +616,9 @@ parameterCategory = 228 ; parameterNumber = 28 ; } +#Forecast albedo +'243' = { + discipline = 192 ; + parameterCategory = 128 ; + parameterNumber = 243 ; +} diff --git a/definitions/grib2/localConcepts/ecmf/shortName.legacy.def b/definitions/grib2/localConcepts/ecmf/shortName.legacy.def index cbc86ac1a..3f519fe4e 100644 --- a/definitions/grib2/localConcepts/ecmf/shortName.legacy.def +++ b/definitions/grib2/localConcepts/ecmf/shortName.legacy.def @@ -616,3 +616,9 @@ parameterCategory = 228 ; parameterNumber = 28 ; } +#Forecast albedo +'fal' = { + discipline = 192 ; + parameterCategory = 128 ; + parameterNumber = 243 ; +} diff --git a/definitions/grib2/localConcepts/ecmf/units.legacy.def b/definitions/grib2/localConcepts/ecmf/units.legacy.def index e9138419d..42489e3ff 100644 --- a/definitions/grib2/localConcepts/ecmf/units.legacy.def +++ b/definitions/grib2/localConcepts/ecmf/units.legacy.def @@ -616,3 +616,9 @@ parameterCategory = 228 ; parameterNumber = 28 ; } +#Forecast albedo +'(0 - 1)' = { + discipline = 192 ; + parameterCategory = 128 ; + parameterNumber = 243 ; +} From 396c7665cbc938e4dc8757aed383910c9e62a344 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 15 May 2023 14:59:04 +0000 Subject: [PATCH 162/378] ECC-1588: GRIB2: Modification of albedo parameters --- definitions/grib1/cfName.def | 6 +++--- definitions/grib1/cfVarName.def | 6 +++--- definitions/grib1/localConcepts/rjtd/cfVarName.def | 2 +- definitions/grib1/localConcepts/rjtd/name.def | 4 ++-- definitions/grib1/localConcepts/rjtd/paramId.def | 2 +- definitions/grib1/localConcepts/rjtd/shortName.def | 2 +- definitions/grib1/localConcepts/rjtd/units.def | 2 +- definitions/grib1/name.def | 12 ++++++------ definitions/grib1/paramId.def | 6 +++--- definitions/grib1/shortName.def | 6 +++--- definitions/grib1/units.def | 6 +++--- definitions/grib2/cfName.def | 2 +- definitions/grib2/cfVarName.def | 2 +- definitions/grib2/localConcepts/ecmf/cfVarName.def | 7 ++++--- definitions/grib2/localConcepts/ecmf/name.def | 7 ++++--- definitions/grib2/localConcepts/ecmf/paramId.def | 7 ++++--- definitions/grib2/localConcepts/ecmf/shortName.def | 7 ++++--- definitions/grib2/localConcepts/ecmf/units.def | 7 ++++--- definitions/grib2/name.def | 4 ++-- definitions/grib2/paramId.def | 2 +- definitions/grib2/shortName.def | 2 +- definitions/grib2/tables/local/ecmf/1/4.2.0.19.table | 1 + definitions/grib2/units.def | 2 +- 23 files changed, 55 insertions(+), 49 deletions(-) diff --git a/definitions/grib1/cfName.def b/definitions/grib1/cfName.def index 8a565cc7a..5458bcadf 100644 --- a/definitions/grib1/cfName.def +++ b/definitions/grib1/cfName.def @@ -105,7 +105,7 @@ table2Version = 3 ; indicatorOfParameter = 123 ; } -#Albedo +#Forecast albedo 'surface_albedo' = { table2Version = 3 ; indicatorOfParameter = 84 ; @@ -221,7 +221,7 @@ table2Version = 2 ; indicatorOfParameter = 123 ; } -#Albedo +#Forecast albedo 'surface_albedo' = { table2Version = 2 ; indicatorOfParameter = 84 ; @@ -337,7 +337,7 @@ table2Version = 1 ; indicatorOfParameter = 123 ; } -#Albedo +#Forecast albedo 'surface_albedo' = { table2Version = 1 ; indicatorOfParameter = 84 ; diff --git a/definitions/grib1/cfVarName.def b/definitions/grib1/cfVarName.def index 889e7e113..5dc688008 100644 --- a/definitions/grib1/cfVarName.def +++ b/definitions/grib1/cfVarName.def @@ -222,7 +222,7 @@ table2Version = 3 ; indicatorOfParameter = 76 ; } -#Albedo +#Forecast albedo 'al' = { table2Version = 3 ; indicatorOfParameter = 84 ; @@ -918,7 +918,7 @@ table2Version = 2 ; indicatorOfParameter = 76 ; } -#Albedo +#Forecast albedo 'al' = { table2Version = 2 ; indicatorOfParameter = 84 ; @@ -1599,7 +1599,7 @@ table2Version = 1 ; indicatorOfParameter = 76 ; } -#Albedo +#Forecast albedo 'al' = { table2Version = 1 ; indicatorOfParameter = 84 ; diff --git a/definitions/grib1/localConcepts/rjtd/cfVarName.def b/definitions/grib1/localConcepts/rjtd/cfVarName.def index b236fc6c9..058138881 100644 --- a/definitions/grib1/localConcepts/rjtd/cfVarName.def +++ b/definitions/grib1/localConcepts/rjtd/cfVarName.def @@ -285,7 +285,7 @@ table2Version = 200 ; indicatorOfParameter = 163 ; } -#Albedo +#Forecast albedo 'al' = { table2Version = 200 ; indicatorOfParameter = 84 ; diff --git a/definitions/grib1/localConcepts/rjtd/name.def b/definitions/grib1/localConcepts/rjtd/name.def index 3bc132af3..1e003e6d5 100644 --- a/definitions/grib1/localConcepts/rjtd/name.def +++ b/definitions/grib1/localConcepts/rjtd/name.def @@ -285,8 +285,8 @@ table2Version = 200 ; indicatorOfParameter = 163 ; } -#Albedo -'Albedo' = { +#Forecast albedo +'Forecast albedo' = { table2Version = 200 ; indicatorOfParameter = 84 ; } diff --git a/definitions/grib1/localConcepts/rjtd/paramId.def b/definitions/grib1/localConcepts/rjtd/paramId.def index 7c7b321ac..d6b54efa7 100644 --- a/definitions/grib1/localConcepts/rjtd/paramId.def +++ b/definitions/grib1/localConcepts/rjtd/paramId.def @@ -285,7 +285,7 @@ table2Version = 200 ; indicatorOfParameter = 163 ; } -#Albedo +#Forecast albedo '260509' = { table2Version = 200 ; indicatorOfParameter = 84 ; diff --git a/definitions/grib1/localConcepts/rjtd/shortName.def b/definitions/grib1/localConcepts/rjtd/shortName.def index 569c282a4..03279550f 100644 --- a/definitions/grib1/localConcepts/rjtd/shortName.def +++ b/definitions/grib1/localConcepts/rjtd/shortName.def @@ -285,7 +285,7 @@ table2Version = 200 ; indicatorOfParameter = 163 ; } -#Albedo +#Forecast albedo 'al' = { table2Version = 200 ; indicatorOfParameter = 84 ; diff --git a/definitions/grib1/localConcepts/rjtd/units.def b/definitions/grib1/localConcepts/rjtd/units.def index 902472026..258ecf16c 100644 --- a/definitions/grib1/localConcepts/rjtd/units.def +++ b/definitions/grib1/localConcepts/rjtd/units.def @@ -285,7 +285,7 @@ table2Version = 200 ; indicatorOfParameter = 163 ; } -#Albedo +#Forecast albedo '%' = { table2Version = 200 ; indicatorOfParameter = 84 ; diff --git a/definitions/grib1/name.def b/definitions/grib1/name.def index 6fadccdfd..2e6578aef 100644 --- a/definitions/grib1/name.def +++ b/definitions/grib1/name.def @@ -222,8 +222,8 @@ table2Version = 3 ; indicatorOfParameter = 76 ; } -#Albedo -'Albedo' = { +#Forecast albedo +'Forecast albedo' = { table2Version = 3 ; indicatorOfParameter = 84 ; } @@ -918,8 +918,8 @@ table2Version = 2 ; indicatorOfParameter = 76 ; } -#Albedo -'Albedo' = { +#Forecast albedo +'Forecast albedo' = { table2Version = 2 ; indicatorOfParameter = 84 ; } @@ -1599,8 +1599,8 @@ table2Version = 1 ; indicatorOfParameter = 76 ; } -#Albedo -'Albedo' = { +#Forecast albedo +'Forecast albedo' = { table2Version = 1 ; indicatorOfParameter = 84 ; } diff --git a/definitions/grib1/paramId.def b/definitions/grib1/paramId.def index 6a4fe00a6..857b7f6c2 100644 --- a/definitions/grib1/paramId.def +++ b/definitions/grib1/paramId.def @@ -222,7 +222,7 @@ table2Version = 3 ; indicatorOfParameter = 76 ; } -#Albedo +#Forecast albedo '260509' = { table2Version = 3 ; indicatorOfParameter = 84 ; @@ -918,7 +918,7 @@ table2Version = 2 ; indicatorOfParameter = 76 ; } -#Albedo +#Forecast albedo '260509' = { table2Version = 2 ; indicatorOfParameter = 84 ; @@ -1599,7 +1599,7 @@ table2Version = 1 ; indicatorOfParameter = 76 ; } -#Albedo +#Forecast albedo '260509' = { table2Version = 1 ; indicatorOfParameter = 84 ; diff --git a/definitions/grib1/shortName.def b/definitions/grib1/shortName.def index dcec27a87..5be89c77d 100644 --- a/definitions/grib1/shortName.def +++ b/definitions/grib1/shortName.def @@ -222,7 +222,7 @@ table2Version = 3 ; indicatorOfParameter = 76 ; } -#Albedo +#Forecast albedo 'al' = { table2Version = 3 ; indicatorOfParameter = 84 ; @@ -918,7 +918,7 @@ table2Version = 2 ; indicatorOfParameter = 76 ; } -#Albedo +#Forecast albedo 'al' = { table2Version = 2 ; indicatorOfParameter = 84 ; @@ -1599,7 +1599,7 @@ table2Version = 1 ; indicatorOfParameter = 76 ; } -#Albedo +#Forecast albedo 'al' = { table2Version = 1 ; indicatorOfParameter = 84 ; diff --git a/definitions/grib1/units.def b/definitions/grib1/units.def index fec7682c5..59c5f85c2 100644 --- a/definitions/grib1/units.def +++ b/definitions/grib1/units.def @@ -222,7 +222,7 @@ table2Version = 3 ; indicatorOfParameter = 76 ; } -#Albedo +#Forecast albedo '%' = { table2Version = 3 ; indicatorOfParameter = 84 ; @@ -918,7 +918,7 @@ table2Version = 2 ; indicatorOfParameter = 76 ; } -#Albedo +#Forecast albedo '%' = { table2Version = 2 ; indicatorOfParameter = 84 ; @@ -1599,7 +1599,7 @@ table2Version = 1 ; indicatorOfParameter = 76 ; } -#Albedo +#Forecast albedo '%' = { table2Version = 1 ; indicatorOfParameter = 84 ; diff --git a/definitions/grib2/cfName.def b/definitions/grib2/cfName.def index 620a59b5f..4741e9a04 100644 --- a/definitions/grib2/cfName.def +++ b/definitions/grib2/cfName.def @@ -375,7 +375,7 @@ typeOfFirstFixedSurface = 8 ; typeOfStatisticalProcessing = 1 ; } -#Albedo +#Forecast albedo 'surface_albedo' = { discipline = 0 ; parameterCategory = 19 ; diff --git a/definitions/grib2/cfVarName.def b/definitions/grib2/cfVarName.def index 17c03f69a..7545ee66a 100644 --- a/definitions/grib2/cfVarName.def +++ b/definitions/grib2/cfVarName.def @@ -7903,7 +7903,7 @@ parameterCategory = 191 ; parameterNumber = 0 ; } -#Albedo +#Forecast albedo 'al' = { discipline = 0 ; parameterCategory = 19 ; diff --git a/definitions/grib2/localConcepts/ecmf/cfVarName.def b/definitions/grib2/localConcepts/ecmf/cfVarName.def index 37618e205..afa838b0b 100644 --- a/definitions/grib2/localConcepts/ecmf/cfVarName.def +++ b/definitions/grib2/localConcepts/ecmf/cfVarName.def @@ -1027,9 +1027,10 @@ } #Forecast albedo 'fal' = { - discipline = 192 ; - parameterCategory = 128 ; - parameterNumber = 243 ; + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 19 ; + parameterNumber = 193 ; } #Forecast surface roughness 'fsr' = { diff --git a/definitions/grib2/localConcepts/ecmf/name.def b/definitions/grib2/localConcepts/ecmf/name.def index f8a4d1f02..cbbebc4aa 100644 --- a/definitions/grib2/localConcepts/ecmf/name.def +++ b/definitions/grib2/localConcepts/ecmf/name.def @@ -1027,9 +1027,10 @@ } #Forecast albedo 'Forecast albedo' = { - discipline = 192 ; - parameterCategory = 128 ; - parameterNumber = 243 ; + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 19 ; + parameterNumber = 193 ; } #Forecast surface roughness 'Forecast surface roughness' = { diff --git a/definitions/grib2/localConcepts/ecmf/paramId.def b/definitions/grib2/localConcepts/ecmf/paramId.def index 71c6e96e6..015692919 100644 --- a/definitions/grib2/localConcepts/ecmf/paramId.def +++ b/definitions/grib2/localConcepts/ecmf/paramId.def @@ -1027,9 +1027,10 @@ } #Forecast albedo '243' = { - discipline = 192 ; - parameterCategory = 128 ; - parameterNumber = 243 ; + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 19 ; + parameterNumber = 193 ; } #Forecast surface roughness '244' = { diff --git a/definitions/grib2/localConcepts/ecmf/shortName.def b/definitions/grib2/localConcepts/ecmf/shortName.def index e73b9b8b3..b1a18ad0e 100644 --- a/definitions/grib2/localConcepts/ecmf/shortName.def +++ b/definitions/grib2/localConcepts/ecmf/shortName.def @@ -1027,9 +1027,10 @@ } #Forecast albedo 'fal' = { - discipline = 192 ; - parameterCategory = 128 ; - parameterNumber = 243 ; + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 19 ; + parameterNumber = 193 ; } #Forecast surface roughness 'fsr' = { diff --git a/definitions/grib2/localConcepts/ecmf/units.def b/definitions/grib2/localConcepts/ecmf/units.def index 23ca34d67..a28e8c247 100644 --- a/definitions/grib2/localConcepts/ecmf/units.def +++ b/definitions/grib2/localConcepts/ecmf/units.def @@ -1027,9 +1027,10 @@ } #Forecast albedo '(0 - 1)' = { - discipline = 192 ; - parameterCategory = 128 ; - parameterNumber = 243 ; + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 19 ; + parameterNumber = 193 ; } #Forecast surface roughness 'm' = { diff --git a/definitions/grib2/name.def b/definitions/grib2/name.def index 87d9e7ef2..13e2e74cd 100644 --- a/definitions/grib2/name.def +++ b/definitions/grib2/name.def @@ -7903,8 +7903,8 @@ parameterCategory = 191 ; parameterNumber = 0 ; } -#Albedo -'Albedo' = { +#Forecast albedo +'Forecast albedo' = { discipline = 0 ; parameterCategory = 19 ; parameterNumber = 1 ; diff --git a/definitions/grib2/paramId.def b/definitions/grib2/paramId.def index 32e8152d3..5099f1513 100644 --- a/definitions/grib2/paramId.def +++ b/definitions/grib2/paramId.def @@ -7903,7 +7903,7 @@ parameterCategory = 191 ; parameterNumber = 0 ; } -#Albedo +#Forecast albedo '260509' = { discipline = 0 ; parameterCategory = 19 ; diff --git a/definitions/grib2/shortName.def b/definitions/grib2/shortName.def index 62d2b2f53..0e4478021 100644 --- a/definitions/grib2/shortName.def +++ b/definitions/grib2/shortName.def @@ -7903,7 +7903,7 @@ parameterCategory = 191 ; parameterNumber = 0 ; } -#Albedo +#Forecast albedo 'al' = { discipline = 0 ; parameterCategory = 19 ; diff --git a/definitions/grib2/tables/local/ecmf/1/4.2.0.19.table b/definitions/grib2/tables/local/ecmf/1/4.2.0.19.table index 77627555f..d2fbdd32d 100644 --- a/definitions/grib2/tables/local/ecmf/1/4.2.0.19.table +++ b/definitions/grib2/tables/local/ecmf/1/4.2.0.19.table @@ -1,3 +1,4 @@ # Code table 4.2 - discipline=0 category=19 for ECMWF 192 192 Snow albedo (0-1) +193 193 Forecast albedo (0-1) 255 255 Missing diff --git a/definitions/grib2/units.def b/definitions/grib2/units.def index 1165cb463..f073b0723 100644 --- a/definitions/grib2/units.def +++ b/definitions/grib2/units.def @@ -7903,7 +7903,7 @@ parameterCategory = 191 ; parameterNumber = 0 ; } -#Albedo +#Forecast albedo '%' = { discipline = 0 ; parameterCategory = 19 ; From 50dfbcc0847eb79d6b6f2968f8be67a717a5024c Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 16 May 2023 12:23:08 +0000 Subject: [PATCH 163/378] ECC-1590: GRIB2: Add correct GRIB2 definition to discipline 192 parameter 244; fsr --- definitions/grib2/cfVarName.def | 7 +++++++ definitions/grib2/localConcepts/ecmf/cfVarName.def | 6 ------ definitions/grib2/localConcepts/ecmf/cfVarName.legacy.def | 6 ++++++ definitions/grib2/localConcepts/ecmf/name.def | 6 ------ definitions/grib2/localConcepts/ecmf/name.legacy.def | 6 ++++++ definitions/grib2/localConcepts/ecmf/paramId.def | 6 ------ definitions/grib2/localConcepts/ecmf/paramId.legacy.def | 6 ++++++ definitions/grib2/localConcepts/ecmf/shortName.def | 6 ------ definitions/grib2/localConcepts/ecmf/shortName.legacy.def | 6 ++++++ definitions/grib2/localConcepts/ecmf/units.def | 6 ------ definitions/grib2/localConcepts/ecmf/units.legacy.def | 6 ++++++ definitions/grib2/name.def | 7 +++++++ definitions/grib2/paramId.def | 7 +++++++ definitions/grib2/shortName.def | 7 +++++++ definitions/grib2/units.def | 7 +++++++ 15 files changed, 65 insertions(+), 30 deletions(-) diff --git a/definitions/grib2/cfVarName.def b/definitions/grib2/cfVarName.def index 7545ee66a..152644647 100644 --- a/definitions/grib2/cfVarName.def +++ b/definitions/grib2/cfVarName.def @@ -388,6 +388,13 @@ parameterCategory = 3 ; parameterNumber = 28 ; } +#Forecast surface roughness +'fsr' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 1 ; + typeOfFirstFixedSurface = 1 ; + } #Specific cloud liquid water content 'clwc' = { discipline = 0 ; diff --git a/definitions/grib2/localConcepts/ecmf/cfVarName.def b/definitions/grib2/localConcepts/ecmf/cfVarName.def index afa838b0b..3412179cc 100644 --- a/definitions/grib2/localConcepts/ecmf/cfVarName.def +++ b/definitions/grib2/localConcepts/ecmf/cfVarName.def @@ -1032,12 +1032,6 @@ parameterCategory = 19 ; parameterNumber = 193 ; } -#Forecast surface roughness -'fsr' = { - discipline = 192 ; - parameterCategory = 128 ; - parameterNumber = 244 ; - } #Forecast logarithm of surface roughness for heat 'flsr' = { discipline = 192 ; diff --git a/definitions/grib2/localConcepts/ecmf/cfVarName.legacy.def b/definitions/grib2/localConcepts/ecmf/cfVarName.legacy.def index 18d766e6b..af5781c80 100644 --- a/definitions/grib2/localConcepts/ecmf/cfVarName.legacy.def +++ b/definitions/grib2/localConcepts/ecmf/cfVarName.legacy.def @@ -622,3 +622,9 @@ parameterCategory = 128 ; parameterNumber = 243 ; } +#Forecast surface roughness +'fsr' = { + discipline = 192 ; + parameterCategory = 128 ; + parameterNumber = 244 ; +} diff --git a/definitions/grib2/localConcepts/ecmf/name.def b/definitions/grib2/localConcepts/ecmf/name.def index cbbebc4aa..c565d32fc 100644 --- a/definitions/grib2/localConcepts/ecmf/name.def +++ b/definitions/grib2/localConcepts/ecmf/name.def @@ -1032,12 +1032,6 @@ parameterCategory = 19 ; parameterNumber = 193 ; } -#Forecast surface roughness -'Forecast surface roughness' = { - discipline = 192 ; - parameterCategory = 128 ; - parameterNumber = 244 ; - } #Forecast logarithm of surface roughness for heat 'Forecast logarithm of surface roughness for heat' = { discipline = 192 ; diff --git a/definitions/grib2/localConcepts/ecmf/name.legacy.def b/definitions/grib2/localConcepts/ecmf/name.legacy.def index 19a33dada..95d584e24 100644 --- a/definitions/grib2/localConcepts/ecmf/name.legacy.def +++ b/definitions/grib2/localConcepts/ecmf/name.legacy.def @@ -622,3 +622,9 @@ parameterCategory = 128 ; parameterNumber = 243 ; } +#Forecast surface roughness +'Forecast surface roughness' = { + discipline = 192 ; + parameterCategory = 128 ; + parameterNumber = 244 ; +} diff --git a/definitions/grib2/localConcepts/ecmf/paramId.def b/definitions/grib2/localConcepts/ecmf/paramId.def index 015692919..e07ec64b6 100644 --- a/definitions/grib2/localConcepts/ecmf/paramId.def +++ b/definitions/grib2/localConcepts/ecmf/paramId.def @@ -1032,12 +1032,6 @@ parameterCategory = 19 ; parameterNumber = 193 ; } -#Forecast surface roughness -'244' = { - discipline = 192 ; - parameterCategory = 128 ; - parameterNumber = 244 ; - } #Forecast logarithm of surface roughness for heat '245' = { discipline = 192 ; diff --git a/definitions/grib2/localConcepts/ecmf/paramId.legacy.def b/definitions/grib2/localConcepts/ecmf/paramId.legacy.def index 1311d4121..0c15ecf38 100644 --- a/definitions/grib2/localConcepts/ecmf/paramId.legacy.def +++ b/definitions/grib2/localConcepts/ecmf/paramId.legacy.def @@ -622,3 +622,9 @@ parameterCategory = 128 ; parameterNumber = 243 ; } +#Forecast surface roughness +'244' = { + discipline = 192 ; + parameterCategory = 128 ; + parameterNumber = 244 ; +} diff --git a/definitions/grib2/localConcepts/ecmf/shortName.def b/definitions/grib2/localConcepts/ecmf/shortName.def index b1a18ad0e..58587230c 100644 --- a/definitions/grib2/localConcepts/ecmf/shortName.def +++ b/definitions/grib2/localConcepts/ecmf/shortName.def @@ -1032,12 +1032,6 @@ parameterCategory = 19 ; parameterNumber = 193 ; } -#Forecast surface roughness -'fsr' = { - discipline = 192 ; - parameterCategory = 128 ; - parameterNumber = 244 ; - } #Forecast logarithm of surface roughness for heat 'flsr' = { discipline = 192 ; diff --git a/definitions/grib2/localConcepts/ecmf/shortName.legacy.def b/definitions/grib2/localConcepts/ecmf/shortName.legacy.def index 3f519fe4e..7a4a6e2ca 100644 --- a/definitions/grib2/localConcepts/ecmf/shortName.legacy.def +++ b/definitions/grib2/localConcepts/ecmf/shortName.legacy.def @@ -622,3 +622,9 @@ parameterCategory = 128 ; parameterNumber = 243 ; } +#Forecast surface roughness +'fsr' = { + discipline = 192 ; + parameterCategory = 128 ; + parameterNumber = 244 ; +} diff --git a/definitions/grib2/localConcepts/ecmf/units.def b/definitions/grib2/localConcepts/ecmf/units.def index a28e8c247..a0c8eba5c 100644 --- a/definitions/grib2/localConcepts/ecmf/units.def +++ b/definitions/grib2/localConcepts/ecmf/units.def @@ -1032,12 +1032,6 @@ parameterCategory = 19 ; parameterNumber = 193 ; } -#Forecast surface roughness -'m' = { - discipline = 192 ; - parameterCategory = 128 ; - parameterNumber = 244 ; - } #Forecast logarithm of surface roughness for heat '~' = { discipline = 192 ; diff --git a/definitions/grib2/localConcepts/ecmf/units.legacy.def b/definitions/grib2/localConcepts/ecmf/units.legacy.def index 42489e3ff..a3a1e8211 100644 --- a/definitions/grib2/localConcepts/ecmf/units.legacy.def +++ b/definitions/grib2/localConcepts/ecmf/units.legacy.def @@ -622,3 +622,9 @@ parameterCategory = 128 ; parameterNumber = 243 ; } +#Forecast surface roughness +'m' = { + discipline = 192 ; + parameterCategory = 128 ; + parameterNumber = 244 ; +} diff --git a/definitions/grib2/name.def b/definitions/grib2/name.def index 13e2e74cd..4ab0d1c78 100644 --- a/definitions/grib2/name.def +++ b/definitions/grib2/name.def @@ -388,6 +388,13 @@ parameterCategory = 3 ; parameterNumber = 28 ; } +#Forecast surface roughness +'Forecast surface roughness' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 1 ; + typeOfFirstFixedSurface = 1 ; + } #Specific cloud liquid water content 'Specific cloud liquid water content' = { discipline = 0 ; diff --git a/definitions/grib2/paramId.def b/definitions/grib2/paramId.def index 5099f1513..c73115967 100644 --- a/definitions/grib2/paramId.def +++ b/definitions/grib2/paramId.def @@ -388,6 +388,13 @@ parameterCategory = 3 ; parameterNumber = 28 ; } +#Forecast surface roughness +'244' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 1 ; + typeOfFirstFixedSurface = 1 ; + } #Specific cloud liquid water content '246' = { discipline = 0 ; diff --git a/definitions/grib2/shortName.def b/definitions/grib2/shortName.def index 0e4478021..0121e473c 100644 --- a/definitions/grib2/shortName.def +++ b/definitions/grib2/shortName.def @@ -388,6 +388,13 @@ parameterCategory = 3 ; parameterNumber = 28 ; } +#Forecast surface roughness +'fsr' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 1 ; + typeOfFirstFixedSurface = 1 ; + } #Specific cloud liquid water content 'clwc' = { discipline = 0 ; diff --git a/definitions/grib2/units.def b/definitions/grib2/units.def index f073b0723..e7a8459fe 100644 --- a/definitions/grib2/units.def +++ b/definitions/grib2/units.def @@ -388,6 +388,13 @@ parameterCategory = 3 ; parameterNumber = 28 ; } +#Forecast surface roughness +'m' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 1 ; + typeOfFirstFixedSurface = 1 ; + } #Specific cloud liquid water content 'kg kg**-1' = { discipline = 0 ; From f493dfcc8e0f125c6c34cc377321d8d9899dc7bf Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 16 May 2023 14:39:29 +0000 Subject: [PATCH 164/378] ECC-1596: GRIB2: Deletion of unused parameter definitions --- definitions/grib2/localConcepts/ecmf/cfVarName.def | 6 ------ definitions/grib2/localConcepts/ecmf/name.def | 6 ------ definitions/grib2/localConcepts/ecmf/paramId.def | 6 ------ definitions/grib2/localConcepts/ecmf/shortName.def | 6 ------ definitions/grib2/localConcepts/ecmf/units.def | 6 ------ 5 files changed, 30 deletions(-) diff --git a/definitions/grib2/localConcepts/ecmf/cfVarName.def b/definitions/grib2/localConcepts/ecmf/cfVarName.def index 3412179cc..a9475eb64 100644 --- a/definitions/grib2/localConcepts/ecmf/cfVarName.def +++ b/definitions/grib2/localConcepts/ecmf/cfVarName.def @@ -17720,12 +17720,6 @@ parameterCategory = 162 ; parameterNumber = 54 ; } -#Vertical integral of water vapour -'viwv' = { - discipline = 192 ; - parameterCategory = 162 ; - parameterNumber = 55 ; - } #Vertical integral of cloud liquid water 'vilw' = { discipline = 192 ; diff --git a/definitions/grib2/localConcepts/ecmf/name.def b/definitions/grib2/localConcepts/ecmf/name.def index c565d32fc..7d347d69c 100644 --- a/definitions/grib2/localConcepts/ecmf/name.def +++ b/definitions/grib2/localConcepts/ecmf/name.def @@ -17720,12 +17720,6 @@ parameterCategory = 162 ; parameterNumber = 54 ; } -#Vertical integral of water vapour -'Vertical integral of water vapour' = { - discipline = 192 ; - parameterCategory = 162 ; - parameterNumber = 55 ; - } #Vertical integral of cloud liquid water 'Vertical integral of cloud liquid water' = { discipline = 192 ; diff --git a/definitions/grib2/localConcepts/ecmf/paramId.def b/definitions/grib2/localConcepts/ecmf/paramId.def index e07ec64b6..53201217c 100644 --- a/definitions/grib2/localConcepts/ecmf/paramId.def +++ b/definitions/grib2/localConcepts/ecmf/paramId.def @@ -17720,12 +17720,6 @@ parameterCategory = 162 ; parameterNumber = 54 ; } -#Vertical integral of water vapour -'162055' = { - discipline = 192 ; - parameterCategory = 162 ; - parameterNumber = 55 ; - } #Vertical integral of cloud liquid water '162056' = { discipline = 192 ; diff --git a/definitions/grib2/localConcepts/ecmf/shortName.def b/definitions/grib2/localConcepts/ecmf/shortName.def index 58587230c..b4f376655 100644 --- a/definitions/grib2/localConcepts/ecmf/shortName.def +++ b/definitions/grib2/localConcepts/ecmf/shortName.def @@ -17720,12 +17720,6 @@ parameterCategory = 162 ; parameterNumber = 54 ; } -#Vertical integral of water vapour -'viwv' = { - discipline = 192 ; - parameterCategory = 162 ; - parameterNumber = 55 ; - } #Vertical integral of cloud liquid water 'vilw' = { discipline = 192 ; diff --git a/definitions/grib2/localConcepts/ecmf/units.def b/definitions/grib2/localConcepts/ecmf/units.def index a0c8eba5c..6315bf900 100644 --- a/definitions/grib2/localConcepts/ecmf/units.def +++ b/definitions/grib2/localConcepts/ecmf/units.def @@ -17720,12 +17720,6 @@ parameterCategory = 162 ; parameterNumber = 54 ; } -#Vertical integral of water vapour -'kg m**-2' = { - discipline = 192 ; - parameterCategory = 162 ; - parameterNumber = 55 ; - } #Vertical integral of cloud liquid water 'kg m**-2' = { discipline = 192 ; From c6e6b698453777d7cc335dcbfd4413265cbefac4 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 16 May 2023 14:55:08 +0000 Subject: [PATCH 165/378] ECC-1594: GRIB: Deletion of unused parameter definitions --- definitions/grib1/localConcepts/ecmf/cfVarName.def | 5 ----- definitions/grib1/localConcepts/ecmf/name.def | 5 ----- definitions/grib1/localConcepts/ecmf/paramId.def | 5 ----- definitions/grib1/localConcepts/ecmf/shortName.def | 5 ----- definitions/grib1/localConcepts/ecmf/units.def | 5 ----- definitions/grib2/localConcepts/ecmf/cfVarName.def | 6 ------ definitions/grib2/localConcepts/ecmf/name.def | 6 ------ definitions/grib2/localConcepts/ecmf/paramId.def | 6 ------ definitions/grib2/localConcepts/ecmf/shortName.def | 6 ------ definitions/grib2/localConcepts/ecmf/units.def | 6 ------ 10 files changed, 55 deletions(-) diff --git a/definitions/grib1/localConcepts/ecmf/cfVarName.def b/definitions/grib1/localConcepts/ecmf/cfVarName.def index 228f5bd9f..2e758403e 100644 --- a/definitions/grib1/localConcepts/ecmf/cfVarName.def +++ b/definitions/grib1/localConcepts/ecmf/cfVarName.def @@ -15344,11 +15344,6 @@ table2Version = 174 ; indicatorOfParameter = 8 ; } -#Sub-surface runoff -'ssro' = { - table2Version = 174 ; - indicatorOfParameter = 9 ; - } #Fraction of sea-ice in sea 'p31.174' = { table2Version = 174 ; diff --git a/definitions/grib1/localConcepts/ecmf/name.def b/definitions/grib1/localConcepts/ecmf/name.def index a0e23889e..763359c2b 100644 --- a/definitions/grib1/localConcepts/ecmf/name.def +++ b/definitions/grib1/localConcepts/ecmf/name.def @@ -15344,11 +15344,6 @@ table2Version = 174 ; indicatorOfParameter = 8 ; } -#Sub-surface runoff -'Sub-surface runoff' = { - table2Version = 174 ; - indicatorOfParameter = 9 ; - } #Fraction of sea-ice in sea 'Fraction of sea-ice in sea' = { table2Version = 174 ; diff --git a/definitions/grib1/localConcepts/ecmf/paramId.def b/definitions/grib1/localConcepts/ecmf/paramId.def index 2fd9b2919..441f21358 100644 --- a/definitions/grib1/localConcepts/ecmf/paramId.def +++ b/definitions/grib1/localConcepts/ecmf/paramId.def @@ -15344,11 +15344,6 @@ table2Version = 174 ; indicatorOfParameter = 8 ; } -#Sub-surface runoff -'174009' = { - table2Version = 174 ; - indicatorOfParameter = 9 ; - } #Fraction of sea-ice in sea '174031' = { table2Version = 174 ; diff --git a/definitions/grib1/localConcepts/ecmf/shortName.def b/definitions/grib1/localConcepts/ecmf/shortName.def index 3cf5de916..86978f332 100644 --- a/definitions/grib1/localConcepts/ecmf/shortName.def +++ b/definitions/grib1/localConcepts/ecmf/shortName.def @@ -15344,11 +15344,6 @@ table2Version = 174 ; indicatorOfParameter = 8 ; } -#Sub-surface runoff -'ssro' = { - table2Version = 174 ; - indicatorOfParameter = 9 ; - } #Fraction of sea-ice in sea '~' = { table2Version = 174 ; diff --git a/definitions/grib1/localConcepts/ecmf/units.def b/definitions/grib1/localConcepts/ecmf/units.def index eef5268c8..64983eb54 100644 --- a/definitions/grib1/localConcepts/ecmf/units.def +++ b/definitions/grib1/localConcepts/ecmf/units.def @@ -15344,11 +15344,6 @@ table2Version = 174 ; indicatorOfParameter = 8 ; } -#Sub-surface runoff -'kg m**-2' = { - table2Version = 174 ; - indicatorOfParameter = 9 ; - } #Fraction of sea-ice in sea '(0 - 1)' = { table2Version = 174 ; diff --git a/definitions/grib2/localConcepts/ecmf/cfVarName.def b/definitions/grib2/localConcepts/ecmf/cfVarName.def index a9475eb64..eb1798a51 100644 --- a/definitions/grib2/localConcepts/ecmf/cfVarName.def +++ b/definitions/grib2/localConcepts/ecmf/cfVarName.def @@ -19694,12 +19694,6 @@ parameterCategory = 174 ; parameterNumber = 6 ; } -#Sub-surface runoff -'ssro' = { - discipline = 192 ; - parameterCategory = 174 ; - parameterNumber = 9 ; - } #Fraction of sea-ice in sea 'p31.174' = { discipline = 192 ; diff --git a/definitions/grib2/localConcepts/ecmf/name.def b/definitions/grib2/localConcepts/ecmf/name.def index 7d347d69c..551f6cdfb 100644 --- a/definitions/grib2/localConcepts/ecmf/name.def +++ b/definitions/grib2/localConcepts/ecmf/name.def @@ -19694,12 +19694,6 @@ parameterCategory = 174 ; parameterNumber = 6 ; } -#Sub-surface runoff -'Sub-surface runoff' = { - discipline = 192 ; - parameterCategory = 174 ; - parameterNumber = 9 ; - } #Fraction of sea-ice in sea 'Fraction of sea-ice in sea' = { discipline = 192 ; diff --git a/definitions/grib2/localConcepts/ecmf/paramId.def b/definitions/grib2/localConcepts/ecmf/paramId.def index 53201217c..cd0d03a26 100644 --- a/definitions/grib2/localConcepts/ecmf/paramId.def +++ b/definitions/grib2/localConcepts/ecmf/paramId.def @@ -19694,12 +19694,6 @@ parameterCategory = 174 ; parameterNumber = 6 ; } -#Sub-surface runoff -'174009' = { - discipline = 192 ; - parameterCategory = 174 ; - parameterNumber = 9 ; - } #Fraction of sea-ice in sea '174031' = { discipline = 192 ; diff --git a/definitions/grib2/localConcepts/ecmf/shortName.def b/definitions/grib2/localConcepts/ecmf/shortName.def index b4f376655..f97a6bdd3 100644 --- a/definitions/grib2/localConcepts/ecmf/shortName.def +++ b/definitions/grib2/localConcepts/ecmf/shortName.def @@ -19694,12 +19694,6 @@ parameterCategory = 174 ; parameterNumber = 6 ; } -#Sub-surface runoff -'ssro' = { - discipline = 192 ; - parameterCategory = 174 ; - parameterNumber = 9 ; - } #Fraction of sea-ice in sea '~' = { discipline = 192 ; diff --git a/definitions/grib2/localConcepts/ecmf/units.def b/definitions/grib2/localConcepts/ecmf/units.def index 6315bf900..4def0ade6 100644 --- a/definitions/grib2/localConcepts/ecmf/units.def +++ b/definitions/grib2/localConcepts/ecmf/units.def @@ -19694,12 +19694,6 @@ parameterCategory = 174 ; parameterNumber = 6 ; } -#Sub-surface runoff -'kg m**-2' = { - discipline = 192 ; - parameterCategory = 174 ; - parameterNumber = 9 ; - } #Fraction of sea-ice in sea '(0 - 1)' = { discipline = 192 ; From 6c0457b09c23d4ccc5b4a01c58a17cf19900cf68 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 16 May 2023 16:50:07 +0000 Subject: [PATCH 166/378] ECC-1597: GRIB2: Make several GRIB2 encodings legacy --- .../grib2/localConcepts/ecmf/cfVarName.def | 45 ------------------- .../localConcepts/ecmf/cfVarName.legacy.def | 45 +++++++++++++++++++ definitions/grib2/localConcepts/ecmf/name.def | 45 ------------------- .../grib2/localConcepts/ecmf/name.legacy.def | 45 +++++++++++++++++++ .../grib2/localConcepts/ecmf/paramId.def | 45 ------------------- .../localConcepts/ecmf/paramId.legacy.def | 45 +++++++++++++++++++ .../grib2/localConcepts/ecmf/shortName.def | 45 ------------------- .../localConcepts/ecmf/shortName.legacy.def | 45 +++++++++++++++++++ .../grib2/localConcepts/ecmf/units.def | 45 ------------------- .../grib2/localConcepts/ecmf/units.legacy.def | 45 +++++++++++++++++++ 10 files changed, 225 insertions(+), 225 deletions(-) diff --git a/definitions/grib2/localConcepts/ecmf/cfVarName.def b/definitions/grib2/localConcepts/ecmf/cfVarName.def index eb1798a51..52c9359cf 100644 --- a/definitions/grib2/localConcepts/ecmf/cfVarName.def +++ b/definitions/grib2/localConcepts/ecmf/cfVarName.def @@ -13836,51 +13836,6 @@ parameterCategory = 0 ; parameterNumber = 199 ; } -#Accumulated Carbon Dioxide Net Ecosystem Exchange -'aco2nee' = { - localTablesVersion = 1 ; - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 192 ; - typeOfStatisticalProcessing = 1 ; - } -#Accumulated Carbon Dioxide Gross Primary Production -'aco2gpp' = { - localTablesVersion = 1 ; - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 193 ; - typeOfStatisticalProcessing = 1 ; - } -#Accumulated Carbon Dioxide Ecosystem Respiration -'aco2rec' = { - localTablesVersion = 1 ; - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 194 ; - typeOfStatisticalProcessing = 1 ; - } -#Flux of Carbon Dioxide Net Ecosystem Exchange -'fco2nee' = { - localTablesVersion = 1 ; - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 195 ; - } -#Flux of Carbon Dioxide Gross Primary Production -'fco2gpp' = { - localTablesVersion = 1 ; - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 197 ; - } -#Flux of Carbon Dioxide Ecosystem Respiration -'fco2rec' = { - localTablesVersion = 1 ; - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 196 ; - } #Canopy cover fraction 'ccf' = { discipline = 192 ; diff --git a/definitions/grib2/localConcepts/ecmf/cfVarName.legacy.def b/definitions/grib2/localConcepts/ecmf/cfVarName.legacy.def index af5781c80..f71f2f665 100644 --- a/definitions/grib2/localConcepts/ecmf/cfVarName.legacy.def +++ b/definitions/grib2/localConcepts/ecmf/cfVarName.legacy.def @@ -628,3 +628,48 @@ parameterCategory = 128 ; parameterNumber = 244 ; } +#Flux of Carbon Dioxide Net Ecosystem Exchange +'fco2nee' = { + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 195 ; +} +#Accumulated Carbon Dioxide Net Ecosystem Exchange +'aco2nee' = { + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 192 ; + typeOfStatisticalProcessing = 1 ; +} +#Flux of Carbon Dioxide Gross Primary Production +'fco2gpp' = { + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 197 ; +} +#Accumulated Carbon Dioxide Gross Primary Production +'aco2gpp' = { + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 193 ; + typeOfStatisticalProcessing = 1 ; +} +#Flux of Carbon Dioxide Ecosystem Respiration +'fco2rec' = { + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 196 ; +} +#Accumulated Carbon Dioxide Ecosystem Respiration +'aco2rec' = { + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 194 ; + typeOfStatisticalProcessing = 1 ; +} diff --git a/definitions/grib2/localConcepts/ecmf/name.def b/definitions/grib2/localConcepts/ecmf/name.def index 551f6cdfb..53186a73d 100644 --- a/definitions/grib2/localConcepts/ecmf/name.def +++ b/definitions/grib2/localConcepts/ecmf/name.def @@ -13836,51 +13836,6 @@ parameterCategory = 0 ; parameterNumber = 199 ; } -#Accumulated Carbon Dioxide Net Ecosystem Exchange -'Accumulated Carbon Dioxide Net Ecosystem Exchange' = { - localTablesVersion = 1 ; - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 192 ; - typeOfStatisticalProcessing = 1 ; - } -#Accumulated Carbon Dioxide Gross Primary Production -'Accumulated Carbon Dioxide Gross Primary Production' = { - localTablesVersion = 1 ; - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 193 ; - typeOfStatisticalProcessing = 1 ; - } -#Accumulated Carbon Dioxide Ecosystem Respiration -'Accumulated Carbon Dioxide Ecosystem Respiration' = { - localTablesVersion = 1 ; - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 194 ; - typeOfStatisticalProcessing = 1 ; - } -#Flux of Carbon Dioxide Net Ecosystem Exchange -'Flux of Carbon Dioxide Net Ecosystem Exchange' = { - localTablesVersion = 1 ; - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 195 ; - } -#Flux of Carbon Dioxide Gross Primary Production -'Flux of Carbon Dioxide Gross Primary Production' = { - localTablesVersion = 1 ; - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 197 ; - } -#Flux of Carbon Dioxide Ecosystem Respiration -'Flux of Carbon Dioxide Ecosystem Respiration' = { - localTablesVersion = 1 ; - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 196 ; - } #Canopy cover fraction 'Canopy cover fraction' = { discipline = 192 ; diff --git a/definitions/grib2/localConcepts/ecmf/name.legacy.def b/definitions/grib2/localConcepts/ecmf/name.legacy.def index 95d584e24..1540241d5 100644 --- a/definitions/grib2/localConcepts/ecmf/name.legacy.def +++ b/definitions/grib2/localConcepts/ecmf/name.legacy.def @@ -628,3 +628,48 @@ parameterCategory = 128 ; parameterNumber = 244 ; } +#Flux of Carbon Dioxide Net Ecosystem Exchange +'Flux of Carbon Dioxide Net Ecosystem Exchange' = { + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 195 ; +} +#Accumulated Carbon Dioxide Net Ecosystem Exchange +'Accumulated Carbon Dioxide Net Ecosystem Exchange' = { + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 192 ; + typeOfStatisticalProcessing = 1 ; +} +#Flux of Carbon Dioxide Gross Primary Production +'Flux of Carbon Dioxide Gross Primary Production' = { + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 197 ; +} +#Accumulated Carbon Dioxide Gross Primary Production +'Accumulated Carbon Dioxide Gross Primary Production' = { + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 193 ; + typeOfStatisticalProcessing = 1 ; +} +#Flux of Carbon Dioxide Ecosystem Respiration +'Flux of Carbon Dioxide Ecosystem Respiration' = { + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 196 ; +} +#Accumulated Carbon Dioxide Ecosystem Respiration +'Accumulated Carbon Dioxide Ecosystem Respiration' = { + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 194 ; + typeOfStatisticalProcessing = 1 ; +} diff --git a/definitions/grib2/localConcepts/ecmf/paramId.def b/definitions/grib2/localConcepts/ecmf/paramId.def index cd0d03a26..8f80a38b6 100644 --- a/definitions/grib2/localConcepts/ecmf/paramId.def +++ b/definitions/grib2/localConcepts/ecmf/paramId.def @@ -13836,51 +13836,6 @@ parameterCategory = 0 ; parameterNumber = 199 ; } -#Accumulated Carbon Dioxide Net Ecosystem Exchange -'228080' = { - localTablesVersion = 1 ; - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 192 ; - typeOfStatisticalProcessing = 1 ; - } -#Accumulated Carbon Dioxide Gross Primary Production -'228081' = { - localTablesVersion = 1 ; - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 193 ; - typeOfStatisticalProcessing = 1 ; - } -#Accumulated Carbon Dioxide Ecosystem Respiration -'228082' = { - localTablesVersion = 1 ; - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 194 ; - typeOfStatisticalProcessing = 1 ; - } -#Flux of Carbon Dioxide Net Ecosystem Exchange -'228083' = { - localTablesVersion = 1 ; - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 195 ; - } -#Flux of Carbon Dioxide Gross Primary Production -'228084' = { - localTablesVersion = 1 ; - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 197 ; - } -#Flux of Carbon Dioxide Ecosystem Respiration -'228085' = { - localTablesVersion = 1 ; - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 196 ; - } #Canopy cover fraction '228091' = { discipline = 192 ; diff --git a/definitions/grib2/localConcepts/ecmf/paramId.legacy.def b/definitions/grib2/localConcepts/ecmf/paramId.legacy.def index 0c15ecf38..f5751d19a 100644 --- a/definitions/grib2/localConcepts/ecmf/paramId.legacy.def +++ b/definitions/grib2/localConcepts/ecmf/paramId.legacy.def @@ -628,3 +628,48 @@ parameterCategory = 128 ; parameterNumber = 244 ; } +#Flux of Carbon Dioxide Net Ecosystem Exchange +'228083' = { + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 195 ; +} +#Accumulated Carbon Dioxide Net Ecosystem Exchange +'228080' = { + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 192 ; + typeOfStatisticalProcessing = 1 ; +} +#Flux of Carbon Dioxide Gross Primary Production +'228084' = { + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 197 ; +} +#Accumulated Carbon Dioxide Gross Primary Production +'228081' = { + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 193 ; + typeOfStatisticalProcessing = 1 ; +} +#Flux of Carbon Dioxide Ecosystem Respiration +'228085' = { + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 196 ; +} +#Accumulated Carbon Dioxide Ecosystem Respiration +'228082' = { + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 194 ; + typeOfStatisticalProcessing = 1 ; +} diff --git a/definitions/grib2/localConcepts/ecmf/shortName.def b/definitions/grib2/localConcepts/ecmf/shortName.def index f97a6bdd3..fea76c318 100644 --- a/definitions/grib2/localConcepts/ecmf/shortName.def +++ b/definitions/grib2/localConcepts/ecmf/shortName.def @@ -13836,51 +13836,6 @@ parameterCategory = 0 ; parameterNumber = 199 ; } -#Accumulated Carbon Dioxide Net Ecosystem Exchange -'aco2nee' = { - localTablesVersion = 1 ; - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 192 ; - typeOfStatisticalProcessing = 1 ; - } -#Accumulated Carbon Dioxide Gross Primary Production -'aco2gpp' = { - localTablesVersion = 1 ; - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 193 ; - typeOfStatisticalProcessing = 1 ; - } -#Accumulated Carbon Dioxide Ecosystem Respiration -'aco2rec' = { - localTablesVersion = 1 ; - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 194 ; - typeOfStatisticalProcessing = 1 ; - } -#Flux of Carbon Dioxide Net Ecosystem Exchange -'fco2nee' = { - localTablesVersion = 1 ; - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 195 ; - } -#Flux of Carbon Dioxide Gross Primary Production -'fco2gpp' = { - localTablesVersion = 1 ; - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 197 ; - } -#Flux of Carbon Dioxide Ecosystem Respiration -'fco2rec' = { - localTablesVersion = 1 ; - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 196 ; - } #Canopy cover fraction 'ccf' = { discipline = 192 ; diff --git a/definitions/grib2/localConcepts/ecmf/shortName.legacy.def b/definitions/grib2/localConcepts/ecmf/shortName.legacy.def index 7a4a6e2ca..b304b23b1 100644 --- a/definitions/grib2/localConcepts/ecmf/shortName.legacy.def +++ b/definitions/grib2/localConcepts/ecmf/shortName.legacy.def @@ -628,3 +628,48 @@ parameterCategory = 128 ; parameterNumber = 244 ; } +#Flux of Carbon Dioxide Net Ecosystem Exchange +'fco2nee' = { + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 195 ; +} +#Accumulated Carbon Dioxide Net Ecosystem Exchange +'aco2nee' = { + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 192 ; + typeOfStatisticalProcessing = 1 ; +} +#Flux of Carbon Dioxide Gross Primary Production +'fco2gpp' = { + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 197 ; +} +#Accumulated Carbon Dioxide Gross Primary Production +'aco2gpp' = { + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 193 ; + typeOfStatisticalProcessing = 1 ; +} +#Flux of Carbon Dioxide Ecosystem Respiration +'fco2rec' = { + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 196 ; +} +#Accumulated Carbon Dioxide Ecosystem Respiration +'aco2rec' = { + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 194 ; + typeOfStatisticalProcessing = 1 ; +} diff --git a/definitions/grib2/localConcepts/ecmf/units.def b/definitions/grib2/localConcepts/ecmf/units.def index 4def0ade6..b4d793c02 100644 --- a/definitions/grib2/localConcepts/ecmf/units.def +++ b/definitions/grib2/localConcepts/ecmf/units.def @@ -13836,51 +13836,6 @@ parameterCategory = 0 ; parameterNumber = 199 ; } -#Accumulated Carbon Dioxide Net Ecosystem Exchange -'kg m**-2' = { - localTablesVersion = 1 ; - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 192 ; - typeOfStatisticalProcessing = 1 ; - } -#Accumulated Carbon Dioxide Gross Primary Production -'kg m**-2' = { - localTablesVersion = 1 ; - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 193 ; - typeOfStatisticalProcessing = 1 ; - } -#Accumulated Carbon Dioxide Ecosystem Respiration -'kg m**-2' = { - localTablesVersion = 1 ; - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 194 ; - typeOfStatisticalProcessing = 1 ; - } -#Flux of Carbon Dioxide Net Ecosystem Exchange -'kg m**-2 s**-1' = { - localTablesVersion = 1 ; - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 195 ; - } -#Flux of Carbon Dioxide Gross Primary Production -'kg m**-2 s**-1' = { - localTablesVersion = 1 ; - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 197 ; - } -#Flux of Carbon Dioxide Ecosystem Respiration -'kg m**-2 s**-1' = { - localTablesVersion = 1 ; - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 196 ; - } #Canopy cover fraction '(0 - 1)' = { discipline = 192 ; diff --git a/definitions/grib2/localConcepts/ecmf/units.legacy.def b/definitions/grib2/localConcepts/ecmf/units.legacy.def index a3a1e8211..95aef0e2d 100644 --- a/definitions/grib2/localConcepts/ecmf/units.legacy.def +++ b/definitions/grib2/localConcepts/ecmf/units.legacy.def @@ -628,3 +628,48 @@ parameterCategory = 128 ; parameterNumber = 244 ; } +#Flux of Carbon Dioxide Net Ecosystem Exchange +'kg m**-2 s**-1' = { + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 195 ; +} +#Accumulated Carbon Dioxide Net Ecosystem Exchange +'kg m**-2' = { + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 192 ; + typeOfStatisticalProcessing = 1 ; +} +#Flux of Carbon Dioxide Gross Primary Production +'kg m**-2 s**-1' = { + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 197 ; +} +#Accumulated Carbon Dioxide Gross Primary Production +'kg m**-2' = { + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 193 ; + typeOfStatisticalProcessing = 1 ; +} +#Flux of Carbon Dioxide Ecosystem Respiration +'kg m**-2 s**-1' = { + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 196 ; +} +#Accumulated Carbon Dioxide Ecosystem Respiration +'kg m**-2' = { + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 194 ; + typeOfStatisticalProcessing = 1 ; +} From bf807c7cb2858d1e9fa138d5f305882f272e479a Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 17 May 2023 12:14:42 +0000 Subject: [PATCH 167/378] ECC-1587: GRIB2: Updating climatological discipline 192 parameter encodings (part 01) --- definitions/grib1/cfName.def | 6 +++--- definitions/grib1/cfVarName.def | 6 +++--- definitions/grib1/localConcepts/ecmf/cfName.def | 4 ++-- definitions/grib1/localConcepts/ecmf/cfVarName.def | 4 ++-- definitions/grib1/localConcepts/ecmf/name.def | 8 ++++---- definitions/grib1/localConcepts/ecmf/paramId.def | 4 ++-- definitions/grib1/localConcepts/ecmf/shortName.def | 4 ++-- definitions/grib1/localConcepts/ecmf/units.def | 4 ++-- definitions/grib1/localConcepts/rjtd/cfVarName.def | 2 +- definitions/grib1/localConcepts/rjtd/name.def | 4 ++-- definitions/grib1/localConcepts/rjtd/paramId.def | 2 +- definitions/grib1/localConcepts/rjtd/shortName.def | 2 +- definitions/grib1/localConcepts/rjtd/units.def | 2 +- definitions/grib1/name.def | 12 ++++++------ definitions/grib1/paramId.def | 6 +++--- definitions/grib1/shortName.def | 6 +++--- definitions/grib1/units.def | 6 +++--- definitions/grib2/cfName.def | 14 ++++++++------ definitions/grib2/cfVarName.def | 14 ++++++++------ definitions/grib2/localConcepts/uerra/cfName.def | 6 ++++++ .../grib2/localConcepts/uerra/cfVarName.def | 6 ++++++ definitions/grib2/localConcepts/uerra/name.def | 6 ++++++ definitions/grib2/localConcepts/uerra/paramId.def | 6 ++++++ .../grib2/localConcepts/uerra/shortName.def | 6 ++++++ definitions/grib2/localConcepts/uerra/units.def | 6 ++++++ definitions/grib2/name.def | 14 ++++++++------ definitions/grib2/paramId.def | 14 ++++++++------ definitions/grib2/shortName.def | 14 ++++++++------ definitions/grib2/units.def | 14 ++++++++------ 29 files changed, 125 insertions(+), 77 deletions(-) diff --git a/definitions/grib1/cfName.def b/definitions/grib1/cfName.def index 5458bcadf..17313406e 100644 --- a/definitions/grib1/cfName.def +++ b/definitions/grib1/cfName.def @@ -65,7 +65,7 @@ table2Version = 3 ; indicatorOfParameter = 81 ; } -#Surface roughness +#Surface roughness (climatological) 'surface_roughness_length' = { table2Version = 3 ; indicatorOfParameter = 83 ; @@ -181,7 +181,7 @@ table2Version = 2 ; indicatorOfParameter = 81 ; } -#Surface roughness +#Surface roughness (climatological) 'surface_roughness_length' = { table2Version = 2 ; indicatorOfParameter = 83 ; @@ -297,7 +297,7 @@ table2Version = 1 ; indicatorOfParameter = 81 ; } -#Surface roughness +#Surface roughness (climatological) 'surface_roughness_length' = { table2Version = 1 ; indicatorOfParameter = 83 ; diff --git a/definitions/grib1/cfVarName.def b/definitions/grib1/cfVarName.def index 5dc688008..aab85cbcf 100644 --- a/definitions/grib1/cfVarName.def +++ b/definitions/grib1/cfVarName.def @@ -137,7 +137,7 @@ table2Version = 3 ; indicatorOfParameter = 81 ; } -#Surface roughness +#Surface roughness (climatological) 'sr' = { table2Version = 3 ; indicatorOfParameter = 83 ; @@ -833,7 +833,7 @@ table2Version = 2 ; indicatorOfParameter = 81 ; } -#Surface roughness +#Surface roughness (climatological) 'sr' = { table2Version = 2 ; indicatorOfParameter = 83 ; @@ -1514,7 +1514,7 @@ table2Version = 1 ; indicatorOfParameter = 81 ; } -#Surface roughness +#Surface roughness (climatological) 'sr' = { table2Version = 1 ; indicatorOfParameter = 83 ; diff --git a/definitions/grib1/localConcepts/ecmf/cfName.def b/definitions/grib1/localConcepts/ecmf/cfName.def index 205319839..ff6a9fd47 100644 --- a/definitions/grib1/localConcepts/ecmf/cfName.def +++ b/definitions/grib1/localConcepts/ecmf/cfName.def @@ -494,12 +494,12 @@ table2Version = 190 ; indicatorOfParameter = 172 ; } -#Surface roughness +#Surface roughness (climatological) 'surface_roughness_length' = { table2Version = 128 ; indicatorOfParameter = 173 ; } -#Surface roughness +#Surface roughness (climatological) 'surface_roughness_length' = { table2Version = 160 ; indicatorOfParameter = 173 ; diff --git a/definitions/grib1/localConcepts/ecmf/cfVarName.def b/definitions/grib1/localConcepts/ecmf/cfVarName.def index 2e758403e..5832c5429 100644 --- a/definitions/grib1/localConcepts/ecmf/cfVarName.def +++ b/definitions/grib1/localConcepts/ecmf/cfVarName.def @@ -1354,12 +1354,12 @@ table2Version = 190 ; indicatorOfParameter = 172 ; } -#Surface roughness +#Surface roughness (climatological) 'sr' = { table2Version = 128 ; indicatorOfParameter = 173 ; } -#Surface roughness +#Surface roughness (climatological) 'sr' = { table2Version = 160 ; indicatorOfParameter = 173 ; diff --git a/definitions/grib1/localConcepts/ecmf/name.def b/definitions/grib1/localConcepts/ecmf/name.def index 763359c2b..81fdeaa56 100644 --- a/definitions/grib1/localConcepts/ecmf/name.def +++ b/definitions/grib1/localConcepts/ecmf/name.def @@ -1354,13 +1354,13 @@ table2Version = 190 ; indicatorOfParameter = 172 ; } -#Surface roughness -'Surface roughness' = { +#Surface roughness (climatological) +'Surface roughness (climatological)' = { table2Version = 128 ; indicatorOfParameter = 173 ; } -#Surface roughness -'Surface roughness' = { +#Surface roughness (climatological) +'Surface roughness (climatological)' = { table2Version = 160 ; indicatorOfParameter = 173 ; } diff --git a/definitions/grib1/localConcepts/ecmf/paramId.def b/definitions/grib1/localConcepts/ecmf/paramId.def index 441f21358..3d98a979c 100644 --- a/definitions/grib1/localConcepts/ecmf/paramId.def +++ b/definitions/grib1/localConcepts/ecmf/paramId.def @@ -1354,12 +1354,12 @@ table2Version = 190 ; indicatorOfParameter = 172 ; } -#Surface roughness +#Surface roughness (climatological) '173' = { table2Version = 128 ; indicatorOfParameter = 173 ; } -#Surface roughness +#Surface roughness (climatological) '173' = { table2Version = 160 ; indicatorOfParameter = 173 ; diff --git a/definitions/grib1/localConcepts/ecmf/shortName.def b/definitions/grib1/localConcepts/ecmf/shortName.def index 86978f332..8794bfdf3 100644 --- a/definitions/grib1/localConcepts/ecmf/shortName.def +++ b/definitions/grib1/localConcepts/ecmf/shortName.def @@ -1354,12 +1354,12 @@ table2Version = 190 ; indicatorOfParameter = 172 ; } -#Surface roughness +#Surface roughness (climatological) 'sr' = { table2Version = 128 ; indicatorOfParameter = 173 ; } -#Surface roughness +#Surface roughness (climatological) 'sr' = { table2Version = 160 ; indicatorOfParameter = 173 ; diff --git a/definitions/grib1/localConcepts/ecmf/units.def b/definitions/grib1/localConcepts/ecmf/units.def index 64983eb54..deecc99c2 100644 --- a/definitions/grib1/localConcepts/ecmf/units.def +++ b/definitions/grib1/localConcepts/ecmf/units.def @@ -1354,12 +1354,12 @@ table2Version = 190 ; indicatorOfParameter = 172 ; } -#Surface roughness +#Surface roughness (climatological) 'm' = { table2Version = 128 ; indicatorOfParameter = 173 ; } -#Surface roughness +#Surface roughness (climatological) 'm' = { table2Version = 160 ; indicatorOfParameter = 173 ; diff --git a/definitions/grib1/localConcepts/rjtd/cfVarName.def b/definitions/grib1/localConcepts/rjtd/cfVarName.def index 058138881..edc1659b1 100644 --- a/definitions/grib1/localConcepts/rjtd/cfVarName.def +++ b/definitions/grib1/localConcepts/rjtd/cfVarName.def @@ -141,7 +141,7 @@ table2Version = 200 ; indicatorOfParameter = 81 ; } -#Surface roughness +#Surface roughness (climatological) 'sr' = { table2Version = 200 ; indicatorOfParameter = 83 ; diff --git a/definitions/grib1/localConcepts/rjtd/name.def b/definitions/grib1/localConcepts/rjtd/name.def index 1e003e6d5..4b9c584ad 100644 --- a/definitions/grib1/localConcepts/rjtd/name.def +++ b/definitions/grib1/localConcepts/rjtd/name.def @@ -141,8 +141,8 @@ table2Version = 200 ; indicatorOfParameter = 81 ; } -#Surface roughness -'Surface roughness' = { +#Surface roughness (climatological) +'Surface roughness (climatological)' = { table2Version = 200 ; indicatorOfParameter = 83 ; } diff --git a/definitions/grib1/localConcepts/rjtd/paramId.def b/definitions/grib1/localConcepts/rjtd/paramId.def index d6b54efa7..361297ce5 100644 --- a/definitions/grib1/localConcepts/rjtd/paramId.def +++ b/definitions/grib1/localConcepts/rjtd/paramId.def @@ -141,7 +141,7 @@ table2Version = 200 ; indicatorOfParameter = 81 ; } -#Surface roughness +#Surface roughness (climatological) '173' = { table2Version = 200 ; indicatorOfParameter = 83 ; diff --git a/definitions/grib1/localConcepts/rjtd/shortName.def b/definitions/grib1/localConcepts/rjtd/shortName.def index 03279550f..8ce7b8e95 100644 --- a/definitions/grib1/localConcepts/rjtd/shortName.def +++ b/definitions/grib1/localConcepts/rjtd/shortName.def @@ -141,7 +141,7 @@ table2Version = 200 ; indicatorOfParameter = 81 ; } -#Surface roughness +#Surface roughness (climatological) 'sr' = { table2Version = 200 ; indicatorOfParameter = 83 ; diff --git a/definitions/grib1/localConcepts/rjtd/units.def b/definitions/grib1/localConcepts/rjtd/units.def index 258ecf16c..7c7dfb1af 100644 --- a/definitions/grib1/localConcepts/rjtd/units.def +++ b/definitions/grib1/localConcepts/rjtd/units.def @@ -141,7 +141,7 @@ table2Version = 200 ; indicatorOfParameter = 81 ; } -#Surface roughness +#Surface roughness (climatological) 'm' = { table2Version = 200 ; indicatorOfParameter = 83 ; diff --git a/definitions/grib1/name.def b/definitions/grib1/name.def index 2e6578aef..8a38c3f1a 100644 --- a/definitions/grib1/name.def +++ b/definitions/grib1/name.def @@ -137,8 +137,8 @@ table2Version = 3 ; indicatorOfParameter = 81 ; } -#Surface roughness -'Surface roughness' = { +#Surface roughness (climatological) +'Surface roughness (climatological)' = { table2Version = 3 ; indicatorOfParameter = 83 ; } @@ -833,8 +833,8 @@ table2Version = 2 ; indicatorOfParameter = 81 ; } -#Surface roughness -'Surface roughness' = { +#Surface roughness (climatological) +'Surface roughness (climatological)' = { table2Version = 2 ; indicatorOfParameter = 83 ; } @@ -1514,8 +1514,8 @@ table2Version = 1 ; indicatorOfParameter = 81 ; } -#Surface roughness -'Surface roughness' = { +#Surface roughness (climatological) +'Surface roughness (climatological)' = { table2Version = 1 ; indicatorOfParameter = 83 ; } diff --git a/definitions/grib1/paramId.def b/definitions/grib1/paramId.def index 857b7f6c2..677e7fd4d 100644 --- a/definitions/grib1/paramId.def +++ b/definitions/grib1/paramId.def @@ -137,7 +137,7 @@ table2Version = 3 ; indicatorOfParameter = 81 ; } -#Surface roughness +#Surface roughness (climatological) '173' = { table2Version = 3 ; indicatorOfParameter = 83 ; @@ -833,7 +833,7 @@ table2Version = 2 ; indicatorOfParameter = 81 ; } -#Surface roughness +#Surface roughness (climatological) '173' = { table2Version = 2 ; indicatorOfParameter = 83 ; @@ -1514,7 +1514,7 @@ table2Version = 1 ; indicatorOfParameter = 81 ; } -#Surface roughness +#Surface roughness (climatological) '173' = { table2Version = 1 ; indicatorOfParameter = 83 ; diff --git a/definitions/grib1/shortName.def b/definitions/grib1/shortName.def index 5be89c77d..b496bbca7 100644 --- a/definitions/grib1/shortName.def +++ b/definitions/grib1/shortName.def @@ -137,7 +137,7 @@ table2Version = 3 ; indicatorOfParameter = 81 ; } -#Surface roughness +#Surface roughness (climatological) 'sr' = { table2Version = 3 ; indicatorOfParameter = 83 ; @@ -833,7 +833,7 @@ table2Version = 2 ; indicatorOfParameter = 81 ; } -#Surface roughness +#Surface roughness (climatological) 'sr' = { table2Version = 2 ; indicatorOfParameter = 83 ; @@ -1514,7 +1514,7 @@ table2Version = 1 ; indicatorOfParameter = 81 ; } -#Surface roughness +#Surface roughness (climatological) 'sr' = { table2Version = 1 ; indicatorOfParameter = 83 ; diff --git a/definitions/grib1/units.def b/definitions/grib1/units.def index 59c5f85c2..76d4b5cb2 100644 --- a/definitions/grib1/units.def +++ b/definitions/grib1/units.def @@ -137,7 +137,7 @@ table2Version = 3 ; indicatorOfParameter = 81 ; } -#Surface roughness +#Surface roughness (climatological) 'm' = { table2Version = 3 ; indicatorOfParameter = 83 ; @@ -833,7 +833,7 @@ table2Version = 2 ; indicatorOfParameter = 81 ; } -#Surface roughness +#Surface roughness (climatological) 'm' = { table2Version = 2 ; indicatorOfParameter = 83 ; @@ -1514,7 +1514,7 @@ table2Version = 1 ; indicatorOfParameter = 81 ; } -#Surface roughness +#Surface roughness (climatological) 'm' = { table2Version = 1 ; indicatorOfParameter = 83 ; diff --git a/definitions/grib2/cfName.def b/definitions/grib2/cfName.def index 4741e9a04..5eda6ba1c 100644 --- a/definitions/grib2/cfName.def +++ b/definitions/grib2/cfName.def @@ -29,6 +29,14 @@ typeOfFirstFixedSurface = 1 ; typeOfStatisticalProcessing = 1 ; } +#Surface roughness (climatological) +'surface_roughness_length' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 1 ; + typeOfFirstFixedSurface = 1 ; + typeOfGeneratingProcess = 9 ; + } #Top net short-wave (solar) radiation 'toa_net_upward_shortwave_flux' = { discipline = 0 ; @@ -345,12 +353,6 @@ parameterNumber = 0 ; typeOfFirstFixedSurface = 1 ; } -#Surface roughness -'surface_roughness_length' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 1 ; - } #Surface net short-wave (solar) radiation 'surface_net_downward_shortwave_flux' = { discipline = 0 ; diff --git a/definitions/grib2/cfVarName.def b/definitions/grib2/cfVarName.def index 152644647..7f73e709e 100644 --- a/definitions/grib2/cfVarName.def +++ b/definitions/grib2/cfVarName.def @@ -253,6 +253,14 @@ typeOfFirstFixedSurface = 1 ; typeOfStatisticalProcessing = 1 ; } +#Surface roughness (climatological) +'sr' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 1 ; + typeOfFirstFixedSurface = 1 ; + typeOfGeneratingProcess = 9 ; + } #Surface long-wave (thermal) radiation downwards 'strd' = { discipline = 0 ; @@ -6468,12 +6476,6 @@ parameterNumber = 0 ; typeOfFirstFixedSurface = 1 ; } -#Surface roughness -'sr' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 1 ; - } #Surface net short-wave (solar) radiation 'ssr' = { discipline = 0 ; diff --git a/definitions/grib2/localConcepts/uerra/cfName.def b/definitions/grib2/localConcepts/uerra/cfName.def index afc926061..dfa9f8925 100644 --- a/definitions/grib2/localConcepts/uerra/cfName.def +++ b/definitions/grib2/localConcepts/uerra/cfName.def @@ -1,4 +1,10 @@ # Automatically generated by ./create_def.pl, do not edit +#Surface roughness (climatological) +'surface_roughness_length' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 1 ; + } #Top net short-wave (solar) radiation 'toa_net_upward_shortwave_flux' = { discipline = 0 ; diff --git a/definitions/grib2/localConcepts/uerra/cfVarName.def b/definitions/grib2/localConcepts/uerra/cfVarName.def index a1442fa9c..21a587397 100644 --- a/definitions/grib2/localConcepts/uerra/cfVarName.def +++ b/definitions/grib2/localConcepts/uerra/cfVarName.def @@ -61,6 +61,12 @@ scaledValueOfFirstFixedSurface = 15 ; scaleFactorOfFirstFixedSurface = 1 ; } +#Surface roughness (climatological) +'sr' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 1 ; + } #Top net short-wave (solar) radiation 'tsr' = { discipline = 0 ; diff --git a/definitions/grib2/localConcepts/uerra/name.def b/definitions/grib2/localConcepts/uerra/name.def index 8367adada..9c5d313c7 100644 --- a/definitions/grib2/localConcepts/uerra/name.def +++ b/definitions/grib2/localConcepts/uerra/name.def @@ -61,6 +61,12 @@ scaledValueOfFirstFixedSurface = 15 ; scaleFactorOfFirstFixedSurface = 1 ; } +#Surface roughness (climatological) +'Surface roughness (climatological)' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 1 ; + } #Top net short-wave (solar) radiation 'Top net short-wave (solar) radiation' = { discipline = 0 ; diff --git a/definitions/grib2/localConcepts/uerra/paramId.def b/definitions/grib2/localConcepts/uerra/paramId.def index 58df0dc39..f74d921a3 100644 --- a/definitions/grib2/localConcepts/uerra/paramId.def +++ b/definitions/grib2/localConcepts/uerra/paramId.def @@ -61,6 +61,12 @@ scaledValueOfFirstFixedSurface = 15 ; scaleFactorOfFirstFixedSurface = 1 ; } +#Surface roughness (climatological) +'173' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 1 ; + } #Top net short-wave (solar) radiation '178' = { discipline = 0 ; diff --git a/definitions/grib2/localConcepts/uerra/shortName.def b/definitions/grib2/localConcepts/uerra/shortName.def index 1c9744b19..2c2edb7e3 100644 --- a/definitions/grib2/localConcepts/uerra/shortName.def +++ b/definitions/grib2/localConcepts/uerra/shortName.def @@ -61,6 +61,12 @@ scaledValueOfFirstFixedSurface = 15 ; scaleFactorOfFirstFixedSurface = 1 ; } +#Surface roughness (climatological) +'sr' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 1 ; + } #Top net short-wave (solar) radiation 'tsr' = { discipline = 0 ; diff --git a/definitions/grib2/localConcepts/uerra/units.def b/definitions/grib2/localConcepts/uerra/units.def index 981fa77a6..94a2b45f4 100644 --- a/definitions/grib2/localConcepts/uerra/units.def +++ b/definitions/grib2/localConcepts/uerra/units.def @@ -61,6 +61,12 @@ scaledValueOfFirstFixedSurface = 15 ; scaleFactorOfFirstFixedSurface = 1 ; } +#Surface roughness (climatological) +'m' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 1 ; + } #Top net short-wave (solar) radiation 'J m**-2' = { discipline = 0 ; diff --git a/definitions/grib2/name.def b/definitions/grib2/name.def index 4ab0d1c78..608443fb9 100644 --- a/definitions/grib2/name.def +++ b/definitions/grib2/name.def @@ -253,6 +253,14 @@ typeOfFirstFixedSurface = 1 ; typeOfStatisticalProcessing = 1 ; } +#Surface roughness (climatological) +'Surface roughness (climatological)' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 1 ; + typeOfFirstFixedSurface = 1 ; + typeOfGeneratingProcess = 9 ; + } #Surface long-wave (thermal) radiation downwards 'Surface long-wave (thermal) radiation downwards' = { discipline = 0 ; @@ -6468,12 +6476,6 @@ parameterNumber = 0 ; typeOfFirstFixedSurface = 1 ; } -#Surface roughness -'Surface roughness' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 1 ; - } #Surface net short-wave (solar) radiation 'Surface net short-wave (solar) radiation' = { discipline = 0 ; diff --git a/definitions/grib2/paramId.def b/definitions/grib2/paramId.def index c73115967..96acaa1be 100644 --- a/definitions/grib2/paramId.def +++ b/definitions/grib2/paramId.def @@ -253,6 +253,14 @@ typeOfFirstFixedSurface = 1 ; typeOfStatisticalProcessing = 1 ; } +#Surface roughness (climatological) +'173' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 1 ; + typeOfFirstFixedSurface = 1 ; + typeOfGeneratingProcess = 9 ; + } #Surface long-wave (thermal) radiation downwards '175' = { discipline = 0 ; @@ -6468,12 +6476,6 @@ parameterNumber = 0 ; typeOfFirstFixedSurface = 1 ; } -#Surface roughness -'173' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 1 ; - } #Surface net short-wave (solar) radiation '176' = { discipline = 0 ; diff --git a/definitions/grib2/shortName.def b/definitions/grib2/shortName.def index 0121e473c..4546e5912 100644 --- a/definitions/grib2/shortName.def +++ b/definitions/grib2/shortName.def @@ -253,6 +253,14 @@ typeOfFirstFixedSurface = 1 ; typeOfStatisticalProcessing = 1 ; } +#Surface roughness (climatological) +'sr' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 1 ; + typeOfFirstFixedSurface = 1 ; + typeOfGeneratingProcess = 9 ; + } #Surface long-wave (thermal) radiation downwards 'strd' = { discipline = 0 ; @@ -6468,12 +6476,6 @@ parameterNumber = 0 ; typeOfFirstFixedSurface = 1 ; } -#Surface roughness -'sr' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 1 ; - } #Surface net short-wave (solar) radiation 'ssr' = { discipline = 0 ; diff --git a/definitions/grib2/units.def b/definitions/grib2/units.def index e7a8459fe..9a53c100a 100644 --- a/definitions/grib2/units.def +++ b/definitions/grib2/units.def @@ -253,6 +253,14 @@ typeOfFirstFixedSurface = 1 ; typeOfStatisticalProcessing = 1 ; } +#Surface roughness (climatological) +'m' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 1 ; + typeOfFirstFixedSurface = 1 ; + typeOfGeneratingProcess = 9 ; + } #Surface long-wave (thermal) radiation downwards 'J m**-2' = { discipline = 0 ; @@ -6468,12 +6476,6 @@ parameterNumber = 0 ; typeOfFirstFixedSurface = 1 ; } -#Surface roughness -'m' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 1 ; - } #Surface net short-wave (solar) radiation 'J m**-2' = { discipline = 0 ; From 04cef0bbbbc31accbe242885ba3543b0b7708ab9 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 17 May 2023 12:57:15 +0000 Subject: [PATCH 168/378] ECC-1587: Legacy encoding for 174 --- definitions/grib2/localConcepts/ecmf/cfName.legacy.def | 6 ++++++ definitions/grib2/localConcepts/ecmf/cfVarName.legacy.def | 6 ++++++ definitions/grib2/localConcepts/ecmf/name.legacy.def | 6 ++++++ definitions/grib2/localConcepts/ecmf/paramId.legacy.def | 6 ++++++ definitions/grib2/localConcepts/ecmf/shortName.legacy.def | 6 ++++++ definitions/grib2/localConcepts/ecmf/units.legacy.def | 6 ++++++ 6 files changed, 36 insertions(+) diff --git a/definitions/grib2/localConcepts/ecmf/cfName.legacy.def b/definitions/grib2/localConcepts/ecmf/cfName.legacy.def index 6ef97fd7f..300e564e7 100644 --- a/definitions/grib2/localConcepts/ecmf/cfName.legacy.def +++ b/definitions/grib2/localConcepts/ecmf/cfName.legacy.def @@ -136,3 +136,9 @@ parameterCategory = 128 ; parameterNumber = 182 ; } +#Albedo +'surface_albedo' = { + discipline = 192 ; + parameterCategory = 128 ; + parameterNumber = 174 ; +} diff --git a/definitions/grib2/localConcepts/ecmf/cfVarName.legacy.def b/definitions/grib2/localConcepts/ecmf/cfVarName.legacy.def index f71f2f665..6c9200464 100644 --- a/definitions/grib2/localConcepts/ecmf/cfVarName.legacy.def +++ b/definitions/grib2/localConcepts/ecmf/cfVarName.legacy.def @@ -673,3 +673,9 @@ parameterNumber = 194 ; typeOfStatisticalProcessing = 1 ; } +#Albedo +'al' = { + discipline = 192 ; + parameterCategory = 128 ; + parameterNumber = 174 ; +} diff --git a/definitions/grib2/localConcepts/ecmf/name.legacy.def b/definitions/grib2/localConcepts/ecmf/name.legacy.def index 1540241d5..4a95a2d69 100644 --- a/definitions/grib2/localConcepts/ecmf/name.legacy.def +++ b/definitions/grib2/localConcepts/ecmf/name.legacy.def @@ -673,3 +673,9 @@ parameterNumber = 194 ; typeOfStatisticalProcessing = 1 ; } +#Albedo +'Albedo' = { + discipline = 192 ; + parameterCategory = 128 ; + parameterNumber = 174 ; +} diff --git a/definitions/grib2/localConcepts/ecmf/paramId.legacy.def b/definitions/grib2/localConcepts/ecmf/paramId.legacy.def index f5751d19a..22a852d28 100644 --- a/definitions/grib2/localConcepts/ecmf/paramId.legacy.def +++ b/definitions/grib2/localConcepts/ecmf/paramId.legacy.def @@ -673,3 +673,9 @@ parameterNumber = 194 ; typeOfStatisticalProcessing = 1 ; } +#Albedo +'174' = { + discipline = 192 ; + parameterCategory = 128 ; + parameterNumber = 174 ; +} diff --git a/definitions/grib2/localConcepts/ecmf/shortName.legacy.def b/definitions/grib2/localConcepts/ecmf/shortName.legacy.def index b304b23b1..88e9c11d8 100644 --- a/definitions/grib2/localConcepts/ecmf/shortName.legacy.def +++ b/definitions/grib2/localConcepts/ecmf/shortName.legacy.def @@ -673,3 +673,9 @@ parameterNumber = 194 ; typeOfStatisticalProcessing = 1 ; } +#Albedo +'al' = { + discipline = 192 ; + parameterCategory = 128 ; + parameterNumber = 174 ; +} diff --git a/definitions/grib2/localConcepts/ecmf/units.legacy.def b/definitions/grib2/localConcepts/ecmf/units.legacy.def index 95aef0e2d..e0f3f39a7 100644 --- a/definitions/grib2/localConcepts/ecmf/units.legacy.def +++ b/definitions/grib2/localConcepts/ecmf/units.legacy.def @@ -673,3 +673,9 @@ parameterNumber = 194 ; typeOfStatisticalProcessing = 1 ; } +#Albedo +'(0 - 1)' = { + discipline = 192 ; + parameterCategory = 128 ; + parameterNumber = 174 ; +} From 45588d6da18880bca298ade2175edf7b07e80c90 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 17 May 2023 13:50:37 +0000 Subject: [PATCH 169/378] ECC-1587: GRIB2: Updating climatological discipline 192 parameter encodings (part 02) --- definitions/grib1/localConcepts/ecmf/cfName.def | 6 +++--- definitions/grib1/localConcepts/ecmf/cfVarName.def | 6 +++--- definitions/grib1/localConcepts/ecmf/name.def | 12 ++++++------ definitions/grib1/localConcepts/ecmf/paramId.def | 6 +++--- definitions/grib1/localConcepts/ecmf/shortName.def | 6 +++--- definitions/grib1/localConcepts/ecmf/units.def | 6 +++--- definitions/grib2/localConcepts/ecmf/cfName.def | 10 ++++++---- definitions/grib2/localConcepts/ecmf/cfVarName.def | 10 ++++++---- definitions/grib2/localConcepts/ecmf/name.def | 12 +++++++----- definitions/grib2/localConcepts/ecmf/paramId.def | 10 ++++++---- definitions/grib2/localConcepts/ecmf/shortName.def | 10 ++++++---- definitions/grib2/localConcepts/ecmf/units.def | 10 ++++++---- 12 files changed, 58 insertions(+), 46 deletions(-) diff --git a/definitions/grib1/localConcepts/ecmf/cfName.def b/definitions/grib1/localConcepts/ecmf/cfName.def index ff6a9fd47..9868daef7 100644 --- a/definitions/grib1/localConcepts/ecmf/cfName.def +++ b/definitions/grib1/localConcepts/ecmf/cfName.def @@ -504,17 +504,17 @@ table2Version = 160 ; indicatorOfParameter = 173 ; } -#Albedo +#Albedo (climatological) 'surface_albedo' = { table2Version = 128 ; indicatorOfParameter = 174 ; } -#Albedo +#Albedo (climatological) 'surface_albedo' = { table2Version = 160 ; indicatorOfParameter = 174 ; } -#Albedo +#Albedo (climatological) 'surface_albedo' = { table2Version = 190 ; indicatorOfParameter = 174 ; diff --git a/definitions/grib1/localConcepts/ecmf/cfVarName.def b/definitions/grib1/localConcepts/ecmf/cfVarName.def index 5832c5429..af9714cd5 100644 --- a/definitions/grib1/localConcepts/ecmf/cfVarName.def +++ b/definitions/grib1/localConcepts/ecmf/cfVarName.def @@ -1364,17 +1364,17 @@ table2Version = 160 ; indicatorOfParameter = 173 ; } -#Albedo +#Albedo (climatological) 'al' = { table2Version = 128 ; indicatorOfParameter = 174 ; } -#Albedo +#Albedo (climatological) 'al' = { table2Version = 160 ; indicatorOfParameter = 174 ; } -#Albedo +#Albedo (climatological) 'al' = { table2Version = 190 ; indicatorOfParameter = 174 ; diff --git a/definitions/grib1/localConcepts/ecmf/name.def b/definitions/grib1/localConcepts/ecmf/name.def index 81fdeaa56..d83ad71cd 100644 --- a/definitions/grib1/localConcepts/ecmf/name.def +++ b/definitions/grib1/localConcepts/ecmf/name.def @@ -1364,18 +1364,18 @@ table2Version = 160 ; indicatorOfParameter = 173 ; } -#Albedo -'Albedo' = { +#Albedo (climatological) +'Albedo (climatological)' = { table2Version = 128 ; indicatorOfParameter = 174 ; } -#Albedo -'Albedo' = { +#Albedo (climatological) +'Albedo (climatological)' = { table2Version = 160 ; indicatorOfParameter = 174 ; } -#Albedo -'Albedo' = { +#Albedo (climatological) +'Albedo (climatological)' = { table2Version = 190 ; indicatorOfParameter = 174 ; } diff --git a/definitions/grib1/localConcepts/ecmf/paramId.def b/definitions/grib1/localConcepts/ecmf/paramId.def index 3d98a979c..e086b8955 100644 --- a/definitions/grib1/localConcepts/ecmf/paramId.def +++ b/definitions/grib1/localConcepts/ecmf/paramId.def @@ -1364,17 +1364,17 @@ table2Version = 160 ; indicatorOfParameter = 173 ; } -#Albedo +#Albedo (climatological) '174' = { table2Version = 128 ; indicatorOfParameter = 174 ; } -#Albedo +#Albedo (climatological) '174' = { table2Version = 160 ; indicatorOfParameter = 174 ; } -#Albedo +#Albedo (climatological) '174' = { table2Version = 190 ; indicatorOfParameter = 174 ; diff --git a/definitions/grib1/localConcepts/ecmf/shortName.def b/definitions/grib1/localConcepts/ecmf/shortName.def index 8794bfdf3..a94f5a345 100644 --- a/definitions/grib1/localConcepts/ecmf/shortName.def +++ b/definitions/grib1/localConcepts/ecmf/shortName.def @@ -1364,17 +1364,17 @@ table2Version = 160 ; indicatorOfParameter = 173 ; } -#Albedo +#Albedo (climatological) 'al' = { table2Version = 128 ; indicatorOfParameter = 174 ; } -#Albedo +#Albedo (climatological) 'al' = { table2Version = 160 ; indicatorOfParameter = 174 ; } -#Albedo +#Albedo (climatological) 'al' = { table2Version = 190 ; indicatorOfParameter = 174 ; diff --git a/definitions/grib1/localConcepts/ecmf/units.def b/definitions/grib1/localConcepts/ecmf/units.def index deecc99c2..3662f9012 100644 --- a/definitions/grib1/localConcepts/ecmf/units.def +++ b/definitions/grib1/localConcepts/ecmf/units.def @@ -1364,17 +1364,17 @@ table2Version = 160 ; indicatorOfParameter = 173 ; } -#Albedo +#Albedo (climatological) '(0 - 1)' = { table2Version = 128 ; indicatorOfParameter = 174 ; } -#Albedo +#Albedo (climatological) '(0 - 1)' = { table2Version = 160 ; indicatorOfParameter = 174 ; } -#Albedo +#Albedo (climatological) '(0 - 1)' = { table2Version = 190 ; indicatorOfParameter = 174 ; diff --git a/definitions/grib2/localConcepts/ecmf/cfName.def b/definitions/grib2/localConcepts/ecmf/cfName.def index aba0e537f..f60b522c8 100644 --- a/definitions/grib2/localConcepts/ecmf/cfName.def +++ b/definitions/grib2/localConcepts/ecmf/cfName.def @@ -60,11 +60,13 @@ typeOfFirstFixedSurface = 1 ; typeOfSecondFixedSurface = 8 ; } -#Albedo +#Albedo (climatological) 'surface_albedo' = { - discipline = 192 ; - parameterCategory = 128 ; - parameterNumber = 174 ; + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 19 ; + parameterNumber = 193 ; + typeOfGeneratingProcess = 9 ; } #Evaporation 'lwe_thickness_of_water_evaporation_amount' = { diff --git a/definitions/grib2/localConcepts/ecmf/cfVarName.def b/definitions/grib2/localConcepts/ecmf/cfVarName.def index 52c9359cf..a4713b124 100644 --- a/definitions/grib2/localConcepts/ecmf/cfVarName.def +++ b/definitions/grib2/localConcepts/ecmf/cfVarName.def @@ -761,11 +761,13 @@ parameterCategory = 128 ; parameterNumber = 171 ; } -#Albedo +#Albedo (climatological) 'al' = { - discipline = 192 ; - parameterCategory = 128 ; - parameterNumber = 174 ; + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 19 ; + parameterNumber = 193 ; + typeOfGeneratingProcess = 9 ; } #Evaporation 'e' = { diff --git a/definitions/grib2/localConcepts/ecmf/name.def b/definitions/grib2/localConcepts/ecmf/name.def index 53186a73d..7de6abed0 100644 --- a/definitions/grib2/localConcepts/ecmf/name.def +++ b/definitions/grib2/localConcepts/ecmf/name.def @@ -761,11 +761,13 @@ parameterCategory = 128 ; parameterNumber = 171 ; } -#Albedo -'Albedo' = { - discipline = 192 ; - parameterCategory = 128 ; - parameterNumber = 174 ; +#Albedo (climatological) +'Albedo (climatological)' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 19 ; + parameterNumber = 193 ; + typeOfGeneratingProcess = 9 ; } #Evaporation 'Evaporation' = { diff --git a/definitions/grib2/localConcepts/ecmf/paramId.def b/definitions/grib2/localConcepts/ecmf/paramId.def index 8f80a38b6..5bcea4953 100644 --- a/definitions/grib2/localConcepts/ecmf/paramId.def +++ b/definitions/grib2/localConcepts/ecmf/paramId.def @@ -761,11 +761,13 @@ parameterCategory = 128 ; parameterNumber = 171 ; } -#Albedo +#Albedo (climatological) '174' = { - discipline = 192 ; - parameterCategory = 128 ; - parameterNumber = 174 ; + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 19 ; + parameterNumber = 193 ; + typeOfGeneratingProcess = 9 ; } #Evaporation '182' = { diff --git a/definitions/grib2/localConcepts/ecmf/shortName.def b/definitions/grib2/localConcepts/ecmf/shortName.def index fea76c318..c4f2e6075 100644 --- a/definitions/grib2/localConcepts/ecmf/shortName.def +++ b/definitions/grib2/localConcepts/ecmf/shortName.def @@ -761,11 +761,13 @@ parameterCategory = 128 ; parameterNumber = 171 ; } -#Albedo +#Albedo (climatological) 'al' = { - discipline = 192 ; - parameterCategory = 128 ; - parameterNumber = 174 ; + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 19 ; + parameterNumber = 193 ; + typeOfGeneratingProcess = 9 ; } #Evaporation 'e' = { diff --git a/definitions/grib2/localConcepts/ecmf/units.def b/definitions/grib2/localConcepts/ecmf/units.def index b4d793c02..30eec8824 100644 --- a/definitions/grib2/localConcepts/ecmf/units.def +++ b/definitions/grib2/localConcepts/ecmf/units.def @@ -761,11 +761,13 @@ parameterCategory = 128 ; parameterNumber = 171 ; } -#Albedo +#Albedo (climatological) '(0 - 1)' = { - discipline = 192 ; - parameterCategory = 128 ; - parameterNumber = 174 ; + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 19 ; + parameterNumber = 193 ; + typeOfGeneratingProcess = 9 ; } #Evaporation 'm of water equivalent' = { From b3aedc8a80d273abaa436d60099a6ebd9baab57a Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 18 May 2023 10:58:12 +0000 Subject: [PATCH 170/378] ECC-1587: GRIB2: Updating climatological discipline 192 parameter encodings (part 03) --- .../localConcepts/ecmf/cfVarName.legacy.def | 72 +++++++++++++++++++ .../grib2/localConcepts/ecmf/name.legacy.def | 72 +++++++++++++++++++ .../localConcepts/ecmf/paramId.legacy.def | 72 +++++++++++++++++++ .../localConcepts/ecmf/shortName.legacy.def | 72 +++++++++++++++++++ .../grib2/localConcepts/ecmf/units.legacy.def | 72 +++++++++++++++++++ 5 files changed, 360 insertions(+) diff --git a/definitions/grib2/localConcepts/ecmf/cfVarName.legacy.def b/definitions/grib2/localConcepts/ecmf/cfVarName.legacy.def index 6c9200464..1a811b956 100644 --- a/definitions/grib2/localConcepts/ecmf/cfVarName.legacy.def +++ b/definitions/grib2/localConcepts/ecmf/cfVarName.legacy.def @@ -679,3 +679,75 @@ parameterCategory = 128 ; parameterNumber = 174 ; } +#UV visible albedo for direct radiation +'aluvp' = { + discipline = 192 ; + parameterCategory = 128 ; + parameterNumber = 15 ; +} +#UV visible albedo for diffuse radiation +'aluvd' = { + discipline = 192 ; + parameterCategory = 128 ; + parameterNumber = 16 ; +} +#Near IR albedo for direct radiation +'alnip' = { + discipline = 192 ; + parameterCategory = 128 ; + parameterNumber = 17 ; +} +#Near IR albedo for diffuse radiation +'alnid' = { + discipline = 192 ; + parameterCategory = 128 ; + parameterNumber = 18 ; +} +#Standard deviation of filtered subgrid orography +'sdfor' = { + discipline = 192 ; + parameterCategory = 128 ; + parameterNumber = 74 ; +} +#Logarithm of surface roughness length for heat +'lsrh' = { + discipline = 192 ; + parameterCategory = 128 ; + parameterNumber = 234 ; +} +#UV visible albedo for direct radiation, isotropic component +'aluvpi' = { + discipline = 192 ; + parameterCategory = 210 ; + parameterNumber = 186 ; +} +#UV visible albedo for direct radiation, volumetric component +'aluvpv' = { + discipline = 192 ; + parameterCategory = 210 ; + parameterNumber = 187 ; +} +#UV visible albedo for direct radiation, geometric component +'aluvpg' = { + discipline = 192 ; + parameterCategory = 210 ; + parameterNumber = 188 ; +} +#Near IR albedo for direct radiation, isotropic component +'alnipi' = { + discipline = 192 ; + parameterCategory = 210 ; + parameterNumber = 189 ; +} +#Near IR albedo for direct radiation, volumetric component +'alnipv' = { + discipline = 192 ; + parameterCategory = 210 ; + parameterNumber = 190 ; +} +#Near IR albedo for direct radiation, geometric component +'alnipg' = { + discipline = 192 ; + parameterCategory = 210 ; + parameterNumber = 191 ; +} diff --git a/definitions/grib2/localConcepts/ecmf/name.legacy.def b/definitions/grib2/localConcepts/ecmf/name.legacy.def index 4a95a2d69..8e3897713 100644 --- a/definitions/grib2/localConcepts/ecmf/name.legacy.def +++ b/definitions/grib2/localConcepts/ecmf/name.legacy.def @@ -679,3 +679,75 @@ parameterCategory = 128 ; parameterNumber = 174 ; } +#UV visible albedo for direct radiation +'UV visible albedo for direct radiation' = { + discipline = 192 ; + parameterCategory = 128 ; + parameterNumber = 15 ; +} +#UV visible albedo for diffuse radiation +'UV visible albedo for diffuse radiation' = { + discipline = 192 ; + parameterCategory = 128 ; + parameterNumber = 16 ; +} +#Near IR albedo for direct radiation +'Near IR albedo for direct radiation' = { + discipline = 192 ; + parameterCategory = 128 ; + parameterNumber = 17 ; +} +#Near IR albedo for diffuse radiation +'Near IR albedo for diffuse radiation' = { + discipline = 192 ; + parameterCategory = 128 ; + parameterNumber = 18 ; +} +#Standard deviation of filtered subgrid orography +'Standard deviation of filtered subgrid orography' = { + discipline = 192 ; + parameterCategory = 128 ; + parameterNumber = 74 ; +} +#Logarithm of surface roughness length for heat +'Logarithm of surface roughness length for heat' = { + discipline = 192 ; + parameterCategory = 128 ; + parameterNumber = 234 ; +} +#UV visible albedo for direct radiation, isotropic component +'UV visible albedo for direct radiation, isotropic component ' = { + discipline = 192 ; + parameterCategory = 210 ; + parameterNumber = 186 ; +} +#UV visible albedo for direct radiation, volumetric component +'UV visible albedo for direct radiation, volumetric component ' = { + discipline = 192 ; + parameterCategory = 210 ; + parameterNumber = 187 ; +} +#UV visible albedo for direct radiation, geometric component +'UV visible albedo for direct radiation, geometric component ' = { + discipline = 192 ; + parameterCategory = 210 ; + parameterNumber = 188 ; +} +#Near IR albedo for direct radiation, isotropic component +'Near IR albedo for direct radiation, isotropic component ' = { + discipline = 192 ; + parameterCategory = 210 ; + parameterNumber = 189 ; +} +#Near IR albedo for direct radiation, volumetric component +'Near IR albedo for direct radiation, volumetric component' = { + discipline = 192 ; + parameterCategory = 210 ; + parameterNumber = 190 ; +} +#Near IR albedo for direct radiation, geometric component +'Near IR albedo for direct radiation, geometric component ' = { + discipline = 192 ; + parameterCategory = 210 ; + parameterNumber = 191 ; +} diff --git a/definitions/grib2/localConcepts/ecmf/paramId.legacy.def b/definitions/grib2/localConcepts/ecmf/paramId.legacy.def index 22a852d28..58a9fb502 100644 --- a/definitions/grib2/localConcepts/ecmf/paramId.legacy.def +++ b/definitions/grib2/localConcepts/ecmf/paramId.legacy.def @@ -679,3 +679,75 @@ parameterCategory = 128 ; parameterNumber = 174 ; } +#UV visible albedo for direct radiation +'15' = { + discipline = 192 ; + parameterCategory = 128 ; + parameterNumber = 15 ; +} +#UV visible albedo for diffuse radiation +'16' = { + discipline = 192 ; + parameterCategory = 128 ; + parameterNumber = 16 ; +} +#Near IR albedo for direct radiation +'17' = { + discipline = 192 ; + parameterCategory = 128 ; + parameterNumber = 17 ; +} +#Near IR albedo for diffuse radiation +'18' = { + discipline = 192 ; + parameterCategory = 128 ; + parameterNumber = 18 ; +} +#Standard deviation of filtered subgrid orography +'74' = { + discipline = 192 ; + parameterCategory = 128 ; + parameterNumber = 74 ; +} +#Logarithm of surface roughness length for heat +'234' = { + discipline = 192 ; + parameterCategory = 128 ; + parameterNumber = 234 ; +} +#UV visible albedo for direct radiation, isotropic component +'210186' = { + discipline = 192 ; + parameterCategory = 210 ; + parameterNumber = 186 ; +} +#UV visible albedo for direct radiation, volumetric component +'210187' = { + discipline = 192 ; + parameterCategory = 210 ; + parameterNumber = 187 ; +} +#UV visible albedo for direct radiation, geometric component +'210188' = { + discipline = 192 ; + parameterCategory = 210 ; + parameterNumber = 188 ; +} +#Near IR albedo for direct radiation, isotropic component +'210189' = { + discipline = 192 ; + parameterCategory = 210 ; + parameterNumber = 189 ; +} +#Near IR albedo for direct radiation, volumetric component +'210190' = { + discipline = 192 ; + parameterCategory = 210 ; + parameterNumber = 190 ; +} +#Near IR albedo for direct radiation, geometric component +'210191' = { + discipline = 192 ; + parameterCategory = 210 ; + parameterNumber = 191 ; +} diff --git a/definitions/grib2/localConcepts/ecmf/shortName.legacy.def b/definitions/grib2/localConcepts/ecmf/shortName.legacy.def index 88e9c11d8..2d2c52241 100644 --- a/definitions/grib2/localConcepts/ecmf/shortName.legacy.def +++ b/definitions/grib2/localConcepts/ecmf/shortName.legacy.def @@ -679,3 +679,75 @@ parameterCategory = 128 ; parameterNumber = 174 ; } +#UV visible albedo for direct radiation +'aluvp' = { + discipline = 192 ; + parameterCategory = 128 ; + parameterNumber = 15 ; +} +#UV visible albedo for diffuse radiation +'aluvd' = { + discipline = 192 ; + parameterCategory = 128 ; + parameterNumber = 16 ; +} +#Near IR albedo for direct radiation +'alnip' = { + discipline = 192 ; + parameterCategory = 128 ; + parameterNumber = 17 ; +} +#Near IR albedo for diffuse radiation +'alnid' = { + discipline = 192 ; + parameterCategory = 128 ; + parameterNumber = 18 ; +} +#Standard deviation of filtered subgrid orography +'sdfor' = { + discipline = 192 ; + parameterCategory = 128 ; + parameterNumber = 74 ; +} +#Logarithm of surface roughness length for heat +'lsrh' = { + discipline = 192 ; + parameterCategory = 128 ; + parameterNumber = 234 ; +} +#UV visible albedo for direct radiation, isotropic component +'aluvpi' = { + discipline = 192 ; + parameterCategory = 210 ; + parameterNumber = 186 ; +} +#UV visible albedo for direct radiation, volumetric component +'aluvpv' = { + discipline = 192 ; + parameterCategory = 210 ; + parameterNumber = 187 ; +} +#UV visible albedo for direct radiation, geometric component +'aluvpg' = { + discipline = 192 ; + parameterCategory = 210 ; + parameterNumber = 188 ; +} +#Near IR albedo for direct radiation, isotropic component +'alnipi' = { + discipline = 192 ; + parameterCategory = 210 ; + parameterNumber = 189 ; +} +#Near IR albedo for direct radiation, volumetric component +'alnipv' = { + discipline = 192 ; + parameterCategory = 210 ; + parameterNumber = 190 ; +} +#Near IR albedo for direct radiation, geometric component +'alnipg' = { + discipline = 192 ; + parameterCategory = 210 ; + parameterNumber = 191 ; +} diff --git a/definitions/grib2/localConcepts/ecmf/units.legacy.def b/definitions/grib2/localConcepts/ecmf/units.legacy.def index e0f3f39a7..ba1c54c3d 100644 --- a/definitions/grib2/localConcepts/ecmf/units.legacy.def +++ b/definitions/grib2/localConcepts/ecmf/units.legacy.def @@ -679,3 +679,75 @@ parameterCategory = 128 ; parameterNumber = 174 ; } +#UV visible albedo for direct radiation +'(0 - 1)' = { + discipline = 192 ; + parameterCategory = 128 ; + parameterNumber = 15 ; +} +#UV visible albedo for diffuse radiation +'(0 - 1)' = { + discipline = 192 ; + parameterCategory = 128 ; + parameterNumber = 16 ; +} +#Near IR albedo for direct radiation +'(0 - 1)' = { + discipline = 192 ; + parameterCategory = 128 ; + parameterNumber = 17 ; +} +#Near IR albedo for diffuse radiation +'(0 - 1)' = { + discipline = 192 ; + parameterCategory = 128 ; + parameterNumber = 18 ; +} +#Standard deviation of filtered subgrid orography +'m' = { + discipline = 192 ; + parameterCategory = 128 ; + parameterNumber = 74 ; +} +#Logarithm of surface roughness length for heat +'~' = { + discipline = 192 ; + parameterCategory = 128 ; + parameterNumber = 234 ; +} +#UV visible albedo for direct radiation, isotropic component +'(0 - 1)' = { + discipline = 192 ; + parameterCategory = 210 ; + parameterNumber = 186 ; +} +#UV visible albedo for direct radiation, volumetric component +'(0 - 1)' = { + discipline = 192 ; + parameterCategory = 210 ; + parameterNumber = 187 ; +} +#UV visible albedo for direct radiation, geometric component +'(0 - 1)' = { + discipline = 192 ; + parameterCategory = 210 ; + parameterNumber = 188 ; +} +#Near IR albedo for direct radiation, isotropic component +'(0 - 1)' = { + discipline = 192 ; + parameterCategory = 210 ; + parameterNumber = 189 ; +} +#Near IR albedo for direct radiation, volumetric component +'(0 - 1)' = { + discipline = 192 ; + parameterCategory = 210 ; + parameterNumber = 190 ; +} +#Near IR albedo for direct radiation, geometric component +'(0 - 1)' = { + discipline = 192 ; + parameterCategory = 210 ; + parameterNumber = 191 ; +} From 8170237463897fe3226ab6006404d97204270d90 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 18 May 2023 11:58:33 +0000 Subject: [PATCH 171/378] ECC-1587: GRIB2: Updating climatological discipline 192 parameter encodings (part 04) --- .../grib1/localConcepts/ecmf/cfVarName.def | 26 ++-- definitions/grib1/localConcepts/ecmf/name.def | 52 +++---- .../grib1/localConcepts/ecmf/paramId.def | 26 ++-- .../grib1/localConcepts/ecmf/shortName.def | 26 ++-- .../grib1/localConcepts/ecmf/units.def | 30 ++-- definitions/grib2/cfVarName.def | 15 ++ .../grib2/localConcepts/ecmf/cfVarName.def | 112 ++++++++------- definitions/grib2/localConcepts/ecmf/name.def | 132 ++++++++++-------- .../grib2/localConcepts/ecmf/paramId.def | 112 ++++++++------- .../grib2/localConcepts/ecmf/shortName.def | 112 ++++++++------- .../grib2/localConcepts/ecmf/units.def | 112 ++++++++------- .../grib2/localConcepts/uerra/cfName.def | 1 + .../grib2/localConcepts/uerra/cfVarName.def | 1 + .../grib2/localConcepts/uerra/name.def | 1 + .../grib2/localConcepts/uerra/paramId.def | 1 + .../grib2/localConcepts/uerra/shortName.def | 1 + .../grib2/localConcepts/uerra/units.def | 1 + definitions/grib2/name.def | 15 ++ definitions/grib2/paramId.def | 15 ++ definitions/grib2/shortName.def | 15 ++ definitions/grib2/units.def | 15 ++ 21 files changed, 471 insertions(+), 350 deletions(-) diff --git a/definitions/grib1/localConcepts/ecmf/cfVarName.def b/definitions/grib1/localConcepts/ecmf/cfVarName.def index af9714cd5..617c35d56 100644 --- a/definitions/grib1/localConcepts/ecmf/cfVarName.def +++ b/definitions/grib1/localConcepts/ecmf/cfVarName.def @@ -124,22 +124,22 @@ table2Version = 128 ; indicatorOfParameter = 14 ; } -#UV visible albedo for direct radiation +#UV visible albedo for direct radiation (climatological) 'aluvp' = { table2Version = 128 ; indicatorOfParameter = 15 ; } -#UV visible albedo for diffuse radiation +#UV visible albedo for diffuse radiation (climatological) 'aluvd' = { table2Version = 128 ; indicatorOfParameter = 16 ; } -#Near IR albedo for direct radiation +#Near IR albedo for direct radiation (climatological) 'alnip' = { table2Version = 128 ; indicatorOfParameter = 17 ; } -#Near IR albedo for diffuse radiation +#Near IR albedo for diffuse radiation (climatological) 'alnid' = { table2Version = 128 ; indicatorOfParameter = 18 ; @@ -414,7 +414,7 @@ table2Version = 128 ; indicatorOfParameter = 73 ; } -#Standard deviation of filtered subgrid orography +#Standard deviation of filtered subgrid orography (climatological) 'sdfor' = { table2Version = 128 ; indicatorOfParameter = 74 ; @@ -1919,12 +1919,12 @@ table2Version = 160 ; indicatorOfParameter = 233 ; } -#Logarithm of surface roughness length for heat +#Logarithm of surface roughness length for heat (climatological) 'lsrh' = { table2Version = 128 ; indicatorOfParameter = 234 ; } -#Logarithm of surface roughness length for heat +#Logarithm of surface roughness length for heat (climatological) 'lsrh' = { table2Version = 160 ; indicatorOfParameter = 234 ; @@ -4024,32 +4024,32 @@ table2Version = 210 ; indicatorOfParameter = 120 ; } -#UV visible albedo for direct radiation, isotropic component +#UV visible albedo for direct radiation, isotropic component (climatological) 'aluvpi' = { table2Version = 210 ; indicatorOfParameter = 186 ; } -#UV visible albedo for direct radiation, volumetric component +#UV visible albedo for direct radiation, volumetric component (climatological) 'aluvpv' = { table2Version = 210 ; indicatorOfParameter = 187 ; } -#UV visible albedo for direct radiation, geometric component +#UV visible albedo for direct radiation, geometric component (climatological) 'aluvpg' = { table2Version = 210 ; indicatorOfParameter = 188 ; } -#Near IR albedo for direct radiation, isotropic component +#Near IR albedo for direct radiation, isotropic component (climatological) 'alnipi' = { table2Version = 210 ; indicatorOfParameter = 189 ; } -#Near IR albedo for direct radiation, volumetric component +#Near IR albedo for direct radiation, volumetric component (climatological) 'alnipv' = { table2Version = 210 ; indicatorOfParameter = 190 ; } -#Near IR albedo for direct radiation, geometric component +#Near IR albedo for direct radiation, geometric component (climatological) 'alnipg' = { table2Version = 210 ; indicatorOfParameter = 191 ; diff --git a/definitions/grib1/localConcepts/ecmf/name.def b/definitions/grib1/localConcepts/ecmf/name.def index d83ad71cd..771f63345 100644 --- a/definitions/grib1/localConcepts/ecmf/name.def +++ b/definitions/grib1/localConcepts/ecmf/name.def @@ -124,23 +124,23 @@ table2Version = 128 ; indicatorOfParameter = 14 ; } -#UV visible albedo for direct radiation -'UV visible albedo for direct radiation' = { +#UV visible albedo for direct radiation (climatological) +'UV visible albedo for direct radiation (climatological)' = { table2Version = 128 ; indicatorOfParameter = 15 ; } -#UV visible albedo for diffuse radiation -'UV visible albedo for diffuse radiation' = { +#UV visible albedo for diffuse radiation (climatological) +'UV visible albedo for diffuse radiation (climatological)' = { table2Version = 128 ; indicatorOfParameter = 16 ; } -#Near IR albedo for direct radiation -'Near IR albedo for direct radiation' = { +#Near IR albedo for direct radiation (climatological) +'Near IR albedo for direct radiation (climatological)' = { table2Version = 128 ; indicatorOfParameter = 17 ; } -#Near IR albedo for diffuse radiation -'Near IR albedo for diffuse radiation' = { +#Near IR albedo for diffuse radiation (climatological) +'Near IR albedo for diffuse radiation (climatological)' = { table2Version = 128 ; indicatorOfParameter = 18 ; } @@ -414,8 +414,8 @@ table2Version = 128 ; indicatorOfParameter = 73 ; } -#Standard deviation of filtered subgrid orography -'Standard deviation of filtered subgrid orography' = { +#Standard deviation of filtered subgrid orography (climatological) +'Standard deviation of filtered subgrid orography (climatological)' = { table2Version = 128 ; indicatorOfParameter = 74 ; } @@ -1919,13 +1919,13 @@ table2Version = 160 ; indicatorOfParameter = 233 ; } -#Logarithm of surface roughness length for heat -'Logarithm of surface roughness length for heat' = { +#Logarithm of surface roughness length for heat (climatological) +'Logarithm of surface roughness length for heat (climatological)' = { table2Version = 128 ; indicatorOfParameter = 234 ; } -#Logarithm of surface roughness length for heat -'Logarithm of surface roughness length for heat' = { +#Logarithm of surface roughness length for heat (climatological) +'Logarithm of surface roughness length for heat (climatological)' = { table2Version = 160 ; indicatorOfParameter = 234 ; } @@ -4024,33 +4024,33 @@ table2Version = 210 ; indicatorOfParameter = 120 ; } -#UV visible albedo for direct radiation, isotropic component -'UV visible albedo for direct radiation, isotropic component ' = { +#UV visible albedo for direct radiation, isotropic component (climatological) +'UV visible albedo for direct radiation, isotropic component (climatological)' = { table2Version = 210 ; indicatorOfParameter = 186 ; } -#UV visible albedo for direct radiation, volumetric component -'UV visible albedo for direct radiation, volumetric component ' = { +#UV visible albedo for direct radiation, volumetric component (climatological) +'UV visible albedo for direct radiation, volumetric component (climatological)' = { table2Version = 210 ; indicatorOfParameter = 187 ; } -#UV visible albedo for direct radiation, geometric component -'UV visible albedo for direct radiation, geometric component ' = { +#UV visible albedo for direct radiation, geometric component (climatological) +'UV visible albedo for direct radiation, geometric component (climatological)' = { table2Version = 210 ; indicatorOfParameter = 188 ; } -#Near IR albedo for direct radiation, isotropic component -'Near IR albedo for direct radiation, isotropic component ' = { +#Near IR albedo for direct radiation, isotropic component (climatological) +'Near IR albedo for direct radiation, isotropic component (climatological)' = { table2Version = 210 ; indicatorOfParameter = 189 ; } -#Near IR albedo for direct radiation, volumetric component -'Near IR albedo for direct radiation, volumetric component' = { +#Near IR albedo for direct radiation, volumetric component (climatological) +'Near IR albedo for direct radiation, volumetric component (climatological)' = { table2Version = 210 ; indicatorOfParameter = 190 ; } -#Near IR albedo for direct radiation, geometric component -'Near IR albedo for direct radiation, geometric component ' = { +#Near IR albedo for direct radiation, geometric component (climatological) +'Near IR albedo for direct radiation, geometric component (climatological)' = { table2Version = 210 ; indicatorOfParameter = 191 ; } diff --git a/definitions/grib1/localConcepts/ecmf/paramId.def b/definitions/grib1/localConcepts/ecmf/paramId.def index e086b8955..b5916f199 100644 --- a/definitions/grib1/localConcepts/ecmf/paramId.def +++ b/definitions/grib1/localConcepts/ecmf/paramId.def @@ -124,22 +124,22 @@ table2Version = 128 ; indicatorOfParameter = 14 ; } -#UV visible albedo for direct radiation +#UV visible albedo for direct radiation (climatological) '15' = { table2Version = 128 ; indicatorOfParameter = 15 ; } -#UV visible albedo for diffuse radiation +#UV visible albedo for diffuse radiation (climatological) '16' = { table2Version = 128 ; indicatorOfParameter = 16 ; } -#Near IR albedo for direct radiation +#Near IR albedo for direct radiation (climatological) '17' = { table2Version = 128 ; indicatorOfParameter = 17 ; } -#Near IR albedo for diffuse radiation +#Near IR albedo for diffuse radiation (climatological) '18' = { table2Version = 128 ; indicatorOfParameter = 18 ; @@ -414,7 +414,7 @@ table2Version = 128 ; indicatorOfParameter = 73 ; } -#Standard deviation of filtered subgrid orography +#Standard deviation of filtered subgrid orography (climatological) '74' = { table2Version = 128 ; indicatorOfParameter = 74 ; @@ -1919,12 +1919,12 @@ table2Version = 160 ; indicatorOfParameter = 233 ; } -#Logarithm of surface roughness length for heat +#Logarithm of surface roughness length for heat (climatological) '234' = { table2Version = 128 ; indicatorOfParameter = 234 ; } -#Logarithm of surface roughness length for heat +#Logarithm of surface roughness length for heat (climatological) '234' = { table2Version = 160 ; indicatorOfParameter = 234 ; @@ -4024,32 +4024,32 @@ table2Version = 210 ; indicatorOfParameter = 120 ; } -#UV visible albedo for direct radiation, isotropic component +#UV visible albedo for direct radiation, isotropic component (climatological) '210186' = { table2Version = 210 ; indicatorOfParameter = 186 ; } -#UV visible albedo for direct radiation, volumetric component +#UV visible albedo for direct radiation, volumetric component (climatological) '210187' = { table2Version = 210 ; indicatorOfParameter = 187 ; } -#UV visible albedo for direct radiation, geometric component +#UV visible albedo for direct radiation, geometric component (climatological) '210188' = { table2Version = 210 ; indicatorOfParameter = 188 ; } -#Near IR albedo for direct radiation, isotropic component +#Near IR albedo for direct radiation, isotropic component (climatological) '210189' = { table2Version = 210 ; indicatorOfParameter = 189 ; } -#Near IR albedo for direct radiation, volumetric component +#Near IR albedo for direct radiation, volumetric component (climatological) '210190' = { table2Version = 210 ; indicatorOfParameter = 190 ; } -#Near IR albedo for direct radiation, geometric component +#Near IR albedo for direct radiation, geometric component (climatological) '210191' = { table2Version = 210 ; indicatorOfParameter = 191 ; diff --git a/definitions/grib1/localConcepts/ecmf/shortName.def b/definitions/grib1/localConcepts/ecmf/shortName.def index a94f5a345..c8638fe00 100644 --- a/definitions/grib1/localConcepts/ecmf/shortName.def +++ b/definitions/grib1/localConcepts/ecmf/shortName.def @@ -124,22 +124,22 @@ table2Version = 128 ; indicatorOfParameter = 14 ; } -#UV visible albedo for direct radiation +#UV visible albedo for direct radiation (climatological) 'aluvp' = { table2Version = 128 ; indicatorOfParameter = 15 ; } -#UV visible albedo for diffuse radiation +#UV visible albedo for diffuse radiation (climatological) 'aluvd' = { table2Version = 128 ; indicatorOfParameter = 16 ; } -#Near IR albedo for direct radiation +#Near IR albedo for direct radiation (climatological) 'alnip' = { table2Version = 128 ; indicatorOfParameter = 17 ; } -#Near IR albedo for diffuse radiation +#Near IR albedo for diffuse radiation (climatological) 'alnid' = { table2Version = 128 ; indicatorOfParameter = 18 ; @@ -414,7 +414,7 @@ table2Version = 128 ; indicatorOfParameter = 73 ; } -#Standard deviation of filtered subgrid orography +#Standard deviation of filtered subgrid orography (climatological) 'sdfor' = { table2Version = 128 ; indicatorOfParameter = 74 ; @@ -1919,12 +1919,12 @@ table2Version = 160 ; indicatorOfParameter = 233 ; } -#Logarithm of surface roughness length for heat +#Logarithm of surface roughness length for heat (climatological) 'lsrh' = { table2Version = 128 ; indicatorOfParameter = 234 ; } -#Logarithm of surface roughness length for heat +#Logarithm of surface roughness length for heat (climatological) 'lsrh' = { table2Version = 160 ; indicatorOfParameter = 234 ; @@ -4024,32 +4024,32 @@ table2Version = 210 ; indicatorOfParameter = 120 ; } -#UV visible albedo for direct radiation, isotropic component +#UV visible albedo for direct radiation, isotropic component (climatological) 'aluvpi' = { table2Version = 210 ; indicatorOfParameter = 186 ; } -#UV visible albedo for direct radiation, volumetric component +#UV visible albedo for direct radiation, volumetric component (climatological) 'aluvpv' = { table2Version = 210 ; indicatorOfParameter = 187 ; } -#UV visible albedo for direct radiation, geometric component +#UV visible albedo for direct radiation, geometric component (climatological) 'aluvpg' = { table2Version = 210 ; indicatorOfParameter = 188 ; } -#Near IR albedo for direct radiation, isotropic component +#Near IR albedo for direct radiation, isotropic component (climatological) 'alnipi' = { table2Version = 210 ; indicatorOfParameter = 189 ; } -#Near IR albedo for direct radiation, volumetric component +#Near IR albedo for direct radiation, volumetric component (climatological) 'alnipv' = { table2Version = 210 ; indicatorOfParameter = 190 ; } -#Near IR albedo for direct radiation, geometric component +#Near IR albedo for direct radiation, geometric component (climatological) 'alnipg' = { table2Version = 210 ; indicatorOfParameter = 191 ; diff --git a/definitions/grib1/localConcepts/ecmf/units.def b/definitions/grib1/localConcepts/ecmf/units.def index 3662f9012..cfaaed975 100644 --- a/definitions/grib1/localConcepts/ecmf/units.def +++ b/definitions/grib1/localConcepts/ecmf/units.def @@ -124,22 +124,22 @@ table2Version = 128 ; indicatorOfParameter = 14 ; } -#UV visible albedo for direct radiation +#UV visible albedo for direct radiation (climatological) '(0 - 1)' = { table2Version = 128 ; indicatorOfParameter = 15 ; } -#UV visible albedo for diffuse radiation +#UV visible albedo for diffuse radiation (climatological) '(0 - 1)' = { table2Version = 128 ; indicatorOfParameter = 16 ; } -#Near IR albedo for direct radiation +#Near IR albedo for direct radiation (climatological) '(0 - 1)' = { table2Version = 128 ; indicatorOfParameter = 17 ; } -#Near IR albedo for diffuse radiation +#Near IR albedo for diffuse radiation (climatological) '(0 - 1)' = { table2Version = 128 ; indicatorOfParameter = 18 ; @@ -414,7 +414,7 @@ table2Version = 128 ; indicatorOfParameter = 73 ; } -#Standard deviation of filtered subgrid orography +#Standard deviation of filtered subgrid orography (climatological) 'm' = { table2Version = 128 ; indicatorOfParameter = 74 ; @@ -1919,13 +1919,13 @@ table2Version = 160 ; indicatorOfParameter = 233 ; } -#Logarithm of surface roughness length for heat -'~' = { +#Logarithm of surface roughness length for heat (climatological) +'Numeric' = { table2Version = 128 ; indicatorOfParameter = 234 ; } -#Logarithm of surface roughness length for heat -'~' = { +#Logarithm of surface roughness length for heat (climatological) +'Numeric' = { table2Version = 160 ; indicatorOfParameter = 234 ; } @@ -4024,32 +4024,32 @@ table2Version = 210 ; indicatorOfParameter = 120 ; } -#UV visible albedo for direct radiation, isotropic component +#UV visible albedo for direct radiation, isotropic component (climatological) '(0 - 1)' = { table2Version = 210 ; indicatorOfParameter = 186 ; } -#UV visible albedo for direct radiation, volumetric component +#UV visible albedo for direct radiation, volumetric component (climatological) '(0 - 1)' = { table2Version = 210 ; indicatorOfParameter = 187 ; } -#UV visible albedo for direct radiation, geometric component +#UV visible albedo for direct radiation, geometric component (climatological) '(0 - 1)' = { table2Version = 210 ; indicatorOfParameter = 188 ; } -#Near IR albedo for direct radiation, isotropic component +#Near IR albedo for direct radiation, isotropic component (climatological) '(0 - 1)' = { table2Version = 210 ; indicatorOfParameter = 189 ; } -#Near IR albedo for direct radiation, volumetric component +#Near IR albedo for direct radiation, volumetric component (climatological) '(0 - 1)' = { table2Version = 210 ; indicatorOfParameter = 190 ; } -#Near IR albedo for direct radiation, geometric component +#Near IR albedo for direct radiation, geometric component (climatological) '(0 - 1)' = { table2Version = 210 ; indicatorOfParameter = 191 ; diff --git a/definitions/grib2/cfVarName.def b/definitions/grib2/cfVarName.def index 7f73e709e..287c0fce3 100644 --- a/definitions/grib2/cfVarName.def +++ b/definitions/grib2/cfVarName.def @@ -190,6 +190,13 @@ typeOfFirstFixedSurface = 1 ; typeOfStatisticalProcessing = 1 ; } +#Standard deviation of filtered subgrid orography (climatological) +'sdfor' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 38 ; + typeOfGeneratingProcess = 9 ; + } #Specific rain water content 'crwc' = { discipline = 0 ; @@ -390,6 +397,14 @@ parameterNumber = 79 ; typeOfFirstFixedSurface = 1 ; } +#Logarithm of surface roughness length for heat (climatological) +'lsrh' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 54 ; + typeOfFirstFixedSurface = 1 ; + typeOfGeneratingProcess = 9 ; + } #Temperature of snow layer 'tsn' = { discipline = 2 ; diff --git a/definitions/grib2/localConcepts/ecmf/cfVarName.def b/definitions/grib2/localConcepts/ecmf/cfVarName.def index a4713b124..1c5e9eeb7 100644 --- a/definitions/grib2/localConcepts/ecmf/cfVarName.def +++ b/definitions/grib2/localConcepts/ecmf/cfVarName.def @@ -62,29 +62,37 @@ parameterCategory = 128 ; parameterNumber = 14 ; } -#UV visible albedo for direct radiation +#UV visible albedo for direct radiation (climatological) 'aluvp' = { - discipline = 192 ; - parameterCategory = 128 ; - parameterNumber = 15 ; + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 193 ; + typeOfGeneratingProcess = 9 ; } -#UV visible albedo for diffuse radiation +#UV visible albedo for diffuse radiation (climatological) 'aluvd' = { - discipline = 192 ; - parameterCategory = 128 ; - parameterNumber = 16 ; + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 192 ; + typeOfGeneratingProcess = 9 ; } -#Near IR albedo for direct radiation +#Near IR albedo for direct radiation (climatological) 'alnip' = { - discipline = 192 ; - parameterCategory = 128 ; - parameterNumber = 17 ; + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 5 ; + parameterNumber = 193 ; + typeOfGeneratingProcess = 9 ; } -#Near IR albedo for diffuse radiation +#Near IR albedo for diffuse radiation (climatological) 'alnid' = { - discipline = 192 ; - parameterCategory = 128 ; - parameterNumber = 18 ; + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 5 ; + parameterNumber = 192 ; + typeOfGeneratingProcess = 9 ; } #Clear sky surface UV 'uvcs' = { @@ -339,12 +347,6 @@ parameterCategory = 128 ; parameterNumber = 73 ; } -#Standard deviation of filtered subgrid orography -'sdfor' = { - discipline = 192 ; - parameterCategory = 128 ; - parameterNumber = 74 ; - } #Experimental product 'p80.128' = { discipline = 192 ; @@ -985,12 +987,6 @@ parameterCategory = 128 ; parameterNumber = 233 ; } -#Logarithm of surface roughness length for heat -'lsrh' = { - discipline = 192 ; - parameterCategory = 128 ; - parameterNumber = 234 ; - } #Soil temperature level 4 'stl4' = { discipline = 192 ; @@ -2822,41 +2818,53 @@ parameterCategory = 210 ; parameterNumber = 179 ; } -#UV visible albedo for direct radiation, isotropic component +#UV visible albedo for direct radiation, isotropic component (climatological) 'aluvpi' = { - discipline = 192 ; - parameterCategory = 210 ; - parameterNumber = 186 ; + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 195 ; + typeOfGeneratingProcess = 9 ; } -#UV visible albedo for direct radiation, volumetric component +#UV visible albedo for direct radiation, volumetric component (climatological) 'aluvpv' = { - discipline = 192 ; - parameterCategory = 210 ; - parameterNumber = 187 ; + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 196 ; + typeOfGeneratingProcess = 9 ; } -#UV visible albedo for direct radiation, geometric component +#UV visible albedo for direct radiation, geometric component (climatological) 'aluvpg' = { - discipline = 192 ; - parameterCategory = 210 ; - parameterNumber = 188 ; + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 194 ; + typeOfGeneratingProcess = 9 ; } -#Near IR albedo for direct radiation, isotropic component +#Near IR albedo for direct radiation, isotropic component (climatological) 'alnipi' = { - discipline = 192 ; - parameterCategory = 210 ; - parameterNumber = 189 ; + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 5 ; + parameterNumber = 195 ; + typeOfGeneratingProcess = 9 ; } -#Near IR albedo for direct radiation, volumetric component +#Near IR albedo for direct radiation, volumetric component (climatological) 'alnipv' = { - discipline = 192 ; - parameterCategory = 210 ; - parameterNumber = 190 ; + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 5 ; + parameterNumber = 196 ; + typeOfGeneratingProcess = 9 ; } -#Near IR albedo for direct radiation, geometric component +#Near IR albedo for direct radiation, geometric component (climatological) 'alnipg' = { - discipline = 192 ; - parameterCategory = 210 ; - parameterNumber = 191 ; + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 5 ; + parameterNumber = 194 ; + typeOfGeneratingProcess = 9 ; } #UV visible albedo for diffuse radiation, isotropic component 'aluvdi' = { diff --git a/definitions/grib2/localConcepts/ecmf/name.def b/definitions/grib2/localConcepts/ecmf/name.def index 7de6abed0..22f92c884 100644 --- a/definitions/grib2/localConcepts/ecmf/name.def +++ b/definitions/grib2/localConcepts/ecmf/name.def @@ -62,29 +62,37 @@ parameterCategory = 128 ; parameterNumber = 14 ; } -#UV visible albedo for direct radiation -'UV visible albedo for direct radiation' = { - discipline = 192 ; - parameterCategory = 128 ; - parameterNumber = 15 ; +#UV visible albedo for direct radiation (climatological) +'UV visible albedo for direct radiation (climatological)' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 193 ; + typeOfGeneratingProcess = 9 ; } -#UV visible albedo for diffuse radiation -'UV visible albedo for diffuse radiation' = { - discipline = 192 ; - parameterCategory = 128 ; - parameterNumber = 16 ; +#UV visible albedo for diffuse radiation (climatological) +'UV visible albedo for diffuse radiation (climatological)' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 192 ; + typeOfGeneratingProcess = 9 ; } -#Near IR albedo for direct radiation -'Near IR albedo for direct radiation' = { - discipline = 192 ; - parameterCategory = 128 ; - parameterNumber = 17 ; +#Near IR albedo for direct radiation (climatological) +'Near IR albedo for direct radiation (climatological)' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 5 ; + parameterNumber = 193 ; + typeOfGeneratingProcess = 9 ; } -#Near IR albedo for diffuse radiation -'Near IR albedo for diffuse radiation' = { - discipline = 192 ; - parameterCategory = 128 ; - parameterNumber = 18 ; +#Near IR albedo for diffuse radiation (climatological) +'Near IR albedo for diffuse radiation (climatological)' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 5 ; + parameterNumber = 192 ; + typeOfGeneratingProcess = 9 ; } #Clear sky surface UV 'Clear sky surface UV' = { @@ -339,12 +347,6 @@ parameterCategory = 128 ; parameterNumber = 73 ; } -#Standard deviation of filtered subgrid orography -'Standard deviation of filtered subgrid orography' = { - discipline = 192 ; - parameterCategory = 128 ; - parameterNumber = 74 ; - } #Experimental product 'Experimental product' = { discipline = 192 ; @@ -985,12 +987,6 @@ parameterCategory = 128 ; parameterNumber = 233 ; } -#Logarithm of surface roughness length for heat -'Logarithm of surface roughness length for heat' = { - discipline = 192 ; - parameterCategory = 128 ; - parameterNumber = 234 ; - } #Soil temperature level 4 'Soil temperature level 4' = { discipline = 192 ; @@ -2822,41 +2818,53 @@ parameterCategory = 210 ; parameterNumber = 179 ; } -#UV visible albedo for direct radiation, isotropic component -'UV visible albedo for direct radiation, isotropic component ' = { - discipline = 192 ; - parameterCategory = 210 ; - parameterNumber = 186 ; +#UV visible albedo for direct radiation, isotropic component (climatological) +'UV visible albedo for direct radiation, isotropic component (climatological)' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 195 ; + typeOfGeneratingProcess = 9 ; } -#UV visible albedo for direct radiation, volumetric component -'UV visible albedo for direct radiation, volumetric component ' = { - discipline = 192 ; - parameterCategory = 210 ; - parameterNumber = 187 ; +#UV visible albedo for direct radiation, volumetric component (climatological) +'UV visible albedo for direct radiation, volumetric component (climatological)' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 196 ; + typeOfGeneratingProcess = 9 ; } -#UV visible albedo for direct radiation, geometric component -'UV visible albedo for direct radiation, geometric component ' = { - discipline = 192 ; - parameterCategory = 210 ; - parameterNumber = 188 ; +#UV visible albedo for direct radiation, geometric component (climatological) +'UV visible albedo for direct radiation, geometric component (climatological)' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 194 ; + typeOfGeneratingProcess = 9 ; } -#Near IR albedo for direct radiation, isotropic component -'Near IR albedo for direct radiation, isotropic component ' = { - discipline = 192 ; - parameterCategory = 210 ; - parameterNumber = 189 ; +#Near IR albedo for direct radiation, isotropic component (climatological) +'Near IR albedo for direct radiation, isotropic component (climatological)' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 5 ; + parameterNumber = 195 ; + typeOfGeneratingProcess = 9 ; } -#Near IR albedo for direct radiation, volumetric component -'Near IR albedo for direct radiation, volumetric component' = { - discipline = 192 ; - parameterCategory = 210 ; - parameterNumber = 190 ; +#Near IR albedo for direct radiation, volumetric component (climatological) +'Near IR albedo for direct radiation, volumetric component (climatological)' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 5 ; + parameterNumber = 196 ; + typeOfGeneratingProcess = 9 ; } -#Near IR albedo for direct radiation, geometric component -'Near IR albedo for direct radiation, geometric component ' = { - discipline = 192 ; - parameterCategory = 210 ; - parameterNumber = 191 ; +#Near IR albedo for direct radiation, geometric component (climatological) +'Near IR albedo for direct radiation, geometric component (climatological)' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 5 ; + parameterNumber = 194 ; + typeOfGeneratingProcess = 9 ; } #UV visible albedo for diffuse radiation, isotropic component 'UV visible albedo for diffuse radiation, isotropic component ' = { diff --git a/definitions/grib2/localConcepts/ecmf/paramId.def b/definitions/grib2/localConcepts/ecmf/paramId.def index 5bcea4953..15acbd329 100644 --- a/definitions/grib2/localConcepts/ecmf/paramId.def +++ b/definitions/grib2/localConcepts/ecmf/paramId.def @@ -62,29 +62,37 @@ parameterCategory = 128 ; parameterNumber = 14 ; } -#UV visible albedo for direct radiation +#UV visible albedo for direct radiation (climatological) '15' = { - discipline = 192 ; - parameterCategory = 128 ; - parameterNumber = 15 ; + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 193 ; + typeOfGeneratingProcess = 9 ; } -#UV visible albedo for diffuse radiation +#UV visible albedo for diffuse radiation (climatological) '16' = { - discipline = 192 ; - parameterCategory = 128 ; - parameterNumber = 16 ; + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 192 ; + typeOfGeneratingProcess = 9 ; } -#Near IR albedo for direct radiation +#Near IR albedo for direct radiation (climatological) '17' = { - discipline = 192 ; - parameterCategory = 128 ; - parameterNumber = 17 ; + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 5 ; + parameterNumber = 193 ; + typeOfGeneratingProcess = 9 ; } -#Near IR albedo for diffuse radiation +#Near IR albedo for diffuse radiation (climatological) '18' = { - discipline = 192 ; - parameterCategory = 128 ; - parameterNumber = 18 ; + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 5 ; + parameterNumber = 192 ; + typeOfGeneratingProcess = 9 ; } #Clear sky surface UV '19' = { @@ -339,12 +347,6 @@ parameterCategory = 128 ; parameterNumber = 73 ; } -#Standard deviation of filtered subgrid orography -'74' = { - discipline = 192 ; - parameterCategory = 128 ; - parameterNumber = 74 ; - } #Experimental product '80' = { discipline = 192 ; @@ -985,12 +987,6 @@ parameterCategory = 128 ; parameterNumber = 233 ; } -#Logarithm of surface roughness length for heat -'234' = { - discipline = 192 ; - parameterCategory = 128 ; - parameterNumber = 234 ; - } #Soil temperature level 4 '236' = { discipline = 192 ; @@ -2822,41 +2818,53 @@ parameterCategory = 210 ; parameterNumber = 179 ; } -#UV visible albedo for direct radiation, isotropic component +#UV visible albedo for direct radiation, isotropic component (climatological) '210186' = { - discipline = 192 ; - parameterCategory = 210 ; - parameterNumber = 186 ; + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 195 ; + typeOfGeneratingProcess = 9 ; } -#UV visible albedo for direct radiation, volumetric component +#UV visible albedo for direct radiation, volumetric component (climatological) '210187' = { - discipline = 192 ; - parameterCategory = 210 ; - parameterNumber = 187 ; + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 196 ; + typeOfGeneratingProcess = 9 ; } -#UV visible albedo for direct radiation, geometric component +#UV visible albedo for direct radiation, geometric component (climatological) '210188' = { - discipline = 192 ; - parameterCategory = 210 ; - parameterNumber = 188 ; + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 194 ; + typeOfGeneratingProcess = 9 ; } -#Near IR albedo for direct radiation, isotropic component +#Near IR albedo for direct radiation, isotropic component (climatological) '210189' = { - discipline = 192 ; - parameterCategory = 210 ; - parameterNumber = 189 ; + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 5 ; + parameterNumber = 195 ; + typeOfGeneratingProcess = 9 ; } -#Near IR albedo for direct radiation, volumetric component +#Near IR albedo for direct radiation, volumetric component (climatological) '210190' = { - discipline = 192 ; - parameterCategory = 210 ; - parameterNumber = 190 ; + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 5 ; + parameterNumber = 196 ; + typeOfGeneratingProcess = 9 ; } -#Near IR albedo for direct radiation, geometric component +#Near IR albedo for direct radiation, geometric component (climatological) '210191' = { - discipline = 192 ; - parameterCategory = 210 ; - parameterNumber = 191 ; + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 5 ; + parameterNumber = 194 ; + typeOfGeneratingProcess = 9 ; } #UV visible albedo for diffuse radiation, isotropic component '210192' = { diff --git a/definitions/grib2/localConcepts/ecmf/shortName.def b/definitions/grib2/localConcepts/ecmf/shortName.def index c4f2e6075..44e0a7945 100644 --- a/definitions/grib2/localConcepts/ecmf/shortName.def +++ b/definitions/grib2/localConcepts/ecmf/shortName.def @@ -62,29 +62,37 @@ parameterCategory = 128 ; parameterNumber = 14 ; } -#UV visible albedo for direct radiation +#UV visible albedo for direct radiation (climatological) 'aluvp' = { - discipline = 192 ; - parameterCategory = 128 ; - parameterNumber = 15 ; + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 193 ; + typeOfGeneratingProcess = 9 ; } -#UV visible albedo for diffuse radiation +#UV visible albedo for diffuse radiation (climatological) 'aluvd' = { - discipline = 192 ; - parameterCategory = 128 ; - parameterNumber = 16 ; + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 192 ; + typeOfGeneratingProcess = 9 ; } -#Near IR albedo for direct radiation +#Near IR albedo for direct radiation (climatological) 'alnip' = { - discipline = 192 ; - parameterCategory = 128 ; - parameterNumber = 17 ; + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 5 ; + parameterNumber = 193 ; + typeOfGeneratingProcess = 9 ; } -#Near IR albedo for diffuse radiation +#Near IR albedo for diffuse radiation (climatological) 'alnid' = { - discipline = 192 ; - parameterCategory = 128 ; - parameterNumber = 18 ; + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 5 ; + parameterNumber = 192 ; + typeOfGeneratingProcess = 9 ; } #Clear sky surface UV 'uvcs' = { @@ -339,12 +347,6 @@ parameterCategory = 128 ; parameterNumber = 73 ; } -#Standard deviation of filtered subgrid orography -'sdfor' = { - discipline = 192 ; - parameterCategory = 128 ; - parameterNumber = 74 ; - } #Experimental product '~' = { discipline = 192 ; @@ -985,12 +987,6 @@ parameterCategory = 128 ; parameterNumber = 233 ; } -#Logarithm of surface roughness length for heat -'lsrh' = { - discipline = 192 ; - parameterCategory = 128 ; - parameterNumber = 234 ; - } #Soil temperature level 4 'stl4' = { discipline = 192 ; @@ -2822,41 +2818,53 @@ parameterCategory = 210 ; parameterNumber = 179 ; } -#UV visible albedo for direct radiation, isotropic component +#UV visible albedo for direct radiation, isotropic component (climatological) 'aluvpi' = { - discipline = 192 ; - parameterCategory = 210 ; - parameterNumber = 186 ; + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 195 ; + typeOfGeneratingProcess = 9 ; } -#UV visible albedo for direct radiation, volumetric component +#UV visible albedo for direct radiation, volumetric component (climatological) 'aluvpv' = { - discipline = 192 ; - parameterCategory = 210 ; - parameterNumber = 187 ; + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 196 ; + typeOfGeneratingProcess = 9 ; } -#UV visible albedo for direct radiation, geometric component +#UV visible albedo for direct radiation, geometric component (climatological) 'aluvpg' = { - discipline = 192 ; - parameterCategory = 210 ; - parameterNumber = 188 ; + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 194 ; + typeOfGeneratingProcess = 9 ; } -#Near IR albedo for direct radiation, isotropic component +#Near IR albedo for direct radiation, isotropic component (climatological) 'alnipi' = { - discipline = 192 ; - parameterCategory = 210 ; - parameterNumber = 189 ; + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 5 ; + parameterNumber = 195 ; + typeOfGeneratingProcess = 9 ; } -#Near IR albedo for direct radiation, volumetric component +#Near IR albedo for direct radiation, volumetric component (climatological) 'alnipv' = { - discipline = 192 ; - parameterCategory = 210 ; - parameterNumber = 190 ; + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 5 ; + parameterNumber = 196 ; + typeOfGeneratingProcess = 9 ; } -#Near IR albedo for direct radiation, geometric component +#Near IR albedo for direct radiation, geometric component (climatological) 'alnipg' = { - discipline = 192 ; - parameterCategory = 210 ; - parameterNumber = 191 ; + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 5 ; + parameterNumber = 194 ; + typeOfGeneratingProcess = 9 ; } #UV visible albedo for diffuse radiation, isotropic component 'aluvdi' = { diff --git a/definitions/grib2/localConcepts/ecmf/units.def b/definitions/grib2/localConcepts/ecmf/units.def index 30eec8824..54f2faad7 100644 --- a/definitions/grib2/localConcepts/ecmf/units.def +++ b/definitions/grib2/localConcepts/ecmf/units.def @@ -62,29 +62,37 @@ parameterCategory = 128 ; parameterNumber = 14 ; } -#UV visible albedo for direct radiation +#UV visible albedo for direct radiation (climatological) '(0 - 1)' = { - discipline = 192 ; - parameterCategory = 128 ; - parameterNumber = 15 ; + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 193 ; + typeOfGeneratingProcess = 9 ; } -#UV visible albedo for diffuse radiation +#UV visible albedo for diffuse radiation (climatological) '(0 - 1)' = { - discipline = 192 ; - parameterCategory = 128 ; - parameterNumber = 16 ; + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 192 ; + typeOfGeneratingProcess = 9 ; } -#Near IR albedo for direct radiation +#Near IR albedo for direct radiation (climatological) '(0 - 1)' = { - discipline = 192 ; - parameterCategory = 128 ; - parameterNumber = 17 ; + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 5 ; + parameterNumber = 193 ; + typeOfGeneratingProcess = 9 ; } -#Near IR albedo for diffuse radiation +#Near IR albedo for diffuse radiation (climatological) '(0 - 1)' = { - discipline = 192 ; - parameterCategory = 128 ; - parameterNumber = 18 ; + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 5 ; + parameterNumber = 192 ; + typeOfGeneratingProcess = 9 ; } #Clear sky surface UV 'J m**-2' = { @@ -339,12 +347,6 @@ parameterCategory = 128 ; parameterNumber = 73 ; } -#Standard deviation of filtered subgrid orography -'m' = { - discipline = 192 ; - parameterCategory = 128 ; - parameterNumber = 74 ; - } #Experimental product '~' = { discipline = 192 ; @@ -985,12 +987,6 @@ parameterCategory = 128 ; parameterNumber = 233 ; } -#Logarithm of surface roughness length for heat -'~' = { - discipline = 192 ; - parameterCategory = 128 ; - parameterNumber = 234 ; - } #Soil temperature level 4 'K' = { discipline = 192 ; @@ -2822,41 +2818,53 @@ parameterCategory = 210 ; parameterNumber = 179 ; } -#UV visible albedo for direct radiation, isotropic component +#UV visible albedo for direct radiation, isotropic component (climatological) '(0 - 1)' = { - discipline = 192 ; - parameterCategory = 210 ; - parameterNumber = 186 ; + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 195 ; + typeOfGeneratingProcess = 9 ; } -#UV visible albedo for direct radiation, volumetric component +#UV visible albedo for direct radiation, volumetric component (climatological) '(0 - 1)' = { - discipline = 192 ; - parameterCategory = 210 ; - parameterNumber = 187 ; + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 196 ; + typeOfGeneratingProcess = 9 ; } -#UV visible albedo for direct radiation, geometric component +#UV visible albedo for direct radiation, geometric component (climatological) '(0 - 1)' = { - discipline = 192 ; - parameterCategory = 210 ; - parameterNumber = 188 ; + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 194 ; + typeOfGeneratingProcess = 9 ; } -#Near IR albedo for direct radiation, isotropic component +#Near IR albedo for direct radiation, isotropic component (climatological) '(0 - 1)' = { - discipline = 192 ; - parameterCategory = 210 ; - parameterNumber = 189 ; + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 5 ; + parameterNumber = 195 ; + typeOfGeneratingProcess = 9 ; } -#Near IR albedo for direct radiation, volumetric component +#Near IR albedo for direct radiation, volumetric component (climatological) '(0 - 1)' = { - discipline = 192 ; - parameterCategory = 210 ; - parameterNumber = 190 ; + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 5 ; + parameterNumber = 196 ; + typeOfGeneratingProcess = 9 ; } -#Near IR albedo for direct radiation, geometric component +#Near IR albedo for direct radiation, geometric component (climatological) '(0 - 1)' = { - discipline = 192 ; - parameterCategory = 210 ; - parameterNumber = 191 ; + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 5 ; + parameterNumber = 194 ; + typeOfGeneratingProcess = 9 ; } #UV visible albedo for diffuse radiation, isotropic component '(0 - 1)' = { diff --git a/definitions/grib2/localConcepts/uerra/cfName.def b/definitions/grib2/localConcepts/uerra/cfName.def index dfa9f8925..af74be9c9 100644 --- a/definitions/grib2/localConcepts/uerra/cfName.def +++ b/definitions/grib2/localConcepts/uerra/cfName.def @@ -4,6 +4,7 @@ discipline = 2 ; parameterCategory = 0 ; parameterNumber = 1 ; + typeOfFirstFixedSurface = 1 ; } #Top net short-wave (solar) radiation 'toa_net_upward_shortwave_flux' = { diff --git a/definitions/grib2/localConcepts/uerra/cfVarName.def b/definitions/grib2/localConcepts/uerra/cfVarName.def index 21a587397..85d656893 100644 --- a/definitions/grib2/localConcepts/uerra/cfVarName.def +++ b/definitions/grib2/localConcepts/uerra/cfVarName.def @@ -66,6 +66,7 @@ discipline = 2 ; parameterCategory = 0 ; parameterNumber = 1 ; + typeOfFirstFixedSurface = 1 ; } #Top net short-wave (solar) radiation 'tsr' = { diff --git a/definitions/grib2/localConcepts/uerra/name.def b/definitions/grib2/localConcepts/uerra/name.def index 9c5d313c7..58802fe30 100644 --- a/definitions/grib2/localConcepts/uerra/name.def +++ b/definitions/grib2/localConcepts/uerra/name.def @@ -66,6 +66,7 @@ discipline = 2 ; parameterCategory = 0 ; parameterNumber = 1 ; + typeOfFirstFixedSurface = 1 ; } #Top net short-wave (solar) radiation 'Top net short-wave (solar) radiation' = { diff --git a/definitions/grib2/localConcepts/uerra/paramId.def b/definitions/grib2/localConcepts/uerra/paramId.def index f74d921a3..b87322427 100644 --- a/definitions/grib2/localConcepts/uerra/paramId.def +++ b/definitions/grib2/localConcepts/uerra/paramId.def @@ -66,6 +66,7 @@ discipline = 2 ; parameterCategory = 0 ; parameterNumber = 1 ; + typeOfFirstFixedSurface = 1 ; } #Top net short-wave (solar) radiation '178' = { diff --git a/definitions/grib2/localConcepts/uerra/shortName.def b/definitions/grib2/localConcepts/uerra/shortName.def index 2c2edb7e3..e3a06c13e 100644 --- a/definitions/grib2/localConcepts/uerra/shortName.def +++ b/definitions/grib2/localConcepts/uerra/shortName.def @@ -66,6 +66,7 @@ discipline = 2 ; parameterCategory = 0 ; parameterNumber = 1 ; + typeOfFirstFixedSurface = 1 ; } #Top net short-wave (solar) radiation 'tsr' = { diff --git a/definitions/grib2/localConcepts/uerra/units.def b/definitions/grib2/localConcepts/uerra/units.def index 94a2b45f4..ba9dc6acc 100644 --- a/definitions/grib2/localConcepts/uerra/units.def +++ b/definitions/grib2/localConcepts/uerra/units.def @@ -66,6 +66,7 @@ discipline = 2 ; parameterCategory = 0 ; parameterNumber = 1 ; + typeOfFirstFixedSurface = 1 ; } #Top net short-wave (solar) radiation 'J m**-2' = { diff --git a/definitions/grib2/name.def b/definitions/grib2/name.def index 608443fb9..91cb6e73f 100644 --- a/definitions/grib2/name.def +++ b/definitions/grib2/name.def @@ -190,6 +190,13 @@ typeOfFirstFixedSurface = 1 ; typeOfStatisticalProcessing = 1 ; } +#Standard deviation of filtered subgrid orography (climatological) +'Standard deviation of filtered subgrid orography (climatological)' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 38 ; + typeOfGeneratingProcess = 9 ; + } #Specific rain water content 'Specific rain water content' = { discipline = 0 ; @@ -390,6 +397,14 @@ parameterNumber = 79 ; typeOfFirstFixedSurface = 1 ; } +#Logarithm of surface roughness length for heat (climatological) +'Logarithm of surface roughness length for heat (climatological)' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 54 ; + typeOfFirstFixedSurface = 1 ; + typeOfGeneratingProcess = 9 ; + } #Temperature of snow layer 'Temperature of snow layer' = { discipline = 2 ; diff --git a/definitions/grib2/paramId.def b/definitions/grib2/paramId.def index 96acaa1be..39f4f6860 100644 --- a/definitions/grib2/paramId.def +++ b/definitions/grib2/paramId.def @@ -190,6 +190,13 @@ typeOfFirstFixedSurface = 1 ; typeOfStatisticalProcessing = 1 ; } +#Standard deviation of filtered subgrid orography (climatological) +'74' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 38 ; + typeOfGeneratingProcess = 9 ; + } #Specific rain water content '75' = { discipline = 0 ; @@ -390,6 +397,14 @@ parameterNumber = 79 ; typeOfFirstFixedSurface = 1 ; } +#Logarithm of surface roughness length for heat (climatological) +'234' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 54 ; + typeOfFirstFixedSurface = 1 ; + typeOfGeneratingProcess = 9 ; + } #Temperature of snow layer '238' = { discipline = 2 ; diff --git a/definitions/grib2/shortName.def b/definitions/grib2/shortName.def index 4546e5912..97b7093af 100644 --- a/definitions/grib2/shortName.def +++ b/definitions/grib2/shortName.def @@ -190,6 +190,13 @@ typeOfFirstFixedSurface = 1 ; typeOfStatisticalProcessing = 1 ; } +#Standard deviation of filtered subgrid orography (climatological) +'sdfor' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 38 ; + typeOfGeneratingProcess = 9 ; + } #Specific rain water content 'crwc' = { discipline = 0 ; @@ -390,6 +397,14 @@ parameterNumber = 79 ; typeOfFirstFixedSurface = 1 ; } +#Logarithm of surface roughness length for heat (climatological) +'lsrh' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 54 ; + typeOfFirstFixedSurface = 1 ; + typeOfGeneratingProcess = 9 ; + } #Temperature of snow layer 'tsn' = { discipline = 2 ; diff --git a/definitions/grib2/units.def b/definitions/grib2/units.def index 9a53c100a..576e6a2f0 100644 --- a/definitions/grib2/units.def +++ b/definitions/grib2/units.def @@ -190,6 +190,13 @@ typeOfFirstFixedSurface = 1 ; typeOfStatisticalProcessing = 1 ; } +#Standard deviation of filtered subgrid orography (climatological) +'m' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 38 ; + typeOfGeneratingProcess = 9 ; + } #Specific rain water content 'kg kg**-1' = { discipline = 0 ; @@ -390,6 +397,14 @@ parameterNumber = 79 ; typeOfFirstFixedSurface = 1 ; } +#Logarithm of surface roughness length for heat (climatological) +'Numeric' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 54 ; + typeOfFirstFixedSurface = 1 ; + typeOfGeneratingProcess = 9 ; + } #Temperature of snow layer 'K' = { discipline = 2 ; From edffe6ca7a6bf039964efdbd04b82043b49f62f0 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 18 May 2023 14:53:42 +0000 Subject: [PATCH 172/378] ECC-1587: Local ECMWF code table entries --- definitions/grib2/tables/local/ecmf/1/4.2.0.4.table | 5 +++++ definitions/grib2/tables/local/ecmf/1/4.2.0.5.table | 5 +++++ 2 files changed, 10 insertions(+) create mode 100644 definitions/grib2/tables/local/ecmf/1/4.2.0.4.table create mode 100644 definitions/grib2/tables/local/ecmf/1/4.2.0.5.table diff --git a/definitions/grib2/tables/local/ecmf/1/4.2.0.4.table b/definitions/grib2/tables/local/ecmf/1/4.2.0.4.table new file mode 100644 index 000000000..b48509064 --- /dev/null +++ b/definitions/grib2/tables/local/ecmf/1/4.2.0.4.table @@ -0,0 +1,5 @@ +192 192 UV visible albedo for diffuse radiation +193 193 UV visible albedo for direct radiation +194 194 UV visible albedo for direct radiation, geometric component +195 195 UV visible albedo for direct radiation, isotropic component +196 196 UV visible albedo for direct radiation, volumetric component diff --git a/definitions/grib2/tables/local/ecmf/1/4.2.0.5.table b/definitions/grib2/tables/local/ecmf/1/4.2.0.5.table new file mode 100644 index 000000000..b1836dfe2 --- /dev/null +++ b/definitions/grib2/tables/local/ecmf/1/4.2.0.5.table @@ -0,0 +1,5 @@ +192 192 Near IR albedo for diffuse radiation +193 193 Near IR albedo for direct radiation +194 194 Near IR albedo for direct radiation, volumetric component +195 195 Near IR albedo for direct radiation, isotropic component +196 196 Near IR albedo for direct radiation, volumetric component From 8274389dcf7dcfc1d21a40c4071eb6269a4bc19d Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 18 May 2023 14:54:43 +0000 Subject: [PATCH 173/378] ECC-1591: GRIB2: New parameter encodings from WMO FT2023-1 --- definitions/grib2/cfVarName.def | 257 ++++++++++++++++++++++++++++++++ definitions/grib2/name.def | 257 ++++++++++++++++++++++++++++++++ definitions/grib2/paramId.def | 257 ++++++++++++++++++++++++++++++++ definitions/grib2/shortName.def | 257 ++++++++++++++++++++++++++++++++ definitions/grib2/units.def | 257 ++++++++++++++++++++++++++++++++ 5 files changed, 1285 insertions(+) diff --git a/definitions/grib2/cfVarName.def b/definitions/grib2/cfVarName.def index 287c0fce3..a9a44d7ea 100644 --- a/definitions/grib2/cfVarName.def +++ b/definitions/grib2/cfVarName.def @@ -642,6 +642,41 @@ is_chemical_srcsink = 1 ; sourceSinkChemicalPhysicalProcess = 7 ; } +#UV visible albedo for diffuse radiation (climatological) +'aluvd_p' = { + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 55 ; + typeOfGeneratingProcess = 9 ; + } +#UV visible albedo for direct radiation (climatological) +'aluvp_p' = { + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 56 ; + typeOfGeneratingProcess = 9 ; + } +#UV visible albedo for direct radiation, geometric component (climatological) +'aluvpg_p' = { + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 57 ; + typeOfGeneratingProcess = 9 ; + } +#UV visible albedo for direct radiation, isotropic component (climatological) +'aluvpi_p' = { + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 58 ; + typeOfGeneratingProcess = 9 ; + } +#UV visible albedo for direct radiation, volumetric component (climatological) +'aluvpv_p' = { + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 59 ; + typeOfGeneratingProcess = 9 ; + } #Ammonium aerosol mass mixing ratio 'aermr18' = { discipline = 0 ; @@ -690,6 +725,41 @@ aerosolType = 62033 ; is_aerosol = 1 ; } +#Near IR albedo for diffuse radiation (climatological) +'alnid_p' = { + discipline = 0 ; + parameterCategory = 5 ; + parameterNumber = 9 ; + typeOfGeneratingProcess = 9 ; + } +#Near IR albedo for direct radiation (climatological) +'alnip_p' = { + discipline = 0 ; + parameterCategory = 5 ; + parameterNumber = 10 ; + typeOfGeneratingProcess = 9 ; + } +#Near IR albedo for direct radiation, geometric component (climatological) +'alnipg_p' = { + discipline = 0 ; + parameterCategory = 5 ; + parameterNumber = 11 ; + typeOfGeneratingProcess = 9 ; + } +#Near IR albedo for direct radiation, isotropic component (climatological) +'alnipi_p' = { + discipline = 0 ; + parameterCategory = 5 ; + parameterNumber = 12 ; + typeOfGeneratingProcess = 9 ; + } +#Near IR albedo for direct radiation, volumetric component (climatological) +'alnipv_p' = { + discipline = 0 ; + parameterCategory = 5 ; + parameterNumber = 13 ; + typeOfGeneratingProcess = 9 ; + } #Volcanic sulfur dioxide mass mixing ratio increment 'VSO2diff' = { discipline = 0 ; @@ -2520,6 +2590,127 @@ parameterCategory = 0 ; parameterNumber = 37 ; } +#Forecast logarithm of surface roughness length for moisture +'flsrm' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 55 ; + typeOfFirstFixedSurface = 1 ; + } +#Surface runoff rate +'surfror' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 51 ; + typeOfFirstFixedSurface = 1 ; + } +#Surface runoff +'surfro' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 51 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; + } +#Sub-surface runoff rate +'ssurfror' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 52 ; + typeOfFirstFixedSurface = 1 ; + } +#Sub-surface runoff +'ssurfro' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 52 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; + } +#Reflectance in 0.4 micron channel +'rfl04' = { + discipline = 3 ; + parameterCategory = 1 ; + parameterNumber = 30 ; + } +#Burned area +'fba' = { + discipline = 2 ; + parameterCategory = 4 ; + parameterNumber = 3 ; + } +#Burning area +'bia' = { + discipline = 2 ; + parameterCategory = 4 ; + parameterNumber = 20 ; + } +#Burnable area +'baa' = { + discipline = 2 ; + parameterCategory = 4 ; + parameterNumber = 21 ; + } +#Un-burnable area +'ubaa' = { + discipline = 2 ; + parameterCategory = 4 ; + parameterNumber = 22 ; + } +#Fuel load +'fuell' = { + discipline = 2 ; + parameterCategory = 4 ; + parameterNumber = 23 ; + } +#Combustion completeness +'combc' = { + discipline = 2 ; + parameterCategory = 4 ; + parameterNumber = 24 ; + } +#Fuel moisture content +'fuelmc' = { + discipline = 2 ; + parameterCategory = 4 ; + parameterNumber = 25 ; + } +#Time-integrated total column vertically-integrated eastward geopotential flux +'tvige' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 40 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time-integrated total column vertically-integrated northward geopotential flux +'tvign' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 41 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time-integrated total column vertically-integrated divergence of water geopotential flux +'tviwgd' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 42 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time-integrated total column vertically-integrated divergence of geopotential flux +'tvigd' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 43 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } #Mean temperature tendency due to short-wave radiation 'mttswr' = { discipline = 0 ; @@ -4380,6 +4571,12 @@ scaledValueOfSecondFixedSurface = missing() ; scaleFactorOfSecondFixedSurface = missing() ; } +#Sea surface height with inverse barometer correction +'zosib' = { + discipline = 10 ; + parameterCategory = 3 ; + parameterNumber = 20 ; + } #Sea water practical salinity 'so' = { discipline = 10 ; @@ -5992,6 +6189,66 @@ is_chemical_srcsink = 1 ; sourceSinkChemicalPhysicalProcess = 10 ; } +#Net ecosystem exchange flux +'neef' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 59 ; + } +#Mean net ecosystem exchange flux +'mneef' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 59 ; + typeOfStatisticalProcessing = 0 ; + } +#Accumulated net ecosystem exchange flux +'aneef' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 59 ; + typeOfStatisticalProcessing = 1 ; + } +#Gross primary production flux +'gppf' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 60 ; + } +#Mean gross primary production flux +'mgppf' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 60 ; + typeOfStatisticalProcessing = 0 ; + } +#Accumulated gross primary production flux +'agppf' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 60 ; + typeOfStatisticalProcessing = 1 ; + } +#Ecosystem respiration flux +'erf' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 61 ; + } +#Mean ecosystem respiration flux +'merf' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 61 ; + typeOfStatisticalProcessing = 0 ; + } +#Accumulated ecosystem respiration flux +'aerf' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 61 ; + typeOfStatisticalProcessing = 1 ; + } #Aerosol number density 'aer_ndens' = { discipline = 0 ; diff --git a/definitions/grib2/name.def b/definitions/grib2/name.def index 91cb6e73f..a0bd39071 100644 --- a/definitions/grib2/name.def +++ b/definitions/grib2/name.def @@ -642,6 +642,41 @@ is_chemical_srcsink = 1 ; sourceSinkChemicalPhysicalProcess = 7 ; } +#UV visible albedo for diffuse radiation (climatological) +'UV visible albedo for diffuse radiation (climatological)' = { + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 55 ; + typeOfGeneratingProcess = 9 ; + } +#UV visible albedo for direct radiation (climatological) +'UV visible albedo for direct radiation (climatological)' = { + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 56 ; + typeOfGeneratingProcess = 9 ; + } +#UV visible albedo for direct radiation, geometric component (climatological) +'UV visible albedo for direct radiation, geometric component (climatological)' = { + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 57 ; + typeOfGeneratingProcess = 9 ; + } +#UV visible albedo for direct radiation, isotropic component (climatological) +'UV visible albedo for direct radiation, isotropic component (climatological)' = { + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 58 ; + typeOfGeneratingProcess = 9 ; + } +#UV visible albedo for direct radiation, volumetric component (climatological) +'UV visible albedo for direct radiation, volumetric component (climatological)' = { + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 59 ; + typeOfGeneratingProcess = 9 ; + } #Ammonium aerosol mass mixing ratio 'Ammonium aerosol mass mixing ratio' = { discipline = 0 ; @@ -690,6 +725,41 @@ aerosolType = 62033 ; is_aerosol = 1 ; } +#Near IR albedo for diffuse radiation (climatological) +'Near IR albedo for diffuse radiation (climatological)' = { + discipline = 0 ; + parameterCategory = 5 ; + parameterNumber = 9 ; + typeOfGeneratingProcess = 9 ; + } +#Near IR albedo for direct radiation (climatological) +'Near IR albedo for direct radiation (climatological)' = { + discipline = 0 ; + parameterCategory = 5 ; + parameterNumber = 10 ; + typeOfGeneratingProcess = 9 ; + } +#Near IR albedo for direct radiation, geometric component (climatological) +'Near IR albedo for direct radiation, geometric component (climatological)' = { + discipline = 0 ; + parameterCategory = 5 ; + parameterNumber = 11 ; + typeOfGeneratingProcess = 9 ; + } +#Near IR albedo for direct radiation, isotropic component (climatological) +'Near IR albedo for direct radiation, isotropic component (climatological)' = { + discipline = 0 ; + parameterCategory = 5 ; + parameterNumber = 12 ; + typeOfGeneratingProcess = 9 ; + } +#Near IR albedo for direct radiation, volumetric component (climatological) +'Near IR albedo for direct radiation, volumetric component (climatological)' = { + discipline = 0 ; + parameterCategory = 5 ; + parameterNumber = 13 ; + typeOfGeneratingProcess = 9 ; + } #Volcanic sulfur dioxide mass mixing ratio increment 'Volcanic sulfur dioxide mass mixing ratio increment' = { discipline = 0 ; @@ -2520,6 +2590,127 @@ parameterCategory = 0 ; parameterNumber = 37 ; } +#Forecast logarithm of surface roughness length for moisture +'Forecast logarithm of surface roughness length for moisture' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 55 ; + typeOfFirstFixedSurface = 1 ; + } +#Surface runoff rate +'Surface runoff rate' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 51 ; + typeOfFirstFixedSurface = 1 ; + } +#Surface runoff +'Surface runoff' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 51 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; + } +#Sub-surface runoff rate +'Sub-surface runoff rate' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 52 ; + typeOfFirstFixedSurface = 1 ; + } +#Sub-surface runoff +'Sub-surface runoff' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 52 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; + } +#Reflectance in 0.4 micron channel +'Reflectance in 0.4 micron channel' = { + discipline = 3 ; + parameterCategory = 1 ; + parameterNumber = 30 ; + } +#Burned area +'Burned area' = { + discipline = 2 ; + parameterCategory = 4 ; + parameterNumber = 3 ; + } +#Burning area +'Burning area' = { + discipline = 2 ; + parameterCategory = 4 ; + parameterNumber = 20 ; + } +#Burnable area +'Burnable area' = { + discipline = 2 ; + parameterCategory = 4 ; + parameterNumber = 21 ; + } +#Un-burnable area +'Un-burnable area' = { + discipline = 2 ; + parameterCategory = 4 ; + parameterNumber = 22 ; + } +#Fuel load +'Fuel load' = { + discipline = 2 ; + parameterCategory = 4 ; + parameterNumber = 23 ; + } +#Combustion completeness +'Combustion completeness' = { + discipline = 2 ; + parameterCategory = 4 ; + parameterNumber = 24 ; + } +#Fuel moisture content +'Fuel moisture content' = { + discipline = 2 ; + parameterCategory = 4 ; + parameterNumber = 25 ; + } +#Time-integrated total column vertically-integrated eastward geopotential flux +'Time-integrated total column vertically-integrated eastward geopotential flux' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 40 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time-integrated total column vertically-integrated northward geopotential flux +'Time-integrated total column vertically-integrated northward geopotential flux' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 41 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time-integrated total column vertically-integrated divergence of water geopotential flux +'Time-integrated total column vertically-integrated divergence of water geopotential flux' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 42 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time-integrated total column vertically-integrated divergence of geopotential flux +'Time-integrated total column vertically-integrated divergence of geopotential flux' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 43 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } #Mean temperature tendency due to short-wave radiation 'Mean temperature tendency due to short-wave radiation' = { discipline = 0 ; @@ -4380,6 +4571,12 @@ scaledValueOfSecondFixedSurface = missing() ; scaleFactorOfSecondFixedSurface = missing() ; } +#Sea surface height with inverse barometer correction +'Sea surface height with inverse barometer correction' = { + discipline = 10 ; + parameterCategory = 3 ; + parameterNumber = 20 ; + } #Sea water practical salinity 'Sea water practical salinity' = { discipline = 10 ; @@ -5992,6 +6189,66 @@ is_chemical_srcsink = 1 ; sourceSinkChemicalPhysicalProcess = 10 ; } +#Net ecosystem exchange flux +'Net ecosystem exchange flux' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 59 ; + } +#Mean net ecosystem exchange flux +'Mean net ecosystem exchange flux' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 59 ; + typeOfStatisticalProcessing = 0 ; + } +#Accumulated net ecosystem exchange flux +'Accumulated net ecosystem exchange flux' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 59 ; + typeOfStatisticalProcessing = 1 ; + } +#Gross primary production flux +'Gross primary production flux' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 60 ; + } +#Mean gross primary production flux +'Mean gross primary production flux' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 60 ; + typeOfStatisticalProcessing = 0 ; + } +#Accumulated gross primary production flux +'Accumulated gross primary production flux' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 60 ; + typeOfStatisticalProcessing = 1 ; + } +#Ecosystem respiration flux +'Ecosystem respiration flux' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 61 ; + } +#Mean ecosystem respiration flux +'Mean ecosystem respiration flux' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 61 ; + typeOfStatisticalProcessing = 0 ; + } +#Accumulated ecosystem respiration flux +'Accumulated ecosystem respiration flux' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 61 ; + typeOfStatisticalProcessing = 1 ; + } #Aerosol number density 'Aerosol number density' = { discipline = 0 ; diff --git a/definitions/grib2/paramId.def b/definitions/grib2/paramId.def index 39f4f6860..4278191d5 100644 --- a/definitions/grib2/paramId.def +++ b/definitions/grib2/paramId.def @@ -642,6 +642,41 @@ is_chemical_srcsink = 1 ; sourceSinkChemicalPhysicalProcess = 7 ; } +#UV visible albedo for diffuse radiation (climatological) +'210198' = { + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 55 ; + typeOfGeneratingProcess = 9 ; + } +#UV visible albedo for direct radiation (climatological) +'210199' = { + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 56 ; + typeOfGeneratingProcess = 9 ; + } +#UV visible albedo for direct radiation, geometric component (climatological) +'210200' = { + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 57 ; + typeOfGeneratingProcess = 9 ; + } +#UV visible albedo for direct radiation, isotropic component (climatological) +'210201' = { + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 58 ; + typeOfGeneratingProcess = 9 ; + } +#UV visible albedo for direct radiation, volumetric component (climatological) +'210202' = { + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 59 ; + typeOfGeneratingProcess = 9 ; + } #Ammonium aerosol mass mixing ratio '210249' = { discipline = 0 ; @@ -690,6 +725,41 @@ aerosolType = 62033 ; is_aerosol = 1 ; } +#Near IR albedo for diffuse radiation (climatological) +'210260' = { + discipline = 0 ; + parameterCategory = 5 ; + parameterNumber = 9 ; + typeOfGeneratingProcess = 9 ; + } +#Near IR albedo for direct radiation (climatological) +'210261' = { + discipline = 0 ; + parameterCategory = 5 ; + parameterNumber = 10 ; + typeOfGeneratingProcess = 9 ; + } +#Near IR albedo for direct radiation, geometric component (climatological) +'210262' = { + discipline = 0 ; + parameterCategory = 5 ; + parameterNumber = 11 ; + typeOfGeneratingProcess = 9 ; + } +#Near IR albedo for direct radiation, isotropic component (climatological) +'210263' = { + discipline = 0 ; + parameterCategory = 5 ; + parameterNumber = 12 ; + typeOfGeneratingProcess = 9 ; + } +#Near IR albedo for direct radiation, volumetric component (climatological) +'210264' = { + discipline = 0 ; + parameterCategory = 5 ; + parameterNumber = 13 ; + typeOfGeneratingProcess = 9 ; + } #Volcanic sulfur dioxide mass mixing ratio increment '211170' = { discipline = 0 ; @@ -2520,6 +2590,127 @@ parameterCategory = 0 ; parameterNumber = 37 ; } +#Forecast logarithm of surface roughness length for moisture +'231008' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 55 ; + typeOfFirstFixedSurface = 1 ; + } +#Surface runoff rate +'231009' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 51 ; + typeOfFirstFixedSurface = 1 ; + } +#Surface runoff +'231010' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 51 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; + } +#Sub-surface runoff rate +'231011' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 52 ; + typeOfFirstFixedSurface = 1 ; + } +#Sub-surface runoff +'231012' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 52 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; + } +#Reflectance in 0.4 micron channel +'231013' = { + discipline = 3 ; + parameterCategory = 1 ; + parameterNumber = 30 ; + } +#Burned area +'232000' = { + discipline = 2 ; + parameterCategory = 4 ; + parameterNumber = 3 ; + } +#Burning area +'232001' = { + discipline = 2 ; + parameterCategory = 4 ; + parameterNumber = 20 ; + } +#Burnable area +'232002' = { + discipline = 2 ; + parameterCategory = 4 ; + parameterNumber = 21 ; + } +#Un-burnable area +'232003' = { + discipline = 2 ; + parameterCategory = 4 ; + parameterNumber = 22 ; + } +#Fuel load +'232004' = { + discipline = 2 ; + parameterCategory = 4 ; + parameterNumber = 23 ; + } +#Combustion completeness +'232005' = { + discipline = 2 ; + parameterCategory = 4 ; + parameterNumber = 24 ; + } +#Fuel moisture content +'232006' = { + discipline = 2 ; + parameterCategory = 4 ; + parameterNumber = 25 ; + } +#Time-integrated total column vertically-integrated eastward geopotential flux +'233000' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 40 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time-integrated total column vertically-integrated northward geopotential flux +'233001' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 41 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time-integrated total column vertically-integrated divergence of water geopotential flux +'233002' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 42 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time-integrated total column vertically-integrated divergence of geopotential flux +'233003' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 43 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } #Mean temperature tendency due to short-wave radiation '235001' = { discipline = 0 ; @@ -4380,6 +4571,12 @@ scaledValueOfSecondFixedSurface = missing() ; scaleFactorOfSecondFixedSurface = missing() ; } +#Sea surface height with inverse barometer correction +'262143' = { + discipline = 10 ; + parameterCategory = 3 ; + parameterNumber = 20 ; + } #Sea water practical salinity '262500' = { discipline = 10 ; @@ -5992,6 +6189,66 @@ is_chemical_srcsink = 1 ; sourceSinkChemicalPhysicalProcess = 10 ; } +#Net ecosystem exchange flux +'435000' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 59 ; + } +#Mean net ecosystem exchange flux +'435001' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 59 ; + typeOfStatisticalProcessing = 0 ; + } +#Accumulated net ecosystem exchange flux +'435002' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 59 ; + typeOfStatisticalProcessing = 1 ; + } +#Gross primary production flux +'436000' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 60 ; + } +#Mean gross primary production flux +'436001' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 60 ; + typeOfStatisticalProcessing = 0 ; + } +#Accumulated gross primary production flux +'436002' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 60 ; + typeOfStatisticalProcessing = 1 ; + } +#Ecosystem respiration flux +'437000' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 61 ; + } +#Mean ecosystem respiration flux +'437001' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 61 ; + typeOfStatisticalProcessing = 0 ; + } +#Accumulated ecosystem respiration flux +'437002' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 61 ; + typeOfStatisticalProcessing = 1 ; + } #Aerosol number density '450000' = { discipline = 0 ; diff --git a/definitions/grib2/shortName.def b/definitions/grib2/shortName.def index 97b7093af..c62b2ff97 100644 --- a/definitions/grib2/shortName.def +++ b/definitions/grib2/shortName.def @@ -642,6 +642,41 @@ is_chemical_srcsink = 1 ; sourceSinkChemicalPhysicalProcess = 7 ; } +#UV visible albedo for diffuse radiation (climatological) +'aluvd_p' = { + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 55 ; + typeOfGeneratingProcess = 9 ; + } +#UV visible albedo for direct radiation (climatological) +'aluvp_p' = { + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 56 ; + typeOfGeneratingProcess = 9 ; + } +#UV visible albedo for direct radiation, geometric component (climatological) +'aluvpg_p' = { + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 57 ; + typeOfGeneratingProcess = 9 ; + } +#UV visible albedo for direct radiation, isotropic component (climatological) +'aluvpi_p' = { + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 58 ; + typeOfGeneratingProcess = 9 ; + } +#UV visible albedo for direct radiation, volumetric component (climatological) +'aluvpv_p' = { + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 59 ; + typeOfGeneratingProcess = 9 ; + } #Ammonium aerosol mass mixing ratio 'aermr18' = { discipline = 0 ; @@ -690,6 +725,41 @@ aerosolType = 62033 ; is_aerosol = 1 ; } +#Near IR albedo for diffuse radiation (climatological) +'alnid_p' = { + discipline = 0 ; + parameterCategory = 5 ; + parameterNumber = 9 ; + typeOfGeneratingProcess = 9 ; + } +#Near IR albedo for direct radiation (climatological) +'alnip_p' = { + discipline = 0 ; + parameterCategory = 5 ; + parameterNumber = 10 ; + typeOfGeneratingProcess = 9 ; + } +#Near IR albedo for direct radiation, geometric component (climatological) +'alnipg_p' = { + discipline = 0 ; + parameterCategory = 5 ; + parameterNumber = 11 ; + typeOfGeneratingProcess = 9 ; + } +#Near IR albedo for direct radiation, isotropic component (climatological) +'alnipi_p' = { + discipline = 0 ; + parameterCategory = 5 ; + parameterNumber = 12 ; + typeOfGeneratingProcess = 9 ; + } +#Near IR albedo for direct radiation, volumetric component (climatological) +'alnipv_p' = { + discipline = 0 ; + parameterCategory = 5 ; + parameterNumber = 13 ; + typeOfGeneratingProcess = 9 ; + } #Volcanic sulfur dioxide mass mixing ratio increment 'VSO2diff' = { discipline = 0 ; @@ -2520,6 +2590,127 @@ parameterCategory = 0 ; parameterNumber = 37 ; } +#Forecast logarithm of surface roughness length for moisture +'flsrm' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 55 ; + typeOfFirstFixedSurface = 1 ; + } +#Surface runoff rate +'surfror' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 51 ; + typeOfFirstFixedSurface = 1 ; + } +#Surface runoff +'surfro' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 51 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; + } +#Sub-surface runoff rate +'ssurfror' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 52 ; + typeOfFirstFixedSurface = 1 ; + } +#Sub-surface runoff +'ssurfro' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 52 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; + } +#Reflectance in 0.4 micron channel +'rfl04' = { + discipline = 3 ; + parameterCategory = 1 ; + parameterNumber = 30 ; + } +#Burned area +'fba' = { + discipline = 2 ; + parameterCategory = 4 ; + parameterNumber = 3 ; + } +#Burning area +'bia' = { + discipline = 2 ; + parameterCategory = 4 ; + parameterNumber = 20 ; + } +#Burnable area +'baa' = { + discipline = 2 ; + parameterCategory = 4 ; + parameterNumber = 21 ; + } +#Un-burnable area +'ubaa' = { + discipline = 2 ; + parameterCategory = 4 ; + parameterNumber = 22 ; + } +#Fuel load +'fuell' = { + discipline = 2 ; + parameterCategory = 4 ; + parameterNumber = 23 ; + } +#Combustion completeness +'combc' = { + discipline = 2 ; + parameterCategory = 4 ; + parameterNumber = 24 ; + } +#Fuel moisture content +'fuelmc' = { + discipline = 2 ; + parameterCategory = 4 ; + parameterNumber = 25 ; + } +#Time-integrated total column vertically-integrated eastward geopotential flux +'tvige' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 40 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time-integrated total column vertically-integrated northward geopotential flux +'tvign' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 41 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time-integrated total column vertically-integrated divergence of water geopotential flux +'tviwgd' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 42 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time-integrated total column vertically-integrated divergence of geopotential flux +'tvigd' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 43 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } #Mean temperature tendency due to short-wave radiation 'mttswr' = { discipline = 0 ; @@ -4380,6 +4571,12 @@ scaledValueOfSecondFixedSurface = missing() ; scaleFactorOfSecondFixedSurface = missing() ; } +#Sea surface height with inverse barometer correction +'zosib' = { + discipline = 10 ; + parameterCategory = 3 ; + parameterNumber = 20 ; + } #Sea water practical salinity 'so' = { discipline = 10 ; @@ -5992,6 +6189,66 @@ is_chemical_srcsink = 1 ; sourceSinkChemicalPhysicalProcess = 10 ; } +#Net ecosystem exchange flux +'neef' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 59 ; + } +#Mean net ecosystem exchange flux +'mneef' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 59 ; + typeOfStatisticalProcessing = 0 ; + } +#Accumulated net ecosystem exchange flux +'aneef' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 59 ; + typeOfStatisticalProcessing = 1 ; + } +#Gross primary production flux +'gppf' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 60 ; + } +#Mean gross primary production flux +'mgppf' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 60 ; + typeOfStatisticalProcessing = 0 ; + } +#Accumulated gross primary production flux +'agppf' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 60 ; + typeOfStatisticalProcessing = 1 ; + } +#Ecosystem respiration flux +'erf' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 61 ; + } +#Mean ecosystem respiration flux +'merf' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 61 ; + typeOfStatisticalProcessing = 0 ; + } +#Accumulated ecosystem respiration flux +'aerf' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 61 ; + typeOfStatisticalProcessing = 1 ; + } #Aerosol number density 'aer_ndens' = { discipline = 0 ; diff --git a/definitions/grib2/units.def b/definitions/grib2/units.def index 576e6a2f0..5a7dfbeee 100644 --- a/definitions/grib2/units.def +++ b/definitions/grib2/units.def @@ -642,6 +642,41 @@ is_chemical_srcsink = 1 ; sourceSinkChemicalPhysicalProcess = 7 ; } +#UV visible albedo for diffuse radiation (climatological) +'%' = { + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 55 ; + typeOfGeneratingProcess = 9 ; + } +#UV visible albedo for direct radiation (climatological) +'%' = { + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 56 ; + typeOfGeneratingProcess = 9 ; + } +#UV visible albedo for direct radiation, geometric component (climatological) +'%' = { + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 57 ; + typeOfGeneratingProcess = 9 ; + } +#UV visible albedo for direct radiation, isotropic component (climatological) +'%' = { + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 58 ; + typeOfGeneratingProcess = 9 ; + } +#UV visible albedo for direct radiation, volumetric component (climatological) +'%' = { + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 59 ; + typeOfGeneratingProcess = 9 ; + } #Ammonium aerosol mass mixing ratio 'kg kg**-1' = { discipline = 0 ; @@ -690,6 +725,41 @@ aerosolType = 62033 ; is_aerosol = 1 ; } +#Near IR albedo for diffuse radiation (climatological) +'%' = { + discipline = 0 ; + parameterCategory = 5 ; + parameterNumber = 9 ; + typeOfGeneratingProcess = 9 ; + } +#Near IR albedo for direct radiation (climatological) +'%' = { + discipline = 0 ; + parameterCategory = 5 ; + parameterNumber = 10 ; + typeOfGeneratingProcess = 9 ; + } +#Near IR albedo for direct radiation, geometric component (climatological) +'%' = { + discipline = 0 ; + parameterCategory = 5 ; + parameterNumber = 11 ; + typeOfGeneratingProcess = 9 ; + } +#Near IR albedo for direct radiation, isotropic component (climatological) +'%' = { + discipline = 0 ; + parameterCategory = 5 ; + parameterNumber = 12 ; + typeOfGeneratingProcess = 9 ; + } +#Near IR albedo for direct radiation, volumetric component (climatological) +'%' = { + discipline = 0 ; + parameterCategory = 5 ; + parameterNumber = 13 ; + typeOfGeneratingProcess = 9 ; + } #Volcanic sulfur dioxide mass mixing ratio increment 'kg kg**-1' = { discipline = 0 ; @@ -2520,6 +2590,127 @@ parameterCategory = 0 ; parameterNumber = 37 ; } +#Forecast logarithm of surface roughness length for moisture +'Numeric' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 55 ; + typeOfFirstFixedSurface = 1 ; + } +#Surface runoff rate +'kg m**-2 s**-1' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 51 ; + typeOfFirstFixedSurface = 1 ; + } +#Surface runoff +'kg m**-2' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 51 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; + } +#Sub-surface runoff rate +'kg m**-2 s**-1' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 52 ; + typeOfFirstFixedSurface = 1 ; + } +#Sub-surface runoff +'kg m**-2' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 52 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; + } +#Reflectance in 0.4 micron channel +'%' = { + discipline = 3 ; + parameterCategory = 1 ; + parameterNumber = 30 ; + } +#Burned area +'%' = { + discipline = 2 ; + parameterCategory = 4 ; + parameterNumber = 3 ; + } +#Burning area +'%' = { + discipline = 2 ; + parameterCategory = 4 ; + parameterNumber = 20 ; + } +#Burnable area +'%' = { + discipline = 2 ; + parameterCategory = 4 ; + parameterNumber = 21 ; + } +#Un-burnable area +'%' = { + discipline = 2 ; + parameterCategory = 4 ; + parameterNumber = 22 ; + } +#Fuel load +'kg m**-2' = { + discipline = 2 ; + parameterCategory = 4 ; + parameterNumber = 23 ; + } +#Combustion completeness +'%' = { + discipline = 2 ; + parameterCategory = 4 ; + parameterNumber = 24 ; + } +#Fuel moisture content +'kg kg**-1' = { + discipline = 2 ; + parameterCategory = 4 ; + parameterNumber = 25 ; + } +#Time-integrated total column vertically-integrated eastward geopotential flux +'J m**-1' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 40 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time-integrated total column vertically-integrated northward geopotential flux +'J m**-1' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 41 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time-integrated total column vertically-integrated divergence of water geopotential flux +'J m**-2' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 42 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time-integrated total column vertically-integrated divergence of geopotential flux +'J m**-2' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 43 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } #Mean temperature tendency due to short-wave radiation 'K s**-1' = { discipline = 0 ; @@ -4380,6 +4571,12 @@ scaledValueOfSecondFixedSurface = missing() ; scaleFactorOfSecondFixedSurface = missing() ; } +#Sea surface height with inverse barometer correction +'m' = { + discipline = 10 ; + parameterCategory = 3 ; + parameterNumber = 20 ; + } #Sea water practical salinity '10**-3' = { discipline = 10 ; @@ -5992,6 +6189,66 @@ is_chemical_srcsink = 1 ; sourceSinkChemicalPhysicalProcess = 10 ; } +#Net ecosystem exchange flux +'kg m**-2 s**-1' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 59 ; + } +#Mean net ecosystem exchange flux +'kg m**-2 s**-1' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 59 ; + typeOfStatisticalProcessing = 0 ; + } +#Accumulated net ecosystem exchange flux +'kg m**-2 s**-1' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 59 ; + typeOfStatisticalProcessing = 1 ; + } +#Gross primary production flux +'kg m**-2 s**-1' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 60 ; + } +#Mean gross primary production flux +'kg m**-2 s**-1' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 60 ; + typeOfStatisticalProcessing = 0 ; + } +#Accumulated gross primary production flux +'kg m**-2 s**-1' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 60 ; + typeOfStatisticalProcessing = 1 ; + } +#Ecosystem respiration flux +'kg m**-2 s**-1' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 61 ; + } +#Mean ecosystem respiration flux +'kg m**-2 s**-1' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 61 ; + typeOfStatisticalProcessing = 0 ; + } +#Accumulated ecosystem respiration flux +'kg m**-2 s**-1' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 61 ; + typeOfStatisticalProcessing = 1 ; + } #Aerosol number density 'm**-3' = { discipline = 0 ; From eaef0ad1575a099d10009c9e35992183bab624bf Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 18 May 2023 16:52:15 +0000 Subject: [PATCH 174/378] Update legacy parameter names --- .../localConcepts/ecmf/cfName.legacy.def | 2 +- .../localConcepts/ecmf/cfVarName.legacy.def | 26 +++++----- .../grib2/localConcepts/ecmf/name.legacy.def | 52 +++++++++---------- .../localConcepts/ecmf/paramId.legacy.def | 26 +++++----- .../localConcepts/ecmf/shortName.legacy.def | 26 +++++----- .../grib2/localConcepts/ecmf/units.legacy.def | 26 +++++----- 6 files changed, 79 insertions(+), 79 deletions(-) diff --git a/definitions/grib2/localConcepts/ecmf/cfName.legacy.def b/definitions/grib2/localConcepts/ecmf/cfName.legacy.def index 300e564e7..102bbbc17 100644 --- a/definitions/grib2/localConcepts/ecmf/cfName.legacy.def +++ b/definitions/grib2/localConcepts/ecmf/cfName.legacy.def @@ -136,7 +136,7 @@ parameterCategory = 128 ; parameterNumber = 182 ; } -#Albedo +#Albedo (climatological) 'surface_albedo' = { discipline = 192 ; parameterCategory = 128 ; diff --git a/definitions/grib2/localConcepts/ecmf/cfVarName.legacy.def b/definitions/grib2/localConcepts/ecmf/cfVarName.legacy.def index 1a811b956..487627209 100644 --- a/definitions/grib2/localConcepts/ecmf/cfVarName.legacy.def +++ b/definitions/grib2/localConcepts/ecmf/cfVarName.legacy.def @@ -673,79 +673,79 @@ parameterNumber = 194 ; typeOfStatisticalProcessing = 1 ; } -#Albedo +#Albedo (climatological) 'al' = { discipline = 192 ; parameterCategory = 128 ; parameterNumber = 174 ; } -#UV visible albedo for direct radiation +#UV visible albedo for direct radiation (climatological) 'aluvp' = { discipline = 192 ; parameterCategory = 128 ; parameterNumber = 15 ; } -#UV visible albedo for diffuse radiation +#UV visible albedo for diffuse radiation (climatological) 'aluvd' = { discipline = 192 ; parameterCategory = 128 ; parameterNumber = 16 ; } -#Near IR albedo for direct radiation +#Near IR albedo for direct radiation (climatological) 'alnip' = { discipline = 192 ; parameterCategory = 128 ; parameterNumber = 17 ; } -#Near IR albedo for diffuse radiation +#Near IR albedo for diffuse radiation (climatological) 'alnid' = { discipline = 192 ; parameterCategory = 128 ; parameterNumber = 18 ; } -#Standard deviation of filtered subgrid orography +#Standard deviation of filtered subgrid orography (climatological) 'sdfor' = { discipline = 192 ; parameterCategory = 128 ; parameterNumber = 74 ; } -#Logarithm of surface roughness length for heat +#Logarithm of surface roughness length for heat (climatological) 'lsrh' = { discipline = 192 ; parameterCategory = 128 ; parameterNumber = 234 ; } -#UV visible albedo for direct radiation, isotropic component +#UV visible albedo for direct radiation, isotropic component (climatological) 'aluvpi' = { discipline = 192 ; parameterCategory = 210 ; parameterNumber = 186 ; } -#UV visible albedo for direct radiation, volumetric component +#UV visible albedo for direct radiation, volumetric component (climatological) 'aluvpv' = { discipline = 192 ; parameterCategory = 210 ; parameterNumber = 187 ; } -#UV visible albedo for direct radiation, geometric component +#UV visible albedo for direct radiation, geometric component (climatological) 'aluvpg' = { discipline = 192 ; parameterCategory = 210 ; parameterNumber = 188 ; } -#Near IR albedo for direct radiation, isotropic component +#Near IR albedo for direct radiation, isotropic component (climatological) 'alnipi' = { discipline = 192 ; parameterCategory = 210 ; parameterNumber = 189 ; } -#Near IR albedo for direct radiation, volumetric component +#Near IR albedo for direct radiation, volumetric component (climatological) 'alnipv' = { discipline = 192 ; parameterCategory = 210 ; parameterNumber = 190 ; } -#Near IR albedo for direct radiation, geometric component +#Near IR albedo for direct radiation, geometric component (climatological) 'alnipg' = { discipline = 192 ; parameterCategory = 210 ; diff --git a/definitions/grib2/localConcepts/ecmf/name.legacy.def b/definitions/grib2/localConcepts/ecmf/name.legacy.def index 8e3897713..0dc749da9 100644 --- a/definitions/grib2/localConcepts/ecmf/name.legacy.def +++ b/definitions/grib2/localConcepts/ecmf/name.legacy.def @@ -673,80 +673,80 @@ parameterNumber = 194 ; typeOfStatisticalProcessing = 1 ; } -#Albedo -'Albedo' = { +#Albedo (climatological) +'Albedo (climatological)' = { discipline = 192 ; parameterCategory = 128 ; parameterNumber = 174 ; } -#UV visible albedo for direct radiation -'UV visible albedo for direct radiation' = { +#UV visible albedo for direct radiation (climatological) +'UV visible albedo for direct radiation (climatological)' = { discipline = 192 ; parameterCategory = 128 ; parameterNumber = 15 ; } -#UV visible albedo for diffuse radiation -'UV visible albedo for diffuse radiation' = { +#UV visible albedo for diffuse radiation (climatological) +'UV visible albedo for diffuse radiation (climatological)' = { discipline = 192 ; parameterCategory = 128 ; parameterNumber = 16 ; } -#Near IR albedo for direct radiation -'Near IR albedo for direct radiation' = { +#Near IR albedo for direct radiation (climatological) +'Near IR albedo for direct radiation (climatological)' = { discipline = 192 ; parameterCategory = 128 ; parameterNumber = 17 ; } -#Near IR albedo for diffuse radiation -'Near IR albedo for diffuse radiation' = { +#Near IR albedo for diffuse radiation (climatological) +'Near IR albedo for diffuse radiation (climatological)' = { discipline = 192 ; parameterCategory = 128 ; parameterNumber = 18 ; } -#Standard deviation of filtered subgrid orography -'Standard deviation of filtered subgrid orography' = { +#Standard deviation of filtered subgrid orography (climatological) +'Standard deviation of filtered subgrid orography (climatological)' = { discipline = 192 ; parameterCategory = 128 ; parameterNumber = 74 ; } -#Logarithm of surface roughness length for heat -'Logarithm of surface roughness length for heat' = { +#Logarithm of surface roughness length for heat (climatological) +'Logarithm of surface roughness length for heat (climatological)' = { discipline = 192 ; parameterCategory = 128 ; parameterNumber = 234 ; } -#UV visible albedo for direct radiation, isotropic component -'UV visible albedo for direct radiation, isotropic component ' = { +#UV visible albedo for direct radiation, isotropic component (climatological) +'UV visible albedo for direct radiation, isotropic component (climatological)' = { discipline = 192 ; parameterCategory = 210 ; parameterNumber = 186 ; } -#UV visible albedo for direct radiation, volumetric component -'UV visible albedo for direct radiation, volumetric component ' = { +#UV visible albedo for direct radiation, volumetric component (climatological) +'UV visible albedo for direct radiation, volumetric component (climatological)' = { discipline = 192 ; parameterCategory = 210 ; parameterNumber = 187 ; } -#UV visible albedo for direct radiation, geometric component -'UV visible albedo for direct radiation, geometric component ' = { +#UV visible albedo for direct radiation, geometric component (climatological) +'UV visible albedo for direct radiation, geometric component (climatological)' = { discipline = 192 ; parameterCategory = 210 ; parameterNumber = 188 ; } -#Near IR albedo for direct radiation, isotropic component -'Near IR albedo for direct radiation, isotropic component ' = { +#Near IR albedo for direct radiation, isotropic component (climatological) +'Near IR albedo for direct radiation, isotropic component (climatological)' = { discipline = 192 ; parameterCategory = 210 ; parameterNumber = 189 ; } -#Near IR albedo for direct radiation, volumetric component -'Near IR albedo for direct radiation, volumetric component' = { +#Near IR albedo for direct radiation, volumetric component (climatological) +'Near IR albedo for direct radiation, volumetric component (climatological)' = { discipline = 192 ; parameterCategory = 210 ; parameterNumber = 190 ; } -#Near IR albedo for direct radiation, geometric component -'Near IR albedo for direct radiation, geometric component ' = { +#Near IR albedo for direct radiation, geometric component (climatological) +'Near IR albedo for direct radiation, geometric component (climatological)' = { discipline = 192 ; parameterCategory = 210 ; parameterNumber = 191 ; diff --git a/definitions/grib2/localConcepts/ecmf/paramId.legacy.def b/definitions/grib2/localConcepts/ecmf/paramId.legacy.def index 58a9fb502..513bad918 100644 --- a/definitions/grib2/localConcepts/ecmf/paramId.legacy.def +++ b/definitions/grib2/localConcepts/ecmf/paramId.legacy.def @@ -673,79 +673,79 @@ parameterNumber = 194 ; typeOfStatisticalProcessing = 1 ; } -#Albedo +#Albedo (climatological) '174' = { discipline = 192 ; parameterCategory = 128 ; parameterNumber = 174 ; } -#UV visible albedo for direct radiation +#UV visible albedo for direct radiation (climatological) '15' = { discipline = 192 ; parameterCategory = 128 ; parameterNumber = 15 ; } -#UV visible albedo for diffuse radiation +#UV visible albedo for diffuse radiation (climatological) '16' = { discipline = 192 ; parameterCategory = 128 ; parameterNumber = 16 ; } -#Near IR albedo for direct radiation +#Near IR albedo for direct radiation (climatological) '17' = { discipline = 192 ; parameterCategory = 128 ; parameterNumber = 17 ; } -#Near IR albedo for diffuse radiation +#Near IR albedo for diffuse radiation (climatological) '18' = { discipline = 192 ; parameterCategory = 128 ; parameterNumber = 18 ; } -#Standard deviation of filtered subgrid orography +#Standard deviation of filtered subgrid orography (climatological) '74' = { discipline = 192 ; parameterCategory = 128 ; parameterNumber = 74 ; } -#Logarithm of surface roughness length for heat +#Logarithm of surface roughness length for heat (climatological) '234' = { discipline = 192 ; parameterCategory = 128 ; parameterNumber = 234 ; } -#UV visible albedo for direct radiation, isotropic component +#UV visible albedo for direct radiation, isotropic component (climatological) '210186' = { discipline = 192 ; parameterCategory = 210 ; parameterNumber = 186 ; } -#UV visible albedo for direct radiation, volumetric component +#UV visible albedo for direct radiation, volumetric component (climatological) '210187' = { discipline = 192 ; parameterCategory = 210 ; parameterNumber = 187 ; } -#UV visible albedo for direct radiation, geometric component +#UV visible albedo for direct radiation, geometric component (climatological) '210188' = { discipline = 192 ; parameterCategory = 210 ; parameterNumber = 188 ; } -#Near IR albedo for direct radiation, isotropic component +#Near IR albedo for direct radiation, isotropic component (climatological) '210189' = { discipline = 192 ; parameterCategory = 210 ; parameterNumber = 189 ; } -#Near IR albedo for direct radiation, volumetric component +#Near IR albedo for direct radiation, volumetric component (climatological) '210190' = { discipline = 192 ; parameterCategory = 210 ; parameterNumber = 190 ; } -#Near IR albedo for direct radiation, geometric component +#Near IR albedo for direct radiation, geometric component (climatological) '210191' = { discipline = 192 ; parameterCategory = 210 ; diff --git a/definitions/grib2/localConcepts/ecmf/shortName.legacy.def b/definitions/grib2/localConcepts/ecmf/shortName.legacy.def index 2d2c52241..3844ea59e 100644 --- a/definitions/grib2/localConcepts/ecmf/shortName.legacy.def +++ b/definitions/grib2/localConcepts/ecmf/shortName.legacy.def @@ -673,79 +673,79 @@ parameterNumber = 194 ; typeOfStatisticalProcessing = 1 ; } -#Albedo +#Albedo (climatological) 'al' = { discipline = 192 ; parameterCategory = 128 ; parameterNumber = 174 ; } -#UV visible albedo for direct radiation +#UV visible albedo for direct radiation (climatological) 'aluvp' = { discipline = 192 ; parameterCategory = 128 ; parameterNumber = 15 ; } -#UV visible albedo for diffuse radiation +#UV visible albedo for diffuse radiation (climatological) 'aluvd' = { discipline = 192 ; parameterCategory = 128 ; parameterNumber = 16 ; } -#Near IR albedo for direct radiation +#Near IR albedo for direct radiation (climatological) 'alnip' = { discipline = 192 ; parameterCategory = 128 ; parameterNumber = 17 ; } -#Near IR albedo for diffuse radiation +#Near IR albedo for diffuse radiation (climatological) 'alnid' = { discipline = 192 ; parameterCategory = 128 ; parameterNumber = 18 ; } -#Standard deviation of filtered subgrid orography +#Standard deviation of filtered subgrid orography (climatological) 'sdfor' = { discipline = 192 ; parameterCategory = 128 ; parameterNumber = 74 ; } -#Logarithm of surface roughness length for heat +#Logarithm of surface roughness length for heat (climatological) 'lsrh' = { discipline = 192 ; parameterCategory = 128 ; parameterNumber = 234 ; } -#UV visible albedo for direct radiation, isotropic component +#UV visible albedo for direct radiation, isotropic component (climatological) 'aluvpi' = { discipline = 192 ; parameterCategory = 210 ; parameterNumber = 186 ; } -#UV visible albedo for direct radiation, volumetric component +#UV visible albedo for direct radiation, volumetric component (climatological) 'aluvpv' = { discipline = 192 ; parameterCategory = 210 ; parameterNumber = 187 ; } -#UV visible albedo for direct radiation, geometric component +#UV visible albedo for direct radiation, geometric component (climatological) 'aluvpg' = { discipline = 192 ; parameterCategory = 210 ; parameterNumber = 188 ; } -#Near IR albedo for direct radiation, isotropic component +#Near IR albedo for direct radiation, isotropic component (climatological) 'alnipi' = { discipline = 192 ; parameterCategory = 210 ; parameterNumber = 189 ; } -#Near IR albedo for direct radiation, volumetric component +#Near IR albedo for direct radiation, volumetric component (climatological) 'alnipv' = { discipline = 192 ; parameterCategory = 210 ; parameterNumber = 190 ; } -#Near IR albedo for direct radiation, geometric component +#Near IR albedo for direct radiation, geometric component (climatological) 'alnipg' = { discipline = 192 ; parameterCategory = 210 ; diff --git a/definitions/grib2/localConcepts/ecmf/units.legacy.def b/definitions/grib2/localConcepts/ecmf/units.legacy.def index ba1c54c3d..3c9754d03 100644 --- a/definitions/grib2/localConcepts/ecmf/units.legacy.def +++ b/definitions/grib2/localConcepts/ecmf/units.legacy.def @@ -673,79 +673,79 @@ parameterNumber = 194 ; typeOfStatisticalProcessing = 1 ; } -#Albedo +#Albedo (climatological) '(0 - 1)' = { discipline = 192 ; parameterCategory = 128 ; parameterNumber = 174 ; } -#UV visible albedo for direct radiation +#UV visible albedo for direct radiation (climatological) '(0 - 1)' = { discipline = 192 ; parameterCategory = 128 ; parameterNumber = 15 ; } -#UV visible albedo for diffuse radiation +#UV visible albedo for diffuse radiation (climatological) '(0 - 1)' = { discipline = 192 ; parameterCategory = 128 ; parameterNumber = 16 ; } -#Near IR albedo for direct radiation +#Near IR albedo for direct radiation (climatological) '(0 - 1)' = { discipline = 192 ; parameterCategory = 128 ; parameterNumber = 17 ; } -#Near IR albedo for diffuse radiation +#Near IR albedo for diffuse radiation (climatological) '(0 - 1)' = { discipline = 192 ; parameterCategory = 128 ; parameterNumber = 18 ; } -#Standard deviation of filtered subgrid orography +#Standard deviation of filtered subgrid orography (climatological) 'm' = { discipline = 192 ; parameterCategory = 128 ; parameterNumber = 74 ; } -#Logarithm of surface roughness length for heat +#Logarithm of surface roughness length for heat (climatological) '~' = { discipline = 192 ; parameterCategory = 128 ; parameterNumber = 234 ; } -#UV visible albedo for direct radiation, isotropic component +#UV visible albedo for direct radiation, isotropic component (climatological) '(0 - 1)' = { discipline = 192 ; parameterCategory = 210 ; parameterNumber = 186 ; } -#UV visible albedo for direct radiation, volumetric component +#UV visible albedo for direct radiation, volumetric component (climatological) '(0 - 1)' = { discipline = 192 ; parameterCategory = 210 ; parameterNumber = 187 ; } -#UV visible albedo for direct radiation, geometric component +#UV visible albedo for direct radiation, geometric component (climatological) '(0 - 1)' = { discipline = 192 ; parameterCategory = 210 ; parameterNumber = 188 ; } -#Near IR albedo for direct radiation, isotropic component +#Near IR albedo for direct radiation, isotropic component (climatological) '(0 - 1)' = { discipline = 192 ; parameterCategory = 210 ; parameterNumber = 189 ; } -#Near IR albedo for direct radiation, volumetric component +#Near IR albedo for direct radiation, volumetric component (climatological) '(0 - 1)' = { discipline = 192 ; parameterCategory = 210 ; parameterNumber = 190 ; } -#Near IR albedo for direct radiation, geometric component +#Near IR albedo for direct radiation, geometric component (climatological) '(0 - 1)' = { discipline = 192 ; parameterCategory = 210 ; From 78bbae934e87dc00b5dd55f3cc624ac87e3b12fc Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 18 May 2023 17:00:21 +0000 Subject: [PATCH 175/378] Definitions: Fix units --- definitions/grib2/localConcepts/kwbc/units.def | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/definitions/grib2/localConcepts/kwbc/units.def b/definitions/grib2/localConcepts/kwbc/units.def index e322ed2ad..8c60c88b6 100644 --- a/definitions/grib2/localConcepts/kwbc/units.def +++ b/definitions/grib2/localConcepts/kwbc/units.def @@ -1590,7 +1590,7 @@ parameterNumber = 196 ; } #Ocean Heat Content -'Jm-2' = { +'J m**-2' = { discipline = 10 ; parameterCategory = 4 ; parameterNumber = 197 ; From 80ca355986ee57ee1f3bc5c342eb9e836ff240a2 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sun, 21 May 2023 12:19:08 +0000 Subject: [PATCH 176/378] ECC-1600: sourceSinkChemicalPhysicalProcess key for paramId 403000 Emission mass flux --- definitions/grib2/cfVarName.def | 2 ++ definitions/grib2/name.def | 2 ++ definitions/grib2/paramId.def | 2 ++ definitions/grib2/shortName.def | 2 ++ definitions/grib2/units.def | 2 ++ 5 files changed, 10 insertions(+) diff --git a/definitions/grib2/cfVarName.def b/definitions/grib2/cfVarName.def index a9a44d7ea..5b62e5036 100644 --- a/definitions/grib2/cfVarName.def +++ b/definitions/grib2/cfVarName.def @@ -5986,6 +5986,8 @@ discipline = 0 ; parameterCategory = 20 ; parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 255 ; } #Dry deposition velocity 'drydep_vel' = { diff --git a/definitions/grib2/name.def b/definitions/grib2/name.def index a0bd39071..7e3f8213c 100644 --- a/definitions/grib2/name.def +++ b/definitions/grib2/name.def @@ -5986,6 +5986,8 @@ discipline = 0 ; parameterCategory = 20 ; parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 255 ; } #Dry deposition velocity 'Dry deposition velocity' = { diff --git a/definitions/grib2/paramId.def b/definitions/grib2/paramId.def index 4278191d5..a2ece3346 100644 --- a/definitions/grib2/paramId.def +++ b/definitions/grib2/paramId.def @@ -5986,6 +5986,8 @@ discipline = 0 ; parameterCategory = 20 ; parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 255 ; } #Dry deposition velocity '404000' = { diff --git a/definitions/grib2/shortName.def b/definitions/grib2/shortName.def index c62b2ff97..19a42ff20 100644 --- a/definitions/grib2/shortName.def +++ b/definitions/grib2/shortName.def @@ -5986,6 +5986,8 @@ discipline = 0 ; parameterCategory = 20 ; parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 255 ; } #Dry deposition velocity 'drydep_vel' = { diff --git a/definitions/grib2/units.def b/definitions/grib2/units.def index 5a7dfbeee..3ba04713e 100644 --- a/definitions/grib2/units.def +++ b/definitions/grib2/units.def @@ -5986,6 +5986,8 @@ discipline = 0 ; parameterCategory = 20 ; parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 255 ; } #Dry deposition velocity 'm s**-1' = { From 85e6d58a6abb7f596381ef2e721278264921cc89 Mon Sep 17 00:00:00 2001 From: Eugen Betke Date: Mon, 22 May 2023 03:07:48 +0000 Subject: [PATCH 177/378] Enable single-Precision --- fortran/grib_fortran.c | 53 ++++++++++--------- ...rib_accessor_class_data_complex_packing.cc | 37 ++++++------- 2 files changed, 48 insertions(+), 42 deletions(-) diff --git a/fortran/grib_fortran.c b/fortran/grib_fortran.c index 976eaa2ce..3a2529c21 100644 --- a/fortran/grib_fortran.c +++ b/fortran/grib_fortran.c @@ -2783,38 +2783,41 @@ int grib_f_get_real4(int* gid, char* key, float* val, int len){ int grib_f_get_real4_array_(int* gid, char* key, float *val, int* size, int len) { - /* See ECC-1579: - * Ideally we should be calling: - * err = grib_get_float_array(h, cast_char(buf,key,len), val, &lsize); - * - */ - + /*See ECC-1579:*/ + /*Ideally we should be calling:*/ + + size_t lsize = *size; + char buf[1024]; grib_handle *h = get_handle(*gid); int err = GRIB_SUCCESS; - char buf[1024]; - size_t lsize = *size; - double* val8 = NULL; - size_t i; + err = grib_get_float_array(h, cast_char(buf,key,len), val, &lsize); - if(!h) return GRIB_INVALID_GRIB; + /*grib_handle *h = get_handle(*gid);*/ + /*int err = GRIB_SUCCESS;*/ + /*char buf[1024];*/ + /*size_t lsize = *size;*/ + /*double* val8 = NULL;*/ + /*size_t i;*/ - if(*size) - val8 = (double*)grib_context_malloc(h->context,(*size)*(sizeof(double))); - else - val8 = (double*)grib_context_malloc(h->context,sizeof(double)); + /*if(!h) return GRIB_INVALID_GRIB;*/ - if(!val8) return GRIB_OUT_OF_MEMORY; + /*if(*size)*/ + /* val8 = (double*)grib_context_malloc(h->context,(*size)*(sizeof(double)));*/ + /*else*/ + /* val8 = (double*)grib_context_malloc(h->context,sizeof(double));*/ - err = grib_get_double_array(h, cast_char(buf,key,len), val8, &lsize); - if (err) { - grib_context_free(h->context,val8); - return err; - } + /*if(!val8) return GRIB_OUT_OF_MEMORY;*/ - for(i=0;icontext,val8);*/ + /* return err;*/ + /*}*/ - grib_context_free(h->context,val8); + /*for(i=0;icontext,val8);*/ return err; } @@ -3157,6 +3160,7 @@ int grib_f_get_real8_array_(int* gid, char* key, double*val, int* size, int len) return GRIB_INVALID_GRIB; }else{ err = grib_get_double_array(h, cast_char(buf,key,len), val, &lsize); + printf("%30s - %0.60f\n", __PRETTY_FUNCTION__, val[40]); *size = lsize; return err; } @@ -3166,6 +3170,7 @@ int grib_f_get_real8_array__(int* gid, char* key, double*val, int* size, int len } int grib_f_get_real8_array(int* gid, char* key, double*val, int* size, int len){ return grib_f_get_real8_array_( gid, key, val, size, len); + printf("%s - %0.60f\n", __PRETTY_FUNCTION__, val[40]); } int grib_f_set_force_real8_array__(int* gid, char* key, double *val, int* size, int len){ diff --git a/src/grib_accessor_class_data_complex_packing.cc b/src/grib_accessor_class_data_complex_packing.cc index 6f5122d9b..dd6eec70b 100644 --- a/src/grib_accessor_class_data_complex_packing.cc +++ b/src/grib_accessor_class_data_complex_packing.cc @@ -755,6 +755,7 @@ static int unpack(grib_accessor* a, T* val, size_t* len) if ((ret = grib_get_double_internal(gh, self->laplacianOperator, &laplacianOperator)) != GRIB_SUCCESS) return ret; + if ((ret = grib_get_long_internal(gh, self->sub_j, &sub_j)) != GRIB_SUCCESS) return ret; if ((ret = grib_get_long_internal(gh, self->sub_k, &sub_k)) != GRIB_SUCCESS) @@ -905,24 +906,24 @@ static int unpack_float(grib_accessor* a, float* val, size_t* len) // TODO(maee): See ECC-1579 // Investigate why results are not bit-identical - // return unpack(a, val, len); - - int err = 0; - size_t i = 0; - size_t size = *len; - double* val8 = NULL; - val8 = (double*)grib_context_malloc(a->context, size*(sizeof(double))); - if (!val8) - return GRIB_OUT_OF_MEMORY; - err = unpack(a, val8, len); - if (err) { - grib_context_free(a->context,val8); - return err; - } - - for(i=0; icontext,val8); + return unpack(a, val, len); + + //int err = 0; + //size_t i = 0; + //size_t size = *len; + //double* val8 = NULL; + //val8 = (double*)grib_context_malloc(a->context, size*(sizeof(double))); + //if (!val8) + // return GRIB_OUT_OF_MEMORY; + //err = unpack(a, val8, len); + //if (err) { + // grib_context_free(a->context,val8); + // return err; + //} + + //for(i=0; icontext,val8); return GRIB_SUCCESS; } From 60780b41eaebf51024df83cd26e04bbfcd8bdb41 Mon Sep 17 00:00:00 2001 From: Eugen Betke Date: Wed, 24 May 2023 11:17:05 +0000 Subject: [PATCH 178/378] Single-Precision: templatize grib_power() --- fortran/grib_fortran.c | 4 +- src/eccodes_prototypes.h | 2 +- src/functions.cc | 3 +- src/grib_accessor_class_apply_operators.cc | 3 +- src/grib_accessor_class_bufr_data_array.cc | 10 ++--- ...grib_accessor_class_bufr_elements_table.cc | 3 +- ...grib_accessor_class_data_2order_packing.cc | 9 +++-- src/grib_accessor_class_data_ccsds_packing.cc | 16 ++++---- ...rib_accessor_class_data_complex_packing.cc | 30 ++++++++------- ...a_g1second_order_constant_width_packing.cc | 5 ++- ...g1second_order_general_extended_packing.cc | 37 ++++++++++--------- ...ass_data_g1second_order_general_packing.cc | 5 ++- ..._data_g1second_order_row_by_row_packing.cc | 5 ++- ...ib_accessor_class_data_g1simple_packing.cc | 5 ++- ...ib_accessor_class_data_g22order_packing.cc | 5 ++- ...accessor_class_data_g2bifourier_packing.cc | 9 +++-- ...ib_accessor_class_data_g2simple_packing.cc | 5 ++- ...ib_accessor_class_data_jpeg2000_packing.cc | 9 +++-- src/grib_accessor_class_data_png_packing.cc | 9 +++-- ..._accessor_class_data_run_length_packing.cc | 3 +- src/grib_accessor_class_data_sh_packed.cc | 5 ++- src/grib_accessor_class_data_sh_unpacked.cc | 5 ++- ...grib_accessor_class_data_simple_packing.cc | 24 ++++++------ ...rib_accessor_class_expanded_descriptors.cc | 3 +- ...essor_class_second_order_bits_per_value.cc | 5 ++- ...rib_accessor_class_simple_packing_error.cc | 3 +- src/grib_api_cpp.h | 13 +++++++ src/grib_api_internal.h | 2 - src/grib_api_internal_cpp.h | 1 + src/grib_bits_any_endian.cc | 4 +- src/grib_bufr_descriptor.cc | 3 +- src/grib_header_compute.cc | 2 +- src/grib_optimize_decimal_factor.cc | 21 ++++++----- src/grib_scaling.cc | 30 +++------------ src/grib_scaling.h | 23 ++++++++++++ 35 files changed, 182 insertions(+), 139 deletions(-) create mode 100644 src/grib_api_cpp.h create mode 100644 src/grib_scaling.h diff --git a/fortran/grib_fortran.c b/fortran/grib_fortran.c index 3a2529c21..e6fa07439 100644 --- a/fortran/grib_fortran.c +++ b/fortran/grib_fortran.c @@ -3160,7 +3160,7 @@ int grib_f_get_real8_array_(int* gid, char* key, double*val, int* size, int len) return GRIB_INVALID_GRIB; }else{ err = grib_get_double_array(h, cast_char(buf,key,len), val, &lsize); - printf("%30s - %0.60f\n", __PRETTY_FUNCTION__, val[40]); + printf("%30s - %0.60f\n", __func__, val[40]); *size = lsize; return err; } @@ -3170,7 +3170,7 @@ int grib_f_get_real8_array__(int* gid, char* key, double*val, int* size, int len } int grib_f_get_real8_array(int* gid, char* key, double*val, int* size, int len){ return grib_f_get_real8_array_( gid, key, val, size, len); - printf("%s - %0.60f\n", __PRETTY_FUNCTION__, val[40]); + printf("%s - %0.60f\n", __func__, val[40]); } int grib_f_set_force_real8_array__(int* gid, char* key, double *val, int* size, int len){ diff --git a/src/eccodes_prototypes.h b/src/eccodes_prototypes.h index 5d27ec67f..b0842f3d1 100644 --- a/src/eccodes_prototypes.h +++ b/src/eccodes_prototypes.h @@ -1190,7 +1190,7 @@ grib_accessor* grib_find_attribute(grib_handle* h, const char* name, const char* grib_accessor* grib_find_accessor_fast(grib_handle* h, const char* name); /* grib_scaling.cc*/ -double grib_power(long s, long n); +//double grib_power(long s, long n); long grib_get_binary_scale_fact(double max, double min, long bpval, int* ret); long grib_get_bits_per_value(double max, double min, long binary_scale_factor); long grib_get_decimal_scale_fact(double max, double min, long bpval, long binary_scale); diff --git a/src/functions.cc b/src/functions.cc index ed749c159..3c84d1dc1 100644 --- a/src/functions.cc +++ b/src/functions.cc @@ -8,6 +8,7 @@ * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. */ +#include "grib_api_internal_cpp.h" #include "grib_api_internal.h" long grib_op_eq(long a, long b) @@ -69,7 +70,7 @@ double grib_op_neg_d(double a) long grib_op_pow(long a, long b) { /* Note: This is actually 'a' to the power 'b' */ - return grib_power(b, a); + return grib_power(b, a); } long grib_op_add(long a, long b) diff --git a/src/grib_accessor_class_apply_operators.cc b/src/grib_accessor_class_apply_operators.cc index 57bfb3bf2..5aa497e65 100644 --- a/src/grib_accessor_class_apply_operators.cc +++ b/src/grib_accessor_class_apply_operators.cc @@ -9,6 +9,7 @@ */ +#include "grib_api_internal_cpp.h" #include "grib_api_internal.h" /* This is used by make_class.pl @@ -423,7 +424,7 @@ static int apply_operators(grib_accessor* a) case 7: if (Y) { extraScale = Y; - referenceValueFactor = grib_power(Y, 10); + referenceValueFactor = grib_power(Y, 10); extraWidth = ((10 * Y) + 2) / 3; } else { diff --git a/src/grib_accessor_class_bufr_data_array.cc b/src/grib_accessor_class_bufr_data_array.cc index 64731fa28..b9826b8f9 100644 --- a/src/grib_accessor_class_bufr_data_array.cc +++ b/src/grib_accessor_class_bufr_data_array.cc @@ -7,7 +7,7 @@ * In applying this licence, ECMWF does not waive the privileges and immunities granted to it by * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. */ - +#include "grib_api_internal_cpp.h" #include "grib_api_internal.h" /* @@ -803,7 +803,7 @@ static int encode_double_array(grib_context* c, grib_buffer* buff, long* pos, bu modifiedReference = bd->reference; modifiedFactor = bd->factor; - inverseFactor = grib_power(bd->scale, 10); + inverseFactor = grib_power(bd->scale, 10); modifiedWidth = bd->width; err = descriptor_get_min_max(bd, modifiedWidth, modifiedReference, modifiedFactor, &minAllowed, &maxAllowed); @@ -945,10 +945,10 @@ static int encode_double_array(grib_context* c, grib_buffer* buff, long* pos, bu localRange = (max - min) * inverseFactor + 1; localWidth = ceil(log(localRange) / log(2.0)); lval = round(max * inverseFactor) - reference; - allone = grib_power(localWidth, 2) - 1; + allone = grib_power(localWidth, 2) - 1; while (allone <= lval) { localWidth++; - allone = grib_power(localWidth, 2) - 1; + allone = grib_power(localWidth, 2) - 1; } if (localWidth == 1) localWidth++; @@ -3227,7 +3227,7 @@ static int process_elements(grib_accessor* a, int flag, long onlySubset, long st return err; } bd = grib_bufr_descriptor_clone(self->expanded->v[index]); - bd->reference = -grib_power(bd->width, 2); + bd->reference = -grib_power(bd->width, 2); bd->width++; err = codec_element(c, self, iss, buffer, data, &pos, index, bd, elementIndex, dval, sval); diff --git a/src/grib_accessor_class_bufr_elements_table.cc b/src/grib_accessor_class_bufr_elements_table.cc index b804ec269..07b765591 100644 --- a/src/grib_accessor_class_bufr_elements_table.cc +++ b/src/grib_accessor_class_bufr_elements_table.cc @@ -12,6 +12,7 @@ * Enrico Fucile ****************************************/ +#include "grib_api_internal_cpp.h" #include "grib_api_internal.h" #if GRIB_PTHREADS @@ -350,7 +351,7 @@ static int bufr_get_from_table(grib_accessor* a, bufr_descriptor* v) /* ECC-985: Scale and reference are often 0 so we can reduce calls to atol */ v->scale = atol_fast(list[5]); - v->factor = grib_power(-v->scale, 10); + v->factor = grib_power(-v->scale, 10); v->reference = atol_fast(list[6]); v->width = atol(list[7]); diff --git a/src/grib_accessor_class_data_2order_packing.cc b/src/grib_accessor_class_data_2order_packing.cc index f57505682..f2edfe246 100644 --- a/src/grib_accessor_class_data_2order_packing.cc +++ b/src/grib_accessor_class_data_2order_packing.cc @@ -8,6 +8,7 @@ * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. */ +#include "grib_api_internal_cpp.h" #include "grib_api_internal.h" /* @@ -621,8 +622,8 @@ static int unpack_double(grib_accessor* a, double* val, size_t* len) if (boustrophedonic) reverse_rows(sec_val, n_vals, Ni, bitmap, bitmap_len); - s = grib_power(binary_scale_factor, 2); - d = grib_power(-decimal_scale_factor, 10); + s = grib_power(binary_scale_factor, 2); + d = grib_power(-decimal_scale_factor, 10); for (i = 0; i < n_vals; i++) val[i] = (double)((((double)sec_val[i]) * s) + reference_value) * d; @@ -763,7 +764,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) /* calculation of integer array */ sec_val = (unsigned long*)grib_context_malloc(a->context, (n_vals) * sizeof(long)); - d = grib_power(decimal_scale_factor, 10); + d = grib_power(decimal_scale_factor, 10); max = val[0]; min = max; for (i = 0; i < n_vals; i++) { @@ -785,7 +786,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) /* the scale factor in Grib 1 is adjusted in gribex, for "normalization purpose" ... ?*/ binary_scale_factor = grib_get_binary_scale_fact(max, reference_value, bits_per_value, &err); - divisor = grib_power(-binary_scale_factor, 2); + divisor = grib_power(-binary_scale_factor, 2); for (i = 0; i < n_vals; i++) diff --git a/src/grib_accessor_class_data_ccsds_packing.cc b/src/grib_accessor_class_data_ccsds_packing.cc index 07f42539a..bda1a7004 100644 --- a/src/grib_accessor_class_data_ccsds_packing.cc +++ b/src/grib_accessor_class_data_ccsds_packing.cc @@ -297,7 +297,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) return err; if (bits_per_value == 0 || (binary_scale_factor == 0 && decimal_scale_factor != 0)) { - d = grib_power(decimal_scale_factor, 10); + d = grib_power(decimal_scale_factor, 10); min *= d; max *= d; @@ -326,9 +326,9 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) range = (max - min); unscaled_min = min; unscaled_max = max; - f = (grib_power(bits_per_value, 2) - 1); - minrange = grib_power(-last, 2) * f; - maxrange = grib_power(last, 2) * f; + f = (grib_power(bits_per_value, 2) - 1); + minrange = grib_power(-last, 2) * f; + maxrange = grib_power(last, 2) * f; while (range < minrange) { decimal_scale_factor += 1; @@ -349,11 +349,11 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) "data_ccsds_packing %s: unable to find nearest_smaller_value of %g for %s", __func__, min, self->reference_value); return GRIB_INTERNAL_ERROR; } - d = grib_power(decimal_scale_factor, 10); + d = grib_power(decimal_scale_factor, 10); } binary_scale_factor = grib_get_binary_scale_fact(max, reference_value, bits_per_value, &err); - divisor = grib_power(-binary_scale_factor, 2); + divisor = grib_power(-binary_scale_factor, 2); bits8 = (bits_per_value + 7) / 8 * 8; encoded = (unsigned char*)grib_context_buffer_malloc_clear(a->context, bits8 / 8 * n_vals); @@ -513,8 +513,8 @@ static int unpack(grib_accessor* a, T* val, size_t* len) return GRIB_SUCCESS; } - bscale = grib_power(binary_scale_factor, 2); - dscale = grib_power(-decimal_scale_factor, 10); + bscale = grib_power(binary_scale_factor, 2); + dscale = grib_power(-decimal_scale_factor, 10); buflen = grib_byte_count(a); buf = (unsigned char*)hand->buffer->data; diff --git a/src/grib_accessor_class_data_complex_packing.cc b/src/grib_accessor_class_data_complex_packing.cc index dd6eec70b..7bae18ff9 100644 --- a/src/grib_accessor_class_data_complex_packing.cc +++ b/src/grib_accessor_class_data_complex_packing.cc @@ -8,6 +8,7 @@ * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. */ +#include "grib_api_cpp.h" #include "grib_api_internal_cpp.h" #include /* @@ -446,7 +447,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) if (pen_j == sub_j) { double* values; - d = grib_power(decimal_scale_factor, 10); + d = grib_power(decimal_scale_factor, 10); if (d) { values = (double*)grib_context_malloc_clear(a->context, sizeof(double) * n_vals); for (i = 0; i < n_vals; i++) @@ -546,10 +547,10 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) "unable to find nearest_smaller_value of %g for %s", min, self->reference_value); return GRIB_INTERNAL_ERROR; } - d = grib_power(+decimal_scale_factor, 10); + d = grib_power(+decimal_scale_factor, 10); } else { - d = grib_power(+decimal_scale_factor, 10); + d = grib_power(+decimal_scale_factor, 10); if (grib_get_nearest_smaller_value(gh, self->reference_value, d * min, &reference_value) != GRIB_SUCCESS) { grib_context_log(gh->context, GRIB_LOG_ERROR, "unable to find nearest_smaller_value of %g for %s", d * min, self->reference_value); @@ -569,7 +570,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) } } } - s = grib_power(-binary_scale_factor, 2); + s = grib_power(-binary_scale_factor, 2); i = 0; @@ -693,9 +694,9 @@ static int unpack(grib_accessor* a, T* val, size_t* len) T* scals = NULL; T* pscals = NULL, *pval = NULL; - double s = 0; - double d = 0; - double laplacianOperator = 0; + T s = 0; + T d = 0; + T laplacianOperator = 0; unsigned char* buf = NULL; unsigned char* hres = NULL; unsigned char* lres = NULL; @@ -708,7 +709,7 @@ static int unpack(grib_accessor* a, T* val, size_t* len) long offsetdata = 0; long bits_per_value = 0; - double reference_value = 0; + T reference_value = 0; long binary_scale_factor = 0; long decimal_scale_factor = 0; @@ -722,6 +723,7 @@ static int unpack(grib_accessor* a, T* val, size_t* len) T operat = 0; int bytes; int err = 0; + double tmp; decode_float_proc decode_float = NULL; @@ -738,8 +740,9 @@ static int unpack(grib_accessor* a, T* val, size_t* len) return ret; if ((ret = grib_get_long_internal(gh, self->bits_per_value, &bits_per_value)) != GRIB_SUCCESS) return ret; - if ((ret = grib_get_double_internal(gh, self->reference_value, &reference_value)) != GRIB_SUCCESS) + if ((ret = grib_get_double_internal(gh, self->reference_value, &tmp)) != GRIB_SUCCESS) return ret; + reference_value = tmp; if ((ret = grib_get_long_internal(gh, self->binary_scale_factor, &binary_scale_factor)) != GRIB_SUCCESS) return ret; @@ -753,8 +756,9 @@ static int unpack(grib_accessor* a, T* val, size_t* len) if ((ret = grib_get_long(gh, self->ieee_floats, &ieee_floats)) != GRIB_SUCCESS) return ret; - if ((ret = grib_get_double_internal(gh, self->laplacianOperator, &laplacianOperator)) != GRIB_SUCCESS) + if ((ret = grib_get_double_internal(gh, self->laplacianOperator, &tmp)) != GRIB_SUCCESS) return ret; + laplacianOperator = tmp; if ((ret = grib_get_long_internal(gh, self->sub_j, &sub_j)) != GRIB_SUCCESS) return ret; @@ -803,7 +807,7 @@ static int unpack(grib_accessor* a, T* val, size_t* len) if (pen_j == sub_j) { n_vals = (pen_j + 1) * (pen_j + 2); - d = grib_power(-decimal_scale_factor, 10); + d = grib_power(-decimal_scale_factor, 10); grib_ieee_decode_array(a->context, buf, n_vals, bytes, val); if (d) { @@ -818,8 +822,8 @@ static int unpack(grib_accessor* a, T* val, size_t* len) lpos = 8 * (packed_offset - offsetdata); - s = grib_power(binary_scale_factor, 2); - d = grib_power(-decimal_scale_factor, 10); + s = grib_power(binary_scale_factor, 2); + d = grib_power(-decimal_scale_factor, 10); scals = (T*)grib_context_malloc(a->context, maxv * sizeof(T)); Assert(scals); diff --git a/src/grib_accessor_class_data_g1second_order_constant_width_packing.cc b/src/grib_accessor_class_data_g1second_order_constant_width_packing.cc index 357491283..bba4cd2fa 100644 --- a/src/grib_accessor_class_data_g1second_order_constant_width_packing.cc +++ b/src/grib_accessor_class_data_g1second_order_constant_width_packing.cc @@ -8,6 +8,7 @@ * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. */ +#include "grib_api_internal_cpp.h" #include "grib_api_internal.h" /* @@ -298,8 +299,8 @@ static int unpack_double(grib_accessor* a, double* values, size_t* len) printf("XXXXXXX extrabits=%ld pos=%ld\n",extrabits,pos); }*/ - s = grib_power(binary_scale_factor, 2); - d = grib_power(-decimal_scale_factor, 10); + s = grib_power(binary_scale_factor, 2); + d = grib_power(-decimal_scale_factor, 10); for (i = 0; i < numberOfSecondOrderPackedValues; i++) { values[i] = (double)(((X[i] * s) + reference_value) * d); } diff --git a/src/grib_accessor_class_data_g1second_order_general_extended_packing.cc b/src/grib_accessor_class_data_g1second_order_general_extended_packing.cc index 41567804a..b3eec7ba1 100644 --- a/src/grib_accessor_class_data_g1second_order_general_extended_packing.cc +++ b/src/grib_accessor_class_data_g1second_order_general_extended_packing.cc @@ -8,6 +8,7 @@ * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. */ +#include "grib_api_internal_cpp.h" #include "grib_api_internal.h" #include "grib_optimize_decimal_factor.h" @@ -516,8 +517,8 @@ static int unpack_double(grib_accessor* a, double* values, size_t* len) self->values = (double*)grib_context_malloc_clear(a->context, sizeof(double) * numberOfValues); } - s = grib_power(binary_scale_factor, 2); - d = grib_power(-decimal_scale_factor, 10); + s = grib_power(binary_scale_factor, 2); + d = grib_power(-decimal_scale_factor, 10); for (i = 0; i < numberOfValues; i++) { values[i] = (double)(((X[i] * s) + reference_value) * d); self->values[i] = values[i]; @@ -710,7 +711,7 @@ static int pack_double_old(grib_accessor* a, const double* val, size_t *len) if((ret = grib_get_long_internal(handle,self->decimal_scale_factor, &decimal_scale_factor)) != GRIB_SUCCESS) return ret; - decimal = grib_power(decimal_scale_factor,10); + decimal = grib_power(decimal_scale_factor,10); max*=decimal; min*=decimal; @@ -744,7 +745,7 @@ static int pack_double_old(grib_accessor* a, const double* val, size_t *len) GRIB_SUCCESS) return ret; - divisor = grib_power(-binary_scale_factor,2); + divisor = grib_power(-binary_scale_factor,2); X=(long*)grib_context_malloc_clear(a->context,sizeof(long)*numberOfValues); for(i=0;i< numberOfValues;i++){ X[i] = (((val[i]*decimal)-reference_value)*divisor)+0.5; @@ -815,7 +816,7 @@ static int pack_double_old(grib_accessor* a, const double* val, size_t *len) } } groupWidthA=number_of_bits(handle, maxA-minA); - range=(long)grib_power(groupWidthA,2)-1; + range=(long)grib_power(groupWidthA,2)-1; offsetC=count+groupLengthA; if (offsetC==numberOfValues) { @@ -903,7 +904,7 @@ static int pack_double_old(grib_accessor* a, const double* val, size_t *len) if (minA>X[count+i]) minA=X[count+i]; } groupWidthA=number_of_bits(maxA-minA); - range=(long)grib_power(groupWidthA,2)-1; + range=(long)grib_power(groupWidthA,2)-1; groupLengths[numberOfGroups]=groupLengthA; groupWidths[numberOfGroups]=groupWidthA; firstOrderValues[numberOfGroups] = maxA-range > 0 ? maxA-range : 0; @@ -967,7 +968,7 @@ static int pack_double_old(grib_accessor* a, const double* val, size_t *len) if (minA>X[count+i]) minA=X[count+i]; } groupWidthA=number_of_bits(maxA-minA); - range=(long)grib_power(groupWidthA,2)-1; + range=(long)grib_power(groupWidthA,2)-1; groupLengths[numberOfGroups]=groupLengthA; groupWidths[numberOfGroups]=groupWidthA; firstOrderValues[numberOfGroups] = maxA-range > 0 ? maxA-range : 0; @@ -1009,7 +1010,7 @@ static int pack_double_old(grib_accessor* a, const double* val, size_t *len) if (min>firstOrderValues[i]) min=firstOrderValues[i]; } widthOfFirstOrderValues=number_of_bits(handle, max-min); - firstOrderValuesMax=(long)grib_power(widthOfFirstOrderValues,2)-1; + firstOrderValuesMax=(long)grib_power(widthOfFirstOrderValues,2)-1; if (numberOfGroups>2) { /* loop through all the groups except the last in reverse order to @@ -1033,7 +1034,7 @@ static int pack_double_old(grib_accessor* a, const double* val, size_t *len) if (min>X[offset+j]) min=X[offset+j]; } groupWidth=number_of_bits(handle, max-min); - range=(long)grib_power(groupWidth,2)-1; + range=(long)grib_power(groupWidth,2)-1; /* width of first order values has to be unchanged.*/ for (j=groupWidth;j(decimal_scale_factor, 10); + divisor = grib_power(-binary_scale_factor, 2); /*min = min * decimal;*/ /*max = max * decimal;*/ @@ -1364,7 +1365,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) if ((ret = grib_get_long_internal(handle, self->decimal_scale_factor, &decimal_scale_factor)) != GRIB_SUCCESS) return ret; - decimal = grib_power(decimal_scale_factor, 10); + decimal = grib_power(decimal_scale_factor, 10); min = min * decimal; max = max * decimal; @@ -1375,7 +1376,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) } binary_scale_factor = grib_get_binary_scale_fact(max, reference_value, bits_per_value, &ret); - divisor = grib_power(-binary_scale_factor, 2); + divisor = grib_power(-binary_scale_factor, 2); } if ((ret = grib_set_long_internal(handle, self->binary_scale_factor, binary_scale_factor)) != @@ -1469,7 +1470,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) } } groupWidthA = number_of_bits(handle, maxA - minA); - range = (long)grib_power(groupWidthA, 2) - 1; + range = (long)grib_power(groupWidthA, 2) - 1; offsetC = count + groupLengthA; if (offsetC == numberOfValues) { @@ -1562,7 +1563,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) if (minA>X[count+i]) minA=X[count+i]; } groupWidthA=number_of_bits(maxA-minA); - range=(long)grib_power(groupWidthA,2)-1; + range=(long)grib_power(groupWidthA,2)-1; groupLengths[numberOfGroups]=groupLengthA; groupWidths[numberOfGroups]=groupWidthA; firstOrderValues[numberOfGroups] = maxA-range > 0 ? maxA-range : 0; @@ -1627,7 +1628,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) if (minA>X[count+i]) minA=X[count+i]; } groupWidthA=number_of_bits(maxA-minA); - range=(long)grib_power(groupWidthA,2)-1; + range=(long)grib_power(groupWidthA,2)-1; groupLengths[numberOfGroups]=groupLengthA; groupWidths[numberOfGroups]=groupWidthA; firstOrderValues[numberOfGroups] = maxA-range > 0 ? maxA-range : 0; @@ -1671,7 +1672,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) min = firstOrderValues[i]; } widthOfFirstOrderValues = number_of_bits(handle, max - min); - firstOrderValuesMax = (long)grib_power(widthOfFirstOrderValues, 2) - 1; + firstOrderValuesMax = (long)grib_power(widthOfFirstOrderValues, 2) - 1; if (numberOfGroups > 2) { /* loop through all the groups except the last in reverse order to @@ -1699,7 +1700,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) min = X[offset + j]; } groupWidth = number_of_bits(handle, max - min); - range = (long)grib_power(groupWidth, 2) - 1; + range = (long)grib_power(groupWidth, 2) - 1; /* width of first order values has to be unchanged.*/ for (j = groupWidth; j < groupWidths[i]; j++) { diff --git a/src/grib_accessor_class_data_g1second_order_general_packing.cc b/src/grib_accessor_class_data_g1second_order_general_packing.cc index 856a68930..1c283b972 100644 --- a/src/grib_accessor_class_data_g1second_order_general_packing.cc +++ b/src/grib_accessor_class_data_g1second_order_general_packing.cc @@ -8,6 +8,7 @@ * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. */ +#include "grib_api_internal_cpp.h" #include "grib_api_internal.h" /* @@ -288,8 +289,8 @@ static int unpack_double(grib_accessor* a, double* values, size_t* len) } } - s = grib_power(binary_scale_factor, 2); - d = grib_power(-decimal_scale_factor, 10); + s = grib_power(binary_scale_factor, 2); + d = grib_power(-decimal_scale_factor, 10); for (i = 0; i < numberOfSecondOrderPackedValues; i++) { values[i] = (double)(((X[i] * s) + reference_value) * d); } diff --git a/src/grib_accessor_class_data_g1second_order_row_by_row_packing.cc b/src/grib_accessor_class_data_g1second_order_row_by_row_packing.cc index 9f51021b7..66a7a6647 100644 --- a/src/grib_accessor_class_data_g1second_order_row_by_row_packing.cc +++ b/src/grib_accessor_class_data_g1second_order_row_by_row_packing.cc @@ -8,6 +8,7 @@ * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. */ +#include "grib_api_internal_cpp.h" #include "grib_api_internal.h" /* @@ -415,8 +416,8 @@ static int unpack_double(grib_accessor* a, double* values, size_t* len) k++; } - s = grib_power(binary_scale_factor, 2); - d = grib_power(-decimal_scale_factor, 10); + s = grib_power(binary_scale_factor, 2); + d = grib_power(-decimal_scale_factor, 10); for (i = 0; i < n; i++) { values[i] = (double)(((X[i] * s) + reference_value) * d); } diff --git a/src/grib_accessor_class_data_g1simple_packing.cc b/src/grib_accessor_class_data_g1simple_packing.cc index 168c0e869..9526a8b83 100644 --- a/src/grib_accessor_class_data_g1simple_packing.cc +++ b/src/grib_accessor_class_data_g1simple_packing.cc @@ -8,6 +8,7 @@ * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. */ +#include "grib_api_internal_cpp.h" #include "grib_api_internal.h" /* @@ -290,8 +291,8 @@ static int pack_double(grib_accessor* a, const double* cval, size_t* len) if ((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->offsetsection, &offsetsection)) != GRIB_SUCCESS) return ret; - decimal = grib_power(decimal_scale_factor, 10); - divisor = grib_power(-binary_scale_factor, 2); + decimal = grib_power(decimal_scale_factor, 10); + divisor = grib_power(-binary_scale_factor, 2); buflen = (((bits_per_value * n_vals) + 7) / 8) * sizeof(unsigned char); if ((buflen + (offsetdata - offsetsection)) % 2) { diff --git a/src/grib_accessor_class_data_g22order_packing.cc b/src/grib_accessor_class_data_g22order_packing.cc index ae030eb9b..f688d759a 100644 --- a/src/grib_accessor_class_data_g22order_packing.cc +++ b/src/grib_accessor_class_data_g22order_packing.cc @@ -9,6 +9,7 @@ */ +#include "grib_api_internal_cpp.h" #include "grib_api_internal.h" #include @@ -751,8 +752,8 @@ static int unpack(grib_accessor* a, T* val, const size_t* len) // de_spatial_difference (a->context, sec_val, n_vals, orderOfSpatialDifferencing, bias); } - binary_s = (T)grib_power(binary_scale_factor, 2); - decimal_s = (T)grib_power(-decimal_scale_factor, 10); + binary_s = (T)grib_power(binary_scale_factor, 2); + decimal_s = (T)grib_power(-decimal_scale_factor, 10); for (i = 0; i < n_vals; i++) { if (sec_val[i] == LONG_MAX) { diff --git a/src/grib_accessor_class_data_g2bifourier_packing.cc b/src/grib_accessor_class_data_g2bifourier_packing.cc index cc4bcfc22..d9c09b95d 100644 --- a/src/grib_accessor_class_data_g2bifourier_packing.cc +++ b/src/grib_accessor_class_data_g2bifourier_packing.cc @@ -12,6 +12,7 @@ * philippe.marguinaud@meteo.fr *******************************/ +#include "grib_api_internal_cpp.h" #include "grib_api_internal.h" #include "grib_optimize_decimal_factor.h" #include @@ -667,8 +668,8 @@ static int unpack_double(grib_accessor* a, double* val, size_t* len) buf = (unsigned char*)gh->buffer->data; buf += grib_byte_offset(a); - s = grib_power(bt->binary_scale_factor, 2); - d = grib_power(-bt->decimal_scale_factor, 10); + s = grib_power(bt->binary_scale_factor, 2); + d = grib_power(-bt->decimal_scale_factor, 10); /* * Decode data @@ -815,8 +816,8 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) if (ret != GRIB_SUCCESS) goto cleanup; - s = grib_power(-bt->binary_scale_factor, 2); - d = grib_power(+bt->decimal_scale_factor, 10); + s = grib_power(-bt->binary_scale_factor, 2); + d = grib_power(+bt->decimal_scale_factor, 10); } else { bt->decimal_scale_factor = 0; diff --git a/src/grib_accessor_class_data_g2simple_packing.cc b/src/grib_accessor_class_data_g2simple_packing.cc index ab96dae61..974c23226 100644 --- a/src/grib_accessor_class_data_g2simple_packing.cc +++ b/src/grib_accessor_class_data_g2simple_packing.cc @@ -8,6 +8,7 @@ * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. */ +#include "grib_api_internal_cpp.h" #include "grib_api_internal.h" /* @@ -244,8 +245,8 @@ static int pack_double(grib_accessor* a, const double* cval, size_t* len) if ((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->decimal_scale_factor, &decimal_scale_factor)) != GRIB_SUCCESS) return ret; - decimal = grib_power(decimal_scale_factor, 10); - divisor = grib_power(-binary_scale_factor, 2); + decimal = grib_power(decimal_scale_factor, 10); + divisor = grib_power(-binary_scale_factor, 2); buflen = (((bits_per_value * n_vals) + 7) / 8) * sizeof(unsigned char); buf = (unsigned char*)grib_context_buffer_malloc_clear(a->context, buflen); diff --git a/src/grib_accessor_class_data_jpeg2000_packing.cc b/src/grib_accessor_class_data_jpeg2000_packing.cc index fa62b303e..78441f478 100644 --- a/src/grib_accessor_class_data_jpeg2000_packing.cc +++ b/src/grib_accessor_class_data_jpeg2000_packing.cc @@ -8,6 +8,7 @@ * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. */ +#include "grib_api_internal_cpp.h" #include "grib_api_internal.h" /* @@ -271,8 +272,8 @@ static int unpack_double(grib_accessor* a, double* val, size_t* len) self->dirty = 0; - bscale = grib_power(binary_scale_factor, 2); - dscale = grib_power(-decimal_scale_factor, 10); + bscale = grib_power(binary_scale_factor, 2); + dscale = grib_power(-decimal_scale_factor, 10); /* TODO: This should be called upstream */ if (*len < n_vals) @@ -411,8 +412,8 @@ static int pack_double(grib_accessor* a, const double* cval, size_t* len) if ((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->decimal_scale_factor, &decimal_scale_factor)) != GRIB_SUCCESS) return ret; - decimal = grib_power(decimal_scale_factor, 10); - divisor = grib_power(-binary_scale_factor, 2); + decimal = grib_power(decimal_scale_factor, 10); + divisor = grib_power(-binary_scale_factor, 2); simple_packing_size = (((bits_per_value * n_vals) + 7) / 8) * sizeof(unsigned char); buf = (unsigned char*)grib_context_malloc_clear(a->context, simple_packing_size + EXTRA_BUFFER_SIZE); diff --git a/src/grib_accessor_class_data_png_packing.cc b/src/grib_accessor_class_data_png_packing.cc index e923d2721..5c8edf76a 100644 --- a/src/grib_accessor_class_data_png_packing.cc +++ b/src/grib_accessor_class_data_png_packing.cc @@ -8,6 +8,7 @@ * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. */ +#include "grib_api_internal_cpp.h" #include "grib_api_internal.h" #define PNG_ANYBITS @@ -248,8 +249,8 @@ static int unpack_double(grib_accessor* a, double* val, size_t* len) if ((err = grib_get_long_internal(grib_handle_of_accessor(a), self->decimal_scale_factor, &decimal_scale_factor)) != GRIB_SUCCESS) return err; - bscale = grib_power(binary_scale_factor, 2); - dscale = grib_power(-decimal_scale_factor, 10); + bscale = grib_power(binary_scale_factor, 2); + dscale = grib_power(-decimal_scale_factor, 10); /* TODO: This should be called upstream */ if (*len < n_vals) @@ -498,7 +499,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) return GRIB_SUCCESS; } - d = grib_power(decimal_scale_factor, 10); + d = grib_power(decimal_scale_factor, 10); max = val[0]; min = max; @@ -521,7 +522,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) } binary_scale_factor = grib_get_binary_scale_fact(max, reference_value, bits_per_value, &err); - divisor = grib_power(-binary_scale_factor, 2); + divisor = grib_power(-binary_scale_factor, 2); #ifndef PNG_ANYBITS Assert(bits_per_value % 8 == 0); diff --git a/src/grib_accessor_class_data_run_length_packing.cc b/src/grib_accessor_class_data_run_length_packing.cc index 08ec9227f..893cf3a20 100644 --- a/src/grib_accessor_class_data_run_length_packing.cc +++ b/src/grib_accessor_class_data_run_length_packing.cc @@ -8,6 +8,7 @@ * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. */ +#include "grib_api_internal_cpp.h" #include "grib_api_internal.h" /* @@ -202,7 +203,7 @@ static int unpack_double(grib_accessor* a, double* val, size_t* len) if (decimal_scale_factor > 127) { decimal_scale_factor = -(decimal_scale_factor - 128); } - level_scale_factor = grib_power(-decimal_scale_factor, 10.0); + level_scale_factor = grib_power(-decimal_scale_factor, 10.0); levels = (double*)grib_context_malloc_clear(a->context, sizeof(double) * (number_of_level_values + 1)); levels[0] = missingValue; for (i = 0; i < number_of_level_values; i++) { diff --git a/src/grib_accessor_class_data_sh_packed.cc b/src/grib_accessor_class_data_sh_packed.cc index 986cff981..2741d6b41 100644 --- a/src/grib_accessor_class_data_sh_packed.cc +++ b/src/grib_accessor_class_data_sh_packed.cc @@ -8,6 +8,7 @@ * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. */ +#include "grib_api_internal_cpp.h" #include "grib_api_internal.h" #include /* @@ -328,8 +329,8 @@ static int unpack_double(grib_accessor* a, double* val, size_t* len) lpos = 8 * (packed_offset - offsetdata); - s = grib_power(binary_scale_factor, 2); - d = grib_power(-decimal_scale_factor, 10); + s = grib_power(binary_scale_factor, 2); + d = grib_power(-decimal_scale_factor, 10); scals = (double*)grib_context_malloc(a->context, maxv * sizeof(double)); Assert(scals); diff --git a/src/grib_accessor_class_data_sh_unpacked.cc b/src/grib_accessor_class_data_sh_unpacked.cc index a72e57ada..8894e8bc2 100644 --- a/src/grib_accessor_class_data_sh_unpacked.cc +++ b/src/grib_accessor_class_data_sh_unpacked.cc @@ -8,6 +8,7 @@ * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. */ +#include "grib_api_internal_cpp.h" #include "grib_api_internal.h" #include /* @@ -307,8 +308,8 @@ static int unpack_double(grib_accessor* a, double* val, size_t* len) lpos = 8 * (packed_offset - offsetdata); - s = grib_power(binary_scale_factor, 2); - d = grib_power(-decimal_scale_factor, 10); + s = grib_power(binary_scale_factor, 2); + d = grib_power(-decimal_scale_factor, 10); scals = (double*)grib_context_malloc(a->context, maxv * sizeof(double)); Assert(scals); diff --git a/src/grib_accessor_class_data_simple_packing.cc b/src/grib_accessor_class_data_simple_packing.cc index c1cf199a8..a4977b910 100644 --- a/src/grib_accessor_class_data_simple_packing.cc +++ b/src/grib_accessor_class_data_simple_packing.cc @@ -238,8 +238,8 @@ static int unpack_double_element(grib_accessor* a, size_t idx, double* val) } Assert(idx < n_vals); - s = grib_power(binary_scale_factor, 2); - d = grib_power(-decimal_scale_factor, 10); + s = grib_power(binary_scale_factor, 2); + d = grib_power(-decimal_scale_factor, 10); grib_context_log(a->context, GRIB_LOG_DEBUG, "grib_accessor_data_simple_packing: unpack_double_element: creating %s, %d values (idx=%ld)", @@ -373,8 +373,8 @@ static int unpack(grib_accessor* a, T* val, size_t* len) return GRIB_SUCCESS; } - s = grib_power(binary_scale_factor, 2); - d = grib_power(-decimal_scale_factor, 10); + s = grib_power(binary_scale_factor, 2); + d = grib_power(-decimal_scale_factor, 10); grib_context_log(a->context, GRIB_LOG_DEBUG, "grib_accessor_data_simple_packing: unpack_double : creating %s, %d values", @@ -510,8 +510,8 @@ static int _unpack_double(grib_accessor* a, double* val, size_t* len, unsigned c return GRIB_SUCCESS; } - s = grib_power(binary_scale_factor, 2); - d = grib_power(-decimal_scale_factor, 10); + s = grib_power(binary_scale_factor, 2); + d = grib_power(-decimal_scale_factor, 10); grib_context_log(a->context, GRIB_LOG_DEBUG, "grib_accessor_data_simple_packing: unpack_double : creating %s, %d values", @@ -747,7 +747,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) /* decimal_scale_factor is given, binary_scale_factor=0 and bits_per_value is computed */ binary_scale_factor = 0; decimal_scale_factor = decimal_scale_factor_get; - decimal = grib_power(decimal_scale_factor, 10); + decimal = grib_power(decimal_scale_factor, 10); min *= decimal; max *= decimal; @@ -793,14 +793,14 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) return err; } else { - /* printf("max=%g reference_value=%g grib_power(-last,2)=%g decimal_scale_factor=%ld bits_per_value=%ld\n", - max,reference_value,grib_power(-last,2),decimal_scale_factor,bits_per_value);*/ + /* printf("max=%g reference_value=%g grib_power(-last,2)=%g decimal_scale_factor=%ld bits_per_value=%ld\n", + max,reference_value,grib_power(-last,2),decimal_scale_factor,bits_per_value);*/ range = (max - min); unscaled_min = min; unscaled_max = max; - f = (grib_power(bits_per_value, 2) - 1); - minrange = grib_power(-last, 2) * f; - maxrange = grib_power(last, 2) * f; + f = (grib_power(bits_per_value, 2) - 1); + minrange = grib_power(-last, 2) * f; + maxrange = grib_power(last, 2) * f; while (range < minrange) { decimal_scale_factor += 1; diff --git a/src/grib_accessor_class_expanded_descriptors.cc b/src/grib_accessor_class_expanded_descriptors.cc index 5580dadcf..ee6bd8fbb 100644 --- a/src/grib_accessor_class_expanded_descriptors.cc +++ b/src/grib_accessor_class_expanded_descriptors.cc @@ -15,6 +15,7 @@ can appear */ +#include "grib_api_internal_cpp.h" #include "grib_api_internal.h" /* This is used by make_class.pl @@ -483,7 +484,7 @@ static void __expand(grib_accessor* a, bufr_descriptors_array* unexpanded, bufr_ case 7: if (us->Y) { ccp->extraScale = us->Y; - ccp->referenceFactor = grib_power(us->Y, 10); + ccp->referenceFactor = grib_power(us->Y, 10); ccp->extraWidth = ((10 * us->Y) + 2) / 3; } else { diff --git a/src/grib_accessor_class_second_order_bits_per_value.cc b/src/grib_accessor_class_second_order_bits_per_value.cc index c8fb9f3a3..ae807f7cb 100644 --- a/src/grib_accessor_class_second_order_bits_per_value.cc +++ b/src/grib_accessor_class_second_order_bits_per_value.cc @@ -12,6 +12,7 @@ * Enrico Fucile **********************************/ +#include "grib_api_internal_cpp.h" #include "grib_api_internal.h" /* This is used by make_class.pl @@ -225,8 +226,8 @@ static int unpack_long(grib_accessor* a, long* val, size_t* len) min = values[i]; } - d = grib_power(decimalScaleFactor, 10); - b = grib_power(-binaryScaleFactor, 2); + d = grib_power(decimalScaleFactor, 10); + b = grib_power(-binaryScaleFactor, 2); /* self->bitsPerValue=(long)ceil(log((double)((max-min)*d+1))/log(2.0))-binaryScaleFactor; */ /* See GRIB-540 for why we use ceil */ diff --git a/src/grib_accessor_class_simple_packing_error.cc b/src/grib_accessor_class_simple_packing_error.cc index 6ad7a31c3..591c35563 100644 --- a/src/grib_accessor_class_simple_packing_error.cc +++ b/src/grib_accessor_class_simple_packing_error.cc @@ -13,6 +13,7 @@ **************************************/ +#include "grib_api_internal_cpp.h" #include "grib_api_internal.h" /* This is used by make_class.pl @@ -166,7 +167,7 @@ static int unpack_double(grib_accessor* a, double* val, size_t* len) Assert(1 == 0); if (bitsPerValue != 0) - *val = (*val + grib_power(binaryScaleFactor, 2)) * grib_power(-decimalScaleFactor, 10) * 0.5; + *val = (*val + grib_power(binaryScaleFactor, 2)) * grib_power(-decimalScaleFactor, 10) * 0.5; if (ret == GRIB_SUCCESS) *len = 1; diff --git a/src/grib_api_cpp.h b/src/grib_api_cpp.h new file mode 100644 index 000000000..aac0a52f1 --- /dev/null +++ b/src/grib_api_cpp.h @@ -0,0 +1,13 @@ +/* + * (C) Copyright 2005- ECMWF. + * + * This software is licensed under the terms of the Apache Licence Version 2.0 + * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. + * + * In applying this licence, ECMWF does not waive the privileges and immunities granted to it by + * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. + */ + +#pragma once + +//template T grib_power(long s, long n); diff --git a/src/grib_api_internal.h b/src/grib_api_internal.h index 88d8a50f9..c94bd9994 100644 --- a/src/grib_api_internal.h +++ b/src/grib_api_internal.h @@ -1614,8 +1614,6 @@ typedef struct j2k_encode_helper #endif - - /* This part is automatically generated by ./errors.pl, do not edit */ #ifndef grib_errors_internal_H #define grib_errors_internal_H diff --git a/src/grib_api_internal_cpp.h b/src/grib_api_internal_cpp.h index 4724b050c..2c23dcab5 100644 --- a/src/grib_api_internal_cpp.h +++ b/src/grib_api_internal_cpp.h @@ -14,3 +14,4 @@ #include "grib_value.h" #include "grib_bits_any_endian_simple.h" #include "grib_ieeefloat.h" +#include "grib_scaling.h" diff --git a/src/grib_bits_any_endian.cc b/src/grib_bits_any_endian.cc index 2c803f089..5fd706d9f 100644 --- a/src/grib_bits_any_endian.cc +++ b/src/grib_bits_any_endian.cc @@ -392,7 +392,7 @@ int grib_encode_unsigned_longb(unsigned char* p, unsigned long val, long* bitp, } #ifdef DEBUG { - unsigned long maxV = grib_power(nb, 2); + unsigned long maxV = grib_power(nb, 2); if (val > maxV) { fprintf(stderr, "grib_encode_unsigned_longb: Value=%lu, but number of bits=%ld!\n", val, nb); Assert(0); @@ -421,7 +421,7 @@ int grib_encode_size_tb(unsigned char* p, size_t val, long* bitp, long nb) } #ifdef DEBUG { - size_t maxV = grib_power(nb, 2); + size_t maxV = grib_power(nb, 2); if (val > maxV) { fprintf(stderr, "grib_encode_size_tb: Value=%lu, but number of bits=%ld!\n", val, nb); Assert(0); diff --git a/src/grib_bufr_descriptor.cc b/src/grib_bufr_descriptor.cc index 6d1ab0076..99a406783 100644 --- a/src/grib_bufr_descriptor.cc +++ b/src/grib_bufr_descriptor.cc @@ -9,6 +9,7 @@ */ +#include "grib_api_internal_cpp.h" #include "grib_api_internal.h" bufr_descriptor* grib_bufr_descriptor_new(grib_accessor* tables_accessor, int code, int silent, int* err) @@ -109,7 +110,7 @@ void grib_bufr_descriptor_set_scale(bufr_descriptor* v, long scale) v->scale = scale; if (scale != 0) v->type = BUFR_DESCRIPTOR_TYPE_DOUBLE; - v->factor = grib_power(-scale, 10); + v->factor = grib_power(-scale, 10); } int grib_bufr_descriptor_can_be_missing(bufr_descriptor* v) diff --git a/src/grib_header_compute.cc b/src/grib_header_compute.cc index da68f004e..a3987a51c 100644 --- a/src/grib_header_compute.cc +++ b/src/grib_header_compute.cc @@ -71,7 +71,7 @@ static long op_neg(long a) {return -a;} static double op_neg_d(double a) {return -a;} -static long op_pow(long a, long b) {return grib_power(a,b);} +static long op_pow(long a, long b) {return grib_power(a,b);} static long op_add(long a, long b) {return a+b;} static long op_sub(long a, long b) {return a-b;} static long op_div(long a, long b) {return a/b;} diff --git a/src/grib_optimize_decimal_factor.cc b/src/grib_optimize_decimal_factor.cc index f3b5eeaf5..bb4a64ce1 100644 --- a/src/grib_optimize_decimal_factor.cc +++ b/src/grib_optimize_decimal_factor.cc @@ -8,6 +8,7 @@ * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. */ +#include "grib_api_internal_cpp.h" #include "grib_api_internal.h" #include "grib_optimize_decimal_factor.h" #include @@ -50,9 +51,9 @@ static void factec(int* krep, const double pa, const int knbit, const long kdec, } /* Binary scale factor associated to kdec */ - *ke = floor(log2((pa * grib_power(kdec, 10)) / (grib_power(knbit, 2) - 0.5))) + 1; + *ke = floor(log2((pa * grib_power(kdec, 10)) / (grib_power(knbit, 2) - 0.5))) + 1; /* Encoded value for pa = max - min */ - *knutil = floor(0.5 + pa * grib_power(kdec, 10) * grib_power(-*ke, 2)); + *knutil = floor(0.5 + pa * grib_power(kdec, 10) * grib_power(-*ke, 2)); end: return; @@ -98,14 +99,14 @@ int grib_optimize_decimal_factor(grib_accessor* a, const char* reference_value, xtinyr4 = FLT_MIN; xhuger4 = FLT_MAX; - inbint = grib_power(knbit, 2) - 1; + inbint = grib_power(knbit, 2) - 1; xnbint = (double)inbint; /* Test decimal scale factors; keep the most suitable */ for (jdec = idecmin; jdec <= idecmax; jdec++) { /* Fix a problem in GRIBEX */ if (compat_gribex) - if (pa * grib_power(jdec, 10) <= 1.E-12) + if (pa * grib_power(jdec, 10) <= 1.E-12) continue; /* Check it will be possible to decode reference value with 32bit floats */ @@ -125,7 +126,7 @@ int grib_optimize_decimal_factor(grib_accessor* a, const char* reference_value, /* Check it will be possible to decode the maximum value of the fields using 32bit floats */ if (compat_32bit) - if (pmin * grib_power(jdec, 10) + xnbint * grib_power(ie, 2) >= xhuger4) + if (pmin * grib_power(jdec, 10) + xnbint * grib_power(ie, 2) >= xhuger4) continue; /* GRIB1 demands that the binary scale factor be encoded in a single byte */ @@ -141,8 +142,8 @@ int grib_optimize_decimal_factor(grib_accessor* a, const char* reference_value, } if (inumax > 0) { - double decimal = grib_power(+*kdec, 10); - double divisor = grib_power(-*kbin, 2); + double decimal = grib_power(+*kdec, 10); + double divisor = grib_power(-*kbin, 2); double min = pmin * decimal; long vmin, vmax; if (grib_get_nearest_smaller_value(gh, reference_value, min, ref) != GRIB_SUCCESS) { @@ -164,9 +165,9 @@ int grib_optimize_decimal_factor(grib_accessor* a, const char* reference_value, int last = compat_gribex ? 99 : 127; double min = pmin, max = pmax; double range = max - min; - double f = grib_power(knbit, 2) - 1; - double minrange = grib_power(-last, 2) * f; - double maxrange = grib_power(+last, 2) * f; + double f = grib_power(knbit, 2) - 1; + double minrange = grib_power(-last, 2) * f; + double maxrange = grib_power(+last, 2) * f; double decimal = 1; int err; diff --git a/src/grib_scaling.cc b/src/grib_scaling.cc index d7654889f..2f2d98863 100644 --- a/src/grib_scaling.cc +++ b/src/grib_scaling.cc @@ -12,27 +12,9 @@ * Enrico Fucile **************************************/ +#include "grib_api_internal_cpp.h" #include "grib_api_internal.h" -/* Return n to the power of s */ -double grib_power(long s, long n) -{ - double divisor = 1.0; - if (s == 0) - return 1.0; - if (s == 1) - return n; - while (s < 0) { - divisor /= n; - s++; - } - while (s > 0) { - divisor *= n; - s--; - } - return divisor; -} - long grib_get_binary_scale_fact(double max, double min, long bpval, int* ret) { double range = max - min; @@ -43,14 +25,14 @@ long grib_get_binary_scale_fact(double max, double min, long bpval, int* ret) const size_t ulong_size = sizeof(maxint) * 8; /* See ECC-246 - unsigned long maxint = grib_power(bpval,2) - 1; + unsigned long maxint = grib_power(bpval,2) - 1; double dmaxint=(double)maxint; */ if (bpval >= ulong_size) { *ret = GRIB_OUT_OF_RANGE; /*overflow*/ return 0; } - const double dmaxint = grib_power(bpval, 2) - 1; + const double dmaxint = grib_power(bpval, 2) - 1; maxint = (unsigned long)dmaxint; /* Now it's safe to cast */ *ret = 0; @@ -101,7 +83,7 @@ long grib_get_bits_per_value(double max, double min, long binary_scale_factor) long scale = 0; const long last = 127; /* Depends on edition, should be parameter */ - unsigned long maxint = grib_power(binary_scale_factor, 2) - 1; + unsigned long maxint = grib_power(binary_scale_factor, 2) - 1; double dmaxint = (double)maxint; if (maxint == 0) @@ -145,10 +127,10 @@ long grib_get_decimal_scale_fact(double max, double min, long bpval, long binary long scale = 0; const long last = 127; /* Depends on edition, should be parameter */ - unsigned long maxint = grib_power(bpval, 2) - 1; + unsigned long maxint = grib_power(bpval, 2) - 1; double dmaxint = (double)maxint; - range *= grib_power(-binary_scale, 2); + range *= grib_power(-binary_scale, 2); Assert(bpval >= 1); if (range == 0) diff --git a/src/grib_scaling.h b/src/grib_scaling.h new file mode 100644 index 000000000..4dbd8f6f1 --- /dev/null +++ b/src/grib_scaling.h @@ -0,0 +1,23 @@ +#pragma once + +template T grib_power(long s, long n); + +/* Return n to the power of s */ +template +T grib_power(long s, long n) +{ + T divisor = 1.0; + if (s == 0) + return 1.0; + if (s == 1) + return n; + while (s < 0) { + divisor /= n; + s++; + } + while (s > 0) { + divisor *= n; + s--; + } + return divisor; +} From 273cea1dc8c2207f68a5abb9a5dfa41da1b93b2d Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sun, 28 May 2023 11:56:11 +0000 Subject: [PATCH 179/378] ECC-1598: GRIB2: Modifications to sea-ice parameter long names --- definitions/grib2/cfVarName.def | 4 ++-- definitions/grib2/name.def | 8 ++++---- definitions/grib2/paramId.def | 4 ++-- definitions/grib2/shortName.def | 4 ++-- definitions/grib2/units.def | 4 ++-- 5 files changed, 12 insertions(+), 12 deletions(-) diff --git a/definitions/grib2/cfVarName.def b/definitions/grib2/cfVarName.def index 5b62e5036..a762c7f50 100644 --- a/definitions/grib2/cfVarName.def +++ b/definitions/grib2/cfVarName.def @@ -3839,7 +3839,7 @@ scaledValueOfSecondFixedSurface = missing() ; scaleFactorOfSecondFixedSurface = missing() ; } -#X-component of sea ice velocity +#Eastward sea ice velocity 'siue' = { discipline = 10 ; parameterCategory = 2 ; @@ -3851,7 +3851,7 @@ scaledValueOfSecondFixedSurface = missing() ; scaleFactorOfSecondFixedSurface = missing() ; } -#Y-component of sea ice velocity +#Northward sea ice velocity 'sivn' = { discipline = 10 ; parameterCategory = 2 ; diff --git a/definitions/grib2/name.def b/definitions/grib2/name.def index 7e3f8213c..b1b3ad744 100644 --- a/definitions/grib2/name.def +++ b/definitions/grib2/name.def @@ -3839,8 +3839,8 @@ scaledValueOfSecondFixedSurface = missing() ; scaleFactorOfSecondFixedSurface = missing() ; } -#X-component of sea ice velocity -'X-component of sea ice velocity' = { +#Eastward sea ice velocity +'Eastward sea ice velocity' = { discipline = 10 ; parameterCategory = 2 ; parameterNumber = 4 ; @@ -3851,8 +3851,8 @@ scaledValueOfSecondFixedSurface = missing() ; scaleFactorOfSecondFixedSurface = missing() ; } -#Y-component of sea ice velocity -'Y-component of sea ice velocity' = { +#Northward sea ice velocity +'Northward sea ice velocity' = { discipline = 10 ; parameterCategory = 2 ; parameterNumber = 5 ; diff --git a/definitions/grib2/paramId.def b/definitions/grib2/paramId.def index a2ece3346..343322dca 100644 --- a/definitions/grib2/paramId.def +++ b/definitions/grib2/paramId.def @@ -3839,7 +3839,7 @@ scaledValueOfSecondFixedSurface = missing() ; scaleFactorOfSecondFixedSurface = missing() ; } -#X-component of sea ice velocity +#Eastward sea ice velocity '262003' = { discipline = 10 ; parameterCategory = 2 ; @@ -3851,7 +3851,7 @@ scaledValueOfSecondFixedSurface = missing() ; scaleFactorOfSecondFixedSurface = missing() ; } -#Y-component of sea ice velocity +#Northward sea ice velocity '262004' = { discipline = 10 ; parameterCategory = 2 ; diff --git a/definitions/grib2/shortName.def b/definitions/grib2/shortName.def index 19a42ff20..ccc13076d 100644 --- a/definitions/grib2/shortName.def +++ b/definitions/grib2/shortName.def @@ -3839,7 +3839,7 @@ scaledValueOfSecondFixedSurface = missing() ; scaleFactorOfSecondFixedSurface = missing() ; } -#X-component of sea ice velocity +#Eastward sea ice velocity 'siue' = { discipline = 10 ; parameterCategory = 2 ; @@ -3851,7 +3851,7 @@ scaledValueOfSecondFixedSurface = missing() ; scaleFactorOfSecondFixedSurface = missing() ; } -#Y-component of sea ice velocity +#Northward sea ice velocity 'sivn' = { discipline = 10 ; parameterCategory = 2 ; diff --git a/definitions/grib2/units.def b/definitions/grib2/units.def index 3ba04713e..0aeb9a81b 100644 --- a/definitions/grib2/units.def +++ b/definitions/grib2/units.def @@ -3839,7 +3839,7 @@ scaledValueOfSecondFixedSurface = missing() ; scaleFactorOfSecondFixedSurface = missing() ; } -#X-component of sea ice velocity +#Eastward sea ice velocity 'm s**-1' = { discipline = 10 ; parameterCategory = 2 ; @@ -3851,7 +3851,7 @@ scaledValueOfSecondFixedSurface = missing() ; scaleFactorOfSecondFixedSurface = missing() ; } -#Y-component of sea ice velocity +#Northward sea ice velocity 'm s**-1' = { discipline = 10 ; parameterCategory = 2 ; From 047e5abc0a176109ecd4085cc0efd3b9690dc268 Mon Sep 17 00:00:00 2001 From: Marijana Crepulja Date: Wed, 24 May 2023 13:43:05 +0000 Subject: [PATCH 180/378] ECC-1599 BUFR: Update tables with the latest WMO V40.0.0 --- .../tables/0/wmo/40/codetables/1003.table | 8 + .../tables/0/wmo/40/codetables/10063.table | 10 + .../tables/0/wmo/40/codetables/10064.table | 4 + .../tables/0/wmo/40/codetables/1007.table | 250 +++ .../tables/0/wmo/40/codetables/1024.table | 9 + .../tables/0/wmo/40/codetables/1028.table | 7 + .../tables/0/wmo/40/codetables/1029.table | 8 + .../tables/0/wmo/40/codetables/1033.table | 239 +++ .../tables/0/wmo/40/codetables/1034.table | 104 + .../tables/0/wmo/40/codetables/1036.table | 42 + .../tables/0/wmo/40/codetables/1038.table | 7 + .../tables/0/wmo/40/codetables/1044.table | 9 + .../tables/0/wmo/40/codetables/1052.table | 4 + .../tables/0/wmo/40/codetables/1090.table | 5 + .../tables/0/wmo/40/codetables/1092.table | 6 + .../tables/0/wmo/40/codetables/1101.table | 202 ++ .../tables/0/wmo/40/codetables/11030.table | 25 + .../tables/0/wmo/40/codetables/11031.table | 16 + .../tables/0/wmo/40/codetables/11037.table | 30 + .../tables/0/wmo/40/codetables/11038.table | 17 + .../tables/0/wmo/40/codetables/11039.table | 17 + .../tables/0/wmo/40/codetables/1150.table | 7 + .../tables/0/wmo/40/codetables/1151.table | 3 + .../tables/0/wmo/40/codetables/1155.table | 7 + .../tables/0/wmo/40/codetables/13038.table | 4 + .../tables/0/wmo/40/codetables/13039.table | 3 + .../tables/0/wmo/40/codetables/13040.table | 13 + .../tables/0/wmo/40/codetables/13041.table | 10 + .../tables/0/wmo/40/codetables/13051.table | 8 + .../tables/0/wmo/40/codetables/13056.table | 11 + .../tables/0/wmo/40/codetables/13057.table | 11 + .../tables/0/wmo/40/codetables/15025.table | 4 + .../tables/0/wmo/40/codetables/19001.table | 7 + .../tables/0/wmo/40/codetables/19008.table | 5 + .../tables/0/wmo/40/codetables/19010.table | 3 + .../tables/0/wmo/40/codetables/19100.table | 9 + .../tables/0/wmo/40/codetables/19101.table | 10 + .../tables/0/wmo/40/codetables/19102.table | 8 + .../tables/0/wmo/40/codetables/19103.table | 12 + .../tables/0/wmo/40/codetables/19104.table | 12 + .../tables/0/wmo/40/codetables/19105.table | 10 + .../tables/0/wmo/40/codetables/19107.table | 11 + .../tables/0/wmo/40/codetables/19108.table | 8 + .../tables/0/wmo/40/codetables/19109.table | 12 + .../tables/0/wmo/40/codetables/19110.table | 8 + .../tables/0/wmo/40/codetables/19113.table | 8 + .../tables/0/wmo/40/codetables/19117.table | 4 + .../tables/0/wmo/40/codetables/19119.table | 4 + .../tables/0/wmo/40/codetables/20003.table | 266 +++ .../tables/0/wmo/40/codetables/20004.table | 21 + .../tables/0/wmo/40/codetables/20005.table | 21 + .../tables/0/wmo/40/codetables/20006.table | 5 + .../tables/0/wmo/40/codetables/20008.table | 19 + .../tables/0/wmo/40/codetables/20009.table | 7 + .../tables/0/wmo/40/codetables/2001.table | 4 + .../tables/0/wmo/40/codetables/20011.table | 16 + .../tables/0/wmo/40/codetables/20012.table | 55 + .../tables/0/wmo/40/codetables/20017.table | 11 + .../tables/0/wmo/40/codetables/20018.table | 4 + .../tables/0/wmo/40/codetables/2002.table | 3 + .../tables/0/wmo/40/codetables/20021.table | 23 + .../tables/0/wmo/40/codetables/20022.table | 7 + .../tables/0/wmo/40/codetables/20023.table | 14 + .../tables/0/wmo/40/codetables/20024.table | 8 + .../tables/0/wmo/40/codetables/20025.table | 13 + .../tables/0/wmo/40/codetables/20026.table | 16 + .../tables/0/wmo/40/codetables/20027.table | 8 + .../tables/0/wmo/40/codetables/20028.table | 4 + .../tables/0/wmo/40/codetables/20029.table | 4 + .../tables/0/wmo/40/codetables/2003.table | 13 + .../tables/0/wmo/40/codetables/20032.table | 6 + .../tables/0/wmo/40/codetables/20033.table | 3 + .../tables/0/wmo/40/codetables/20034.table | 12 + .../tables/0/wmo/40/codetables/20035.table | 12 + .../tables/0/wmo/40/codetables/20036.table | 12 + .../tables/0/wmo/40/codetables/20037.table | 12 + .../tables/0/wmo/40/codetables/2004.table | 11 + .../tables/0/wmo/40/codetables/20040.table | 9 + .../tables/0/wmo/40/codetables/20041.table | 14 + .../tables/0/wmo/40/codetables/20042.table | 4 + .../tables/0/wmo/40/codetables/20045.table | 4 + .../tables/0/wmo/40/codetables/20048.table | 5 + .../tables/0/wmo/40/codetables/20050.table | 10 + .../tables/0/wmo/40/codetables/20055.table | 12 + .../tables/0/wmo/40/codetables/20056.table | 8 + .../tables/0/wmo/40/codetables/2006.table | 9 + .../tables/0/wmo/40/codetables/20062.table | 21 + .../tables/0/wmo/40/codetables/20063.table | 72 + .../tables/0/wmo/40/codetables/2007.table | 11 + .../tables/0/wmo/40/codetables/20071.table | 11 + .../tables/0/wmo/40/codetables/2008.table | 7 + .../tables/0/wmo/40/codetables/20085.table | 3 + .../tables/0/wmo/40/codetables/20086.table | 11 + .../tables/0/wmo/40/codetables/20087.table | 6 + .../tables/0/wmo/40/codetables/20089.table | 11 + .../tables/0/wmo/40/codetables/20090.table | 7 + .../tables/0/wmo/40/codetables/20101.table | 11 + .../tables/0/wmo/40/codetables/20102.table | 11 + .../tables/0/wmo/40/codetables/20103.table | 11 + .../tables/0/wmo/40/codetables/20104.table | 11 + .../tables/0/wmo/40/codetables/20105.table | 12 + .../tables/0/wmo/40/codetables/20106.table | 7 + .../tables/0/wmo/40/codetables/20107.table | 11 + .../tables/0/wmo/40/codetables/20108.table | 9 + .../tables/0/wmo/40/codetables/2011.table | 100 + .../tables/0/wmo/40/codetables/20119.table | 4 + .../tables/0/wmo/40/codetables/20124.table | 4 + .../tables/0/wmo/40/codetables/2013.table | 11 + .../tables/0/wmo/40/codetables/20136.table | 44 + .../tables/0/wmo/40/codetables/20137.table | 11 + .../tables/0/wmo/40/codetables/20138.table | 9 + .../tables/0/wmo/40/codetables/2014.table | 51 + .../tables/0/wmo/40/codetables/2015.table | 7 + .../tables/0/wmo/40/codetables/2016.table | 4 + .../tables/0/wmo/40/codetables/2017.table | 6 + .../tables/0/wmo/40/codetables/2019.table | 393 ++++ .../tables/0/wmo/40/codetables/2020.table | 37 + .../tables/0/wmo/40/codetables/2021.table | 8 + .../tables/0/wmo/40/codetables/2022.table | 5 + .../tables/0/wmo/40/codetables/2023.table | 11 + .../tables/0/wmo/40/codetables/2024.table | 4 + .../tables/0/wmo/40/codetables/2025.table | 16 + .../tables/0/wmo/40/codetables/2030.table | 8 + .../tables/0/wmo/40/codetables/2031.table | 21 + .../tables/0/wmo/40/codetables/2032.table | 4 + .../tables/0/wmo/40/codetables/2033.table | 5 + .../tables/0/wmo/40/codetables/2034.table | 7 + .../tables/0/wmo/40/codetables/2036.table | 4 + .../tables/0/wmo/40/codetables/2037.table | 8 + .../tables/0/wmo/40/codetables/2038.table | 16 + .../tables/0/wmo/40/codetables/2039.table | 5 + .../tables/0/wmo/40/codetables/2040.table | 8 + .../tables/0/wmo/40/codetables/2041.table | 6 + .../tables/0/wmo/40/codetables/2042.table | 4 + .../tables/0/wmo/40/codetables/2044.table | 6 + .../tables/0/wmo/40/codetables/2045.table | 5 + .../tables/0/wmo/40/codetables/2046.table | 4 + .../tables/0/wmo/40/codetables/2047.table | 9 + .../tables/0/wmo/40/codetables/2048.table | 16 + .../tables/0/wmo/40/codetables/2049.table | 4 + .../tables/0/wmo/40/codetables/2050.table | 19 + .../tables/0/wmo/40/codetables/2051.table | 5 + .../tables/0/wmo/40/codetables/2052.table | 5 + .../tables/0/wmo/40/codetables/2053.table | 5 + .../tables/0/wmo/40/codetables/2054.table | 6 + .../tables/0/wmo/40/codetables/2055.table | 10 + .../tables/0/wmo/40/codetables/2056.table | 6 + .../tables/0/wmo/40/codetables/2057.table | 7 + .../tables/0/wmo/40/codetables/2058.table | 5 + .../tables/0/wmo/40/codetables/2059.table | 5 + .../tables/0/wmo/40/codetables/2060.table | 7 + .../tables/0/wmo/40/codetables/2061.table | 3 + .../tables/0/wmo/40/codetables/2062.table | 7 + .../tables/0/wmo/40/codetables/2064.table | 4 + .../tables/0/wmo/40/codetables/2066.table | 9 + .../tables/0/wmo/40/codetables/2070.table | 13 + .../tables/0/wmo/40/codetables/2080.table | 7 + .../tables/0/wmo/40/codetables/2081.table | 11 + .../tables/0/wmo/40/codetables/2083.table | 7 + .../tables/0/wmo/40/codetables/2084.table | 5 + .../tables/0/wmo/40/codetables/2092.table | 4 + .../tables/0/wmo/40/codetables/2095.table | 7 + .../tables/0/wmo/40/codetables/2096.table | 9 + .../tables/0/wmo/40/codetables/2097.table | 26 + .../tables/0/wmo/40/codetables/2099.table | 5 + .../tables/0/wmo/40/codetables/2101.table | 10 + .../tables/0/wmo/40/codetables/21026.table | 4 + .../tables/0/wmo/40/codetables/2103.table | 1 + .../tables/0/wmo/40/codetables/2104.table | 9 + .../tables/0/wmo/40/codetables/21066.table | 11 + .../tables/0/wmo/40/codetables/21067.table | 12 + .../tables/0/wmo/40/codetables/21068.table | 7 + .../tables/0/wmo/40/codetables/21069.table | 9 + .../tables/0/wmo/40/codetables/21070.table | 22 + .../tables/0/wmo/40/codetables/21072.table | 3 + .../tables/0/wmo/40/codetables/21073.table | 8 + .../tables/0/wmo/40/codetables/21076.table | 4 + .../tables/0/wmo/40/codetables/21109.table | 7 + .../tables/0/wmo/40/codetables/21115.table | 10 + .../tables/0/wmo/40/codetables/21116.table | 16 + .../tables/0/wmo/40/codetables/21119.table | 14 + .../tables/0/wmo/40/codetables/21144.table | 1 + .../tables/0/wmo/40/codetables/21148.table | 2 + .../tables/0/wmo/40/codetables/2115.table | 7 + .../tables/0/wmo/40/codetables/21150.table | 4 + .../tables/0/wmo/40/codetables/21155.table | 16 + .../tables/0/wmo/40/codetables/21158.table | 4 + .../tables/0/wmo/40/codetables/21159.table | 4 + .../tables/0/wmo/40/codetables/21169.table | 4 + .../tables/0/wmo/40/codetables/2119.table | 8 + .../tables/0/wmo/40/codetables/2131.table | 1 + .../tables/0/wmo/40/codetables/2137.table | 4 + .../tables/0/wmo/40/codetables/2138.table | 3 + .../tables/0/wmo/40/codetables/2139.table | 3 + .../tables/0/wmo/40/codetables/2143.table | 21 + .../tables/0/wmo/40/codetables/2144.table | 8 + .../tables/0/wmo/40/codetables/2145.table | 9 + .../tables/0/wmo/40/codetables/2146.table | 11 + .../tables/0/wmo/40/codetables/2147.table | 11 + .../tables/0/wmo/40/codetables/2148.table | 12 + .../tables/0/wmo/40/codetables/2149.table | 38 + .../tables/0/wmo/40/codetables/2150.table | 55 + .../tables/0/wmo/40/codetables/2151.table | 11 + .../tables/0/wmo/40/codetables/2152.table | 13 + .../tables/0/wmo/40/codetables/2158.table | 8 + .../tables/0/wmo/40/codetables/2159.table | 7 + .../tables/0/wmo/40/codetables/2160.table | 11 + .../tables/0/wmo/40/codetables/2161.table | 5 + .../tables/0/wmo/40/codetables/2162.table | 19 + .../tables/0/wmo/40/codetables/2163.table | 16 + .../tables/0/wmo/40/codetables/2164.table | 5 + .../tables/0/wmo/40/codetables/2165.table | 7 + .../tables/0/wmo/40/codetables/2166.table | 6 + .../tables/0/wmo/40/codetables/2167.table | 4 + .../tables/0/wmo/40/codetables/2169.table | 5 + .../tables/0/wmo/40/codetables/2170.table | 5 + .../tables/0/wmo/40/codetables/2172.table | 5 + .../tables/0/wmo/40/codetables/2175.table | 9 + .../tables/0/wmo/40/codetables/2176.table | 6 + .../tables/0/wmo/40/codetables/2177.table | 6 + .../tables/0/wmo/40/codetables/2178.table | 5 + .../tables/0/wmo/40/codetables/2179.table | 6 + .../tables/0/wmo/40/codetables/2180.table | 8 + .../tables/0/wmo/40/codetables/2181.table | 5 + .../tables/0/wmo/40/codetables/2182.table | 7 + .../tables/0/wmo/40/codetables/2183.table | 9 + .../tables/0/wmo/40/codetables/2184.table | 9 + .../tables/0/wmo/40/codetables/2185.table | 7 + .../tables/0/wmo/40/codetables/2186.table | 24 + .../tables/0/wmo/40/codetables/2187.table | 11 + .../tables/0/wmo/40/codetables/2188.table | 10 + .../tables/0/wmo/40/codetables/2189.table | 4 + .../tables/0/wmo/40/codetables/2191.table | 4 + .../tables/0/wmo/40/codetables/22056.table | 4 + .../tables/0/wmo/40/codetables/22060.table | 4 + .../tables/0/wmo/40/codetables/22061.table | 11 + .../tables/0/wmo/40/codetables/22067.table | 118 ++ .../tables/0/wmo/40/codetables/22068.table | 43 + .../tables/0/wmo/40/codetables/22120.table | 13 + .../tables/0/wmo/40/codetables/22121.table | 9 + .../tables/0/wmo/40/codetables/22122.table | 8 + .../tables/0/wmo/40/codetables/22123.table | 9 + .../tables/0/wmo/40/codetables/22178.table | 12 + .../tables/0/wmo/40/codetables/23001.table | 5 + .../tables/0/wmo/40/codetables/23002.table | 16 + .../tables/0/wmo/40/codetables/23003.table | 8 + .../tables/0/wmo/40/codetables/23004.table | 6 + .../tables/0/wmo/40/codetables/23005.table | 4 + .../tables/0/wmo/40/codetables/23006.table | 8 + .../tables/0/wmo/40/codetables/23007.table | 5 + .../tables/0/wmo/40/codetables/23008.table | 4 + .../tables/0/wmo/40/codetables/23009.table | 4 + .../tables/0/wmo/40/codetables/23016.table | 4 + .../tables/0/wmo/40/codetables/23018.table | 6 + .../tables/0/wmo/40/codetables/23031.table | 4 + .../tables/0/wmo/40/codetables/23032.table | 4 + .../tables/0/wmo/40/codetables/24003.table | 5 + .../tables/0/wmo/40/codetables/25004.table | 4 + .../tables/0/wmo/40/codetables/25005.table | 4 + .../tables/0/wmo/40/codetables/25006.table | 5 + .../tables/0/wmo/40/codetables/25009.table | 4 + .../tables/0/wmo/40/codetables/25010.table | 8 + .../tables/0/wmo/40/codetables/25011.table | 4 + .../tables/0/wmo/40/codetables/25012.table | 4 + .../tables/0/wmo/40/codetables/25013.table | 1 + .../tables/0/wmo/40/codetables/25015.table | 1 + .../tables/0/wmo/40/codetables/25017.table | 1 + .../tables/0/wmo/40/codetables/25020.table | 4 + .../tables/0/wmo/40/codetables/25021.table | 5 + .../tables/0/wmo/40/codetables/25022.table | 8 + .../tables/0/wmo/40/codetables/25023.table | 8 + .../tables/0/wmo/40/codetables/25024.table | 13 + .../tables/0/wmo/40/codetables/25029.table | 5 + .../tables/0/wmo/40/codetables/25030.table | 4 + .../tables/0/wmo/40/codetables/25031.table | 6 + .../tables/0/wmo/40/codetables/25032.table | 4 + .../tables/0/wmo/40/codetables/25033.table | 4 + .../tables/0/wmo/40/codetables/25034.table | 3 + .../tables/0/wmo/40/codetables/25035.table | 8 + .../tables/0/wmo/40/codetables/25036.table | 4 + .../tables/0/wmo/40/codetables/25040.table | 10 + .../tables/0/wmo/40/codetables/25041.table | 4 + .../tables/0/wmo/40/codetables/25042.table | 4 + .../tables/0/wmo/40/codetables/25053.table | 6 + .../tables/0/wmo/40/codetables/25063.table | 4 + .../tables/0/wmo/40/codetables/25069.table | 7 + .../tables/0/wmo/40/codetables/25086.table | 4 + .../tables/0/wmo/40/codetables/25090.table | 11 + .../tables/0/wmo/40/codetables/25093.table | 3 + .../tables/0/wmo/40/codetables/25095.table | 1 + .../tables/0/wmo/40/codetables/25096.table | 4 + .../tables/0/wmo/40/codetables/25097.table | 11 + .../tables/0/wmo/40/codetables/25098.table | 8 + .../tables/0/wmo/40/codetables/25099.table | 6 + .../tables/0/wmo/40/codetables/25110.table | 6 + .../tables/0/wmo/40/codetables/25112.table | 5 + .../tables/0/wmo/40/codetables/25113.table | 3 + .../tables/0/wmo/40/codetables/25120.table | 4 + .../tables/0/wmo/40/codetables/25122.table | 4 + .../tables/0/wmo/40/codetables/25123.table | 4 + .../tables/0/wmo/40/codetables/25124.table | 4 + .../tables/0/wmo/40/codetables/25139.table | 3 + .../tables/0/wmo/40/codetables/25150.table | 3 + .../tables/0/wmo/40/codetables/25174.table | 13 + .../tables/0/wmo/40/codetables/25181.table | 3 + .../tables/0/wmo/40/codetables/25182.table | 3 + .../tables/0/wmo/40/codetables/25184.table | 3 + .../tables/0/wmo/40/codetables/25185.table | 2 + .../tables/0/wmo/40/codetables/25187.table | 3 + .../tables/0/wmo/40/codetables/25188.table | 6 + .../tables/0/wmo/40/codetables/25190.table | 7 + .../tables/0/wmo/40/codetables/25191.table | 4 + .../tables/0/wmo/40/codetables/26010.table | 25 + .../tables/0/wmo/40/codetables/29001.table | 8 + .../tables/0/wmo/40/codetables/29002.table | 4 + .../tables/0/wmo/40/codetables/3001.table | 12 + .../tables/0/wmo/40/codetables/3003.table | 8 + .../tables/0/wmo/40/codetables/30031.table | 13 + .../tables/0/wmo/40/codetables/30032.table | 9 + .../tables/0/wmo/40/codetables/3004.table | 11 + .../tables/0/wmo/40/codetables/3008.table | 4 + .../tables/0/wmo/40/codetables/3010.table | 12 + .../tables/0/wmo/40/codetables/3011.table | 4 + .../tables/0/wmo/40/codetables/3012.table | 3 + .../tables/0/wmo/40/codetables/3016.table | 9 + .../tables/0/wmo/40/codetables/3017.table | 5 + .../tables/0/wmo/40/codetables/3018.table | 22 + .../tables/0/wmo/40/codetables/3019.table | 8 + .../tables/0/wmo/40/codetables/3020.table | 5 + .../tables/0/wmo/40/codetables/3021.table | 4 + .../tables/0/wmo/40/codetables/3022.table | 4 + .../tables/0/wmo/40/codetables/3023.table | 8 + .../tables/0/wmo/40/codetables/3027.table | 8 + .../tables/0/wmo/40/codetables/3028.table | 8 + .../tables/0/wmo/40/codetables/3029.table | 3 + .../tables/0/wmo/40/codetables/3030.table | 3 + .../tables/0/wmo/40/codetables/31021.table | 10 + .../tables/0/wmo/40/codetables/31031.table | 1 + .../tables/0/wmo/40/codetables/33002.table | 4 + .../tables/0/wmo/40/codetables/33003.table | 5 + .../tables/0/wmo/40/codetables/33005.table | 23 + .../tables/0/wmo/40/codetables/33006.table | 5 + .../tables/0/wmo/40/codetables/33015.table | 16 + .../tables/0/wmo/40/codetables/33020.table | 8 + .../tables/0/wmo/40/codetables/33021.table | 4 + .../tables/0/wmo/40/codetables/33022.table | 4 + .../tables/0/wmo/40/codetables/33023.table | 4 + .../tables/0/wmo/40/codetables/33024.table | 10 + .../tables/0/wmo/40/codetables/33025.table | 5 + .../tables/0/wmo/40/codetables/33026.table | 17 + .../tables/0/wmo/40/codetables/33027.table | 6 + .../tables/0/wmo/40/codetables/33028.table | 5 + .../tables/0/wmo/40/codetables/33030.table | 7 + .../tables/0/wmo/40/codetables/33031.table | 21 + .../tables/0/wmo/40/codetables/33032.table | 7 + .../tables/0/wmo/40/codetables/33033.table | 3 + .../tables/0/wmo/40/codetables/33035.table | 10 + .../tables/0/wmo/40/codetables/33037.table | 19 + .../tables/0/wmo/40/codetables/33038.table | 9 + .../tables/0/wmo/40/codetables/33039.table | 12 + .../tables/0/wmo/40/codetables/33041.table | 4 + .../tables/0/wmo/40/codetables/33042.table | 5 + .../tables/0/wmo/40/codetables/33043.table | 4 + .../tables/0/wmo/40/codetables/33044.table | 14 + .../tables/0/wmo/40/codetables/33047.table | 27 + .../tables/0/wmo/40/codetables/33048.table | 4 + .../tables/0/wmo/40/codetables/33049.table | 4 + .../tables/0/wmo/40/codetables/33050.table | 9 + .../tables/0/wmo/40/codetables/33055.table | 13 + .../tables/0/wmo/40/codetables/33056.table | 13 + .../tables/0/wmo/40/codetables/33060.table | 4 + .../tables/0/wmo/40/codetables/33066.table | 4 + .../tables/0/wmo/40/codetables/33070.table | 14 + .../tables/0/wmo/40/codetables/33071.table | 10 + .../tables/0/wmo/40/codetables/33072.table | 18 + .../tables/0/wmo/40/codetables/33075.table | 5 + .../tables/0/wmo/40/codetables/33076.table | 2 + .../tables/0/wmo/40/codetables/33077.table | 12 + .../tables/0/wmo/40/codetables/33078.table | 5 + .../tables/0/wmo/40/codetables/33079.table | 10 + .../tables/0/wmo/40/codetables/33080.table | 13 + .../tables/0/wmo/40/codetables/33081.table | 9 + .../tables/0/wmo/40/codetables/33082.table | 10 + .../tables/0/wmo/40/codetables/33083.table | 10 + .../tables/0/wmo/40/codetables/33084.table | 10 + .../tables/0/wmo/40/codetables/33085.table | 14 + .../tables/0/wmo/40/codetables/33086.table | 5 + .../tables/0/wmo/40/codetables/33087.table | 10 + .../tables/0/wmo/40/codetables/33088.table | 12 + .../tables/0/wmo/40/codetables/33092.table | 2 + .../tables/0/wmo/40/codetables/33093.table | 19 + .../tables/0/wmo/40/codetables/33094.table | 8 + .../tables/0/wmo/40/codetables/33095.table | 7 + .../tables/0/wmo/40/codetables/33096.table | 15 + .../tables/0/wmo/40/codetables/33097.table | 10 + .../tables/0/wmo/40/codetables/33098.table | 8 + .../tables/0/wmo/40/codetables/33099.table | 15 + .../tables/0/wmo/40/codetables/33100.table | 7 + .../tables/0/wmo/40/codetables/33101.table | 12 + .../tables/0/wmo/40/codetables/33102.table | 9 + .../tables/0/wmo/40/codetables/33103.table | 8 + .../tables/0/wmo/40/codetables/33104.table | 15 + .../tables/0/wmo/40/codetables/33105.table | 9 + .../tables/0/wmo/40/codetables/33106.table | 12 + .../tables/0/wmo/40/codetables/33107.table | 15 + .../tables/0/wmo/40/codetables/33108.table | 12 + .../tables/0/wmo/40/codetables/33109.table | 6 + .../tables/0/wmo/40/codetables/33110.table | 8 + .../tables/0/wmo/40/codetables/33111.table | 31 + .../tables/0/wmo/40/codetables/33113.table | 11 + .../tables/0/wmo/40/codetables/33114.table | 16 + .../tables/0/wmo/40/codetables/33115.table | 6 + .../tables/0/wmo/40/codetables/35000.table | 1 + .../tables/0/wmo/40/codetables/35001.table | 4 + .../tables/0/wmo/40/codetables/35030.table | 10 + .../tables/0/wmo/40/codetables/35031.table | 20 + .../tables/0/wmo/40/codetables/35032.table | 10 + .../tables/0/wmo/40/codetables/35033.table | 12 + .../tables/0/wmo/40/codetables/35034.table | 7 + .../tables/0/wmo/40/codetables/35035.table | 20 + .../tables/0/wmo/40/codetables/40005.table | 5 + .../tables/0/wmo/40/codetables/40006.table | 8 + .../tables/0/wmo/40/codetables/40011.table | 4 + .../tables/0/wmo/40/codetables/40012.table | 3 + .../tables/0/wmo/40/codetables/40013.table | 5 + .../tables/0/wmo/40/codetables/40020.table | 16 + .../tables/0/wmo/40/codetables/40023.table | 4 + .../tables/0/wmo/40/codetables/40024.table | 5 + .../tables/0/wmo/40/codetables/40025.table | 4 + .../tables/0/wmo/40/codetables/40028.table | 16 + .../tables/0/wmo/40/codetables/40036.table | 3 + .../tables/0/wmo/40/codetables/40043.table | 4 + .../tables/0/wmo/40/codetables/40045.table | 4 + .../tables/0/wmo/40/codetables/40046.table | 5 + .../tables/0/wmo/40/codetables/40047.table | 4 + .../tables/0/wmo/40/codetables/40048.table | 4 + .../tables/0/wmo/40/codetables/40049.table | 12 + .../tables/0/wmo/40/codetables/40050.table | 3 + .../tables/0/wmo/40/codetables/40051.table | 8 + .../tables/0/wmo/40/codetables/40052.table | 4 + .../tables/0/wmo/40/codetables/40054.table | 12 + .../tables/0/wmo/40/codetables/40055.table | 20 + .../tables/0/wmo/40/codetables/40056.table | 4 + .../tables/0/wmo/40/codetables/40057.table | 30 + .../tables/0/wmo/40/codetables/40068.table | 4 + .../tables/0/wmo/40/codetables/40074.table | 10 + .../tables/0/wmo/40/codetables/4059.table | 5 + .../tables/0/wmo/40/codetables/4080.table | 6 + .../tables/0/wmo/40/codetables/42004.table | 3 + .../tables/0/wmo/40/codetables/5069.table | 4 + .../tables/0/wmo/40/codetables/8001.table | 6 + .../tables/0/wmo/40/codetables/8002.table | 19 + .../tables/0/wmo/40/codetables/8003.table | 12 + .../tables/0/wmo/40/codetables/8004.table | 6 + .../tables/0/wmo/40/codetables/8005.table | 7 + .../tables/0/wmo/40/codetables/8006.table | 8 + .../tables/0/wmo/40/codetables/8007.table | 5 + .../tables/0/wmo/40/codetables/8008.table | 8 + .../tables/0/wmo/40/codetables/8009.table | 16 + .../tables/0/wmo/40/codetables/8010.table | 14 + .../tables/0/wmo/40/codetables/8011.table | 27 + .../tables/0/wmo/40/codetables/8012.table | 4 + .../tables/0/wmo/40/codetables/8013.table | 4 + .../tables/0/wmo/40/codetables/8014.table | 10 + .../tables/0/wmo/40/codetables/8015.table | 4 + .../tables/0/wmo/40/codetables/8016.table | 5 + .../tables/0/wmo/40/codetables/8017.table | 4 + .../tables/0/wmo/40/codetables/8018.table | 4 + .../tables/0/wmo/40/codetables/8019.table | 8 + .../tables/0/wmo/40/codetables/8021.table | 32 + .../tables/0/wmo/40/codetables/8023.table | 15 + .../tables/0/wmo/40/codetables/8024.table | 12 + .../tables/0/wmo/40/codetables/8025.table | 5 + .../tables/0/wmo/40/codetables/8026.table | 5 + .../tables/0/wmo/40/codetables/8029.table | 16 + .../tables/0/wmo/40/codetables/8032.table | 7 + .../tables/0/wmo/40/codetables/8033.table | 6 + .../tables/0/wmo/40/codetables/8034.table | 10 + .../tables/0/wmo/40/codetables/8035.table | 8 + .../tables/0/wmo/40/codetables/8036.table | 8 + .../tables/0/wmo/40/codetables/8037.table | 4 + .../tables/0/wmo/40/codetables/8038.table | 3 + .../tables/0/wmo/40/codetables/8039.table | 8 + .../tables/0/wmo/40/codetables/8040.table | 49 + .../tables/0/wmo/40/codetables/8041.table | 15 + .../tables/0/wmo/40/codetables/8042.table | 17 + .../tables/0/wmo/40/codetables/8043.table | 20 + .../tables/0/wmo/40/codetables/8050.table | 11 + .../tables/0/wmo/40/codetables/8051.table | 7 + .../tables/0/wmo/40/codetables/8052.table | 26 + .../tables/0/wmo/40/codetables/8053.table | 4 + .../tables/0/wmo/40/codetables/8054.table | 3 + .../tables/0/wmo/40/codetables/8060.table | 8 + .../tables/0/wmo/40/codetables/8065.table | 4 + .../tables/0/wmo/40/codetables/8066.table | 4 + .../tables/0/wmo/40/codetables/8070.table | 6 + .../tables/0/wmo/40/codetables/8072.table | 6 + .../tables/0/wmo/40/codetables/8074.table | 4 + .../tables/0/wmo/40/codetables/8075.table | 4 + .../tables/0/wmo/40/codetables/8076.table | 9 + .../tables/0/wmo/40/codetables/8077.table | 7 + .../tables/0/wmo/40/codetables/8079.table | 9 + .../tables/0/wmo/40/codetables/8080.table | 16 + .../tables/0/wmo/40/codetables/8081.table | 5 + .../tables/0/wmo/40/codetables/8082.table | 3 + .../tables/0/wmo/40/codetables/8083.table | 9 + .../tables/0/wmo/40/codetables/8085.table | 4 + .../tables/0/wmo/40/codetables/8086.table | 11 + .../tables/0/wmo/40/codetables/8087.table | 5 + .../tables/0/wmo/40/codetables/8088.table | 4 + .../tables/0/wmo/40/codetables/8091.table | 11 + .../tables/0/wmo/40/codetables/8092.table | 3 + .../tables/0/wmo/40/codetables/8093.table | 4 + .../tables/0/wmo/40/codetables/8094.table | 8 + .../tables/0/wmo/40/codetables/8095.table | 36 + .../tables/0/wmo/40/codetables/8096.table | 36 + .../tables/0/wmo/40/codetables/8097.table | 4 + .../tables/0/wmo/40/codetables/8098.table | 7 + .../tables/0/wmo/40/codetables/8099.table | 3 + .../bufr/tables/0/wmo/40/element.table | 1789 +++++++++++++++++ definitions/bufr/tables/0/wmo/40/sequence.def | 1236 ++++++++++++ 521 files changed, 9410 insertions(+) create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/1003.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/10063.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/10064.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/1007.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/1024.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/1028.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/1029.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/1033.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/1034.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/1036.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/1038.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/1044.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/1052.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/1090.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/1092.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/1101.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/11030.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/11031.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/11037.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/11038.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/11039.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/1150.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/1151.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/1155.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/13038.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/13039.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/13040.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/13041.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/13051.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/13056.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/13057.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/15025.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/19001.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/19008.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/19010.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/19100.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/19101.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/19102.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/19103.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/19104.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/19105.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/19107.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/19108.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/19109.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/19110.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/19113.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/19117.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/19119.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/20003.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/20004.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/20005.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/20006.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/20008.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/20009.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/2001.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/20011.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/20012.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/20017.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/20018.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/2002.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/20021.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/20022.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/20023.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/20024.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/20025.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/20026.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/20027.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/20028.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/20029.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/2003.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/20032.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/20033.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/20034.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/20035.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/20036.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/20037.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/2004.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/20040.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/20041.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/20042.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/20045.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/20048.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/20050.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/20055.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/20056.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/2006.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/20062.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/20063.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/2007.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/20071.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/2008.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/20085.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/20086.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/20087.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/20089.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/20090.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/20101.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/20102.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/20103.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/20104.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/20105.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/20106.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/20107.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/20108.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/2011.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/20119.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/20124.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/2013.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/20136.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/20137.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/20138.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/2014.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/2015.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/2016.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/2017.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/2019.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/2020.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/2021.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/2022.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/2023.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/2024.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/2025.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/2030.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/2031.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/2032.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/2033.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/2034.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/2036.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/2037.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/2038.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/2039.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/2040.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/2041.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/2042.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/2044.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/2045.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/2046.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/2047.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/2048.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/2049.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/2050.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/2051.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/2052.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/2053.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/2054.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/2055.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/2056.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/2057.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/2058.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/2059.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/2060.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/2061.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/2062.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/2064.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/2066.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/2070.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/2080.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/2081.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/2083.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/2084.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/2092.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/2095.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/2096.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/2097.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/2099.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/2101.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/21026.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/2103.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/2104.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/21066.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/21067.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/21068.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/21069.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/21070.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/21072.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/21073.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/21076.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/21109.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/21115.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/21116.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/21119.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/21144.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/21148.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/2115.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/21150.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/21155.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/21158.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/21159.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/21169.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/2119.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/2131.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/2137.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/2138.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/2139.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/2143.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/2144.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/2145.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/2146.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/2147.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/2148.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/2149.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/2150.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/2151.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/2152.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/2158.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/2159.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/2160.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/2161.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/2162.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/2163.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/2164.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/2165.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/2166.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/2167.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/2169.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/2170.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/2172.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/2175.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/2176.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/2177.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/2178.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/2179.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/2180.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/2181.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/2182.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/2183.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/2184.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/2185.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/2186.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/2187.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/2188.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/2189.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/2191.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/22056.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/22060.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/22061.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/22067.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/22068.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/22120.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/22121.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/22122.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/22123.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/22178.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/23001.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/23002.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/23003.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/23004.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/23005.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/23006.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/23007.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/23008.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/23009.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/23016.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/23018.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/23031.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/23032.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/24003.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/25004.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/25005.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/25006.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/25009.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/25010.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/25011.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/25012.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/25013.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/25015.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/25017.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/25020.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/25021.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/25022.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/25023.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/25024.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/25029.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/25030.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/25031.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/25032.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/25033.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/25034.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/25035.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/25036.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/25040.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/25041.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/25042.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/25053.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/25063.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/25069.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/25086.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/25090.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/25093.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/25095.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/25096.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/25097.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/25098.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/25099.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/25110.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/25112.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/25113.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/25120.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/25122.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/25123.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/25124.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/25139.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/25150.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/25174.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/25181.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/25182.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/25184.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/25185.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/25187.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/25188.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/25190.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/25191.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/26010.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/29001.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/29002.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/3001.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/3003.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/30031.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/30032.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/3004.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/3008.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/3010.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/3011.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/3012.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/3016.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/3017.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/3018.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/3019.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/3020.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/3021.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/3022.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/3023.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/3027.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/3028.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/3029.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/3030.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/31021.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/31031.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/33002.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/33003.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/33005.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/33006.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/33015.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/33020.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/33021.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/33022.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/33023.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/33024.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/33025.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/33026.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/33027.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/33028.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/33030.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/33031.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/33032.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/33033.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/33035.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/33037.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/33038.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/33039.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/33041.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/33042.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/33043.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/33044.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/33047.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/33048.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/33049.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/33050.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/33055.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/33056.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/33060.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/33066.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/33070.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/33071.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/33072.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/33075.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/33076.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/33077.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/33078.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/33079.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/33080.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/33081.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/33082.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/33083.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/33084.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/33085.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/33086.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/33087.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/33088.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/33092.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/33093.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/33094.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/33095.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/33096.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/33097.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/33098.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/33099.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/33100.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/33101.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/33102.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/33103.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/33104.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/33105.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/33106.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/33107.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/33108.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/33109.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/33110.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/33111.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/33113.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/33114.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/33115.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/35000.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/35001.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/35030.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/35031.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/35032.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/35033.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/35034.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/35035.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/40005.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/40006.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/40011.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/40012.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/40013.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/40020.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/40023.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/40024.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/40025.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/40028.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/40036.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/40043.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/40045.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/40046.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/40047.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/40048.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/40049.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/40050.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/40051.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/40052.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/40054.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/40055.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/40056.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/40057.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/40068.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/40074.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/4059.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/4080.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/42004.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/5069.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/8001.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/8002.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/8003.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/8004.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/8005.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/8006.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/8007.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/8008.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/8009.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/8010.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/8011.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/8012.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/8013.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/8014.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/8015.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/8016.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/8017.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/8018.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/8019.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/8021.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/8023.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/8024.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/8025.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/8026.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/8029.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/8032.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/8033.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/8034.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/8035.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/8036.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/8037.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/8038.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/8039.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/8040.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/8041.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/8042.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/8043.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/8050.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/8051.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/8052.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/8053.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/8054.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/8060.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/8065.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/8066.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/8070.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/8072.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/8074.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/8075.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/8076.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/8077.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/8079.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/8080.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/8081.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/8082.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/8083.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/8085.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/8086.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/8087.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/8088.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/8091.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/8092.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/8093.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/8094.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/8095.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/8096.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/8097.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/8098.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/8099.table create mode 100644 definitions/bufr/tables/0/wmo/40/element.table create mode 100644 definitions/bufr/tables/0/wmo/40/sequence.def diff --git a/definitions/bufr/tables/0/wmo/40/codetables/1003.table b/definitions/bufr/tables/0/wmo/40/codetables/1003.table new file mode 100644 index 000000000..a0c90ee0f --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/1003.table @@ -0,0 +1,8 @@ +0 0 ANTARCTICA +1 1 REGION I +2 2 REGION II +3 3 REGION III +4 4 REGION IV +5 5 REGION V +6 6 REGION VI +7 7 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/10063.table b/definitions/bufr/tables/0/wmo/40/codetables/10063.table new file mode 100644 index 000000000..50978740b --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/10063.table @@ -0,0 +1,10 @@ +0 0 INCREASING, THEN DECREASING; ATMOSPHERIC PRESSURE THE SAME OR HIGHER THAN THREE HOURS AGO +1 1 INCREASING, THEN STEADY; OR INCREASING, THEN INCREASING MORE SLOWLY +2 2 INCREASING (STEADILY OR UNSTEADILY) +3 3 DECREASING OR STEADY, THEN INCREASING; OR INCREASING, THEN INCREASING MORE RAPIDLY +4 4 STEADY; ATMOSPHERIC PRESSURE THE SAME AS THREE HOURS AGO +5 5 DECREASING, THEN INCREASING; ATMOSPHERIC PRESSURE THE SAME OR LOWER THAN THREE HOURS AGO +6 6 DECREASING, THEN STEADY; OR DECREASING, THEN DECREASING MORE SLOWLY +7 7 DECREASING (STEADILY OR UNSTEADILY) +8 8 STEADY OR INCREASING, THEN DECREASING; OR DECREASING, THEN DECREASING MORE RAPIDLY +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/10064.table b/definitions/bufr/tables/0/wmo/40/codetables/10064.table new file mode 100644 index 000000000..88ba38a95 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/10064.table @@ -0,0 +1,4 @@ +0 0 SUBSONIC +1 1 TRANSONIC +2 2 SUPERSONIC +7 7 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/1007.table b/definitions/bufr/tables/0/wmo/40/codetables/1007.table new file mode 100644 index 000000000..0a8338516 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/1007.table @@ -0,0 +1,250 @@ +0 0 RESERVED +1 1 ERS 1 +2 2 ERS 2 +3 3 METOP-1 (METOP-B) +4 4 METOP-2 (METOP-A) +5 5 METOP-3 (METOP-C) +20 20 SPOT1 +21 21 SPOT2 +22 22 SPOT3 +23 23 SPOT4 +24 24 METOP-D +25 25 METOP-E +26 26 METOP-F +27 27 METOP-G +28 28 METOP-H +29 29 METOP-I +40 40 OERSTED +41 41 CHAMP +42 42 TERRASAR-X +43 43 TANDEM-X +44 44 PAZ +45 45 ALTIUS +46 46 SMOS +47 47 CRYOSAT-2 +48 48 AEOLUS +49 49 EARTHCARE +50 50 METEOSAT 3 +51 51 METEOSAT 4 +52 52 METEOSAT 5 +53 53 METEOSAT 6 +54 54 METEOSAT 7 +55 55 METEOSAT 8 +56 56 METEOSAT 9 +57 57 METEOSAT 10 +58 58 METEOSAT 1 +59 59 METEOSAT 2 +60 60 ENVISAT +61 61 SENTINEL 3A +62 62 SENTINEL 1A +63 63 SENTINEL 1B +64 64 SENTINEL 5P +65 65 SENTINEL 3B +66 66 SENTINEL-6A +67 67 SENTINEL-6B +70 70 METEOSAT 11 +71 71 METEOSAT 12 +72 72 METEOSAT 13 +73 73 METEOSAT 14 +74 74 METEOSAT 15 +75 75 METEOSAT 16 +76 76 METEOSAT 17 +120 120 ADEOS +121 121 ADEOS II +122 122 GCOM-W1 +140 140 GOSAT +150 150 GMS 3 +151 151 GMS 4 +152 152 GMS 5 +153 153 GMS +154 154 GMS 2 +171 171 MTSAT-1R +172 172 MTSAT-2 +173 173 HIMAWARI-8 +174 174 HIMAWARI-9 +200 200 NOAA 8 +201 201 NOAA 9 +202 202 NOAA 10 +203 203 NOAA 11 +204 204 NOAA 12 +205 205 NOAA 14 +206 206 NOAA 15 +207 207 NOAA 16 +208 208 NOAA 17 +209 209 NOAA 18 +220 220 LANDSAT 5 +221 221 LANDSAT 4 +222 222 LANDSAT 7 +223 223 NOAA 19 +224 224 NPP +225 225 NOAA 20 +226 226 NOAA 21 +227 227 TROPICS-02 +228 228 TROPICS-03 +229 229 TROPICS-04 +240 240 DMSP 7 +241 241 DMSP 8 +242 242 DMSP 9 +243 243 DMSP 10 +244 244 DMSP 11 +245 245 DMSP 12 +246 246 DMSP 13 +247 247 DMSP 14 +248 248 DMSP 15 +249 249 DMSP 16 +250 250 GOES 6 +251 251 GOES 7 +252 252 GOES 8 +253 253 GOES 9 +254 254 GOES 10 +255 255 GOES 11 +256 256 GOES 12 +257 257 GOES 13 +258 258 GOES 14 +259 259 GOES 15 +260 260 JASON 1 +261 261 JASON 2 +262 262 JASON 3 +263 263 TROPICS-05 +264 264 TROPICS-06 +265 265 GEOOPTICS CICERO OP1 +266 266 GEOOPTICS CICERO OP2 +267 267 PLANETIQ GNOMES-A +268 268 PLANETIQ GNOMES-B +269 269 SPIRE LEMUR 3U CUBESAT +270 270 GOES 16 +271 271 GOES 17 +272 272 GOES 18 +273 273 GOES 19 +281 281 QUIKSCAT +282 282 TRMM +283 283 CORIOLIS +284 284 TROPICS-07 +285 285 DMSP 17 +286 286 DMSP 18 +287 287 DMSP 19 +288 288 GPM-CORE +289 289 ORBITING CARBON OBSERVATORY - 2 (OCO-2, NASA) +310 310 GOMS 1 +311 311 GOMS 2 +320 320 METEOR 2-21 +321 321 METEOR 3-5 +322 322 METEOR 3M-1 +323 323 METEOR 3M-2 +324 324 METEOR-M N2 +325 325 METEOR-M N2 2 +341 341 RESURS 01-4 +410 410 KALPANA-1 +421 421 OCEANSAT-2 +422 422 SCATSAT-1 +423 423 OCEANSAT-3 +430 430 INSAT 1B +431 431 INSAT 1C +432 432 INSAT 1D +440 440 MEGHA-TROPIQUES +441 441 SARAL +450 450 INSAT 2A +451 451 INSAT 2B +452 452 INSAT 2E +470 470 INSAT 3A +471 471 INSAT 3D +472 472 INSAT 3E +473 473 INSAT 3DR +474 474 INSAT 3DS +500 500 FY-1C +501 501 FY-1D +502 502 HAI YANG 2A (HY-2A, SOA/NSOAS CHINA) +503 503 HAI YANG 2B (HY-2B, SOA/NSOAS CHINA) +504 504 HAI YANG 2C (HY-2C, SOA/NSOAS CHINA) +505 505 HAI YANG 2D (HY-2D, SOA/NSOAS CHINA) +510 510 FY-2 +512 512 FY-2B +513 513 FY-2C +514 514 FY-2D +515 515 FY-2E +516 516 FY-2F +517 517 FY-2G +518 518 FY-2H +520 520 FY-3A +521 521 FY-3B +522 522 FY-3C +523 523 FY-3D +524 524 FY-3E +530 530 FY-4A +531 531 FY-4B +700 700 TIROS M (ITOS 1) +701 701 NOAA 1 +702 702 NOAA 2 +703 703 NOAA 3 +704 704 NOAA 4 +705 705 NOAA 5 +706 706 NOAA 6 +707 707 NOAA 7 +708 708 TIROS-N +709 709 TROPICS-01 (PATHFINDER) +710 710 GOES (SMS 1) +711 711 GOES (SMS 2) +720 720 TOPEX +721 721 GFO (GEOSAT FOLLOW ON) +722 722 GRACE A +723 723 GRACE B +724 724 COSMIC-2 P1 +725 725 COSMIC-2 P2 +726 726 COSMIC-2 P3 +727 727 COSMIC-2 P4 +728 728 COSMIC-2 P5 +729 729 COSMIC-2 P6 +731 731 GOES 1 +732 732 GOES 2 +733 733 GOES 3 +734 734 GOES 4 +735 735 GOES 5 +740 740 COSMIC-1 +741 741 COSMIC-2 +742 742 COSMIC-3 +743 743 COSMIC-4 +744 744 COSMIC-5 +745 745 COSMIC-6 +750 750 COSMIC-2 E1 +751 751 COSMIC-2 E2 +752 752 COSMIC-2 E3 +753 753 COSMIC-2 E4 +754 754 COSMIC-2 E5 +755 755 COSMIC-2 E6 +761 761 NIMBUS 1 +762 762 NIMBUS 2 +763 763 NIMBUS 3 +764 764 NIMBUS 4 +765 765 NIMBUS 5 +766 766 NIMBUS 6 +767 767 NIMBUS 7 +780 780 ERBS +781 781 UARS +782 782 EARTH PROBE +783 783 TERRA +784 784 AQUA +785 785 AURA +786 786 C/NOFS +787 787 CALIPSO +788 788 CLOUDSAT +789 789 SMAP +800 800 SUNSAT +801 801 INTERNATIONAL SPACE STATION (ISS) +802 802 CFOSAT +803 803 GRACE C (GRACE-FO) +804 804 GRACE D (GRACE-FO) +810 810 COMS +811 811 GEO-KOMPSAT-2A +812 812 SCISAT-1 +813 813 ODIN +820 820 SAC-C +821 821 SAC-D +825 825 KOMPSAT-5 +850 850 COMBINATION OF TERRA AND AQUA +851 851 COMBINATION OF NOAA 16 TO NOAA 19 +852 852 COMBINATION OF METOP-1 TO METOP-3 +853 853 COMBINATION OF METEOSAT AND DMSP +854 854 NON-SPECIFIC MIXTURE OF GEOSTATIONARY AND LOW EARTH-ORBITING SATELLITES +855 855 COMBINATION OF INSAT 3D AND INSAT 3DR +856 856 COMBINATION OF SENTINEL-3 SATELLITES +1023 1023 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/1024.table b/definitions/bufr/tables/0/wmo/40/codetables/1024.table new file mode 100644 index 000000000..cdc9e2470 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/1024.table @@ -0,0 +1,9 @@ +0 0 NO WIND SPEED DATA AVAILABLE +1 1 AMSR-E DATA +2 2 TMI DATA +3 3 NWP: ECMWF +4 4 NWP: UK MET OFFICE +5 5 NWP: NCEP +6 6 REFERENCE CLIMATOLOGY +7 7 ERS_SCATTEROMETER +31 31 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/1028.table b/definitions/bufr/tables/0/wmo/40/codetables/1028.table new file mode 100644 index 000000000..18f82068b --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/1028.table @@ -0,0 +1,7 @@ +0 0 NO AOD DATA AVAILABLE +1 1 NESDIS +2 2 NAVOCEANO +3 3 NAAPS +4 4 MERIS +5 5 AATSR +31 31 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/1029.table b/definitions/bufr/tables/0/wmo/40/codetables/1029.table new file mode 100644 index 000000000..d63d07ef0 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/1029.table @@ -0,0 +1,8 @@ +0 0 NO SSI DATA AVAILABLE +1 1 MSG_SEVIRI +2 2 GOES EAST +3 3 GOES WEST +4 4 ECMWF +5 5 NCEP +6 6 UK MET OFFICE +31 31 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/1033.table b/definitions/bufr/tables/0/wmo/40/codetables/1033.table new file mode 100644 index 000000000..7d37ef499 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/1033.table @@ -0,0 +1,239 @@ +0 0 WMO SECRETARIAT +1 1 MELBOURNE +2 2 MELBOURNE +3 3 ) +4 4 MOSCOW +5 5 MOSCOW +6 6 ) +7 7 US NATIONAL WEATHER SERVICE - NATIONAL CENTRES FOR ENVIRONMENTAL PREDICTION (NCEP) +8 8 US NATIONAL WEATHER SERVICE TELECOMMUNICATIONS GATEWAY (NWSTG) +9 9 US NATIONAL WEATHER SERVICE - OTHER +10 10 CAIRO (RSMC) +11 11 ) +12 12 DAKAR (RSMC) +13 13 ) +14 14 NAIROBI (RSMC) +15 15 ) +16 16 CASABLANCA (RSMC) +17 17 TUNIS (RSMC) +18 18 TUNIS - CASABLANCA (RSMC) +19 19 ) +20 20 LAS PALMAS +21 21 ALGIERS (RSMC) +22 22 ACMAD +23 23 MOZAMBIQUE (NMC) +24 24 PRETORIA (RSMC) +25 25 LA REUNION (RSMC) +26 26 KHABAROVSK (RSMC) +27 27 ) +28 28 NEW DELHI (RSMC) +29 29 ) +30 30 NOVOSIBIRSK (RSMC) +31 31 ) +32 32 TASHKENT (RSMC) +33 33 JEDDAH (RSMC) +34 34 TOKYO (RSMC), JAPAN METEOROLOGICAL AGENCY +35 35 ) +36 36 BANGKOK +37 37 ULAANBAATAR +38 38 BEIJING (RSMC) +39 39 ) +40 40 SEOUL +41 41 BUENOS AIRES (RSMC) +42 42 ) +43 43 BRASILIA (RSMC) +44 44 ) +45 45 SANTIAGO +46 46 BRAZILIAN SPACE AGENCY INPE +47 47 COLOMBIA (NMC) +48 48 ECUADOR (NMC) +49 49 PERU (NMC) +50 50 VENEZUELA (BOLIVARIAN REPUBLIC OF) (NMC) +51 51 MIAMI (RSMC) +52 52 MIAMI (RSMC), NATIONAL HURRICANE CENTRE +53 53 MSC MONITORING +54 54 MONTREAL (RSMC) +55 55 SAN FRANCISCO +56 56 ARINC CENTRE +57 57 US AIR FORCE - AIR FORCE GLOBAL WEATHER CENTRAL +58 58 FLEET NUMERICAL METEOROLOGY AND OCEANOGRAPHY CENTER, MONTEREY, CA, UNITED STATES +59 59 THE NOAA FORECAST SYSTEMS LABORATORY, BOULDER, CO, UNITED STATES +60 60 UNITED STATES NATIONAL CENTER FOR ATMOSPHERIC RESEARCH (NCAR) +61 61 SERVICE ARGOS - LANDOVER +62 62 US NAVAL OCEANOGRAPHIC OFFICE +63 63 INTERNATIONAL RESEARCH INSTITUTE FOR CLIMATE AND SOCIETY (IRI) +64 64 HONOLULU (RSMC) +65 65 DARWIN (RSMC) +66 66 ) +67 67 MELBOURNE (RSMC) +68 68 RESERVED +69 69 WELLINGTON (RSMC) +70 70 ) +71 71 NADI (RSMC) +72 72 SINGAPORE +73 73 MALAYSIA (NMC) +74 74 UK METEOROLOGICAL OFFICE EXETER (RSMC) +75 75 ) +76 76 MOSCOW (RSMC) +77 77 RESERVED +78 78 OFFENBACH (RSMC) +79 79 ) +80 80 ROME (RSMC) +81 81 ) +82 82 NORRKOPING +83 83 ) +84 84 TOULOUSE (RSMC) +85 85 TOULOUSE (RSMC) +86 86 HELSINKI +87 87 BELGRADE +88 88 OSLO +89 89 PRAGUE +90 90 EPISKOPI +91 91 ANKARA +92 92 FRANKFURT/MAIN +93 93 LONDON (WAFC) +94 94 COPENHAGEN +95 95 ROTA +96 96 ATHENS +97 97 EUROPEAN SPACE AGENCY (ESA) +98 98 EUROPEAN CENTRE FOR MEDIUM-RANGE WEATHER FORECASTS (ECMWF) (RSMC) +99 99 DE BILT +100 100 BRAZZAVILLE +101 101 ABIDJAN +102 102 LIBYA (NMC) +103 103 MADAGASCAR (NMC) +104 104 MAURITIUS (NMC) +105 105 NIGER (NMC) +106 106 SEYCHELLES (NMC) +107 107 UGANDA (NMC) +108 108 UNITED REPUBLIC OF TANZANIA (NMC) +109 109 ZIMBABWE (NMC) +110 110 HONG-KONG, CHINA +111 111 AFGHANISTAN (NMC) +112 112 BAHRAIN (NMC) +113 113 BANGLADESH (NMC) +114 114 BHUTAN (NMC) +115 115 CAMBODIA (NMC) +116 116 DEMOCRATIC PEOPLE'S REPUBLIC OF KOREA (NMC) +117 117 ISLAMIC REPUBLIC OF IRAN (NMC) +118 118 IRAQ (NMC) +119 119 KAZAKHSTAN (NMC) +120 120 KUWAIT (NMC) +121 121 KYRGYZSTAN (NMC) +122 122 LAO PEOPLE'S DEMOCRATIC REPUBLIC (NMC) +123 123 MACAO, CHINA +124 124 MALDIVES (NMC) +125 125 MYANMAR (NMC) +126 126 NEPAL (NMC) +127 127 OMAN (NMC) +128 128 PAKISTAN (NMC) +129 129 QATAR (NMC) +130 130 YEMEN (NMC) +131 131 SRI LANKA (NMC) +132 132 TAJIKISTAN (NMC) +133 133 TURKMENISTAN (NMC) +134 134 UNITED ARAB EMIRATES (NMC) +135 135 UZBEKISTAN (NMC) +136 136 VIET NAM (NMC) +140 140 BOLIVIA (PLURINATIONAL STATE OF) (NMC) +141 141 GUYANA (NMC) +142 142 PARAGUAY (NMC) +143 143 SURINAME (NMC) +144 144 URUGUAY (NMC) +145 145 FRENCH GUIANA +146 146 BRAZILIAN NAVY HYDROGRAPHIC CENTRE +147 147 NATIONAL COMMISSION ON SPACE ACTIVITIES (CONAE) - ARGENTINA +148 148 BRAZILIAN DEPARTMENT OF AIRSPACE CONTROL - DECEA +149 149 RESERVED FOR OTHER CENTRES +150 150 ANTIGUA AND BARBUDA (NMC) +151 151 BAHAMAS (NMC) +152 152 BARBADOS (NMC) +153 153 BELIZE (NMC) +154 154 BRITISH CARIBBEAN TERRITORIES CENTRE +155 155 SAN JOSE +156 156 CUBA (NMC) +157 157 DOMINICA (NMC) +158 158 DOMINICAN REPUBLIC (NMC) +159 159 EL SALVADOR (NMC) +160 160 US NOAA/NESDIS +161 161 US NOAA OFFICE OF OCEANIC AND ATMOSPHERIC RESEARCH +162 162 GUATEMALA (NMC) +163 163 HAITI (NMC) +164 164 HONDURAS (NMC) +165 165 JAMAICA (NMC) +166 166 MEXICO CITY +167 167 CURACAO AND SINT MAARTEN (NMC) +168 168 NICARAGUA (NMC) +169 169 PANAMA (NMC) +170 170 SAINT LUCIA (NMC) +171 171 TRINIDAD AND TOBAGO (NMC) +172 172 FRENCH DEPARTMENTS IN RA IV +173 173 US NATIONAL AERONAUTICS AND SPACE ADMINISTRATION (NASA) +174 174 INTEGRATED SCIENCE DATA MANAGEMENT/MARINE ENVIRONMENTAL DATA SERVICE (ISDM/MEDS) - CANADA +175 175 UNIVERSITY CORPORATION FOR ATMOSPHERIC RESEARCH (UCAR) - UNITED STATES +176 176 COOPERATIVE INSTITUTE FOR METEOROLOGICAL SATELLITE STUDIES (CIMSS) - UNITED STATES +177 177 NOAA NATIONAL OCEAN SERVICE - UNITED STATES +178 178 SPIRE GLOBAL, INC. +179 179 GEOOPTICS, INC. +180 180 PLANETIQ +190 190 COOK ISLANDS (NMC) +191 191 FRENCH POLYNESIA (NMC) +192 192 TONGA (NMC) +193 193 VANUATU (NMC) +194 194 BRUNEI DARUSSALAM (NMC) +195 195 INDONESIA (NMC) +196 196 KIRIBATI (NMC) +197 197 FEDERATED STATES OF MICRONESIA (NMC) +198 198 NEW CALEDONIA (NMC) +199 199 NIUE +200 200 PAPUA NEW GUINEA (NMC) +201 201 PHILIPPINES (NMC) +202 202 SAMOA (NMC) +203 203 SOLOMON ISLANDS (NMC) +204 204 NATIONAL INSTITUTE OF WATER AND ATMOSPHERIC RESEARCH (NIWA - NEW ZEALAND) +210 210 FRASCATI (ESA/ESRIN) +211 211 LANNION +212 212 LISBON +213 213 REYKJAVIK +214 214 MADRID +215 215 ZUERICH +216 216 SERVICE ARGOS - TOULOUSE +217 217 BRATISLAVA +218 218 BUDAPEST +219 219 LJUBLJANA +220 220 WARSAW +221 221 ZAGREB +222 222 ALBANIA (NMC) +223 223 ARMENIA (NMC) +224 224 AUSTRIA (NMC) +225 225 AZERBAIJAN (NMC) +226 226 BELARUS (NMC) +227 227 BELGIUM (NMC) +228 228 BOSNIA AND HERZEGOVINA (NMC) +229 229 BULGARIA (NMC) +230 230 CYPRUS (NMC) +231 231 ESTONIA (NMC) +232 232 GEORGIA (NMC) +233 233 DUBLIN +234 234 ISRAEL (NMC) +235 235 JORDAN (NMC) +236 236 LATVIA (NMC) +237 237 LEBANON (NMC) +238 238 LITHUANIA (NMC) +239 239 LUXEMBOURG +240 240 MALTA (NMC) +241 241 MONACO +242 242 ROMANIA (NMC) +243 243 SYRIAN ARAB REPUBLIC (NMC) +244 244 THE FORMER YUGOSLAV REPUBLIC OF MACEDONIA (NMC) +245 245 UKRAINE (NMC) +246 246 REPUBLIC OF MOLDOVA (NMC) +247 247 OPERATIONAL PROGRAMME FOR THE EXCHANGE OF WEATHER RADAR INFORMATION (OPERA) - EUMETNET +248 248 MONTENEGRO (NMC) +249 249 BARCELONA DUST FORECAST CENTER +250 250 CONSORTIUM FOR SMALL SCALE MODELLING (COSMO) +251 251 METEOROLOGICAL COOPERATION ON OPERATIONAL NWP (METCOOP) +252 252 MAX PLANCK INSTITUTE FOR METEOROLOGY (MPI-M) +253 253 RESERVED FOR OTHER CENTRES +254 254 EUMETSAT OPERATION CENTRE +255 255 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/1034.table b/definitions/bufr/tables/0/wmo/40/codetables/1034.table new file mode 100644 index 000000000..fce0d85fd --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/1034.table @@ -0,0 +1,104 @@ +0 0 NO SUB-CENTRE +1 1 LUXEMBOURG (NMC) +2 2 FUCINO +3 3 GATINEAU +4 4 MASPALOMAS (SPAIN) +5 5 ESA ERS CENTRAL FACILITY +6 6 PRINCE ALBERT +7 7 WEST FREUGH +8 8 LANGLEY RESEARCH CENTER +9 9 MARSHALL SPACE FLIGHT CENTER +10 10 TROMSO (NORWAY) +11 11 MCMURDO (ANTARCTICA) +12 12 SODANKYLA (FINLAND) +13 13 TROMSO +14 14 BARROW (UNITED STATES) +15 15 ROTHERA (ANTARCTICA) +16 16 SPACE WEATHER PREDICTION CENTER +17 17 ESRL GLOBAL SYSTEMS DIVISION +18 18 SIPAM-PORTO VELHO-RO +19 19 SIPAM-BELEM-PA +20 20 MASPALOMAS (SPAIN) +21 21 AGENZIA SPAZIALE ITALIANA (ITALY) +22 22 CENTRE NATIONAL DE LA RECHERCHE SCIENTIFIQUE (FRANCE) +23 23 GEOFORSCHUNGS ZENTRUM (GERMANY) +24 24 GEODETIC OBSERVATORY PECNY (CZECHIA) +25 25 INSTITUT D'ESTUDIS ESPACIALS DE CATALUNYA (SPAIN) +26 26 FEDERAL OFFICE OF TOPOGRAPHY (SWITZERLAND) +27 27 NORDIC COMMISSION OF GEODESY (NORWAY) +28 28 NORDIC COMMISSION OF GEODESY (SWEDEN) +29 29 INSTITUTE GEOGRAPHIQUE NATIONAL (FRANCE) - SERVICE DE GEODESIE +30 30 KANGERLUSSUAQ (GREENLAND) +31 31 INSTITUTE OF ENGINEERING SATELLITE SURVEYING AND GEODESY (UNITED KINGDOM) +32 32 JOINT OPERATIONAL METEOROLOGY AND OCEANOGRAPHY CENTRE (JOMOC) +33 33 KONINKLIJK NEDERLANDS METEOROLOGISCH INSTITUT (NETHERLANDS) +34 34 NORDIC GPS ATMOSPHERIC ANALYSIS CENTRE (SWEDEN) +35 35 INSTITUTO GEOGRAFICO NACIONAL DE ESPANA (SPAIN) +36 36 MET EIREANN (IRELAND) +37 37 ROYAL OBSERVATORY OF BELGIUM (BELGIUM) +40 40 EDMONTON (CANADA) +50 50 BEDFORD (CANADA) +60 60 GANDER (CANADA) +64 64 BUNDESWEHR GEOINFORMATION OFFICE (BGIO) +70 70 MONTEREY (UNITED STATES) +76 76 ROSHYDROMET (RUSSIAN FEDERATION) +78 78 DEUTSCHER WETTERDIENST (GERMANY) +80 80 WALLOPS ISLAND (UNITED STATES) +90 90 GILMOR CREEK (UNITED STATES) +96 96 HELLENIC NATIONAL METEOROLOGICAL SERVICE (GREECE) +100 100 ATHENS (GREECE) +101 101 ALBANIA (NMC) +102 102 NATIONAL RESEARCH COUNCIL/INSTITUTE OF ATMOSPHERIC SCIENCES AND CLIMATE (CNR-ISAC) +110 110 NOWCAST MOBILE (LIGHTNING DATA) +120 120 EWA BEACH, HAWAII +125 125 FORD ISLAND, HAWAII +130 130 MIAMI, FLORIDA +140 140 LANNION (FRANCE) +150 150 SVALBARD (NORWAY) +170 170 SAINT-DENIS (LA REUNION) +180 180 MOSCOW +190 190 MUSCAT +200 200 KHABAROVSK +201 201 RHEINISCHES INSTITUT FUER UMWELTFORSCHUNG AN DER UNIVERSITAET ZU KOELN E.V. (GERMANY) +202 202 INSTITUT FRANCAIS DE RECHERCHE POUR L'EXPLOITATION DE LA MER +203 203 AARHUS UNIVERSITY (DENMARK) +204 204 INSTITUTE OF ENVIRONMENTAL PROTECTION - NATIONAL RESEARCH INSTITUTE (POLAND) +205 205 NIUE +206 206 RAROTONGA (COOK ISLANDS) +207 207 APIA (SAMOA) +208 208 TONGA +209 209 TUVALU +210 210 NOVOSIBIRSK +211 211 TOKELAU +214 214 DARWIN +215 215 METEOSWISS (SWITZERLAND) +217 217 PERTH +219 219 TOWNSVILLE +220 220 NOAA SATELLITE OPERATIONS FACILITY (NSOF) +221 221 SCHLESWIG-HOLSTEIN, TRAFFIC OPERATIONS COMPUTING CENTRE (TOCC) KIEL/NEUMUENSTER +222 222 HAMBURG, TOCC HAMBURG +223 223 NIEDERSACHSEN, TOCC HANNOVER +224 224 AUSTRIA (NMC) +225 225 NORDRHEIN-WESTFALEN, TOCC KAMEN LEVERKUSEN +226 226 HESSEN, TOCC RUESSELSHEIM +227 227 RHEINLAND-PFALZ, TOCC KOBLENZ +228 228 BADEN-WUERTTEMBERG, TOCC LUDWIGSBURG +229 229 BAYERN, TOCC FREIMANN +230 230 SAARLAND, TOCC ROHRBACH +231 231 BAYERN, AUTOBAHN DIRECTORATE NORDBAYERN +232 232 BRANDENBURG, TOCC STOLPE +233 233 MECKLENBURG-VORPOMMERN, TOCC MALCHOW +234 234 SACHSEN, TOCC DRESDEN +235 235 SACHSEN-ANHALT, TOCC HALLE +236 236 THUERINGEN, TOCC ERFURT +237 237 EASYWAY - METEOTRANS +240 240 KIYOSE +241 241 REANALYSIS PROJECT +242 242 NATIONAL METEOROLOGICAL ADMINISTRATION (ROMANIA) +243 243 KELBURN +245 245 JINCHEON +249 249 SINGAPORE +250 250 VLADIVOSTOCK +251 251 GUAM +252 252 HONOLULU +254 254 EUMETSAT diff --git a/definitions/bufr/tables/0/wmo/40/codetables/1036.table b/definitions/bufr/tables/0/wmo/40/codetables/1036.table new file mode 100644 index 000000000..06eab3ccd --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/1036.table @@ -0,0 +1,42 @@ +36001 36001 AUSTRALIA, BUREAU OF METEOROLOGY (BOM) +36002 36002 AUSTRALIA, JOINT AUSTRALIAN FACILITY FOR OCEAN OBSERVING SYSTEMS (JAFOOS) +36003 36003 AUSTRALIA, THE COMMONWEALTH SCIENTIFIC AND INDUSTRIAL RESEARCH ORGANIZATION (CSIRO) +124001 124001 CANADA, MARINE ENVIRONMENTAL DATA SERVICE (MEDS) +124002 124002 CANADA, INSTITUTE OF OCEAN SCIENCES (IOS) +124173 124173 CANADA, ENVIRONMENT CANADA +124174 124174 CANADA, DEPARTMENT OF NATIONAL DEFENCE +124175 124175 CANADA, NAV CANADA +156001 156001 CHINA, THE STATE OCEANIC ADMINISTRATION +156002 156002 CHINA, SECOND INSTITUTE OF OCEANOGRAPHY, STATE OCEANIC ADMINISTRATION +156003 156003 CHINA, INSTITUTE OF OCEAN TECHNOLOGY +250001 250001 FRANCE, INSTITUT DE RECHERCHE POUR LE DéVELOPPEMENT (IRD) +250002 250002 FRANCE, INSTITUT FRANçAIS DE RECHERCHE POUR L'EXPLOITATION DE LA MER (IFREMER) +276001 276001 GERMANY, BUNDESAMT FUER SEESCHIFFAHRT UND HYDROGRAPHIE (BSH) +276002 276002 GERMANY, INSTITUT FUER MEERESKUNDE, KIEL +356001 356001 INDIA, NATIONAL INSTITUTE OF OCEANOGRAPHY (NIO) +356002 356002 INDIA, NATIONAL INSTITUTE FOR OCEAN TECHNOLOGY (NIOT) +356003 356003 INDIA, NATIONAL CENTRE FOR OCEAN INFORMATION SERVICE +392001 392001 JAPAN, JAPAN METEOROLOGICAL AGENCY (JMA) +392002 392002 JAPAN, FRONTIER OBSERVATIONAL RESEARCH SYSTEM FOR GLOBAL CHANGE +392003 392003 JAPAN, JAPAN MARINE SCIENCE AND TECHNOLOGY CENTRE (JAMSTEC) +410001 410001 REPUBLIC OF KOREA, SEOUL NATIONAL UNIVERSITY +410002 410002 REPUBLIC OF KOREA, KOREA OCEAN RESEARCH AND DEVELOPMENT INSTITUTE (KORDI) +410003 410003 REPUBLIC OF KOREA, METEOROLOGICAL RESEARCH INSTITUTE +540001 540001 NEW CALEDONIA, INSTITUT DE RECHERCHE POUR LE DéVELOPPEMENT (IRD) +554001 554001 NEW ZEALAND, NATIONAL INSTITUTE OF WATER AND ATMOSPHERIC RESEARCH (NIWA) +643001 643001 RUSSIAN FEDERATION, STATE OCEANOGRAPHIC INSTITUTE OF ROSHYDROMET +643002 643002 RUSSIAN FEDERATION, FEDERAL SERVICE FOR HYDROMETEOROLOGY AND ENVIRONMENTAL MONITORING +724001 724001 SPAIN, INSTITUTO ESPAñOL DE OCEANOGRAFIA +826001 826001 UNITED KINGDOM, HYDROGRAPHIC OFFICE +826002 826002 UNITED KINGDOM, NATIONAL OCEANOGRAPHY CENTRE (NOC) +826003 826003 UNITED KINGDOM, CENTRE FOR ENVIRONMENT, FISHERIES AND AQUACULTURE SCIENCE (CEFAS) +826004 826004 UNITED KINGDOM, MARINE SCOTLAND (MS) +826005 826005 UNITED KINGDOM, PLYMOUTH MARINE LABORATORY (PML) +826006 826006 UNITED KINGDOM, BRITISH ANTARCTIC SURVEY (BAS) +840001 840001 USA, NOAA ATLANTIC OCEANOGRAPHIC AND METEOROLOGICAL LABORATORY (AOML) +840002 840002 USA, NOAA PACIFIC MARINE ENVIRONMENTAL LABORATORY (PMEL) +840003 840003 USA, SCRIPPS INSTITUTION OF OCEANOGRAPHY (SIO) +840004 840004 USA, WOODS HOLE OCEANOGRAPHIC INSTITUTION (WHOI) +840005 840005 USA, UNIVERSITY OF WASHINGTON +840006 840006 USA, NAVAL OCEANOGRAPHIC OFFICE +1048575 1048575 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/1038.table b/definitions/bufr/tables/0/wmo/40/codetables/1038.table new file mode 100644 index 000000000..2eee38baf --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/1038.table @@ -0,0 +1,7 @@ +0 0 NO SEA ICE SET +1 1 NSIDC SSM/I CAVALIERI ET AL (1992) +2 2 AMSR-E +3 3 ECMWF +4 4 CMS (FRANCE) CLOUD MASK USED BY MEDSPIRATION +5 5 EUMETSAT OSI-SAF +31 31 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/1044.table b/definitions/bufr/tables/0/wmo/40/codetables/1044.table new file mode 100644 index 000000000..c419e8307 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/1044.table @@ -0,0 +1,9 @@ +0 0 RESERVED +1 1 FULL WEIGHTED MIXTURE OF INDIVIDUAL QUALITY TESTS +2 2 WEIGHTED MIXTURE OF INDIVIDUAL TESTS, BUT EXCLUDING FORECAST COMPARISON +3 3 RECURSIVE FILTER FUNCTION +4 4 COMMON QUALITY INDEX (QI) WITHOUT FORECAST +5 5 QI WITHOUT FORECAST +6 6 QI WITH FORECAST +7 7 ESTIMATED ERROR IN M/S CONVERTED TO A PERCENT CONFIDENCE +255 255 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/1052.table b/definitions/bufr/tables/0/wmo/40/codetables/1052.table new file mode 100644 index 000000000..b8e14ed0f --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/1052.table @@ -0,0 +1,4 @@ +0 0 PRIMARY +1 1 SECONDARY +2 2 RESERVED +3 3 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/1090.table b/definitions/bufr/tables/0/wmo/40/codetables/1090.table new file mode 100644 index 000000000..55f7ca25d --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/1090.table @@ -0,0 +1,5 @@ +0 0 LAGGED-AVERAGE FORECASTING (LAF) +1 1 BREEDING +2 2 SINGULAR VECTORS +3 3 MULTIPLE ANALYSIS CYCLES +255 255 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/1092.table b/definitions/bufr/tables/0/wmo/40/codetables/1092.table new file mode 100644 index 000000000..ce982034d --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/1092.table @@ -0,0 +1,6 @@ +0 0 UNPERTURBED HIGH-RESOLUTION CONTROL FORECAST +1 1 UNPERTURBED LOW-RESOLUTION CONTROL FORECAST +2 2 NEGATIVELY PERTURBED FORECAST +3 3 POSITIVELY PERTURBED FORECAST +4 4 PERTURBED FORECAST +255 255 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/1101.table b/definitions/bufr/tables/0/wmo/40/codetables/1101.table new file mode 100644 index 000000000..1af4c3b6d --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/1101.table @@ -0,0 +1,202 @@ +100 100 ALGERIA +101 101 ANGOLA +102 102 BENIN +103 103 BOTSWANA +104 104 BURKINA FASO +105 105 BURUNDI +106 106 CAMEROON +107 107 CABO VERDE +108 108 CENTRAL AFRICAN REPUBLIC +109 109 CHAD +110 110 COMOROS +111 111 CONGO +112 112 CôTE D'IVOIRE +113 113 DEMOCRATIC REPUBLIC OF THE CONGO +114 114 DJIBOUTI +115 115 EGYPT +116 116 ERITREA +117 117 ETHIOPIA +118 118 FRANCE (RA I) +119 119 GABON +120 120 GAMBIA +121 121 GHANA +122 122 GUINEA +123 123 GUINEA-BISSAU +124 124 KENYA +125 125 LESOTHO +126 126 LIBERIA +127 127 LIBYA +128 128 MADAGASCAR +129 129 MALAWI +130 130 MALI +131 131 MAURITANIA +132 132 MAURITIUS +133 133 MOROCCO +134 134 MOZAMBIQUE +135 135 NAMIBIA +136 136 NIGER +137 137 NIGERIA +138 138 PORTUGAL (RA I) +139 139 RWANDA +140 140 SAO TOME AND PRINCIPE +141 141 SENEGAL +142 142 SEYCHELLES +143 143 SIERRA LEONE +144 144 SOMALIA +145 145 SOUTH AFRICA +146 146 SPAIN (RA I) +147 147 SUDAN +148 148 ESWATINI +149 149 TOGO +150 150 TUNISIA +151 151 UGANDA +152 152 UNITED KINGDOM OF GREAT BRITAIN AND NORTHERN IRELAND (RA I) +153 153 UNITED REPUBLIC OF TANZANIA +154 154 ZAMBIA +155 155 ZIMBABWE +200 200 AFGHANISTAN +201 201 BAHRAIN +202 202 BANGLADESH +203 203 BHUTAN +204 204 CAMBODIA +205 205 CHINA +206 206 DEMOCRATIC PEOPLE'S REPUBLIC OF KOREA +207 207 HONG KONG, CHINA +208 208 INDIA +209 209 IRAN, ISLAMIC REPUBLIC OF +210 210 IRAQ +211 211 JAPAN +212 212 KAZAKHSTAN +213 213 KUWAIT +214 214 KYRGYZSTAN +215 215 LAO PEOPLE'S DEMOCRATIC REPUBLIC +216 216 MACAO, CHINA +217 217 MALDIVES +218 218 MONGOLIA +219 219 MYANMAR +220 220 NEPAL +221 221 OMAN +222 222 PAKISTAN +223 223 QATAR +224 224 REPUBLIC OF KOREA +225 225 YEMEN +226 226 RUSSIAN FEDERATION (RA II) +227 227 SAUDI ARABIA +228 228 SRI LANKA +229 229 TAJIKISTAN +230 230 THAILAND +231 231 TURKMENISTAN +232 232 UNITED ARAB EMIRATES +233 233 UZBEKISTAN +234 234 VIET NAM +300 300 ARGENTINA +301 301 BOLIVIA (PLURINATIONAL STATE OF) +302 302 BRAZIL +303 303 CHILE +304 304 COLOMBIA +305 305 ECUADOR +306 306 FRANCE (RA III) +307 307 GUYANA +308 308 PARAGUAY +309 309 PERU +310 310 SURINAME +311 311 URUGUAY +312 312 VENEZUELA (BOLIVARIAN REPUBLIC OF) +400 400 ANTIGUA AND BARBUDA +401 401 BAHAMAS +402 402 BARBADOS +403 403 BELIZE +404 404 BRITISH CARIBBEAN TERRITORIES +405 405 CANADA +406 406 COLOMBIA +407 407 COSTA RICA +408 408 CUBA +409 409 DOMINICA +410 410 DOMINICAN REPUBLIC +411 411 EL SALVADOR +412 412 FRANCE (RA IV) +413 413 GUATEMALA +414 414 HAITI +415 415 HONDURAS +416 416 JAMAICA +417 417 MEXICO +418 418 CURAçAO AND SINT MAARTEN +419 419 NICARAGUA +420 420 PANAMA +421 421 SAINT LUCIA +422 422 TRINIDAD AND TOBAGO +423 423 UNITED KINGDOM OF GREAT BRITAIN AND NORTHERN IRELAND (RA IV) +424 424 UNITED STATES OF AMERICA (RA IV) +425 425 VENEZUELA (BOLIVARIAN REPUBLIC OF) +500 500 AUSTRALIA +501 501 BRUNEI DARUSSALAM +502 502 COOK ISLANDS +503 503 FIJI +504 504 FRENCH POLYNESIA +505 505 INDONESIA +506 506 KIRIBATI +507 507 MALAYSIA +508 508 MICRONESIA, FEDERATED STATES OF +509 509 NEW CALEDONIA +510 510 NEW ZEALAND +511 511 NIUE +512 512 PAPUA NEW GUINEA +513 513 PHILIPPINES +514 514 SAMOA +515 515 SINGAPORE +516 516 SOLOMON ISLANDS +517 517 TONGA +518 518 UNITED KINGDOM OF GREAT BRITAIN AND NORTHERN IRELAND (RA V) +519 519 UNITED STATES OF AMERICA (RA V) +520 520 VANUATU +600 600 ALBANIA +601 601 ARMENIA +602 602 AUSTRIA +603 603 AZERBAIJAN +604 604 BELARUS +605 605 BELGIUM +606 606 BOSNIA AND HERZEGOVINA +607 607 BULGARIA +608 608 CROATIA +609 609 CYPRUS +610 610 CZECHIA +611 611 DENMARK +612 612 ESTONIA +613 613 FINLAND +614 614 FRANCE (RA VI) +615 615 GEORGIA +616 616 GERMANY +617 617 GREECE +618 618 HUNGARY +619 619 ICELAND +620 620 IRELAND +621 621 ISRAEL +622 622 ITALY +623 623 JORDAN +624 624 KAZAKHSTAN +625 625 LATVIA +626 626 LEBANON +627 627 LITHUANIA +628 628 LUXEMBOURG +629 629 MALTA +630 630 MONACO +631 631 MONTENEGRO +632 632 NETHERLANDS +633 633 NORWAY +634 634 POLAND +635 635 PORTUGAL (RA VI) +636 636 REPUBLIC OF MOLDOVA +637 637 ROMANIA +638 638 RUSSIAN FEDERATION (RA VI) +639 639 SERBIA +640 640 SLOVAKIA +641 641 SLOVENIA +642 642 SPAIN (RA VI) +643 643 SWEDEN +644 644 SWITZERLAND +645 645 SYRIAN ARAB REPUBLIC +646 646 THE FORMER YUGOSLAV REPUBLIC OF MACEDONIA +647 647 REPUBLIC OF TURKIYE +648 648 UKRAINE +649 649 UNITED KINGDOM OF GREAT BRITAIN AND NORTHERN IRELAND (RA VI) +1023 1023 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/11030.table b/definitions/bufr/tables/0/wmo/40/codetables/11030.table new file mode 100644 index 000000000..253b8fccc --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/11030.table @@ -0,0 +1,25 @@ +0 0 NIL +1 1 LIGHT +2 2 MODERATE +3 3 SEVERE +4 4 NIL +5 5 LIGHT +6 6 MODERATE +7 7 SEVERE +8 8 NIL +9 9 LIGHT +10 10 MODERATE +11 11 SEVERE +12 12 EXTREME, IN CLEAR AIR +13 13 EXTREME, IN CLOUD +14 14 EXTREME, CLOUD/CLEAR AIR NOT SPECIFIED +15 15 LIGHT, ISOLATED MODERATE +16 16 LIGHT, OCCASIONAL MODERATE +17 17 LIGHT, FREQUENTLY MODERATE +18 18 MODERATE, ISOLATED SEVERE +19 19 MODERATE, OCCASIONAL SEVERE +20 20 MODERATE, FREQUENTLY SEVERE +21 21 SEVERE, ISOLATED EXTREME +22 22 SEVERE, OCCASIONAL EXTREME +23 23 SEVERE, FREQUENTLY EXTREME +63 63 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/11031.table b/definitions/bufr/tables/0/wmo/40/codetables/11031.table new file mode 100644 index 000000000..7bece1c85 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/11031.table @@ -0,0 +1,16 @@ +0 0 NIL +1 1 LIGHT +2 2 MODERATE +3 3 SEVERE +4 4 NIL +5 5 LIGHT +6 6 MODERATE +7 7 SEVERE +8 8 NIL +9 9 LIGHT +10 10 MODERATE +11 11 SEVERE +12 12 EXTREME, IN CLEAR AIR +13 13 EXTREME, IN CLOUD +14 14 EXTREME, CLOUD/CLEAR AIR NOT SPECIFIED +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/11037.table b/definitions/bufr/tables/0/wmo/40/codetables/11037.table new file mode 100644 index 000000000..e25c9da63 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/11037.table @@ -0,0 +1,30 @@ +0 0 AVE < 0.1 +1 1 AVE < 0.1 +2 2 0.1 =< AVE < 0.2 +3 3 AVE <0.1 +4 4 0.1 =< AVE < 0.2 +5 5 0.2 =< AVE < 0.3 +6 6 AVE < 0.1 +7 7 0.1 =< AVE < 0.2 +8 8 0.2 =< AVE < 0.3 +9 9 0.3 =< AVE < 0.4 +10 10 AVE < 0.1 +11 11 0.1 =< AVE < 0.2 +12 12 0.2 =< AVE < 0.3 +13 13 0.3 =< AVE < 0.4 +14 14 0.4 =< AVE < 0.5 +15 15 AVE < 0.1 +16 16 0.1 =< AVE < 0.2 +17 17 0.2 =< AVE < 0.3 +18 18 0.3 =< AVE < 0.4 +19 19 0.4 =< AVE < 0.5 +20 20 0.5 =< AVE < 0.8 +21 21 AVE < 0.1 +22 22 0.1 =< AVE < 0.2 +23 23 0.2 =< AVE < 0.3 +24 24 0.3 =< AVE < 0.4 +25 25 0.4 =< AVE < 0.5 +26 26 0.5 =< AVE < 0.8 +27 27 0.8 =< AVE +28 28 NIL +63 63 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/11038.table b/definitions/bufr/tables/0/wmo/40/codetables/11038.table new file mode 100644 index 000000000..68876b0b6 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/11038.table @@ -0,0 +1,17 @@ +0 0 MIN < 1 +1 1 1 =< MIN < 2 +2 2 2 =< MIN < 3 +3 3 3 =< MIN < 4 +4 4 4 =< MIN < 5 +5 5 5 =< MIN < 6 +6 6 6 =< MIN < 7 +7 7 7 =< MIN < 8 +8 8 8 =< MIN < 9 +9 9 9 =< MIN < 10 +10 10 10 =< MIN < 11 +11 11 11 =< MIN < 12 +12 12 12 =< MIN < 13 +13 13 13 =< MIN < 14 +14 14 14 =< MIN < 15 +15 15 NO TIMING INFORMATION AVAILABLE +31 31 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/11039.table b/definitions/bufr/tables/0/wmo/40/codetables/11039.table new file mode 100644 index 000000000..e5af0f23b --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/11039.table @@ -0,0 +1,17 @@ +0 0 MIN < 1 +1 1 1 =< MIN < 2 +2 2 2 =< MIN < 3 +3 3 3 =< MIN < 4 +4 4 4 =< MIN < 5 +5 5 5 =< MIN < 6 +6 6 6 =< MIN < 7 +7 7 7 =< MIN < 8 +8 8 8 =< MIN < 9 +9 9 9 =< MIN < 10 +10 10 10 =< MIN < 11 +11 11 11 =< MIN < 12 +12 12 12 =< MIN < 13 +13 13 13 =< MIN < 14 +14 14 14 =< MIN < 15 +60 60 NO TIMING INFORMATION AVAILABLE +63 63 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/1150.table b/definitions/bufr/tables/0/wmo/40/codetables/1150.table new file mode 100644 index 000000000..51d945080 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/1150.table @@ -0,0 +1,7 @@ +0 0 WGS84, AS USED BY ICAO SINCE 1998 +1 1 ETRS89, AS DEFINED BY EPSG:4258 +2 2 NAD83, AS DEFINED BY EPSG:4269 +3 3 DHDN, AS DEFINED BY EPSG:4314 +4 4 ELLIPSOIDAL DATUM USING THE INTERNATIONAL REFERENCE MERIDIAN AND THE INTERNATIONAL REFERENCE POLE AS THE PRIME MERIDIAN AND PRIME POLE, RESPECTIVELY, AND THE ORIGIN OF THE INTERNATIONAL TERRESTRIAL REFERENCE SYSTEM (ITRS). THE INTERNATIONAL REFERENCE MERIDIAN, INTERNATIONAL REFERENCE POLE AND ITRS ARE MAINTAINED BY THE INTERNATIONAL EARTH ROTATION AND REFERENCE SYSTEMS SERVICE (IERS) +5 5 EARTH-CENTERED, EARTH-FIXED (ECEF) COORDINATE SYSTEM OR EARTH-CENTRED ROTATIONAL (ECR) SYSTEM. THIS IS A RIGHT-HANDED CARTESIAN COORDINATE SYSTEM (X, Y, Z) ROTATING WITH THE EARTH. THE ORIGIN IS DEFINED BY THE CENTRE OF MASS OF THE EARTH. (FOOTNOTE (5) OF CLASS 27 DOES NOT APPLY IF ECEF COORDINATES ARE SPECIFIED.) +65535 65535 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/1151.table b/definitions/bufr/tables/0/wmo/40/codetables/1151.table new file mode 100644 index 000000000..8907f2371 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/1151.table @@ -0,0 +1,3 @@ +0 0 EARTH GRAVITATIONAL MODEL 1996 +1 1 BALTIC HEIGHT SYSTEM 1977 +4095 4095 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/1155.table b/definitions/bufr/tables/0/wmo/40/codetables/1155.table new file mode 100644 index 000000000..0a19ec174 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/1155.table @@ -0,0 +1,7 @@ +0 0 STANDARD CORRECT ALGORITHM (SCA) +1 1 STANDARD CORRECT ALGORITHM MID-BIN (SCA MID-BIN) +2 2 MAXIMUM LIKELIHOOD ESTIMATION (MLE) +3 3 OPTIMAL ESTIMATION PROFILE (OE-PRO) +4 4 GROUP +5 5 GROUP MID-BIN +255 255 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/13038.table b/definitions/bufr/tables/0/wmo/40/codetables/13038.table new file mode 100644 index 000000000..19bc42216 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/13038.table @@ -0,0 +1,4 @@ +0 0 NOT SUPERADIABATIC +1 1 SUPERADIABATIC +2 2 RESERVED +3 3 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/13039.table b/definitions/bufr/tables/0/wmo/40/codetables/13039.table new file mode 100644 index 000000000..c070b1da9 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/13039.table @@ -0,0 +1,3 @@ +0 0 SEA ICE +1 1 SNOW ON LAND +7 7 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/13040.table b/definitions/bufr/tables/0/wmo/40/codetables/13040.table new file mode 100644 index 000000000..30cccb03b --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/13040.table @@ -0,0 +1,13 @@ +0 0 LAND +1 1 RESERVED +2 2 NEAR COAST +3 3 ICE +4 4 POSSIBLE ICE +5 5 OCEAN +6 6 COAST +7 7 INLAND WATER +8 8 SNOW COVER +9 9 SEA ICE +10 10 STANDING WATER +11 11 SNOW +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/13041.table b/definitions/bufr/tables/0/wmo/40/codetables/13041.table new file mode 100644 index 000000000..9e77b6466 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/13041.table @@ -0,0 +1,10 @@ +1 1 A +2 2 A - B +3 3 B +4 4 B - C +5 5 C +6 6 D +7 7 E +8 8 F +9 9 G +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/13051.table b/definitions/bufr/tables/0/wmo/40/codetables/13051.table new file mode 100644 index 000000000..4bdb73e71 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/13051.table @@ -0,0 +1,8 @@ +0 0 SMALLER THAN ANY VALUE IN THE 30-YEAR PERIOD +1 1 IN THE FIRST QUINTILE +2 2 IN THE SECOND QUINTILE +3 3 IN THE THIRD QUINTILE +4 4 IN THE FOURTH QUINTILE +5 5 IN THE FIFTH QUINTILE +6 6 GREATER THAN ANY VALUE IN THE 30-YEAR PERIOD +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/13056.table b/definitions/bufr/tables/0/wmo/40/codetables/13056.table new file mode 100644 index 000000000..448c26927 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/13056.table @@ -0,0 +1,11 @@ +0 0 NO PRECIPITATION +1 1 LIGHT INTERMITTENT +2 2 MODERATE INTERMITTENT +3 3 HEAVY INTERMITTENT +4 4 VERY HEAVY INTERMITTENT +5 5 LIGHT CONTINUOUS +6 6 MODERATE CONTINUOUS +7 7 HEAVY CONTINUOUS +8 8 VERY HEAVY CONTINUOUS +9 9 VARIABLE - ALTERNATIVELY LIGHT AND HEAVY +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/13057.table b/definitions/bufr/tables/0/wmo/40/codetables/13057.table new file mode 100644 index 000000000..6dfa18dd0 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/13057.table @@ -0,0 +1,11 @@ +0 0 NO PRECIPITATION +1 1 WITHIN THE LAST HOUR +2 2 1 TO 2 HOURS AGO +3 3 2 TO 3 HOURS AGO +4 4 3 TO 4 HOURS AGO +5 5 4 TO 5 HOURS AGO +6 6 5 TO 6 HOURS AGO +7 7 6 TO 8 HOURS AGO +8 8 8 TO 10 HOURS AGO +9 9 MORE THAN 10 HOURS AGO +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/15025.table b/definitions/bufr/tables/0/wmo/40/codetables/15025.table new file mode 100644 index 000000000..6bb6ed508 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/15025.table @@ -0,0 +1,4 @@ +0 0 OZONE +11 11 FINE PARTICULATE MATTER (DIAMETER < 2.5 MICRONS) +12 12 FINE PARTICULATE MATTER (DIAMETER < 10 MICRONS) +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/19001.table b/definitions/bufr/tables/0/wmo/40/codetables/19001.table new file mode 100644 index 000000000..af893eb9a --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/19001.table @@ -0,0 +1,7 @@ +0 0 DEPRESSION OR LOW (EXTRATROPLCAL) +1 1 TROPICAL DEPRESSION +2 2 TROPICAL STORM +3 3 SEVERE TROPICAL STORM +4 4 TYPHOON +10 10 DUST/SANDSTORM +63 63 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/19008.table b/definitions/bufr/tables/0/wmo/40/codetables/19008.table new file mode 100644 index 000000000..3bcb5195a --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/19008.table @@ -0,0 +1,5 @@ +0 0 RESERVED +1 1 SHALLOW (TOP OF CIRCULATION BELOW 700-HPA LEVEL) +2 2 MEDIUM (TOP BETWEEN 700-HPA AND 400-HPA LEVEL) +3 3 DEEP (TOP ABOVE 400-HPA LEVEL) +7 7 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/19010.table b/definitions/bufr/tables/0/wmo/40/codetables/19010.table new file mode 100644 index 000000000..b091d96f0 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/19010.table @@ -0,0 +1,3 @@ +1 1 MINIMUM VALUE OF SEA LEVEL PRESSURE +2 2 MAXIMUM VALUE OF 850 HPA RELATIVE VORTICITY +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/19100.table b/definitions/bufr/tables/0/wmo/40/codetables/19100.table new file mode 100644 index 000000000..1f03a6f1b --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/19100.table @@ -0,0 +1,9 @@ +3 3 DURING THE PRECEDING 15 MINUTES +4 4 DURING THE PRECEDING 30 MINUTES +5 5 DURING THE PRECEDING 1 HOUR +6 6 DURING THE PRECEDING 2 HOURS +7 7 DURING THE PRECEDING 3 HOURS +8 8 DURING THE PRECEDING 6 HOURS +9 9 DURING A PERIOD OF MORE THAN 6 HOURS +10 10 UNDETERMINED +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/19101.table b/definitions/bufr/tables/0/wmo/40/codetables/19101.table new file mode 100644 index 000000000..0cd1ff4a6 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/19101.table @@ -0,0 +1,10 @@ +0 0 RESERVED +1 1 EYE VISIBLE ON RADAR SCOPE, ACCURACY GOOD (WITHIN 10 KM) +2 2 EYE VISIBLE ON RADAR SCOPE, ACCURACY FAIR (WITHIN 30 KM) +3 3 EYE VISIBLE ON RADAR SCOPE, ACCURACY POOR (WITHIN 50 KM) +4 4 POSITION OF THE CENTRE WITHIN THE AREA COVERED BY THE RADAR SCOPE, DETERMINATION BY MEANS OF THE SPIRAL-BAND OVERLAY, ACCURACY GOOD (WITHIN 10 KM) +5 5 POSITION OF THE CENTRE WITHIN THE AREA COVERED BY THE RADAR SCOPE, DETERMINATION BY MEANS OF THE SPIRAL-BAND OVERLAY, ACCURACY FAIR (WITHIN 30 KM) +6 6 POSITION OF THE CENTRE WITHIN THE AREA COVERED BY THE RADAR SCOPE, DETERMINATION BY MEANS OF THE SPIRAL-BAND OVERLAY, ACCURACY POOR (WITHIN 50 KM) +7 7 POSITION OF THE CENTRE OUTSIDE THE AREA COVERED BY THE RADAR SCOPE, EXTRAPOLATION BY MEANS OF THE SPIRAL-BAND OVERLAY +10 10 ACCURACY UNDETERMINED +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/19102.table b/definitions/bufr/tables/0/wmo/40/codetables/19102.table new file mode 100644 index 000000000..21ab7756b --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/19102.table @@ -0,0 +1,8 @@ +0 0 CIRCULAR +1 1 ELLIPTICAL - THE MINOR AXIS IS AT LEAST 3/4 THE LENGTH OF THE MAJOR AXIS +2 2 ELLIPTICAL - THE MINOR AXIS IS LESS THAN 3/4 THE LENGTH OF THE MAJOR AXIS +3 3 APPARENT DOUBLE EYE +4 4 OTHER SHAPE +5 5 ILL DEFINED +6 6 UNDETERMINED +7 7 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/19103.table b/definitions/bufr/tables/0/wmo/40/codetables/19103.table new file mode 100644 index 000000000..3abb184f8 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/19103.table @@ -0,0 +1,12 @@ +0 0 LESS THAN 5 KM +1 1 5 TO LESS THAN 10 KM +2 2 10 TO LESS THAN 15 KM +3 3 15 TO LESS THAN 20 KM +4 4 20 TO LESS THAN 25 KM +5 5 25 TO LESS THAN 30 KM +6 6 30 TO LESS THAN 35 KM +7 7 35 TO LESS THAN 40 KM +8 8 40 TO LESS THAN 50 KM +9 9 50 KM AND GREATER +10 10 UNDETERMINED +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/19104.table b/definitions/bufr/tables/0/wmo/40/codetables/19104.table new file mode 100644 index 000000000..67ae47479 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/19104.table @@ -0,0 +1,12 @@ +0 0 EYE HAS FIRST BECOME VISIBLE DURING THE PAST 30 MINUTES +1 1 NO SIGNIFICANT CHANGE IN THE CHARACTERISTICS OR SIZE OF THE EYE +2 2 EYE HAS BECOME SMALLER WITH NO OTHER SIGNIFICANT CHANGE IN CHARACTERISTICS +3 3 EYE HAS BECOME LARGER WITH NO OTHER SIGNIFICANT CHANGE IN CHARACTERISTICS +4 4 EYE HAS BECOME LESS DISTINCT WITH NO SIGNIFICANT CHANGE IN SIZE +5 5 EYE HAS BECOME LESS DISTINCT AND DECREASED IN SIZE +6 6 EYE HAS BECOME LESS DISTINCT AND INCREASED IN SIZE +7 7 EYE HAS BECOME MORE DISTINCT WITH NO SIGNIFICANT CHANGE IN SIZE +8 8 EYE HAS BECOME MORE DISTINCT AND DECREASED IN SIZE +9 9 EYE HAS BECOME MORE DISTINCT AND INCREASED IN SIZE +10 10 CHANGE IN CHARACTER AND SIZE OF EYE CANNOT BE DETERMINED +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/19105.table b/definitions/bufr/tables/0/wmo/40/codetables/19105.table new file mode 100644 index 000000000..becfceea8 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/19105.table @@ -0,0 +1,10 @@ +0 0 0 TO LESS THAN 100 KM +1 1 100 TO LESS THAN 200 KM +2 2 200 TO LESS THAN 300 KM +3 3 300 TO LESS THAN 400 KM +4 4 400 TO LESS THAN 500 KM +5 5 500 TO LESS THAN 600 KM +6 6 600 TO LESS THAN 800 KM +7 7 800 KM OR MORE +10 10 DOUBTFUL OR UNDETERMINED +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/19107.table b/definitions/bufr/tables/0/wmo/40/codetables/19107.table new file mode 100644 index 000000000..ed6b79c54 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/19107.table @@ -0,0 +1,11 @@ +0 0 LESS THAN 1 HOUR +1 1 1 TO LESS THAN 2 HOURS +2 2 2 TO LESS THAN 3 HOURS +3 3 3 TO LESS THAN 6 HOURS +4 4 6 TO LESS THAN 9 HOURS +5 5 9 TO LESS THAN 12 HOURS +6 6 12 TO LESS THAN 15 HOURS +7 7 15 TO LESS THAN 18 HOURS +8 8 18 TO LESS THAN 21 HOURS +9 9 21 TO LESS THAN 30 HOURS +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/19108.table b/definitions/bufr/tables/0/wmo/40/codetables/19108.table new file mode 100644 index 000000000..9350bc265 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/19108.table @@ -0,0 +1,8 @@ +0 0 CYCLONE CENTRE WITHIN 10 KM OF THE TRANSMITTED POSITION +1 1 CYCLONE CENTRE WITHIN 20 KM OF THE TRANSMITTED POSITION +2 2 CYCLONE CENTRE WITHIN 50 KM OF THE TRANSMITTED POSITION +3 3 CYCLONE CENTRE WITHIN 100 KM OF THE TRANSMITTED POSITION +4 4 CYCLONE CENTRE WITHIN 200 KM OF THE TRANSMITTED POSITION +5 5 CYCLONE CENTRE WITHIN 300 KM OF THE TRANSMITTED POSITION +6 6 CYCLONE CENTRE UNDETERMINED +7 7 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/19109.table b/definitions/bufr/tables/0/wmo/40/codetables/19109.table new file mode 100644 index 000000000..3d236291d --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/19109.table @@ -0,0 +1,12 @@ +0 0 LESS THAN 1 DEG OF LATITUDE +1 1 1 DEG TO LESS THAN 2 DEG OF LATITUDE +2 2 2 DEG TO LESS THAN 3 DEG OF LATITUDE +3 3 3 DEG TO LESS THAN 4 DEG OF LATITUDE +4 4 4 DEG TO LESS THAN 5 DEG OF LATITUDE +5 5 5 DEG TO LESS THAN 6 DEG OF LATITUDE +6 6 6 DEG TO LESS THAN 7 DEG OF LATITUDE +7 7 7 DEG TO LESS THAN 8 DEG OF LATITUDE +8 8 8 DEG TO LESS THAN 9 DEG OF LATITUDE +9 9 9 DEG OF LATITUDE OR MORE +10 10 UNDETERMINED +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/19110.table b/definitions/bufr/tables/0/wmo/40/codetables/19110.table new file mode 100644 index 000000000..81f4f593c --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/19110.table @@ -0,0 +1,8 @@ +0 0 MUCH WEAKENING +1 1 WEAKENING +2 2 NO CHANGE +3 3 INTENSIFICATION +4 4 STRONG INTENSIFICATION +9 9 NOT OBSERVED PREVIOUSLY +10 10 UNDETERMINED +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/19113.table b/definitions/bufr/tables/0/wmo/40/codetables/19113.table new file mode 100644 index 000000000..ba46dca88 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/19113.table @@ -0,0 +1,8 @@ +1 1 CURVED BAND +2 2 SHEAR +3 3 EYE +4 4 BANDING EYE +5 5 CENTRAL DENSE OVERCAST (CDO) +6 6 EMBEDDED CENTRE +7 7 CENTRE COLD COVER (CCC) +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/19117.table b/definitions/bufr/tables/0/wmo/40/codetables/19117.table new file mode 100644 index 000000000..b623197a3 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/19117.table @@ -0,0 +1,4 @@ +1 1 A (CURVED BAND) +2 2 B (CDO) +3 3 C (SHEAR) +7 7 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/19119.table b/definitions/bufr/tables/0/wmo/40/codetables/19119.table new file mode 100644 index 000000000..8329a8a58 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/19119.table @@ -0,0 +1,4 @@ +1 1 DT-NUMBER +2 2 PT-NUMBER +3 3 MET-NUMBER +7 7 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/20003.table b/definitions/bufr/tables/0/wmo/40/codetables/20003.table new file mode 100644 index 000000000..1414361a2 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/20003.table @@ -0,0 +1,266 @@ +0 0 CLOUD DEVELOPMENT NOT OBSERVED OR NOT OBSERVABLE +1 1 CLOUDS GENERALLY DISSOLVING OR BECOMING LESS DEVELOPED +2 2 STATE OF SKY ON THE WHOLE UNCHANGED +3 3 CLOUDS GENERALLY FORMING OR DEVELOPING +4 4 VISIBILITY REDUCED BY SMOKE, E.G. VELDT OR FOREST FIRES, INDUSTRIAL SMOKE OR VOLCANIC ASHES +5 5 HAZE +6 6 WIDESPREAD DUST IN SUSPENSION IN THE AIR, NOT RAISED BY WIND AT OR NEAR THE STATION AT THE TIME OF OBSERVATION +7 7 DUST OR SAND RAISED BY WIND AT OR NEAR THE STATION AT THE TIME OF OBSERVATION, BUT NO WELL-DEVELOPED DUST WHIRL(S) OR SAND WHIRL(S), AND NO DUSTSTORM OR SANDSTORM SEEN; OR, IN THE CASE OF SEA STATIONS AND COASTAL STATIONS, BLOWING SPRAY AT THE STATION +8 8 WELL-DEVELOPED DUST WHIRL(S) OR SAND WHIRL(S) SEEN AT OR NEAR THE STATION DURING THE PRECEDING HOUR OR AT THE SAME TIME OF OBSERVATION, BUT NO DUSTSTORM OR SANDSTORM +9 9 DUSTSTORM OR SANDSTORM WITHIN SIGHT AT THE TIME OF OBSERVATION, OR AT THE STATION DURING THE PRECEDING HOUR +10 10 MIST +11 11 PATCHES +12 12 MORE OR LESS CONTINUOUS +13 13 LIGHTNING VISIBLE, NO THUNDER HEARD +14 14 PRECIPITATION WITHIN SIGHT, NOT REACHING THE GROUND OR THE SURFACE OF THE SEA +15 15 PRECIPITATION WITHIN SIGHT, REACHING THE GROUND OR THE SURFACE OF THE SEA, BUT DISTANT, I.E. ESTIMATED TO BE MORE THAN 5 KM FROM THE STATION +16 16 PRECIPITATION WITHIN SIGHT, REACHING THE GROUND OR THE SURFACE OF THE SEA, NEAR TO, BUT NOT AT THE STATION +17 17 THUNDERSTORM, BUT NO PRECIPITATION AT THE TIME OF OBSERVATION +18 18 SQUALLS +19 19 FUNNEL CLOUD(S) +20 20 DRIZZLE (NOT FREEZING) OR SNOW GRAINS +21 21 RAIN (NOT FREEZING) +22 22 SNOW +23 23 RAIN AND SNOW OR ICE PELLETS +24 24 FREEZING DRIZZLE OR FREEZING RAIN +25 25 SHOWER(S) OF RAIN +26 26 SHOWER(S) OF SNOW, OR OF RAIN AND SNOW +27 27 SHOWER(S) OF HAIL, OR OF RAIN AND HAIL +28 28 FOG OR ICE FOG +29 29 THUNDERSTORM (WITH OR WITHOUT PRECIPITATION) +30 30 SLIGHT OR MODERATE DUSTSTORM OR SANDSTORM +31 31 SLIGHT OR MODERATE DUSTSTORM OR SANDSTORM +32 32 SLIGHT OR MODERATE DUSTSTORM OR SANDSTORM +33 33 SEVERE DUSTSTORM OR SANDSTORM +34 34 SEVERE DUSTSTORM OR SANDSTORM +35 35 SEVERE DUSTSTORM OR SANDSTORM +36 36 SLIGHT OR MODERATE DRIFTING SNOW +37 37 HEAVY DRIFTING SNOW +38 38 SLIGHT OR MODERATE BLOWING SNOW +39 39 HEAVY BLOWING SNOW +40 40 FOG OR ICE FOG AT A DISTANCE AT THE TIME OF OBSERVATION, BUT NOT AT THE STATION DURING THE PRECEDING HOUR, THE FOG OR ICE FOG EXTENDING TO A LEVEL ABOVE THAT OF THE OBSERVER +41 41 FOG OR ICE FOG IN PATCHES +42 42 FOG OR ICE FOG, SKY VISIBLE +43 43 FOG OR ICE FOG, SKY INVISIBLE +44 44 FOG OR ICE FOG, SKY VISIBLE +45 45 FOG OR ICE FOG, SKY INVISIBLE +46 46 FOG OR ICE FOG, SKY VISIBLE +47 47 FOG OR ICE FOG, SKY INVISIBLE +48 48 FOG, DEPOSITING RIME, SKY VISIBLE +49 49 FOG, DEPOSITING RIME, SKY INVISIBLE +50 50 DRIZZLE, NOT FREEZING, INTERMITTENT +51 51 DRIZZLE, NOT FREEZING, CONTINUOUS +52 52 DRIZZLE, NOT FREEZING, INTERMITTENT +53 53 DRIZZLE, NOT FREEZING, CONTINUOUS +54 54 DRIZZLE, NOT FREEZING, INTERMITTENT +55 55 DRIZZLE, NOT FREEZING, CONTINUOUS +56 56 DRIZZLE, FREEZING, SLIGHT +57 57 DRIZZLE, FREEZING, MODERATE OR HEAVY (DENSE) +58 58 DRIZZLE AND RAIN, SLIGHT +59 59 DRIZZLE AND RAIN, MODERATE OR HEAVY +60 60 RAIN, NOT FREEZING, INTERMITTENT +61 61 RAIN, NOT FREEZING, CONTINUOUS +62 62 RAIN, NOT FREEZING, INTERMITTENT +63 63 RAIN, NOT FREEZING, CONTINUOUS +64 64 RAIN, NOT FREEZING, INTERMITTENT +65 65 RAIN, NOT FREEZING, CONTINUOUS +66 66 RAIN, FREEZING, SLIGHT +67 67 RAIN, FREEZING, MODERATE OR HEAVY +68 68 RAIN OR DRIZZLE AND SNOW, SLIGHT +69 69 RAIN OR DRIZZLE AND SNOW, MODERATE OR HEAVY +70 70 INTERMITTENT FALL OF SNOWFLAKES +71 71 CONTINUOUS FALL OF SNOWFLAKES +72 72 INTERMITTENT FALL OF SNOWFLAKES +73 73 CONTINUOUS FALL OF SNOWFLAKES +74 74 INTERMITTENT FALL OF SNOWFLAKES +75 75 CONTINUOUS FALL OF SNOWFLAKES +76 76 DIAMOND DUST (WITH OR WITHOUT FOG) +77 77 SNOW GRAINS (WITH OR WITHOUT FOG) +78 78 ISOLATED STAR-LIKE SNOW CRYSTALS (WITH OR WITHOUT FOG) +79 79 ICE PELLETS +80 80 RAIN SHOWER(S), SLIGHT +81 81 RAIN SHOWER(S), MODERATE OR HEAVY +82 82 RAIN SHOWER(S), VIOLENT +83 83 SHOWER(S) OF RAIN AND SNOW MIXED, SLIGHT +84 84 SHOWER(S) OF RAIN AND SNOW MIXED, MODERATE OR HEAVY +85 85 SNOW SHOWER(S), SLIGHT +86 86 SNOW SHOWER(S), MODERATE OR HEAVY +87 87 SHOWER(S) OF SNOW PELLETS OR SMALL HAIL, WITH OR WITHOUT RAIN OR RAIN AND SNOW MIXED +88 88 SHOWER(S) OF SNOW PELLETS OR SMALL HAIL, WITH OR WITHOUT RAIN OR RAIN AND SNOW MIXED +89 89 SHOWER(S) OF HAIL, WITH OR WITHOUT RAIN OR RAIN AND SNOW MIXED, NOT ASSOCIATED WITH THUNDER +90 90 SHOWER(S) OF HAIL, WITH OR WITHOUT RAIN OR RAIN AND SNOW MIXED, NOT ASSOCIATED WITH THUNDER +91 91 SLIGHT RAIN AT TIME OF OBSERVATION +92 92 MODERATE OR HEAVY RAIN AT TIME OF OBSERVATION +93 93 SLIGHT SNOW, OR RAIN AND SNOW MIXED OR HAIL AT TIME OF OBSERVATION +94 94 MODERATE OR HEAVY SNOW, OR RAIN AND SNOW MIXED OR HAIL AT TIME OF OBSERVATION +95 95 THUNDERSTORM, SLIGHT OR MODERATE, WITHOUT HAIL, BUT WITH RAIN AND/OR SNOW AT TIME OF OBSERVATION +96 96 THUNDERSTORM, SLIGHT OR MODERATE, WITH HAIL AT TIME OF OBSERVATION +97 97 THUNDERSTORM, HEAVY, WITHOUT HAIL, BUT WITH RAIN AND/OR SNOW AT TIME OF OBSERVATION +98 98 THUNDERSTORM COMBINED WITH DUSTSTORM OR SANDSTORM AT TIME OF OBSERVATION +99 99 THUNDERSTORM, HEAVY, WITH HAIL AT TIME OF OBSERVATION +100 100 NO SIGNIFICANT WEATHER OBSERVED +101 101 CLOUDS GENERALLY DISSOLVING OR BECOMING LESS DEVELOPED DURING THE PAST HOUR +102 102 STATE OF SKY ON THE WHOLE UNCHANGED DURING THE PAST HOUR +103 103 CLOUDS GENERALLY FORMING OR DEVELOPING DURING THE PAST HOUR +104 104 HAZE OR SMOKE, OR DUST IN SUSPENSION IN THE AIR, VISIBILITY EQUAL TO, OR GREATER THAN, 1 KM +105 105 HAZE OR SMOKE, OR DUST IN SUSPENSION IN THE AIR, VISIBILITY LESS THAN 1 KM +110 110 MIST +111 111 DIAMOND DUST +112 112 DISTANT LIGHTNING +118 118 SQUALLS +119 119 RESERVED +120 120 FOG +121 121 PRECIPITATION +122 122 DRIZZLE (NOT FREEZING) OR SNOW GRAINS +123 123 RAIN (NOT FREEZING) +124 124 SNOW +125 125 FREEZING DRIZZLE OR FREEZING RAIN +126 126 THUNDERSTORM (WITH OR WITHOUT PRECIPITATION) +127 127 BLOWING OR DRIFTING SNOW OR SAND +128 128 BLOWING OR DRIFTING SNOW OR SAND, VISIBILITY EQUAL TO, OR GREATER THAN, 1 KM +129 129 BLOWING OR DRIFTING SNOW OR SAND, VISIBILITY LESS THAN 1 KM +130 130 FOG +131 131 FOG OR ICE FOG IN PATCHES +132 132 FOG OR ICE FOG, HAS BECOME THINNER DURING THE PAST HOUR +133 133 FOG OR ICE FOG, NO APPRECIABLE CHANGE DURING THE PAST HOUR +134 134 FOG OR ICE FOG, HAS BEGUN OR BECOME THICKER DURING THE PAST HOUR +135 135 FOG, DEPOSITING RIME +140 140 PRECIPITATION +141 141 PRECIPITATION, SLIGHT OR MODERATE +142 142 PRECIPITATION, HEAVY +143 143 LIQUID PRECIPITATION, SLIGHT OR MODERATE +144 144 LIQUID PRECIPITATION, HEAVY +145 145 SOLID PRECIPITATION, SLIGHT OR MODERATE +146 146 SOLID PRECIPITATION, HEAVY +147 147 FREEZING PRECIPITATION, SLIGHT OR MODERATE +148 148 FREEZING PRECIPITATION, HEAVY +149 149 RESERVED +150 150 DRIZZLE +151 151 DRIZZLE, NOT FREEZING, SLIGHT +152 152 DRIZZLE, NOT FREEZING, MODERATE +153 153 DRIZZLE, NOT FREEZING, HEAVY +154 154 DRIZZLE, FREEZING, SLIGHT +155 155 DRIZZLE, FREEZING, MODERATE +156 156 DRIZZLE, FREEZING, HEAVY +157 157 DRIZZLE AND RAIN, SLIGHT +158 158 DRIZZLE AND RAIN, MODERATE OR HEAVY +159 159 RESERVED +160 160 RAIN +161 161 RAIN, NOT FREEZING, SLIGHT +162 162 RAIN, NOT FREEZING, MODERATE +163 163 RAIN, NOT FREEZING, HEAVY +164 164 RAIN, FREEZING, SLIGHT +165 165 RAIN, FREEZING, MODERATE +166 166 RAIN, FREEZING, HEAVY +167 167 RAIN (OR DRIZZLE) AND SNOW, SLIGHT +168 168 RAIN (OR DRIZZLE) AND SNOW, MODERATE OR HEAVY +169 169 RESERVED +170 170 SNOW +171 171 SNOW, SLIGHT +172 172 SNOW, MODERATE +173 173 SNOW, HEAVY +174 174 ICE PELLETS, SLIGHT +175 175 ICE PELLETS, MODERATE +176 176 ICE PELLETS, HEAVY +177 177 SNOW GRAINS +178 178 ICE CRYSTALS +179 179 RESERVED +180 180 SHOWER(S) OR INTERMITTENT PRECIPITATION +181 181 RAIN SHOWER(S) OR INTERMITTENT RAIN, SLIGHT +182 182 RAIN SHOWER(S) OR INTERMITTENT RAIN, MODERATE +183 183 RAIN SHOWER(S) OR INTERMITTENT RAIN, HEAVY +184 184 RAIN SHOWER(S) OR INTERMITTENT RAIN, VIOLENT +185 185 SNOW SHOWER(S) OR INTERMITTENT SNOW, SLIGHT +186 186 SNOW SHOWER(S) OR INTERMITTENT SNOW, MODERATE +187 187 SNOW SHOWER(S) OR INTERMITTENT SNOW, HEAVY +188 188 RESERVED +189 189 HAIL +190 190 THUNDERSTORM +191 191 THUNDERSTORM, SLIGHT OR MODERATE, WITH NO PRECIPITATION +192 192 THUNDERSTORM, SLIGHT OR MODERATE, WITH RAIN SHOWERS AND/OR SNOW SHOWERS +193 193 THUNDERSTORM, SLIGHT OR MODERATE, WITH HAIL +194 194 THUNDERSTORM, HEAVY, WITH NO PRECIPITATION +195 195 THUNDERSTORM, HEAVY, WITH RAIN SHOWERS AND/OR SNOW SHOWERS +196 196 THUNDERSTORM, HEAVY, WITH HAIL +199 199 TORNADO +204 204 VOLCANIC ASH SUSPENDED IN THE AIR ALOFT +205 205 NOT USED +206 206 THICK DUST HAZE, VISIBILITY LESS THAN 1 KM +207 207 BLOWING SPRAY AT THE STATION +208 208 DRIFTING DUST (SAND) +209 209 WALL OF DUST OR SAND IN DISTANCE (LIKE HABOOB) +210 210 SNOW HAZE +211 211 WHITEOUT +212 212 NOT USED +213 213 LIGHTNING, CLOUD TO SURFACE +217 217 DRY THUNDERSTORM +218 218 NOT USED +219 219 TORNADO CLOUD (DESTRUCTIVE) AT OR WITHIN SIGHT OF THE STATION DURING PRECEDING HOUR OR AT THE TIME OF OBSERVATION +220 220 DEPOSITION OF VOLCANIC ASH +221 221 DEPOSITION OF DUST OR SAND +222 222 DEPOSITION OF DEW +223 223 DEPOSITION OF WET SNOW +224 224 DEPOSITION OF SOFT RIME +225 225 DEPOSITION OF HARD RIME +226 226 DEPOSITION OF HOAR FROST +227 227 DEPOSITION OF GLAZE +228 228 DEPOSITION OF ICE CRUST (ICE SLICK) +229 229 NOT USED +230 230 DUSTSTORM OR SANDSTORM WITH TEMPERATURE BELOW 0 DEG C +239 239 BLOWING SNOW, IMPOSSIBLE TO DETERMINE WHETHER SNOW IS FALLING OR NOT +240 240 NOT USED +241 241 FOG ON SEA +242 242 FOG IN VALLEYS +243 243 ARCTIC OR ANTARCTIC SEA SMOKE +244 244 STEAM FOG (SEA, LAKE OR RIVER) +245 245 STEAM LOG (LAND) +246 246 FOG OVER ICE OR SNOW COVER +247 247 DENSE FOG, VISIBILITY 60-90 M +248 248 DENSE FOG, VISIBILITY 30-60 M +249 249 DENSE FOG, VISIBILITY LESS THAN 30 M +250 250 DRIZZLE, RATE OF FALL - LESS THAN 0.10 MM H-1 +251 251 DRIZZLE, RATE OF FALL - 0.10-0.19 MM H-1 +252 252 DRIZZLE, RATE OF FALL - 0.20-0.39 MM H-1 +253 253 DRIZZLE, RATE OF FALL - 0.40-0.79 MM H-1 +254 254 DRIZZLE, RATE OF FALL - 0.80-1.59 MM H-1 +255 255 DRIZZLE, RATE OF FALL - 1.60-3.19 MM H-1 +256 256 DRIZZLE, RATE OF FALL - 3.20-6.39 MM H-1 +257 257 DRIZZLE, RATE OF FALL - 6.4 MM H-1 OR MORE +258 258 NOT USED +259 259 DRIZZLE AND SNOW +260 260 RAIN, RATE OF FALL - LESS THAN 1.0 MM H-1 +261 261 RAIN, RATE OF FALL - 1.0-1.9 MM H-1 +262 262 RAIN, RATE OF FALL - 2.0-3.9 MM H-1 +263 263 RAIN, RATE OF FALL - 4.0-7.9 MM H-1 +264 264 RAIN, RATE OF FALL - 8.0-15.9 MM H-1 +265 265 RAIN, RATE OF FALL - 16.0-31.9 MM H-1 +266 266 RAIN, RATE OF FALL - 32.0-63.9 MM H-1 +267 267 RAIN, RATE OF FALL - 64.0 MM H-1 OR MORE +270 270 SNOW, RATE OF FALL - LESS THAN 1.0 CM H-1 +271 271 SNOW, RATE OF FALL - 1.0-1.9 CM H-1 +272 272 SNOW, RATE OF FALL - 2.0-3.9 CM H-1 +273 273 SNOW, RATE OF FALL - 4.0-7.9 CM H-1 +274 274 SNOW, RATE OF FALL - 8.0-15.9 CM H-1 +275 275 SNOW, RATE OF FALL - 16.0-31.9 CM H-1 +276 276 SNOW, RATE OF FALL - 32.0-63.9 CM H-1 +277 277 SNOW, RATE OF FALL - 64.0 CM H-1 OR MORE +278 278 SNOW OR ICE CRYSTAL PRECIPITATION FROM A CLEAR SKY +279 279 WET SNOW, FREEZING ON CONTACT +280 280 PRECIPITATION OF RAIN +281 281 PRECIPITATION OF RAIN, FREEZING +282 282 PRECIPITATION OF RAIN AND SNOW MIXED +283 283 PRECIPITATION OF SNOW +284 284 PRECIPITATION OF SNOW PELLETS OR SMALL HALL +285 285 PRECIPITATION OF SNOW PELLETS OR SMALL HAIL, WITH RAIN +286 286 PRECIPITATION OF SNOW PELLETS OR SMALL HAIL, WITH RAIN AND SNOW MIXED +287 287 PRECIPITATION OF SNOW PELLETS OR SMALL HAIL, WITH SNOW +288 288 PRECIPITATION OF HAIL +289 289 PRECIPITATION OF HAIL, WITH RAIN +290 290 PRECIPITATION OF HALL, WITH RAIN AND SNOW MIXED +291 291 PRECIPITATION OF HAIL, WITH SNOW +292 292 SHOWER(S) OR THUNDERSTORM OVER SEA +293 293 SHOWER(S) OR THUNDERSTORM OVER MOUNTAINS +508 508 NO SIGNIFICANT PHENOMENON TO REPORT, PRESENT AND PAST WEATHER OMITTED +509 509 NO OBSERVATION, DATA NOT AVAILABLE, PRESENT AND PAST WEATHER OMITTED +510 510 PRESENT AND PAST WEATHER MISSING, BUT EXPECTED +511 511 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/20004.table b/definitions/bufr/tables/0/wmo/40/codetables/20004.table new file mode 100644 index 000000000..f3d3024d8 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/20004.table @@ -0,0 +1,21 @@ +0 0 CLOUD COVERING 1/2 OR LESS OF THE SKY THROUGHOUT THE APPROPRIATE PERIOD +1 1 CLOUD COVERING MORE THAN 1/2 OF THE SKY DURING PART OF THE APPROPRIATE PERIOD AND COVERING 1/2 OR LESS DURING PART OF THE PERIOD +2 2 CLOUD COVERING MORE THAN 1/2 OF THE SKY THROUGHOUT THE APPROPRIATE PERIOD +3 3 SANDSTORM, DUSTSTORM OR BLOWING SNOW +4 4 FOG OR ICE FOG OR THICK HAZE +5 5 DRIZZLE +6 6 RAIN +7 7 SNOW, OR RAIN AND SNOW MIXED +8 8 SHOWER(S) +9 9 THUNDERSTORM(S) WITH OR WITHOUT PRECIPITATION +10 10 NO SIGNIFICANT WEATHER OBSERVED +11 11 VISIBILITY REDUCED +12 12 BLOWING PHENOMENA, VISIBILITY REDUCED +13 13 FOG +14 14 PRECIPITATION +15 15 DRIZZLE +16 16 RAIN +17 17 SNOW OR ICE PELLETS +18 18 SHOWERS OR INTERMITTENT PRECIPITATION +19 19 THUNDERSTORM +31 31 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/20005.table b/definitions/bufr/tables/0/wmo/40/codetables/20005.table new file mode 100644 index 000000000..f3d3024d8 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/20005.table @@ -0,0 +1,21 @@ +0 0 CLOUD COVERING 1/2 OR LESS OF THE SKY THROUGHOUT THE APPROPRIATE PERIOD +1 1 CLOUD COVERING MORE THAN 1/2 OF THE SKY DURING PART OF THE APPROPRIATE PERIOD AND COVERING 1/2 OR LESS DURING PART OF THE PERIOD +2 2 CLOUD COVERING MORE THAN 1/2 OF THE SKY THROUGHOUT THE APPROPRIATE PERIOD +3 3 SANDSTORM, DUSTSTORM OR BLOWING SNOW +4 4 FOG OR ICE FOG OR THICK HAZE +5 5 DRIZZLE +6 6 RAIN +7 7 SNOW, OR RAIN AND SNOW MIXED +8 8 SHOWER(S) +9 9 THUNDERSTORM(S) WITH OR WITHOUT PRECIPITATION +10 10 NO SIGNIFICANT WEATHER OBSERVED +11 11 VISIBILITY REDUCED +12 12 BLOWING PHENOMENA, VISIBILITY REDUCED +13 13 FOG +14 14 PRECIPITATION +15 15 DRIZZLE +16 16 RAIN +17 17 SNOW OR ICE PELLETS +18 18 SHOWERS OR INTERMITTENT PRECIPITATION +19 19 THUNDERSTORM +31 31 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/20006.table b/definitions/bufr/tables/0/wmo/40/codetables/20006.table new file mode 100644 index 000000000..cc2612116 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/20006.table @@ -0,0 +1,5 @@ +0 0 LOW INSTRUMENT FLIGHT RULES - CEILING < 500 FEET AND/OR VISIBILITY < 1 MILE +1 1 INSTRUMENT FLIGHT RULES - CEILING < 1000 FEET AND/OR VISIBILITY < 3 MILES +2 2 MARGINAL VISUAL FLIGHT RULES - 1000 FEET =< CEILING < 3000 FEET AND/OR 3 MILES =< VISIBILITY < 5 MILES +3 3 VISUAL FLIGHT RULES - CEILING >= 3000 FEET AND/OR VISIBILITY >= 5 MILES +7 7 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/20008.table b/definitions/bufr/tables/0/wmo/40/codetables/20008.table new file mode 100644 index 000000000..966bcc2fa --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/20008.table @@ -0,0 +1,19 @@ +0 0 SKY CLEAR +1 1 FEW +2 2 SCATTERED +3 3 BROKEN +4 4 OVERCAST +5 5 RESERVED +6 6 SCATTERED/BROKEN +7 7 BROKEN/OVERCAST +8 8 ISOLATED +9 9 ISOLATED EMBEDDED +10 10 OCCASIONAL +11 11 OCCASIONAL EMBEDDED +12 12 FREQUENT +13 13 DENSE +14 14 LAYERS +15 15 OBSCURED (OBSC) +16 16 EMBEDDED (EMBD) +17 17 FREQUENT EMBEDDED +31 31 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/20009.table b/definitions/bufr/tables/0/wmo/40/codetables/20009.table new file mode 100644 index 000000000..c3f1d7435 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/20009.table @@ -0,0 +1,7 @@ +0 0 RESERVED +1 1 NSC NIL SIGNIFICANT CLOUD +2 2 CAVOK +3 3 SKC SKY CLEAR +4 4 NSW NIL SIGNIFICANT WEATHER +5 5 NCD NO CLOUDS DETECTED +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/2001.table b/definitions/bufr/tables/0/wmo/40/codetables/2001.table new file mode 100644 index 000000000..470fcccb7 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/2001.table @@ -0,0 +1,4 @@ +0 0 AUTOMATIC +1 1 MANNED +2 2 HYBRID: BOTH MANNED AND AUTOMATIC +3 3 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/20011.table b/definitions/bufr/tables/0/wmo/40/codetables/20011.table new file mode 100644 index 000000000..06c6e106c --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/20011.table @@ -0,0 +1,16 @@ +0 0 0 +1 1 1 OKTA OR LESS, BUT NOT ZERO +2 2 2 OKTAS +3 3 3 OKTAS +4 4 4 OKTAS +5 5 5 OKTAS +6 6 6 OKTAS +7 7 7 OKTAS OR MORE, BUT NOT 8 OKTAS +8 8 8 OKTAS +9 9 SKY OBSCURED BY FOG AND/OR OTHER METEOROLOGICAL PHENOMENA +10 10 SKY PARTIALLY OBSCURED BY FOG AND/OR OTHER METEOROLOGICAL PHENOMENA +11 11 SCATTERED +12 12 BROKEN +13 13 FEW +14 14 RESERVED +15 15 CLOUD COVER IS INDISCERNIBLE FOR REASONS OTHER THAN FOG OR OTHER METEOROLOGICAL PHENOMENA, OR OBSERVATION IS NOT MADE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/20012.table b/definitions/bufr/tables/0/wmo/40/codetables/20012.table new file mode 100644 index 000000000..07984f399 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/20012.table @@ -0,0 +1,55 @@ +0 0 CIRRUS (CI) +1 1 CIRROCUMULUS (CC) +2 2 CIRROSTRATUS (CS) +3 3 ALTOCUMULUS (AC) +4 4 ALTOSTRATUS (AS) +5 5 NIMBOSTRATUS (NS) +6 6 STRATOCUMULUS (SC) +7 7 STRATUS (ST) +8 8 CUMULUS (CU) +9 9 CUMULONIMBUS (CB) +10 10 NO CH CLOUDS +11 11 CIRRUS FIBRATUS, SOMETIMES UNCINUS, NOT PROGRESSIVELY INVADING THE SKY +12 12 CIRRUS SPISSATUS, IN PATCHES OR ENTANGLED SHEAVES, WHICH USUALLY DO NOT INCREASE AND SOMETIMES SEEM TO BE THE REMAINS OF THE UPPER PART OF A CUMULONIMBUS; OR CIRRUS CASTELLANUS OR FLOCCUS +13 13 CIRRUS SPISSATUS CUMULONIMBOGENITUS +14 14 CIRRUS UNCINUS OR FIBRATUS, OR BOTH, PROGRESSIVELY INVADING THE SKY; THEY GENERALLY THICKEN AS A WHOLE +15 15 CIRRUS (OFTEN IN BANDS) AND CIRROSTRATUS, OR CIRROSTRATUS ALONE, PROGRESSIVELY INVADING THE SKY; THEY GENERALLY THICKEN AS A WHOLE, BUT THE CONTINUOUS VEIL DOES NOT REACH 45 DEGREES ABOVE THE HORIZON +16 16 CIRRUS (OFTEN IN BANDS) AND CIRROSTRATUS, OR CIRROSTRATUS ALONE, PROGRESSIVELY INVADING THE SKY; THEY GENERALLY THICKEN AS A WHOLE; THE CONTINUOUS VEIL EXTENDS MORE THAN 45 DEGREES ABOVE THE HORIZON, WITHOUT THE SKY BEING TOTALLY COVERED +17 17 CIRROSTRATUS COVERING THE WHOLE SKY +18 18 CIRROSTRATUS NOT PROGRESSIVELY INVADING THE SKY AND NOT ENTIRELY COVERING IT +19 19 CIRROCUMULUS ALONE, OR CIRROCUMULUS PREDOMINANT AMONG THE CH CLOUDS +20 20 NO CM CLOUDS +21 21 ALTOSTRATUS TRANSLUCIDUS +22 22 ALTOSTRATUS OPACUS OR NIMBOSTRATUS +23 23 ALTOCUMULUS TRANSLUCIDUS AT A SINGLE LEVEL +24 24 PATCHES (OFTEN LENTICULAR) OF ALTOCUMULUS TRANSLUCIDUS, CONTINUALLY CHANGING AND OCCURRING AT ONE OR MORE LEVELS +25 25 ALTOCUMULUS TRANSLUCIDUS IN BANDS, OR ONE OR MORE LAYERS OF ALTOCUMULUS TRANSLUCIDUS OR OPACUS, PROGRESSIVELY INVADING THE SKY; THESE ALTOCUMULUS CLOUDS GENERALLY THICKEN AS A WHOLE +26 26 ALTOCUMULUS CUMULOGENITUS (OR CUMULONIMBOGENITUS) +27 27 ALTOCUMULUS TRANSLUCIDUS OR OPACUS IN TWO OR MORE LAYERS, OR ALTOCUMULUS OPACUS IN A SINGLE LAYER, NOT PROGRESSIVELY INVADING THE SKY, OR ALTOCUMULUS WITH ALTOSTRATUS OR NIMBOSTRATUS +28 28 ALTOCUMULUS CASTELLANUS OR FLOCCUS +29 29 ALTOCUMULUS OF A CHAOTIC SKY, GENERALLY AT SEVERAL LEVELS +30 30 NO CL CLOUDS +31 31 CUMULUS HUMILIS OR CUMULUS FRACTUS OTHER THAN OF BAD WEATHER, OR BOTH +32 32 CUMULUS MEDIOCRIS OR CONGESTUS, TOWERING CUMULUS (TCU), WITH OR WITHOUT CUMULUS OF SPECIES FRACTUS OR HUMILIS OR STRATOCUMULUS, ALL HAVING THEIR BASES AT THE SAME LEVEL +33 33 CUMULONIMBUS CALVUS, WITH OR WITHOUT CUMULUS, STRATOCUMULUS OR STRATUS +34 34 STRATOCUMULUS CUMULOGENITUS +35 35 STRATOCUMULUS OTHER THAN STRATOCUMULUS CUMULOGENITUS +36 36 STRATUS NEBULOSUS OR STRATUS FRACTUS OTHER THAN OF BAD WEATHER, OR BOTH +37 37 STRATUS FRACTUS OR CUMULUS FRACTUS OF BAD WEATHER, OR BOTH (PANNUS), USUALLY BELOW ALTOSTRATUS OR NIMBOSTRATUS +38 38 CUMULUS AND STRATOCUMULUS OTHER THAN STRATOCUMULUS CUMULOGENITUS, WITH BASES AT DIFFERENT LEVELS +39 39 CUMULONIMBUS CAPILLATUS (OFTEN WITH AN ANVIL), WITH OR WITHOUT CUMULONIMBUS CALVUS, CUMULUS, STRATOCUMULUS, STRATUS OR PANNUS +40 40 CH +41 41 CM +42 42 CL +43 43 CLEAR +44 44 LIQUID WATER +45 45 SUPERCOOLED LIQUID WATER +46 46 MIXED PHASE +47 47 OPTICALLY THICK ICE +48 48 OPTICALLY THIN ICE +49 49 MULTILAYERED ICE +59 59 CLOUD NOT VISIBLE OWING TO DARKNESS, FOG, DUSTSTORM, SANDSTORM, OR OTHER ANALOGOUS PHENOMENA +60 60 CH CLOUDS INVISIBLE OWING TO DARKNESS, FOG, BLOWING DUST OR SAND, OR OTHER SIMILAR PHENOMENA, OR BECAUSE OF A CONTINUOUS LAYER OF LOWER CLOUDS +61 61 CM CLOUDS INVISIBLE OWING TO DARKNESS, FOG, BLOWING DUST OR SAND, OR OTHER SIMILAR PHENOMENA, OR BECAUSE OF CONTINUOUS LAYER OF LOWER CLOUDS +62 62 CL CLOUDS INVISIBLE OWING TO DARKNESS, FOG, BLOWING DUST OR SAND, OR OTHER SIMILAR PHENOMENA +63 63 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/20017.table b/definitions/bufr/tables/0/wmo/40/codetables/20017.table new file mode 100644 index 000000000..5ec10bd41 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/20017.table @@ -0,0 +1,11 @@ +0 0 ISOLATED CLOUD FRAGMENTS OF CLOUDS +1 1 CONTINUOUS CLOUD +2 2 BROKEN CLOUD - SMALL BREAKS +3 3 BROKEN CLOUD - LARGE BREAKS +4 4 CONTINUOUS CLOUD +5 5 BROKEN CLOUD - SMALL BREAKS +6 6 BROKEN CLOUD - LARGE BREAKS +7 7 CONTINUOUS OR ALMOST CONTINUOUS WAVES WITH TOWERING CLOUDS ABOVE THE TOP OF THE LAYER +8 8 GROUPS OF WAVES WITH TOWERING CLOUDS ABOVE THE TOP OF THE LAYER +9 9 TWO OR MORE LAYERS AT DIFFERENT LEVELS +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/20018.table b/definitions/bufr/tables/0/wmo/40/codetables/20018.table new file mode 100644 index 000000000..c0ffc3693 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/20018.table @@ -0,0 +1,4 @@ +0 0 INCREASING (U) +1 1 DECREASING (D) +2 2 NO DISTINCT CHANGE (N) +3 3 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/2002.table b/definitions/bufr/tables/0/wmo/40/codetables/2002.table new file mode 100644 index 000000000..a701e1e40 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/2002.table @@ -0,0 +1,3 @@ +1 1 CERTIFIED INSTRUMENTS +2 2 ORIGINALLY MEASURED IN KNOTS +3 3 ORIGINALLY MEASURED IN KM H-1 diff --git a/definitions/bufr/tables/0/wmo/40/codetables/20021.table b/definitions/bufr/tables/0/wmo/40/codetables/20021.table new file mode 100644 index 000000000..747a7591e --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/20021.table @@ -0,0 +1,23 @@ +1 1 PRECIPITATION - UNKNOWN TYPE +2 2 LIQUID PRECIPITATION NOT FREEZING +3 3 LIQUID FREEZING PRECIPITATION +4 4 DRIZZLE +5 5 RAIN +6 6 SOLID PRECIPITATION +7 7 SNOW +8 8 SNOW GRAINS +9 9 SNOW PELLETS +10 10 ICE PELLETS +11 11 ICE CRYSTALS +12 12 DIAMOND DUST +13 13 SMALL HAIL +14 14 HAIL +15 15 GLAZE +16 16 RIME +17 17 SOFT RIME +18 18 HARD RIME +19 19 CLEAR ICE +20 20 WET SNOW +21 21 HOAR FROST +22 22 DEW +23 23 WHITE DEW diff --git a/definitions/bufr/tables/0/wmo/40/codetables/20022.table b/definitions/bufr/tables/0/wmo/40/codetables/20022.table new file mode 100644 index 000000000..a551aac0e --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/20022.table @@ -0,0 +1,7 @@ +0 0 NO PRECIPITATION +1 1 CONTINUOUS +2 2 INTERMITTENT +3 3 SHOWER +4 4 NOT REACHING GROUND +5 5 DEPOSITION +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/20023.table b/definitions/bufr/tables/0/wmo/40/codetables/20023.table new file mode 100644 index 000000000..97670dfbb --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/20023.table @@ -0,0 +1,14 @@ +1 1 DUST/SAND WHIRL +2 2 SQUALLS +3 3 SANDSTORM +4 4 DUSTSTORM +5 5 LIGHTNING - CLOUD TO SURFACE +6 6 LIGHTNING - CLOUD TO CLOUD +7 7 LIGHTNING - DISTANT +8 8 THUNDERSTORM +9 9 FUNNEL CLOUD NOT TOUCHING SURFACE +10 10 FUNNEL CLOUD TOUCHING SURFACE +11 11 SPRAY +12 12 WATERSPOUT +13 13 WIND SHEAR +14 14 DUST DEVILS diff --git a/definitions/bufr/tables/0/wmo/40/codetables/20024.table b/definitions/bufr/tables/0/wmo/40/codetables/20024.table new file mode 100644 index 000000000..13aba873e --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/20024.table @@ -0,0 +1,8 @@ +0 0 NO PHENOMENA +1 1 LIGHT +2 2 MODERATE +3 3 HEAVY +4 4 VIOLENT +5 5 SEVERE +6 6 VERY SEVERE +7 7 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/20025.table b/definitions/bufr/tables/0/wmo/40/codetables/20025.table new file mode 100644 index 000000000..4d70e338f --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/20025.table @@ -0,0 +1,13 @@ +1 1 FOG +2 2 ICE FOG +3 3 STEAM FOG +7 7 MIST +8 8 HAZE +9 9 SMOKE +10 10 VOLCANIC ASH +11 11 DUST +12 12 SAND +13 13 SNOW +14 14 CLOUD +15 15 PRECIPITATION +16 16 IMPOSSIBLE TO DETERMINE WHETHER SNOW IS FALLING OR NOT diff --git a/definitions/bufr/tables/0/wmo/40/codetables/20026.table b/definitions/bufr/tables/0/wmo/40/codetables/20026.table new file mode 100644 index 000000000..285209472 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/20026.table @@ -0,0 +1,16 @@ +0 0 NO CHANGE +1 1 SHALLOW +2 2 PATCHES +3 3 PARTIAL +4 4 FREEZING +5 5 LOW DRIFTING +6 6 BLOWING +7 7 INCREASING +8 8 DECREASING +9 9 IN SUSPENSION IN THE AIR +10 10 WALL +11 11 DENSE +12 12 WHITEOUT +13 13 DRIFTING AND BLOWING +14 14 RESERVED +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/20027.table b/definitions/bufr/tables/0/wmo/40/codetables/20027.table new file mode 100644 index 000000000..c337f16a7 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/20027.table @@ -0,0 +1,8 @@ +1 1 AT TIME OF OBSERVATION +2 2 IN PAST HOUR +3 3 IN TIME PERIOD FOR PAST WEATHER W1W2 +4 4 IN TIME PERIOD SPECIFIED +5 5 RESERVED +6 6 BELOW STATION LEVEL +7 7 AT THE STATION +8 8 IN THE VICINITY diff --git a/definitions/bufr/tables/0/wmo/40/codetables/20028.table b/definitions/bufr/tables/0/wmo/40/codetables/20028.table new file mode 100644 index 000000000..6b701a2b6 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/20028.table @@ -0,0 +1,4 @@ +0 0 NO CHANGE (NC) +1 1 FORECAST TO WEAKEN (WKN) +2 2 FORECAST TO INTENSIFY (INTSF) +7 7 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/20029.table b/definitions/bufr/tables/0/wmo/40/codetables/20029.table new file mode 100644 index 000000000..8b46da891 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/20029.table @@ -0,0 +1,4 @@ +0 0 NO RAIN +1 1 RAIN +2 2 RESERVED +3 3 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/2003.table b/definitions/bufr/tables/0/wmo/40/codetables/2003.table new file mode 100644 index 000000000..f364d1811 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/2003.table @@ -0,0 +1,13 @@ +0 0 PRESSURE INSTRUMENT ASSOCIATED WITH WIND MEASURING EQUIPMENT +1 1 OPTICAL THEODOLITE +2 2 RADIO THEODOLITE +3 3 RADAR +4 4 VLF-OMEGA +5 5 LORAN C +6 6 WIND PROFILER +7 7 SATELLITE NAVIGATION +8 8 RADIO-ACOUSTIC SOUNDING SYSTEM (RASS) +9 9 SODAR +10 10 LIDAR +14 14 PRESSURE INSTRUMENT ASSOCIATED WITH WIND MEASURING EQUIPMENT BUT PRESSURE ELEMENT FAILED DURING ASCENT +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/20032.table b/definitions/bufr/tables/0/wmo/40/codetables/20032.table new file mode 100644 index 000000000..fd37c1e76 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/20032.table @@ -0,0 +1,6 @@ +0 0 ICE NOT BUILDING UP +1 1 ICE BUILDING UP SLOWLY +2 2 ICE BUILDING UP RAPIDLY +3 3 ICE MELTING OR BREAKING UP SLOWLY +4 4 ICE MELTING OR BREAKING UP RAPIDLY +7 7 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/20033.table b/definitions/bufr/tables/0/wmo/40/codetables/20033.table new file mode 100644 index 000000000..817873323 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/20033.table @@ -0,0 +1,3 @@ +1 1 ICING FROM OCEAN SPRAY +2 2 ICING FROM FOG +3 3 ICING FROM RAIN diff --git a/definitions/bufr/tables/0/wmo/40/codetables/20034.table b/definitions/bufr/tables/0/wmo/40/codetables/20034.table new file mode 100644 index 000000000..668e91671 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/20034.table @@ -0,0 +1,12 @@ +0 0 NO SEA ICE IN SIGHT +1 1 SHIP IN OPEN LEAD MORE THAN 1.0 NAUTICAL MILE WIDE, OR SHIP IN FAST ICE WITH BOUNDARY BEYOND LIMIT OF VISIBILITY +2 2 SEA ICE PRESENT IN CONCENTRATIONS LESS THAN 3/10 (3/8), OPEN WATER OR VERY OPEN PACK ICE +3 3 4/10 TO 6/10 (3/8 TO LESS THAN 6/8), OPEN PACK ICE +4 4 7/10 TO 8/10 (6/8 TO LESS THAN 7/8), CLOSE PACK ICE +5 5 9/10 OR MORE, BUT NOT 10/10 (7/8 TO LESS THAN 8/8), VERY CLOSE PACK ICE +6 6 STRIPS AND PATCHES OF PACK ICE WITH OPEN WATER BETWEEN +7 7 STRIPS AND PATCHES OF CLOSE OR VERY CLOSE PACK ICE WITH AREAS OF LESSER CONCENTRATION BETWEEN +8 8 FAST ICE WITH OPEN WATER, VERY OPEN OR OPEN PACK ICE TO SEAWARD OF THE ICE BOUNDARY +9 9 FAST ICE WITH CLOSE OR VERY CLOSE PACK ICE TO SEAWARD OF THE BOUNDARY +14 14 UNABLE TO REPORT, BECAUSE OF DARKNESS, LACK OF VISIBILITY, OR BECAUSE SHIP IS MORE THAN 0.5 NAUTICAL MILE AWAY FROM ICE EDGE +31 31 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/20035.table b/definitions/bufr/tables/0/wmo/40/codetables/20035.table new file mode 100644 index 000000000..07a4a0284 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/20035.table @@ -0,0 +1,12 @@ +0 0 NO ICE OF LAND ORIGIN +1 1 1-5 ICEBERGS, NO GROWLERS OR BERGY BITS +2 2 6-10 ICEBERGS, NO GROWLERS OR BERGY BITS +3 3 11-20 ICEBERGS, NO GROWLERS OR BERGY BITS +4 4 UP TO AND INCLUDING 10 GROWLERS AND BERGY BITS - NO ICEBERGS +5 5 MORE THAN 10 GROWLERS AND BERGY BITS - NO ICEBERGS +6 6 1-5 ICEBERGS, WITH GROWLERS AND BERGY BITS +7 7 6-10 ICEBERGS, WITH GROWLERS AND BERGY BITS +8 8 11-20 ICEBERGS, WITH GROWLERS AND BERGY BITS +9 9 MORE THAN 20 ICEBERGS, WITH GROWLERS AND BERGY BITS - A MAJOR HAZARD TO NAVIGATION +14 14 UNABLE TO REPORT, BECAUSE OF DARKNESS, LACK OF VISIBILITY OR BECAUSE ONLY SEA ICE IS VISIBLE +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/20036.table b/definitions/bufr/tables/0/wmo/40/codetables/20036.table new file mode 100644 index 000000000..b4cc874bd --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/20036.table @@ -0,0 +1,12 @@ +0 0 SHIP IN OPEN WATER WITH FLOATING ICE IN SIGHT +1 1 SHIP IN EASILY PENETRABLE ICE; CONDITIONS IMPROVING +2 2 SHIP IN EASILY PENETRABLE ICE; CONDITIONS NOT CHANGING +3 3 SHIP IN EASILY PENETRABLE ICE; CONDITIONS WORSENING +4 4 SHIP IN ICE DIFFICULT TO PENETRATE; CONDITIONS IMPROVING +5 5 SHIP IN ICE DIFFICULT TO PENETRATE; CONDITIONS NOT CHANGING +6 6 SHIP IN ICE DIFFICULT TO PENETRATE AND CONDITIONS WORSENING. ICE FORMING AND FLOES FREEZING TOGETHER +7 7 SHIP IN ICE DIFFICULT TO PENETRATE AND CONDITIONS WORSENING. ICE UNDER SLIGHT PRESSURE +8 8 SHIP IN ICE DIFFICULT TO PENETRATE AND CONDITIONS WORSENING. ICE UNDER MODERATE OR SEVERE PRESSURE +9 9 SHIP IN ICE DIFFICULT TO PENETRATE AND CONDITIONS WORSENING. SHIP BESET +30 30 UNABLE TO REPORT, BECAUSE OF DARKNESS OR LACK OF VISIBILITY +31 31 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/20037.table b/definitions/bufr/tables/0/wmo/40/codetables/20037.table new file mode 100644 index 000000000..474eeaae2 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/20037.table @@ -0,0 +1,12 @@ +0 0 NEW ICE ONLY (FRAZIL ICE, GREASE ICE, SLUSH, SHUGA) +1 1 NILAS OR ICE RIND, LESS THAN 10 CM THICK +2 2 YOUNG ICE (GREY ICE, GREY-WHITE ICE), 10-30 CM THICK +3 3 PREDOMINANTLY NEW AND/OR YOUNG ICE WITH SOME FIRST-YEAR ICE +4 4 PREDOMINANTLY THIN FIRST-YEAR ICE WITH SOME NEW AND/OR YOUNG ICE +5 5 ALL THIN FIRST-YEAR ICE (30-70 CM THICK) +6 6 PREDOMINANTLY MEDIUM FIRST-YEAR ICE (70-120 CM THICK) AND THICK FIRST-YEAR ICE (>120 CM THICK) WITH SOME THINNER (YOUNGER) FIRST-YEAR ICE +7 7 ALL MEDIUM AND THICK FIRST-YEAR ICE +8 8 PREDOMINANTLY MEDIUM AND THICK FIRST-YEAR ICE WITH SOME OLD ICE (USUALLY MORE THAN 2 METRES THICK) +9 9 PREDOMINANTLY OLD ICE +30 30 UNABLE TO REPORT, BECAUSE OF DARKNESS, LACK OF VISIBILITY OR BECAUSE ONLY ICE OF LAND ORIGIN IS VISIBLE OR BECAUSE SHIP IS MORE THAN 0.5 NAUTICAL MILE AWAY FROM ICE EDGE +31 31 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/2004.table b/definitions/bufr/tables/0/wmo/40/codetables/2004.table new file mode 100644 index 000000000..a55de6c58 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/2004.table @@ -0,0 +1,11 @@ +0 0 USA OPEN PAN EVAPORIMETER (WITHOUT COVER) +1 1 USA OPEN PAN EVAPORIMETER (MESH COVERED) +2 2 GGI-3000 EVAPORIMETER (SUNKEN) +3 3 20 M2 TANK +4 4 OTHERS +5 5 RICE +6 6 WHEAT +7 7 MAIZE +8 8 SORGHUM +9 9 OTHER CROPS +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/20040.table b/definitions/bufr/tables/0/wmo/40/codetables/20040.table new file mode 100644 index 000000000..889393bf8 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/20040.table @@ -0,0 +1,9 @@ +0 0 DRIFT SNOW ENDED BEFORE THE HOUR OF OBSERVATION +1 1 INTENSITY DIMINISHING +2 2 NO CHANGE +3 3 INTENSITY INCREASING +4 4 CONTINUES, APART FROM INTERRUPTION LASTING LESS THAN 30 MINUTES +5 5 GENERAL DRIFT SNOW HAS BECOME DRIFT SNOW NEAR THE GROUND +6 6 DRIFT SNOW NEAR THE GROUND HAS BECOME GENERAL DRIFT SNOW +7 7 DRIFT SNOW HAS STARTED AGAIN AFTER AN INTERRUPTION OF MORE THAN 30 MINUTES +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/20041.table b/definitions/bufr/tables/0/wmo/40/codetables/20041.table new file mode 100644 index 000000000..fc571208d --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/20041.table @@ -0,0 +1,14 @@ +0 0 NO ICING +1 1 LIGHT ICING +2 2 LIGHT ICING IN CLOUD +3 3 LIGHT ICING IN PRECIPITATION +4 4 MODERATE ICING +5 5 MODERATE ICING IN CLOUD +6 6 MODERATE ICING IN PRECIPITATION +7 7 SEVERE ICING +8 8 SEVERE ICING IN CLOUD +9 9 SEVERE ICING IN PRECIPITATION +10 10 TRACE OF ICING +11 11 TRACE OF ICING IN CLOUD +12 12 TRACE OF ICING IN PRECIPITATION +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/20042.table b/definitions/bufr/tables/0/wmo/40/codetables/20042.table new file mode 100644 index 000000000..2493af725 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/20042.table @@ -0,0 +1,4 @@ +0 0 NO ICING +1 1 ICING PRESENT +2 2 RESERVED +3 3 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/20045.table b/definitions/bufr/tables/0/wmo/40/codetables/20045.table new file mode 100644 index 000000000..91ae63f48 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/20045.table @@ -0,0 +1,4 @@ +0 0 NO SLD CONDITIONS PRESENT +1 1 SLD CONDITIONS PRESENT +2 2 RESERVED +3 3 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/20048.table b/definitions/bufr/tables/0/wmo/40/codetables/20048.table new file mode 100644 index 000000000..4a5488266 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/20048.table @@ -0,0 +1,5 @@ +0 0 STABILITY +1 1 DIMINUTION +2 2 INTENSIFICATION +3 3 UNKNOWN +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/20050.table b/definitions/bufr/tables/0/wmo/40/codetables/20050.table new file mode 100644 index 000000000..3f8654ed5 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/20050.table @@ -0,0 +1,10 @@ +0 0 RESERVED +1 1 1ST LOW CLOUD +2 2 2ND LOW CLOUD +3 3 3RD LOW CLOUD +4 4 1ST MEDIUM CLOUD +5 5 2ND MEDIUM CLOUD +6 6 3RD MEDIUM CLOUD +7 7 1ST HIGH CLOUD +8 8 2ND HIGH CLOUD +255 255 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/20055.table b/definitions/bufr/tables/0/wmo/40/codetables/20055.table new file mode 100644 index 000000000..ea06427f6 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/20055.table @@ -0,0 +1,12 @@ +0 0 CUMULUS, IF ANY, ARE QUITE SMALL; GENERALLY LESS THAN 2/8 COVERAGE, EXCEPT ON WINDWARD SLOPES OF ELEVATED TERRAIN; AVERAGE WIDTH OF CLOUD IS AT LEAST AS GREAT AS ITS VERTICAL THICKNESS +1 1 CUMULUS OF INTERMEDIATE SIZE WITH CLOUD COVER LESS THAN 5/8; AVERAGE CLOUD WIDTH IS MORE THAN ITS VERTICAL THICKNESS; TOWERS ARE VERTICAL WITH LITTLE OR NO EVIDENCE OF PRECIPITATION, EXCEPT ALONG SLOPES OF ELEVATED TERRAIN; A GENERAL ABSENCE OF MIDDLE AND UPPER CLOUDS +2 2 SWELLING CUMULUS WITH RAPIDLY GROWING TALL TURRETS WHICH DECREASE IN SIZE WITH HEIGHT AND WHOSE TOPS TEND TO SEPARATE FROM THE LONGER CLOUD BODY AND EVAPORATE WITHIN MINUTES OF THE SEPARATION +3 3 SWELLING CUMULUS WITH TOWERS HAVING A PRONOUNCED TILT IN A DOWNWIND DIRECTION; VERTICAL CLOUD THICKNESS IS MORE THAN ONE AND A HALF TIMES THAT OF ITS AVERAGE WIDTH +4 4 SWELLING CUMULUS WITH TOWERS HAVING A PRONOUNCED TILT IN AN UPWIND DIRECTION; VERTICAL CLOUD THICKNESS IS MORE THAN ONE AND A HALF TIMES THAT OF ITS AVERAGE WIDTH +5 5 TALL CUMULUS CONGESTUS WITH VERTICAL THICKNESS MORE THAN TWICE THE AVERAGE WIDTH; NOT ORGANIZED IN CLUSTERS OR LINES; ONE OR MORE LAYERS OF CLOUDS EXTEND OUT FROM THE CLOUD TOWERS, ALTHOUGH NO CONTINUOUS CLOUD LAYERS EXIST +6 6 ISOLATED CUMULONIMBUS OR LARGE CLUSTERS OF CUMULUS TURRETS SEPARATED BY WIDE AREAS IN WHICH CLOUDS ARE ABSENT; CLOUD BASES ARE GENERALLY DARK WITH SHOWERS OBSERVED IN MOST CELLS; SOME SCATTERED MIDDLE AND UPPER CLOUDS MAY BE PRESENT; INDIVIDUAL CUMULUS CELLS ARE ONE TO TWO TIMES HIGHER THAN THEY ARE WIDE +7 7 NUMEROUS CUMULUS EXTENDING THROUGH THE MIDDLE TROPOSPHERE WITH BROKEN TO OVERCAST SHEETS OF MIDDLE CLOUDS AND/OR CIRROSTRATUS; CUMULUS TOWERS DO NOT DECREASE GENERALLY IN SIZE WITH HEIGHT; RAGGED DARK CLOUD BASES WITH SOME SHOWERS PRESENT +8 8 CONTINUOUS DENSE MIDDLE CLOUDS AND/OR CIRROSTRATUS CLOUD SHEETS WITH SOME LARGE ISOLATED CUMULONIMBUS OR CUMULUS CONGESTUS CLOUDS PENETRATING THESE SHEETS; LIGHT RAIN OCCASIONALLY OBSERVED FROM THE ALTOSTRATUS; CUMULONIMBUS BASES RAGGED AND DARK WITH SHOWERS VISIBLE +9 9 CONTINUOUS SHEETS OF MIDDLE CLOUDS AND/OR CIRROSTRATUS WITH CUMULONIMBUS AND CUMULUS CONGESTUS IN ORGANIZED LINES OR CLOUD BANDS; RAIN IS GENERALLY OBSERVED FROM ALTOSTRATUS SHEETS AND HEAVY SHOWERS FROM CUMULONIMBUS; WIND HAS A SQUALLY CHARACTER +10 10 STATE OF SKY UNKNOWN OR NOT DESCRIBED BY ANY OF THE ABOVE +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/20056.table b/definitions/bufr/tables/0/wmo/40/codetables/20056.table new file mode 100644 index 000000000..204b220b8 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/20056.table @@ -0,0 +1,8 @@ +0 0 UNKNOWN +1 1 WATER +2 2 ICE +3 3 MIXED +4 4 CLEAR +5 5 SUPERCOOLED LIQUID WATER +6 6 RESERVED +7 7 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/2006.table b/definitions/bufr/tables/0/wmo/40/codetables/2006.table new file mode 100644 index 000000000..93b791469 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/2006.table @@ -0,0 +1,9 @@ +0 0 RESERVED +1 1 ELASTIC BACKSCATTER LIDAR +2 2 RAMAN BACKSCATTER LIDAR +3 3 RADAR WIND PROFILER +4 4 LIDAR WIND PROFILER +5 5 SODAR WIND PROFILER +6 6 WIND PROFILER +7 7 LIDAR +63 63 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/20062.table b/definitions/bufr/tables/0/wmo/40/codetables/20062.table new file mode 100644 index 000000000..24d96c46f --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/20062.table @@ -0,0 +1,21 @@ +0 0 SURFACE OF GROUND DRY (WITHOUT CRACKS AND NO APPRECIABLE AMOUNT OF DUST OR LOOSE SAND) +1 1 SURFACE OF GROUND MOIST +2 2 SURFACE OF GROUND WET (STANDING WATER IN SMALL OR LARGE POOLS ON SURFACE) +3 3 FLOODED +4 4 SURFACE OF GROUND FROZEN +5 5 GLAZE ON GROUND +6 6 LOOSE DRY DUST OR SAND NOT COVERING GROUND COMPLETELY +7 7 THIN COVER OF LOOSE DRY DUST OR SAND COVERING GROUND COMPLETELY +8 8 MODERATE OR THICK COVER OF LOOSE DRY DUST OR SAND COVERING GROUND COMPLETELY +9 9 EXTREMELY DRY WITH CRACKS +10 10 GROUND PREDOMINANTLY COVERED BY ICE +11 11 COMPACT OR WET SNOW (WITH OR WITHOUT ICE) COVERING LESS THAN ONE HALF OF THE GROUND +12 12 COMPACT OR WET SNOW (WITH OR WITHOUT ICE) COVERING AT LEAST ONE HALF OF THE GROUND BUT GROUND NOT COMPLETELY COVERED +13 13 EVEN LAYER OF COMPACT OR WET SNOW COVERING GROUND COMPLETELY +14 14 UNEVEN LAYER OF COMPACT OR WET SNOW COVERING GROUND COMPLETELY +15 15 LOOSE DRY SNOW COVERING LESS THAN ONE HALF OF THE GROUND +16 16 LOOSE DRY SNOW COVERING AT LEAST ONE HALF OF THE GROUND BUT GROUND NOT COMPLETELY COVERED +17 17 EVEN LAYER OF LOOSE DRY SNOW COVERING GROUND COMPLETELY +18 18 UNEVEN LAYER OF LOOSE DRY SNOW COVERING GROUND COMPLETELY +19 19 SNOW COVERING GROUND COMPLETELY; DEEP DRIFTS +31 31 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/20063.table b/definitions/bufr/tables/0/wmo/40/codetables/20063.table new file mode 100644 index 000000000..d1622860b --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/20063.table @@ -0,0 +1,72 @@ +0 0 RESERVED +1 1 HIGHEST WIND SPEED GUSTS GREATER THAN 11.5 M/S +2 2 HIGHEST MEAN WIND SPEED GREATER THAN 17.5 M/S +7 7 VISIBILITY GREATER THAN 100 000 M +10 10 MIRAGE - NO SPECIFICATION +11 11 MIRAGE - IMAGE OF DISTANT OBJECT RAISED (LOOMING) +12 12 MIRAGE - IMAGE OF DISTANT OBJECT RAISED CLEAR ABOVE THE HORIZON +13 13 MIRAGE - INVERTED IMAGE OF DISTANT OBJECT +14 14 MIRAGE - COMPLEX, MULTIPLE IMAGES OF DISTANT OBJECT (IMAGES NOT INVERTED) +15 15 MIRAGE - COMPLEX, MULTIPLE IMAGES OF DISTANT OBJECT (SOME IMAGES BEING INVERTED) +16 16 MIRAGE - SUN OR MOON SEEN APPRECIABLY DISTORTED +17 17 MIRAGE - SUN VISIBLE, ALTHOUGH ASTRONOMICALLY BELOW THE HORIZON +18 18 MIRAGE - MOON VISIBLE, ALTHOUGH ASTRONOMICALLY BELOW THE HORIZON +19 19 RESERVED +20 20 DAY DARKNESS, BAD, WORST IN DIRECTION SPECIFIED +21 21 DAY DARKNESS, VERY BAD, WORST IN DIRECTION SPECIFIED +22 22 DAY DARKNESS, BLACK, WORST IN DIRECTION SPECIFIED +31 31 SLIGHT COLORATION OF CLOUDS AT SUNRISE ASSOCIATED WITH A TROPICAL DISTURBANCE +32 32 DEEP-RED COLORATION OF CLOUDS AT SUNRISE ASSOCIATED WITH A TROPICAL DISTURBANCE +33 33 SLIGHT COLORATION OF CLOUDS AT SUNSET ASSOCIATED WITH A TROPICAL DISTURBANCE +34 34 DEEP-RED COLORATION OF CLOUDS AT SUNSET ASSOCIATED WITH A TROPICAL DISTURBANCE +35 35 CONVERGENCE OF CH CLOUDS AT A POINT BELOW 45 DEG FORMING OR INCREASING AND ASSOCIATED WITH A TROPICAL DISTURBANCE +36 36 CONVERGENCE OF CH CLOUDS AT A POINT ABOVE 45 DEG FORMING OR INCREASING AND ASSOCIATED WITH A TROPICAL DISTURBANCE +37 37 CONVERGENCE OF CH CLOUDS AT A POINT BELOW 45 DEG DISSOLVING OR DIMINISHING AND ASSOCIATED WITH A TROPICAL DISTURBANCE +38 38 CONVERGENCE OF CH CLOUDS AT A POINT ABOVE 45 DEG DISSOLVING OR DIMINISHING AND ASSOCIATED WITH A TROPICAL DISTURBANCE +39 39 RESERVED +40 40 HOAR FROST ON HORIZONTAL SURFACES +41 41 HOAR FROST ON HORIZONTAL AND VERTICAL SURFACES +42 42 PRECIPITATION CONTAINING SAND OR DESERT DUST +43 43 PRECIPITATION CONTAINING VOLCANIC ASH +50 50 CALM OR LIGHT WIND FOLLOWED BY A SQUALL +51 51 CALM OR LIGHT WIND FOLLOWED BY A SUCCESSION OF SQUALLS +52 52 GUSTY WEATHER FOLLOWED BY A SQUALL +53 53 GUSTY WEATHER FOLLOWED BY A SUCCESSION OF SQUALLS +54 54 SQUALL FOLLOWED BY GUSTY WEATHER +55 55 GENERAL GUSTY WEATHER WITH SQUALL AT INTERVALS +56 56 SQUALL APPROACHING STATION +57 57 LINE SQUALL +58 58 SQUALL WITH DRIFTING OR BLOWING DUST OR SAND +59 59 LINE SQUALL WITH DRIFTING OR BLOWING DUST OR SAND +60 60 TEMPERATURE STEADY +61 61 TEMPERATURE FALLING, WITHOUT GOING BELOW 0 DEG C +62 62 TEMPERATURE RISING, WITHOUT GOING ABOVE 0 DEG C +63 63 TEMPERATURE FALLING TO A VALUE BELOW 0 DEG C +64 64 TEMPERATURE RISING TO A VALUE ABOVE 0 DEG C +65 65 IRREGULAR VARIATION, OSCILLATIONS OF TEMPERATURE PASSING THROUGH 0 DEG C +66 66 IRREGULAR VARIATION, OSCILLATIONS OF TEMPERATURE NOT PASSING THROUGH 0 DEG C +67 67 VARIATION OF TEMPERATURE NOT OBSERVED +68 68 NOT ALLOCATED +69 69 VARIATION OF TEMPERATURE UNKNOWN OWING TO LACK OF THERMOGRAPH +70 70 VISIBILITY HAS NOT VARIED (SUN VISIBLE) TOWARDS DIRECTION SPECIFIED +71 71 VISIBILITY HAS NOT VARIED (SUN INVISIBLE) TOWARDS DIRECTION SPECIFIED +72 72 VISIBILITY HAS INCREASED (SUN VISIBLE) TOWARDS DIRECTION SPECIFIED +73 73 VISIBILITY HAS INCREASED (SUN INVISIBLE) TOWARDS DIRECTION SPECIFIED +74 74 VISIBILITY HAS DECREASED (SUN VISIBLE) TOWARDS DIRECTION SPECIFIED +75 75 VISIBILITY HAS DECREASED (SUN INVISIBLE) TOWARDS DIRECTION SPECIFIED +76 76 FOG COMING FROM DIRECTION SPECIFIED +77 77 FOG HAS LIFTED, WITHOUT DISSIPATING +78 78 FOG HAS DISPERSED WITHOUT REGARD TO DIRECTION +79 79 MOVING PATCHES OR BANKS OF FOG +80 80 BROCKEN SPECTRE +81 81 RAINBOW +82 82 SOLAR OR LUNAR HALO +83 83 PARHELIA OR ANTHELIA +84 84 SUN PILLAR +85 85 CORONA +86 86 TWILIGHT GLOW +87 87 TWILIGHT GLOW ON THE MOUNTAINS (ALPENGLUEHEN) +88 88 MIRAGE +89 89 ZODIACAL LIGHT +90 90 ST ELMO'S FIRE +1023 1023 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/2007.table b/definitions/bufr/tables/0/wmo/40/codetables/2007.table new file mode 100644 index 000000000..05b4c6bd1 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/2007.table @@ -0,0 +1,11 @@ +0 0 RESERVED +1 1 SHAFT ENCODER FLOAT SYSTEM +2 2 ULTRASONIC +3 3 RADAR +4 4 PRESSURE (SINGLE TRANSDUCER) +5 5 PRESSURE (MULTIPLE TRANSDUCER) +6 6 PRESSURE (IN STILLING WELL) +7 7 BUBBLER PRESSURE +8 8 ACOUSTIC (WITH SOUNDING TUBE) +9 9 ACOUSTIC (IN OPEN AIR) +63 63 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/20071.table b/definitions/bufr/tables/0/wmo/40/codetables/20071.table new file mode 100644 index 000000000..72367bf8b --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/20071.table @@ -0,0 +1,11 @@ +0 0 NO ASSESSMENT +1 1 LESS THAN 50 KM +2 2 BETWEEN 50 AND 200 KM +3 3 MORE THAN 200 KM +4 4 LESS THAN 50 KM +5 5 BETWEEN 50 AND 200 KM +6 6 MORE THAN 200 KM +7 7 LESS THAN 50 KM +8 8 BETWEEN 50 AND 200 KM +9 9 MORE THAN 200 KM +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/2008.table b/definitions/bufr/tables/0/wmo/40/codetables/2008.table new file mode 100644 index 000000000..e669727ec --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/2008.table @@ -0,0 +1,7 @@ +0 0 FIXED PLATFORM +1 1 MOBILE OFFSHORE DRILL SHIP +2 2 JACK-UP RIG +3 3 SEMI-SUBMERSIBLE PLATFORM +4 4 FLOATING PRODUCTION STORAGE AND OFFLOADING (FPSO) UNIT +5 5 LIGHT VESSEL +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/20085.table b/definitions/bufr/tables/0/wmo/40/codetables/20085.table new file mode 100644 index 000000000..f929e878d --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/20085.table @@ -0,0 +1,3 @@ +0 0 CLEARED (CLRD//) +1 1 ALL RUNWAYS CLOSED (SNOCLO) +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/20086.table b/definitions/bufr/tables/0/wmo/40/codetables/20086.table new file mode 100644 index 000000000..b5433303a --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/20086.table @@ -0,0 +1,11 @@ +0 0 CLEAR AND DRY +1 1 DAMP +2 2 WET WITH WATER PATCHES +3 3 RIME AND FROST COVERED (DEPTH NORMALLY LESS THAN 1 MM) +4 4 DRY SNOW +5 5 WET SNOW +6 6 SLUSH +7 7 ICE +8 8 COMPACTED OR ROLLED SNOW +9 9 FROZEN RUTS OR RIDGES +15 15 MISSING OR NOT REPORTED (E.G. DUE TO RUNWAY CLEARANCE IN PROGRESS) diff --git a/definitions/bufr/tables/0/wmo/40/codetables/20087.table b/definitions/bufr/tables/0/wmo/40/codetables/20087.table new file mode 100644 index 000000000..ee7971ab6 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/20087.table @@ -0,0 +1,6 @@ +0 0 RESERVED +1 1 LESS THAN 10% OF RUNWAY COVERED +2 2 11% TO 25% OF RUNWAY COVERED +5 5 26% TO 50% OF RUNWAY COVERED +9 9 51% TO 100% OF RUNWAY COVERED +15 15 MISSING OR NOT REPORTED (E.G. DUE TO RUNWAY CLEARANCE IN PROGRESS) diff --git a/definitions/bufr/tables/0/wmo/40/codetables/20089.table b/definitions/bufr/tables/0/wmo/40/codetables/20089.table new file mode 100644 index 000000000..f616c622c --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/20089.table @@ -0,0 +1,11 @@ +0 0 0.00 +1 1 0.01 +89 89 0.89 +90 90 0.90 +91 91 BRAKING ACTION POOR +92 92 BRAKING ACTION MEDIUM TO POOR +93 93 BRAKING ACTION MEDIUM +94 94 BRAKING ACTION MEDIUM TO GOOD +95 95 BRAKING ACTION GOOD +99 99 UNRELIABLE +127 127 MISSING, NOT REPORTED AND/OR RUNWAY NOT OPERATIONAL diff --git a/definitions/bufr/tables/0/wmo/40/codetables/20090.table b/definitions/bufr/tables/0/wmo/40/codetables/20090.table new file mode 100644 index 000000000..d13502ec4 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/20090.table @@ -0,0 +1,7 @@ +0 0 RESERVED +1 1 NACREOUS CLOUDS +2 2 NOCTILUCENT CLOUDS +3 3 CLOUDS FROM WATERFALLS +4 4 CLOUDS FROM FIRES +5 5 CLOUDS FROM VOLCANIC ERUPTIONS +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/20101.table b/definitions/bufr/tables/0/wmo/40/codetables/20101.table new file mode 100644 index 000000000..abe89f5fe --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/20101.table @@ -0,0 +1,11 @@ +0 0 RESERVED +1 1 SCHISTOCERCA GREGARIA +2 2 LOCUSTA MIGRATORIA +3 3 NOMADACRIS SEPTEMFASCIATA +4 4 OEDALEUS SENEGALENSIS +5 5 ANRACRIDIUM SPP +6 6 OTHER LOCUSTS +7 7 OTHER GRASSHOPPERS +8 8 OTHER CRICKETS +9 9 SPODOPTERA EXEMPTA +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/20102.table b/definitions/bufr/tables/0/wmo/40/codetables/20102.table new file mode 100644 index 000000000..6a53039e9 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/20102.table @@ -0,0 +1,11 @@ +0 0 GREEN +1 1 GREEN OR BLACK +2 2 BLACK +3 3 YELLOW AND BLACK +4 4 STRAW/GREY +5 5 PINK +6 6 DARK RED/BROWN +7 7 MIXED RED AND YELLOW +8 8 YELLOW +9 9 OTHER +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/20103.table b/definitions/bufr/tables/0/wmo/40/codetables/20103.table new file mode 100644 index 000000000..9c4f68920 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/20103.table @@ -0,0 +1,11 @@ +0 0 HOPPERS (NYMPHS, LARVAE), STAGE 1 +1 1 HOPPERS (NYMPHS, LARVAE), STAGE 2 OR MIXED 1, 2 INSTARS (STAGES) +2 2 HOPPERS (NYMPHS, LARVAE), STAGE 3 OR MIXED 2, 3 INSTARS +3 3 HOPPERS (NYMPHS, LARVAE), STAGE 4 OR MIXED 3, 4 INSTARS +4 4 HOPPERS (NYMPHS, LARVAE), STAGE 5 OR MIXED 4, 5 INSTARS +5 5 HOPPERS (NYMPHS, LARVAE), STAGE MIXED, ALL OR MANY INSTARS +6 6 FLEDGLINGS (WINGS TOO SOFT FOR SUSTAINED FLIGHT) +7 7 IMMATURE ADULTS +8 8 MIXED MATURITY ADULTS +9 9 MATURE ADULTS +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/20104.table b/definitions/bufr/tables/0/wmo/40/codetables/20104.table new file mode 100644 index 000000000..15ca8acd4 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/20104.table @@ -0,0 +1,11 @@ +0 0 HOPPERS ONLY, MAINLY IN BANDS OR CLUSTERS +1 1 WINGED ADULTS IN THE VICINITY MORE THAN 10 KILOMETRES FROM POINT OF OBSERVATION +2 2 LOCUSTS IN FLIGHT, A FEW SEEN AT THE STATION +3 3 LOCUSTS AT THE STATION, MOST OF THEM ON THE GROUND +4 4 LOCUSTS, SOME ON GROUND AND OTHERS IN FLIGHT AT A HEIGHT LESS THAN 10 METRES +5 5 LOCUSTS, SOME ON GROUND AND OTHERS IN FLIGHT AT A HEIGHT GREATER THAN 10 METRES +6 6 LOCUSTS, MOST IN FLIGHT AT A HEIGHT LESS THAN 10 METRES +7 7 LOCUSTS, MOST IN FLIGHT AT A HEIGHT GREATER THAN 10 METRES +8 8 LOCUSTS, ALL OVER INFLICTING SEVERE DAMAGE TO VEGETATION, NO EXTERMINATION OPERATION +9 9 LOCUSTS, ALL OVER INFLICTING SEVERE DAMAGE TO VEGETATION, EXTERMINATION OPERATION IN PROGRESS +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/20105.table b/definitions/bufr/tables/0/wmo/40/codetables/20105.table new file mode 100644 index 000000000..b7406c09c --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/20105.table @@ -0,0 +1,12 @@ +0 0 SMALL SWARM LESS THAN 1 KM2 OR ADULTS IN GROUND, TENS OR HUNDREDS OF INDIVIDUALS VISIBLE SIMULTANEOUSLY, DURATION OF PASSAGE LESS THAN 1 HOUR AGO +1 1 SMALL SWARM LESS THAN 1 KM2 OR ADULTS IN GROUND, TENS OR HUNDREDS OF INDIVIDUALS VISIBLE SIMULTANEOUSLY, DURATION OF PASSAGE 1 TO 6 HOURS AGO +2 2 SMALL SWARM LESS THAN 1 KM2 OR ADULTS IN GROUND, TENS OR HUNDREDS OF INDIVIDUALS VISIBLE SIMULTANEOUSLY, DURATION OF PASSAGE OVER 6 HOURS AGO +3 3 MEDIUM SWARM OR SCATTERED ADULTS, SEVERAL VISIBLE SIMULTANEOUSLY, DURATION OF PASSAGE LESS THAN 1 HOUR AGO +4 4 MEDIUM SWARM OR SCATTERED ADULTS, SEVERAL VISIBLE SIMULTANEOUSLY, DURATION OF PASSAGE 1 TO 6 HOURS AGO +5 5 MEDIUM SWARM OR SCATTERED ADULTS, SEVERAL VISIBLE SIMULTANEOUSLY, DURATION OF PASSAGE OVER 6 HOURS AGO +6 6 LARGE SWARM OR ISOLATED ADULTS, SEEN SINGLY, DURATION OF PASSAGE LESS THAN 1 HOUR AGO +7 7 LARGE SWARM OR ISOLATED ADULTS, SEEN SINGLY, DURATION OF PASSAGE 1 TO 6 HOURS AGO +8 8 LARGE SWARM OR ISOLATED ADULTS, SEEN SINGLY, DURATION OF PASSAGE OVER 6 HOURS AGO +9 9 MORE THAN ONE SWARM OF LOCUSTS +10 10 SIZE OF SWARM AND/OR DURATION OF PASSAGE NOT DETERMINED OWING TO DARKNESS OR SIMILAR PHENOMENA +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/20106.table b/definitions/bufr/tables/0/wmo/40/codetables/20106.table new file mode 100644 index 000000000..2a8c4a098 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/20106.table @@ -0,0 +1,7 @@ +0 0 RESERVED +1 1 THIN DENSITY SWARM (SWARM VISIBLE ONLY WHEN NEAR ENOUGH FOR INDIVIDUAL LOCUSTS TO BE DISCERNED) +2 2 MEDIUM DENSITY SWARM +3 3 DENSE SWARM (OBSCURING NEARBY FEATURES, E.G. TREES) +4 4 ISOLATED HOPPERS SEEN SINGLY +5 5 SCATTERED HOPPERS, SEVERAL VISIBLE SIMULTANEOUSLY +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/20107.table b/definitions/bufr/tables/0/wmo/40/codetables/20107.table new file mode 100644 index 000000000..0bea30ad5 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/20107.table @@ -0,0 +1,11 @@ +0 0 RESERVED +1 1 GENERALLY IN THE DIRECTION NE +2 2 GENERALLY IN THE DIRECTION E +3 3 GENERALLY IN THE DIRECTION SE +4 4 GENERALLY IN THE DIRECTION S +5 5 GENERALLY IN THE DIRECTION SW +6 6 GENERALLY IN THE DIRECTION W +7 7 GENERALLY IN THE DIRECTION NW +8 8 GENERALLY IN THE DIRECTION N +9 9 SPECIFIC DIRECTION INDETERMINABLE +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/20108.table b/definitions/bufr/tables/0/wmo/40/codetables/20108.table new file mode 100644 index 000000000..4404614cb --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/20108.table @@ -0,0 +1,9 @@ +0 0 BARE GROUND +1 1 DRY, PRESENCE OF FEW AND ISOLATED SHRUBS +2 2 SPARSE VEGETATION (SPROUTING) +3 3 DENSE VEGETATION (SPROUTING) +4 4 SPARSE VEGETATION (GROWING) +5 5 DENSE VEGETATION (GROWING) +6 6 SPARSE VEGETATION IN FLOWER +7 7 DENSE VEGETATION IN FLOWER +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/2011.table b/definitions/bufr/tables/0/wmo/40/codetables/2011.table new file mode 100644 index 000000000..477120bbb --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/2011.table @@ -0,0 +1,100 @@ +0 0 RESERVED +1 1 NOT VACANT +2 2 NO RADIOSONDE - PASSIVE TARGET (E.G. REFLECTOR) +3 3 NO RADIOSONDE - ACTIVE TARGET (E.G. TRANSPONDER) +4 4 NO RADIOSONDE - PASSIVE TEMPERATURE-HUMIDITY PROFILER +5 5 NO RADIOSONDE - ACTIVE TEMPERATURE-HUMIDITY PROFILER +6 6 NO RADIOSONDE - RADIO-ACOUSTIC SOUNDER +7 7 NOT VACANT +8 8 NO RADIOSONDE -... (RESERVED) +9 9 NO RADIOSONDE - SYSTEM UNKNOWN OR NOT SPECIFIED +10 10 SIPPICAN LMS5 W/CHIP THERMISTOR, DUCT MOUNTED CAPACITANCE RELATIVE HUMIDITY SENSOR AND DERIVED PRESSURE FROM GPS HEIGHT +11 11 SIPPICAN LMS6 W/CHIP THERMISTOR, EXTERNAL BOOM MOUNTED CAPACITANCE RELATIVE HUMIDITY SENSOR, AND DERIVED PRESSURE FROM GPS HEIGHT +12 12 JIN YANG RSG-20A WITH DERIVED PRESSURE FROM GPS HEIGHT/GL-5000P (REPUBLIC OF KOREA) +13 13 VAISALA RS92/MARWIN MW32 (FINLAND) +14 14 VAISALA RS92/DIGICORA MW41 (FINLAND) +15 15 PAZA-12M/RADIOTHEODOLITE-UL (UKRAINE) +16 16 PAZA-22/AVK-1 (UKRAINE) +17 17 GRAW DFM-09 (GERMANY) +18 18 NOT VACANT +19 19 POLUS-MRZ-N1 (RUSSIAN FEDERATION) +20 20 NOT VACANT +21 21 JIN YANG 1524LA LORAN-C/GL5000 (REPUBLIC OF KOREA) +22 22 MEISEI RS-11G GPS RADIOSONDE W/THERMISTOR, CAPACITANCE RELATIVE HUMIDITY SENSOR, AND DERIVED PRESSURE FROM GPS HEIGHT (JAPAN) +23 23 VAISALA RS41/DIGICORA MW41 (FINLAND) +24 24 VAISALA RS41/AUTOSONDE (FINLAND) +25 25 VAISALA RS41/MARWIN MW32 (FINLAND) +26 26 METEOLABOR SRS-C34/ARGUS 37 (SWITZERLAND) +27 27 NOT VACANT +28 28 AVK - AK2-02 (RUSSIAN FEDERATION) +29 29 MARL-A OR VEKTOR-M - AK2-02 (RUSSIAN FEDERATION) +30 30 MEISEI RS-06G (JAPAN) +31 31 TAIYUAN GTS1-1/GFE(L) (CHINA ) +32 32 SHANGHAI GTS1/GFE(L) (CHINA) +33 33 NANJING GTS1-2/GFE(L) (CHINA) +34 34 IMET-4 GPS RADIOSONDE (USA) +35 35 MEISEI IMS-100 GPS RADIOSONDE W/THERMISTOR SENSOR, CAPACITANCE RELATIVE HUMIDITY SENSOR, AND DERIVED PRESSURE FROM GPS HEIGHT (JAPAN) +36 36 MEISEI IMDS-17 GPS DROPSONDE W/THERMISTOR SENSOR, CAPACITANCE RELATIVE HUMIDITY SENSOR, AND CAPACITANCE PRESSURE SENSOR (JAPAN) +37 37 NOT VACANT +38 38 WEATHEX WXR-301D WITH DERIVED PRESSURE FROM GPS (REPUBLIC OF KOREA) +39 39 SPRENGER E076 (GERMANY) +40 40 SPRENGER E084 (GERMANY) +41 41 VAISALA RS41 WITH PRESSURE DERIVED FROM GPS HEIGHT/DIGICORA MW41 (FINLAND) +42 42 VAISALA RS41 WITH PRESSURE DERIVED FROM GPS HEIGHT/AUTOSONDE (FINLAND) +43 43 NANJING DAQIAO XGP-3G (CHINA)* +44 44 TIANJIN HUAYUNTIANYI GTS(U)1 (CHINA)* +45 45 BEIJING CHANGFENG CF-06 (CHINA)* +46 46 SHANGHAI CHANGWANG GTS3 (CHINA)* +47 47 NOT VACANT +48 48 PAZA-22M/MARL-A +49 49 NOT VACANT +50 50 METEOLABOR SRS-C50/ARGUS (SWITZERLAND) +51 51 NOT VACANT +52 52 VAISALA RS92-NGP/INTERMET IMS-2000 (UNITED STATES) +53 53 AVK - I-2012 (RUSSIAN FEDERATION) +54 54 GRAW DFM-17 (GERMANY) +55 55 MEISEI RS-01G (JAPAN) +56 56 M2K2 (FRANCE) +57 57 MODEM M2K2-DC (FRANCE) +58 58 AVK-BAR (RUSSIAN FEDERATION) +59 59 MODEM M2K2-R 1680 MHZ RDF RADIOSONDE WITH PRESSURE SENSOR CHIP (FRANCE) +60 60 MARL-A OR VEKTOR-M - I-2012 (RUSSIAN FEDERATION) +61 61 NOT VACANT +62 62 MARL-A OR VEKTOR-M - MRZ-3MK (RUSSIAN FEDERATION) +63 63 MODEM M20 RADIOSONDE W/THERMISTOR SENSOR, CAPACITANCE RELATIVE HUMIDITY SENSOR, AND DERIVED PRESSURE FROM GPS HEIGHT (FRANCE) +64 64 MODEM PILOTSONDE GPS RADIOSONDE (FRANCE) +65 65 METEOSIS MTS-01 (REPUBLIC OF TURKIYE) +66 66 VACANT +67 67 VAISALA RS80/DIGICORA III (FINLAND) +68 68 AVK-RZM-2 (RUSSIAN FEDERATION) +69 69 MARL-A OR VEKTOR-M-RZM-2 (RUSSIAN FEDERATION) +70 70 VAISALA RS92/STAR (FINLAND) +71 71 VAISALA RS90/LORAN/DIGICORA I, II OR MARWIN (FINLAND) +72 72 VAISALA RS90/PC-CORA (FINLAND) +73 73 МАRL-A (RUSSIAN FEDERATION) - ASPAN-15 (KAZAKHSTAN) +74 74 VAISALA RS90/STAR (FINLAND) +75 75 AVK-MRZ-ARMA (RUSSIAN FEDERATION) +76 76 AVK-RF95-ARMA (RUSSIAN FEDERATION) +77 77 MODEM GPSONDE M10 (FRANCE) +78 78 VAISALA RS90/DIGICORA III (FINLAND) +79 79 VAISALA RS92/DIGICORA I,II OR MARWIN (FINLAND) +80 80 VAISALA RS92/DIGICORA III (FINLAND) +81 81 VAISALA RS92/AUTOSONDE (FINLAND) +82 82 LOCKHEED MARTIN LMS-6 W/CHIP THERMISTOR; EXTERNAL BOOM MOUNTED POLYMER CAPACITIVE RELATIVE HUMIDITY SENSOR; CAPACITIVE PRESSURE SENSOR AND GPS WIND +83 83 VAISALA RS92-D/INTERMET IMS 1500 W/SILICON CAPACITIVE PRESSURE SENSOR, CAPACITIVE WIRE TEMPERATURE SENSOR, TWIN THIN-FILM HEATED POLYMER CAPACITIVE RELATIVE HUMIDITY SENSOR AND RDF WIND +84 84 IMET-54/IMET-3200/3400 GPS RADIOSONDE WITH DERIVED PRESSURE FROM GPS HEIGHT (SOUTH AFRICA) +85 85 SIPPICAN MARK IIA WITH CHIP THERMISTOR, CARBON ELEMENT AND DERIVED PRESSURE FROM GPS HEIGHT +86 86 SIPPICAN MARK II WITH CHIP THERMISTOR, PRESSURE AND CARBON ELEMENT +87 87 SIPPICAN MARK IIA WITH CHIP THERMISTOR, PRESSURE AND CARBON ELEMENT +88 88 MARL-A OR VEKTOR-M-MRZ (RUSSIAN FEDERATION) +89 89 MARL-A OR VEKTOR-M-BAR (RUSSIAN FEDERATION) +90 90 RADIOSONDE NOT SPECIFIED OR UNKNOWN +91 91 PRESSURE ONLY RADIOSONDE +92 92 PRESSURE ONLY RADIOSONDE PLUS TRANSPONDER +93 93 PRESSURE ONLY RADIOSONDE PLUS RADAR REFLECTOR +94 94 NO PRESSURE RADIOSONDE PLUS TRANSPONDER +95 95 NO PRESSURE RADIOSONDE PLUS RADAR REFLECTOR +96 96 DESCENDING RADIOSONDE +97 97 IMET-2/IMET-1500 RDF RADIOSONDE WITH PRESSURE SENSOR CHIP (SOUTH AFRICA) +98 98 IMET-2/IMET-1500 GPS RADIOSONDE WITH DERIVED PRESSURE FROM GPS HEIGHT (SOUTH AFRICA) +99 99 IMET-2/IMET-3200 GPS RADIOSONDE WITH DERIVED PRESSURE FROM GPS HEIGHT (SOUTH AFRICA) diff --git a/definitions/bufr/tables/0/wmo/40/codetables/20119.table b/definitions/bufr/tables/0/wmo/40/codetables/20119.table new file mode 100644 index 000000000..4a4b40f87 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/20119.table @@ -0,0 +1,4 @@ +0 0 NOT DEFINED +1 1 POSITIVE +2 2 NEGATIVE +3 3 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/20124.table b/definitions/bufr/tables/0/wmo/40/codetables/20124.table new file mode 100644 index 000000000..f78eacb17 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/20124.table @@ -0,0 +1,4 @@ +0 0 NOT DEFINED +1 1 LIGHTNING STROKE +2 2 LIGHTNING FLASH, BY MANUAL OBSERVATION, OR IF EQUIPMENT INSENSITIVE TO STROKE RESOLUTION +3 3 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/2013.table b/definitions/bufr/tables/0/wmo/40/codetables/2013.table new file mode 100644 index 000000000..91ce6501d --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/2013.table @@ -0,0 +1,11 @@ +0 0 NO CORRECTION +1 1 CIMO SOLAR CORRECTED AND CIMO INFRARED CORRECTED +2 2 CIMO SOLAR CORRECTED AND INFRARED CORRECTED +3 3 CIMO SOLAR CORRECTED ONLY +4 4 SOLAR AND INFRARED CORRECTED AUTOMATICALLY BY RADIOSONDE SYSTEM +5 5 SOLAR CORRECTED AUTOMATICALLY BY RADIOSONDE SYSTEM +6 6 SOLAR AND INFRARED CORRECTED AS SPECIFIED BY COUNTRY +7 7 SOLAR CORRECTED AS SPECIFIED BY COUNTRY +8 8 SOLAR AND INFRARED CORRECTED AS SPECIFIED BY GRUAN +9 9 SOLAR CORRECTED AS SPECIFIED BY GRUAN +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/20136.table b/definitions/bufr/tables/0/wmo/40/codetables/20136.table new file mode 100644 index 000000000..42c012b50 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/20136.table @@ -0,0 +1,44 @@ +0 0 ISOLATED CUMULUS HUMILIS AND/OR CUMULUS MEDIOCRIS OF VERTICAL DEVELOPMENT +1 1 NUMEROUS CUMULUS HUMILIS AND/OR CUMULUS MEDIOCRIS OF VERTICAL DEVELOPMENT +2 2 ISOLATED CUMULUS CONGESTUS OF VERTICAL DEVELOPMENT +3 3 NUMEROUS CUMULUS CONGESTUS OF VERTICAL DEVELOPMENT +4 4 ISOLATED CUMULONIMBUS OF VERTICAL DEVELOPMENT +5 5 NUMEROUS CUMULONIMBUS OF VERTICAL DEVELOPMENT +6 6 ISOLATED CUMULUS AND CUMULONIMBUS OF VERTICAL DEVELOPMENT +7 7 NUMEROUS CUMULUS AND CUMULONIMBUS OF VERTICAL DEVELOPMENT +10 10 RESERVED +11 11 ISOLATED OROGRAPHIC CLOUDS, PILEUS, INCUS, FORMING +12 12 ISOLATED OROGRAPHIC CLOUDS, PILEUS, INCUS, NOT CHANGING +13 13 ISOLATED OROGRAPHIC CLOUDS, PILEUS, INCUS, DISSOLVING +14 14 IRREGULAR BANKS OF OROGRAPHIC CLOUD, FOEHN BANK, ETC., FORMING +15 15 IRREGULAR BANKS OF OROGRAPHIC CLOUD, FOEHN BANK, ETC., NOT CHANGING +16 16 IRREGULAR BANKS OF OROGRAPHIC CLOUD, FOEHN BANK, ETC., DISSOLVING +17 17 COMPACT LAYER OF OROGRAPHIC CLOUD, FOEHN BANK, ETC., FORMING +18 18 COMPACT LAYER OF OROGRAPHIC CLOUD, FOEHN BANK, ETC., NOT CHANGING +19 19 COMPACT LAYER OF OROGRAPHIC CLOUD, FOEHN BANK, ETC., DISSOLVING +20 20 ALL MOUNTAINS OPEN, ONLY SMALL AMOUNTS OF CLOUD PRESENT +21 21 MOUNTAINS PARTLY COVERED WITH DETACHED CLOUDS (NOT MORE THAN HALF THE PEAKS CAN BE SEEN) +22 22 ALL MOUNTAIN SLOPES COVERED, PEAKS AND PASSES FREE +23 23 MOUNTAINS OPEN ON OBSERVER’S SIDE (ONLY SMALL AMOUNTS OF CLOUD PRESENT), BUT A CONTINUOUS WALL OF CLOUD ON THE OTHER SIDE +24 24 CLOUDS LOW ABOVE THE MOUNTAINS, BUT ALL SLOPES AND MOUNTAINS OPEN (ONLY SMALL AMOUNTS OF CLOUD ON THE SLOPES) +25 25 CLOUDS LOW ABOVE THE MOUNTAINS, PEAKS PARTLY COVERED BY PRECIPITATION TRAILS OR CLOUDS +26 26 ALL PEAKS COVERED BUT PASSES OPEN, SLOPES EITHER OPEN OR COVERED +27 27 MOUNTAINS GENERALLY COVERED BUT SOME PEAKS FREE, SLOPES WHOLLY OR PARTIALLY COVERED +28 28 ALL PEAKS, PASSES AND SLOPES COVERED +29 29 MOUNTAINS CANNOT BE SEEN OWING TO DARKNESS, FOG, SNOWSTORM, PRECIPITATION, ETC. +35 35 NON-PERSISTENT CONDENSATION TRAILS +36 36 PERSISTENT CONDENSATION TRAILS COVERING LESS THAN 1/8 OF THE SKY +37 37 PERSISTENT CONDENSATION TRAILS COVERING 1/8 OF THE SKY +38 38 PERSISTENT CONDENSATION TRAILS COVERING 2/8 OF THE SKY +39 39 PERSISTENT CONDENSATION TRAILS COVERING 3/8 OR MORE OF THE SKY +40 40 NO CLOUD OR MIST OBSERVED FROM A HIGHER LEVEL +41 41 MIST, CLEAR ABOVE OBSERVED FROM A HIGHER LEVEL +42 42 FOG PATCHES OBSERVED FROM A HIGHER LEVEL +43 43 LAYER OF SLIGHT FOG OBSERVED FROM A HIGHER LEVEL +44 44 LAYER OF THICK FOG OBSERVED FROM A HIGHER LEVEL +45 45 SOME ISOLATED CLOUDS OBSERVED FROM A HIGHER LEVEL +46 46 ISOLATED CLOUDS AND FOG BELOW OBSERVED FROM A HIGHER LEVEL +47 47 MANY ISOLATED CLOUDS OBSERVED FROM A HIGHER LEVEL +48 48 SEA OF CLOUDS OBSERVED FROM A HIGHER LEVEL +49 49 BAD VISIBILITY OBSCURING THE DOWNWARD VIEW OBSERVED FROM A HIGHER LEVEL +511 511 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/20137.table b/definitions/bufr/tables/0/wmo/40/codetables/20137.table new file mode 100644 index 000000000..adda88054 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/20137.table @@ -0,0 +1,11 @@ +0 0 NO CHANGE +1 1 CUMULIFICATION +2 2 SLOW ELEVATION +3 3 RAPID ELEVATION +4 4 ELEVATION AND STRATIFICATION +5 5 SLOW LOWERING +6 6 RAPID LOWERING +7 7 STRATIFICATION +8 8 STRATIFICATION AND LOWERING +9 9 RAPID CHANGE +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/20138.table b/definitions/bufr/tables/0/wmo/40/codetables/20138.table new file mode 100644 index 000000000..ed9b315fc --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/20138.table @@ -0,0 +1,9 @@ +0 0 DRY +1 1 MOIST +2 2 WET +3 3 RIME +4 4 SNOW +5 5 ICE +6 6 GLAZE +7 7 NOT DRY +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/2014.table b/definitions/bufr/tables/0/wmo/40/codetables/2014.table new file mode 100644 index 000000000..bc5c5fcb8 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/2014.table @@ -0,0 +1,51 @@ +0 0 NO WIND FINDING +1 1 AUTOMATIC WITH AUXILIARY OPTICAL DIRECTION FINDING +2 2 AUTOMATIC WITH AUXILIARY RADIO DIRECTION FINDING +3 3 AUTOMATIC WITH AUXILIARY RANGING +4 4 NOT USED +5 5 AUTOMATIC WITH MULTIPLE VLF-OMEGA SIGNALS +6 6 AUTOMATIC CROSS CHAIN LORAN-C +7 7 AUTOMATIC WITH AUXILIARY WIND PROFILER +8 8 AUTOMATIC SATELLITE NAVIGATION +19 19 TRACKING TECHNIQUE NOT SPECIFIED +20 20 VESSEL STOPPED +21 21 VESSEL DIVERTED FROM ORIGINAL DESTINATION +22 22 VESSEL'S ARRIVAL DELAYED +23 23 CONTAINER DAMAGED +24 24 POWER FAILURE TO CONTAINER +29 29 OTHER PROBLEMS +30 30 MAJOR POWER PROBLEMS +31 31 UPS INOPERATIVE +32 32 RECEIVER HARDWARE PROBLEMS +33 33 RECEIVER SOFTWARE PROBLEMS +34 34 PROCESSOR HARDWARE PROBLEMS +35 35 PROCESSOR SOFTWARE PROBLEMS +36 36 NAVAID SYSTEM DAMAGED +37 37 SHORTAGE OF LIFTING GAS +38 38 RESERVED +39 39 OTHER PROBLEMS +40 40 MECHANICAL DEFECT +41 41 MATERIAL DEFECT (HAND LAUNCHER) +42 42 POWER FAILURE +43 43 CONTROL FAILURE +44 44 PNEUMATIC/HYDRAULIC FAILURE +45 45 OTHER PROBLEMS +46 46 COMPRESSOR PROBLEMS +47 47 BALLOON PROBLEMS +48 48 BALLOON RELEASE PROBLEMS +49 49 LAUNCHER DAMAGED +50 50 R/S RECEIVER ANTENNA DEFECT +51 51 NAVAID ANTENNA DEFECT +52 52 R/S RECEIVER CABLING (ANTENNA) DEFECT +53 53 NAVAID ANTENNA CABLING DEFECT +59 59 OTHER PROBLEMS +60 60 ASAP COMMUNICATIONS DEFECT +61 61 COMMUNICATIONS FACILITY REJECTED DATA +62 62 NO POWER AT TRANSMITTING ANTENNA +63 63 ANTENNA CABLE BROKEN +64 64 ANTENNA CABLE DEFECT +65 65 MESSAGE TRANSMITTED POWER BELOW NORMAL +69 69 OTHER PROBLEMS +70 70 ALL SYSTEMS IN NORMAL OPERATION +99 99 STATUS OF SYSTEM AND ITS COMPONENTS NOT SPECIFIED +127 127 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/2015.table b/definitions/bufr/tables/0/wmo/40/codetables/2015.table new file mode 100644 index 000000000..7b0ccaf86 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/2015.table @@ -0,0 +1,7 @@ +0 0 RESERVED +1 1 PRESSURE ONLY RADIOSONDE +2 2 PRESSURE ONLY RADIOSONDE PLUS TRANSPONDER +3 3 PRESSURE ONLY RADIOSONDE PLUS RADAR REFLECTOR +4 4 NO-PRESSURE RADIOSONDE PLUS TRANSPONDER +5 5 NO-PRESSURE RADIOSONDE PLUS RADAR REFLECTOR +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/2016.table b/definitions/bufr/tables/0/wmo/40/codetables/2016.table new file mode 100644 index 000000000..4a3022611 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/2016.table @@ -0,0 +1,4 @@ +1 1 TRAIN REGULATOR +2 2 LIGHT UNIT +3 3 PARACHUTE +4 4 ROOFTOP RELEASE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/2017.table b/definitions/bufr/tables/0/wmo/40/codetables/2017.table new file mode 100644 index 000000000..7fac2e10f --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/2017.table @@ -0,0 +1,6 @@ +0 0 NO CORRECTIONS +1 1 TIME LAG CORRECTION PROVIDED BY THE MANUFACTURER +2 2 SOLAR RADIATION CORRECTION PROVIDED BY THE MANUFACTURER +3 3 SOLAR RADIATION AND TIME LAG CORRECTION PROVIDED BY THE MANUFACTURER +7 7 GRUAN SOLAR RADIATION AND TIME LAG CORRECTION +31 31 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/2019.table b/definitions/bufr/tables/0/wmo/40/codetables/2019.table new file mode 100644 index 000000000..e0c4fbeb1 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/2019.table @@ -0,0 +1,393 @@ +8 8 SSM/T +9 9 SSM/T2 +10 10 AATSR +11 11 ATSR +12 12 ATSR-2 +13 13 MWR +14 14 PMR +15 15 SCR +30 30 ARGOS +40 40 LASER REFLECTORS +41 41 DORIS +42 42 DORIS-NG +47 47 POSEIDON-1 (SSALT1) +48 48 POSEIDON-2 (SSALT2) +49 49 POSEIDON-3 (SSALT3) +50 50 ATSR/M +51 51 HRG +52 52 HRV +53 53 HRVIR +54 54 SCARAB/MV2 +55 55 POLDER +56 56 IIR +57 57 POSEIDON-4 +60 60 VEGETATION +61 61 WINDII +62 62 ALTIKA +63 63 SWIM +80 80 RADARSAT DTT +81 81 RADARSAT TTC +85 85 SAR (CSA) +90 90 MOPITT +91 91 OSIRIS +92 92 ACE-FTS +97 97 PANCHROMATIC IMAGER +98 98 GPS RECEIVER +102 102 CHAMP GPS SOUNDER +103 103 IGOR +104 104 TRI-G +116 116 CHAMP GRAVITY PACKAGE (ACCELEROMETER+GPS) +117 117 CHAMP MAGNETOMETRY PACKAGE (1 SCALAR+2 VECTOR MAGNETOMETER) +120 120 ENVISAT COMMS +121 121 ERS COMMS +130 130 ALADIN +131 131 ATLID +140 140 AMI/SAR/IMAGE +141 141 AMI/SAR/WAVE +142 142 AMI/SCATTEROMETER +143 143 ASAR +144 144 ASAR +145 145 ASAR +146 146 CPR +147 147 RA-2/MWR +148 148 RA/MWR +150 150 SCATTEROMETER +151 151 SAR-C +152 152 SW +161 161 MIPAS +162 162 MWR-2 +163 163 SOPRANO +170 170 GOME +172 172 GOMOS +173 173 ALTIUS +174 174 MERIS +175 175 SCIAMACHY +176 176 MIRAS +177 177 SIRAL +178 178 SRAL +179 179 OLCI +180 180 SLSTR +181 181 METEOSAT COMMS +182 182 MSG COMMS +190 190 ASCAT +200 200 GERB +202 202 GRAS +203 203 MHS +205 205 MVIRI +207 207 SEVIRI +208 208 VIRI +210 210 FCI +211 211 LI +212 212 IRS +213 213 S4 +220 220 GOME-2 +221 221 IASI +230 230 3MI +231 231 IASI-NG +232 232 METIMAGE +233 233 MWS +234 234 RO +235 235 S5/UVNS +236 236 ICI +237 237 MWI +238 238 SCA +240 240 DCP +245 245 CCD +246 246 HSB +248 248 OBA +250 250 WFI +255 255 IRMSS +260 260 BSS & FSS TRANSPONDERS +261 261 DRT-S&R +262 262 INSAT COMMS +268 268 HR-PAN +269 269 MSMR +270 270 VHRR +271 271 WIFS +275 275 AWIFS +276 276 LISS-I +277 277 LISS-II +278 278 LISS-III +279 279 LISS-IV +284 284 PAN +285 285 MOS +286 286 OCM +287 287 ROSA +288 288 SCAT +289 289 IMG +290 290 MTSAT COMMS +291 291 HIMAWARI COMMS +294 294 JAMI +295 295 IMAGER/MTSAT-2 +296 296 VISSR +297 297 AHI +300 300 GLAS +301 301 LRA +302 302 MBLA +303 303 CALIOP +309 309 CPR (CLOUDSAT) +312 312 NSCAT +313 313 SEAWINDS +314 314 RAPIDSCAT +330 330 ACRIM +334 334 BUV +336 336 ALI +347 347 ASTER +348 348 CERES-2 +351 351 GPSDR +353 353 HIRDLS +354 354 HRDI +356 356 LIS +358 358 PEM +359 359 SEAWIFS +360 360 SUSIM (UARS) +363 363 SBUV/1 +365 365 TMI +366 366 JMR +367 367 AMR +369 369 LIMS +370 370 LRIR +371 371 EPIC +372 372 NISTAR +373 373 PLASMA-MAG +374 374 XPS +375 375 VIRS +376 376 POLDER II +377 377 TIM +379 379 WFC +382 382 CLAES +383 383 HALOE +384 384 ISAMS +385 385 MISR +386 386 MLS +387 387 MLS (EOS-AURA) +389 389 MODIS +393 393 HAIRS +394 394 OMI +395 395 ATMOSPHERIC CORRECTOR +396 396 HYPERION +397 397 HRIR +398 398 MRIR +399 399 SAGE I +400 400 SAGE II +401 401 SAGE III +402 402 SAMS +403 403 SAM-II +404 404 IRIS +405 405 GIFTS +420 420 AIRS +421 421 SIRS-A +422 422 SIRS-B +426 426 SOLSTICE +430 430 TES +431 431 TOMS +432 432 OCO +433 433 TMS +434 434 SMAP +450 450 ADEOS COMMS +451 451 DCS (JAXA) +453 453 GMS COMMS +454 454 JERS-1 COMMS +460 460 RIS +461 461 PR +462 462 SAR +470 470 PALSAR +478 478 AMSR2 +479 479 AMSR-E +480 480 PRISM (ALOS) +481 481 AMSR +482 482 AVNIR +483 483 AVNIR-2 +484 484 GLI +485 485 MESSR +486 486 MSR +487 487 OCTS +488 488 OPS +489 489 VISSR (GMS-5) +490 490 VTIR +510 510 ILAS-I +511 511 ILAS-II +512 512 IMG +514 514 SEM +515 515 SOFIS +516 516 TANSO-FTS +517 517 TANSO-CAI +518 518 DPR +519 519 GMI +520 520 SMMR +526 526 CION-A +527 527 CION-B +528 528 CION-C +529 529 CION-D +530 530 SGNOS-A +531 531 SGNOS-B +532 532 SGNOS-C +533 533 SGNOS-D +534 534 PYXIS-A +535 535 PYXIS-B +540 540 DCS (NOAA) +541 541 GOES COMMS +542 542 LANDSAT COMMS +543 543 NOAA COMMS +544 544 S&R (GOES) +545 545 S&R (NOAA) +546 546 WEFAX +547 547 SEM (GOES) +550 550 SSM +551 551 SSJ/4 +552 552 SSIES-2 +553 553 SSB/X-2 +570 570 AMSU-A +574 574 AMSU-B +580 580 ATOVS (HIRS/3 + AMSU + AVHRR/3) +590 590 AVHRR/2 +591 591 AVHRR/3 +592 592 AVHRR/4 +600 600 ERBE +601 601 ETM+ +604 604 HIRS/1 +605 605 HIRS/2 +606 606 HIRS/3 +607 607 HIRS/4 +615 615 IMAGER +616 616 VIIRS +617 617 ABI +618 618 GLM +620 620 CRIRS/NP +621 621 ATMS +622 622 MSS +623 623 MSU +624 624 SBUV/2 +625 625 SBUV/3 +626 626 SOUNDER +627 627 SSU +628 628 TM +629 629 TOVS (HIRS/2 + MSU + SSU) +630 630 VAS +631 631 SSZ +645 645 SEM +650 650 MVIRSR (10 CHANNEL) +651 651 MVIRSR (3 CHANNEL) +652 652 MVIRSR (5 CHANNEL) +670 670 RLSBO +680 680 MSU-EU +681 681 MSU-UM +682 682 RM-08 +683 683 SU-UMS +684 684 SU-VR +685 685 TRASSER +686 686 SCAT +687 687 ALT +688 688 MWI +689 689 GEMS +700 700 KONDOR-2 +701 701 BRK +710 710 ALISSA +712 712 BALKAN-2 LIDAR +715 715 MK-4 +716 716 MK-4M +730 730 GREBEN +731 731 SAR-10 +732 732 SAR-3 +733 733 SAR-70 +740 740 SLR-3 +745 745 TRAVERS SAR +750 750 174-K +751 751 BTVK +752 752 CHAIKA +753 753 DELTA-2 +755 755 IKAR-D +756 756 IKAR-N +757 757 IKAR-P +760 760 ISP +761 761 KFA-1000 +762 762 KFA-200 +763 763 KFA-3000 +770 770 KLIMAT +771 771 KLIMAT-2 +775 775 MIRAS +776 776 MIVZA +777 777 MIVZA-M +780 780 MR-2000 +781 781 MR-2000M +785 785 MR-900 +786 786 MR-900B +790 790 MSU-E +791 791 MSU-E1 +792 792 MSU-E2 +793 793 MSU-M +794 794 MSU-S +795 795 MSU-SK +796 796 MSU-V +810 810 MTZA +815 815 MZOAS +820 820 R-225 +821 821 R-400 +822 822 R-600 +830 830 RMS +835 835 TV CAMERA +836 836 SILVA +840 840 SROSMO +850 850 BUFS-2 +851 851 BUFS-4 +855 855 ISTOK-1 +856 856 SFM-2 +857 857 DOPI +858 858 KGI-4 +859 859 OZON-M +860 860 RMK-2 +861 861 MTVZA-GY +862 862 IKFS-2 +900 900 MAXIE +901 901 OLS +905 905 SSM/I +906 906 SSM/T-1 +907 907 SSM/T-2 +908 908 SSMIS +909 909 VTPR +910 910 SXI +930 930 EHIC +931 931 X-RAY ASTRONOMY PAYLOAD +932 932 IVISSR (FY-2) +933 933 IRAS +934 934 MWAS +935 935 IMWAS +936 936 MWHS +937 937 MVIRS +938 938 MWRI +940 940 MTVZA-OK +941 941 SAPHIR +942 942 MADRAS +943 943 SCAT (ON CFOSAT) +944 944 ALT +945 945 TSIS +946 946 CMIS +947 947 OMPS-NADIR +948 948 GPSOS +949 949 SESS +950 950 VIRR +951 951 TOM +952 952 OP +953 953 MWHS-2 +954 954 MWTS-2 +955 955 HIRAS +956 956 SBUS +957 957 TOU +958 958 GNOS +959 959 SMR +960 960 OMPS-LIMB +961 961 AGRI +962 962 GIIRS +963 963 LMI +964 964 SEP +965 965 GNOS-2 +966 966 MWTS-3 +980 980 AMI +981 981 MI +982 982 KSEM +990 990 SMMR +991 991 THIR +992 992 NEMS +993 993 SCAMS +994 994 ESMR +2047 2047 diff --git a/definitions/bufr/tables/0/wmo/40/codetables/2020.table b/definitions/bufr/tables/0/wmo/40/codetables/2020.table new file mode 100644 index 000000000..fd3c93626 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/2020.table @@ -0,0 +1,37 @@ +0 0 NIMBUS +1 1 VTPR +2 2 TIROS 1 (TIROS, NOAA-6 TO NOAA-13) +3 3 TIROS 2 (NOAA-14 ONWARDS) +10 10 EOS +20 20 GPM-CORE +31 31 DMSP +61 61 EUMETSAT POLAR SYSTEM (EPS) +62 62 EUMETSAT POLAR SYSTEM (EPS-SG) +91 91 ERS +92 92 SENTINEL-3 +121 121 ADEOS +122 122 GCOM +241 241 GOES +251 251 TROPICS +261 261 JASON +271 271 GMS +272 272 MTSAT +273 273 HIMAWARI +281 281 COMS +301 301 INSAT +331 331 METEOSAT OPERATIONAL PROGRAMME (MOP) +332 332 METEOSAT TRANSITIONAL PROGRAMME (MTP) +333 333 METEOSAT SECOND GENERATION PROGRAMME (MSG) +334 334 METEOSAT THIRD GENERATION PROGRAMME (MTG) +351 351 GOMS +352 352 METEOR-M N2 +380 380 FY-1 +381 381 FY-2 +382 382 FY-3 +383 383 FY-4 +401 401 GPS +402 402 GLONASS +403 403 GALILEO +404 404 BDS (BEIDOU NAVIGATION SATELLITE SYSTEM) +405 405 QUASI-ZENITH SATELLITE SYSTEM (QZSS) +511 511 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/2021.table b/definitions/bufr/tables/0/wmo/40/codetables/2021.table new file mode 100644 index 000000000..b95fdc989 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/2021.table @@ -0,0 +1,8 @@ +1 1 HIGH-RESOLUTION INFRARED SOUNDER (HIRS) +2 2 MICROWAVE SOUNDING UNIT (MSU) +3 3 STRATOSPHERIC SOUNDING UNIT (SSU) +4 4 AMI (ADVANCED MICROWAVE INSTRUMENT) WIND MODE +5 5 AMI (ADVANCED MICROWAVE INSTRUMENT) WAVE MODE +6 6 AMI (ADVANCED MICROWAVE INSTRUMENT) IMAGE MODE +7 7 RADAR ALTIMETER +8 8 ATSR (ALONG-TRACK SCANNING RADIOMETER) diff --git a/definitions/bufr/tables/0/wmo/40/codetables/2022.table b/definitions/bufr/tables/0/wmo/40/codetables/2022.table new file mode 100644 index 000000000..5068e7fd7 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/2022.table @@ -0,0 +1,5 @@ +1 1 PROCESSING TECHNIQUE NOT DEFINED +2 2 AUTOMATED STATISTICAL REGRESSION +3 3 CLEAR PATH +4 4 PARTLY CLOUDY PATH +5 5 CLOUDY PATH diff --git a/definitions/bufr/tables/0/wmo/40/codetables/2023.table b/definitions/bufr/tables/0/wmo/40/codetables/2023.table new file mode 100644 index 000000000..be7eb84e4 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/2023.table @@ -0,0 +1,11 @@ +0 0 RESERVED +1 1 WIND DERIVED FROM CLOUD MOTION OBSERVED IN THE INFRARED CHANNEL +2 2 WIND DERIVED FROM CLOUD MOTION OBSERVED IN THE VISIBLE CHANNEL +3 3 WIND DERIVED FROM CLOUD MOTION OBSERVED IN THE WATER VAPOUR CHANNEL +4 4 WIND DERIVED FROM MOTION OBSERVED IN A COMBINATION OF SPECTRAL CHANNELS +5 5 WIND DERIVED FROM MOTION OBSERVED IN THE WATER VAPOUR CHANNEL IN CLEAR AIR +6 6 WIND DERIVED FROM MOTION OBSERVED IN THE OZONE CHANNEL +7 7 WIND DERIVED FROM MOTION OBSERVED IN WATER VAPOUR CHANNEL (CLOUD OR CLEAR AIR NOT SPECIFIED) +13 13 ROOT-MEAN-SQUARE +14 14 RESERVED +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/2024.table b/definitions/bufr/tables/0/wmo/40/codetables/2024.table new file mode 100644 index 000000000..00ec80ef6 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/2024.table @@ -0,0 +1,4 @@ +0 0 RESERVED +1 1 TABLE WITH FULL RANGE OF HUMIDITY VARIATION IN LAYER +2 2 REGRESSION TECHNIQUE ON 2 HUMIDITY VALUES IN LAYER +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/2025.table b/definitions/bufr/tables/0/wmo/40/codetables/2025.table new file mode 100644 index 000000000..045416aac --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/2025.table @@ -0,0 +1,16 @@ +1 1 RESERVED +2 2 HIRS +3 3 MSU +6 6 HIRS +7 7 MSU +10 10 HIRS (1, 2, 3, 8, 9, 16, 17) +11 11 HIRS (1, 2, 3, 9, 17) +12 12 MSU +15 15 HIRS +16 16 HIRS* +17 17 MSU +18 18 SKINTK (OCEAN ONLY) +21 21 HIRS +22 22 SSU +23 23 MSU (3, 4) +24 24 RESERVED diff --git a/definitions/bufr/tables/0/wmo/40/codetables/2030.table b/definitions/bufr/tables/0/wmo/40/codetables/2030.table new file mode 100644 index 000000000..2777bbcd3 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/2030.table @@ -0,0 +1,8 @@ +0 0 RESERVED +1 1 ADCP (ACOUSTIC DOPPLER CURRENT PROFILER) +2 2 GEK (GEOMAGNETIC ELECTROKINETOGRAPH) +3 3 SHIP'S SET AND DRIFT DETERMINED BY FIXES 3-6 HOURS APART +4 4 SHIP'S SET AND DRIFT DETERMINED BY FIXES MORE THAN 6 HOURS BUT LESS THAN 12 HOURS APART +5 5 DRIFT OF BUOY +6 6 ADCP (ACOUSTIC DOPPLER CURRENT PROFILER) +7 7 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/2031.table b/definitions/bufr/tables/0/wmo/40/codetables/2031.table new file mode 100644 index 000000000..c096d370c --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/2031.table @@ -0,0 +1,21 @@ +0 0 RESERVED +1 1 INSTANTANEOUS +2 2 AVERAGED OVER 3 MIN OR LESS +3 3 AVERAGED OVER MORE THAN 3 MIN, BUT 6 MIN AT THE MOST +4 4 AVERAGED OVER MORE THAN 6 MIN, BUT 12 MIN AT THE MOST +5 5 INSTANTANEOUS +6 6 AVERAGED OVER 3 MIN OR LESS +7 7 AVERAGED OVER MORE THAN 3 MIN, BUT 6 MIN AT THE MOST +8 8 AVERAGED OVER MORE THAN 6 MIN, BUT 12 MIN AT THE MOST +9 9 VECTOR OR DOPPLER CURRENT PROFILING METHOD NOT USED +10 10 RESERVED +11 11 1 HOUR OR LESS +12 12 MORE THAN 1 HOUR BUT 2 HOURS AT THE MOST +13 13 MORE THAN 2 HOURS BUT 4 HOURS AT THE MOST +14 14 MORE THAN 4 HOURS BUT 8 HOURS AT THE MOST +15 15 MORE THAN 8 HOURS BUT 12 HOURS AT THE MOST +16 16 MORE THAN 12 HOURS BUT 18 HOURS AT THE MOST +17 17 MORE THAN 18 HOURS BUT 24 HOURS AT THE MOST +18 18 RESERVED +19 19 DRIFT METHOD NOT USED +31 31 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/2032.table b/definitions/bufr/tables/0/wmo/40/codetables/2032.table new file mode 100644 index 000000000..7e9310db0 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/2032.table @@ -0,0 +1,4 @@ +0 0 VALUES AT SELECTED DEPTHS (DATA POINTS FIXED BY THE INSTRUMENT OR SELECTED BY ANY OTHER METHOD) +1 1 VALUES AT SELECTED DEPTHS (DATA POINTS TAKEN FROM TRACES AT SIGNIFICANT DEPTHS) +2 2 RESERVED +3 3 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/2033.table b/definitions/bufr/tables/0/wmo/40/codetables/2033.table new file mode 100644 index 000000000..d590a8454 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/2033.table @@ -0,0 +1,5 @@ +0 0 NO SALINITY MEASURED +1 1 IN SITU SENSOR, ACCURACY BETTER THAN 0.02 0/00 +2 2 IN SITU SENSOR, ACCURACY LESS THAN 0.02 0/00 +3 3 SAMPLE ANALYSIS +7 7 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/2034.table b/definitions/bufr/tables/0/wmo/40/codetables/2034.table new file mode 100644 index 000000000..06cdd52d2 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/2034.table @@ -0,0 +1,7 @@ +0 0 UNSPECIFIED DROGUE +1 1 HOLEY SOCK +2 2 TRISTAR +3 3 WINDOW SHADE +4 4 PARACHUTE +5 5 NON-LAGRANGIAN SEA ANCHOR +31 31 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/2036.table b/definitions/bufr/tables/0/wmo/40/codetables/2036.table new file mode 100644 index 000000000..7782d302a --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/2036.table @@ -0,0 +1,4 @@ +0 0 DRIFTING BUOY +1 1 FIXED BUOY +2 2 SUBSURFACE FLOAT (MOVING) +3 3 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/2037.table b/definitions/bufr/tables/0/wmo/40/codetables/2037.table new file mode 100644 index 000000000..729c40e63 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/2037.table @@ -0,0 +1,8 @@ +0 0 RESERVED +1 1 MANUAL READING FROM VERTICAL TIDE STAFF +2 2 MANUAL READING FROM SINGLE AUTOMATIC RECORDER AT STATION +3 3 MANUAL READING FROM MULTIPLE AUTOMATIC RECORDERS AT STATION +4 4 AUTOMATIC READING FROM SINGLE AUTOMATIC RECORDER AT STATION WITHOUT LEVEL REFERENCE CHECK +5 5 AUTOMATIC READING FROM SINGLE AUTOMATIC RECORDER AT STATION WITH LEVEL REFERENCE CHECK, OR FROM MULTIPLE AUTOMATIC RECORDERS +6 6 RESERVED +7 7 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/2038.table b/definitions/bufr/tables/0/wmo/40/codetables/2038.table new file mode 100644 index 000000000..458f14169 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/2038.table @@ -0,0 +1,16 @@ +0 0 SHIP INTAKE +1 1 BUCKET +2 2 HULL CONTACT SENSOR +3 3 REVERSING THERMOMETER +4 4 STD/CTD SENSOR +5 5 MECHANICAL BT +6 6 EXPENDABLE BT +7 7 DIGITAL BT +8 8 THERMISTOR CHAIN +9 9 INFRARED SCANNER +10 10 MICROWAVE SCANNER +11 11 INFRARED RADIOMETER +12 12 IN-LINE THERMOSALINOGRAPH +13 13 TOWED BODY +14 14 OTHER +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/2039.table b/definitions/bufr/tables/0/wmo/40/codetables/2039.table new file mode 100644 index 000000000..0a94982b5 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/2039.table @@ -0,0 +1,5 @@ +0 0 MEASURED WET-BULB TEMPERATURE +1 1 ICED BULB MEASURED WET-BULB TEMPERATURE +2 2 COMPUTED WET-BULB TEMPERATURE +3 3 ICED BULB COMPUTED WET-BULB TEMPERATURE +7 7 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/2040.table b/definitions/bufr/tables/0/wmo/40/codetables/2040.table new file mode 100644 index 000000000..78b291706 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/2040.table @@ -0,0 +1,8 @@ +0 0 SHIP'S MOTION REMOVED BY AVERAGING +1 1 SHIP'S MOTION REMOVED BY MOTION COMPENSATION +2 2 SHIP'S MOTION NOT REMOVED +3 3 SHIP'S MOTION REMOVED BY AVERAGING +4 4 SHIP'S MOTION REMOVED BY MOTION COMPENSATION +5 5 SHIP'S MOTION NOT REMOVED +6 6 DOPPLER CURRENT PROFILING METHOD NOT USED +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/2041.table b/definitions/bufr/tables/0/wmo/40/codetables/2041.table new file mode 100644 index 000000000..ef5bf86b3 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/2041.table @@ -0,0 +1,6 @@ +0 0 INFORMATION BASED ON MANUAL ANALYSIS +1 1 INFORMATION BASED ON COMPUTER ANALYSIS +2 2 INFORMATION BASED ON DATA ASSIMILATION +3 3 INFORMATION BASED ON COMPUTER ANALYSIS OR DATA ASSIMILATION MANUALLY MODIFIED +10 10 INFORMATION BASED ON THE NUMERICAL WEATHER PREDICTION +63 63 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/2042.table b/definitions/bufr/tables/0/wmo/40/codetables/2042.table new file mode 100644 index 000000000..eb2445b83 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/2042.table @@ -0,0 +1,4 @@ +0 0 VALUE ORIGINALLY REPORTED IN M/S +1 1 VALUE ORIGINALLY REPORTED IN KNOTS +2 2 NO SEA CURRENT DATA AVAILABLE +3 3 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/2044.table b/definitions/bufr/tables/0/wmo/40/codetables/2044.table new file mode 100644 index 000000000..0e10ed8e1 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/2044.table @@ -0,0 +1,6 @@ +0 0 RESERVED FOR FUTURE USE +1 1 LONGUET-HIGGINS (1964) +2 2 LONGUET-HIGGINS (F3 METHOD) +3 3 MAXIMUM LIKELIHOOD METHOD +4 4 MAXIMUM ENTROPY METHOD +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/2045.table b/definitions/bufr/tables/0/wmo/40/codetables/2045.table new file mode 100644 index 000000000..374e4f27e --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/2045.table @@ -0,0 +1,5 @@ +0 0 SEA STATION +1 1 AUTOMATIC DATA BUOY +2 2 AIRCRAFT +3 3 SATELLITE +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/2046.table b/definitions/bufr/tables/0/wmo/40/codetables/2046.table new file mode 100644 index 000000000..57fb9d6be --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/2046.table @@ -0,0 +1,4 @@ +0 0 RESERVED FOR FUTURE USE +1 1 HEAVE SENSOR +2 2 SLOPE SENSOR +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/2047.table b/definitions/bufr/tables/0/wmo/40/codetables/2047.table new file mode 100644 index 000000000..821393179 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/2047.table @@ -0,0 +1,9 @@ +0 0 RESERVED +1 1 DART II (PMEL) +2 2 DART ETD +3 3 SAIC TSUNAMI BUOY (STB) +4 4 GFZ - POTSDAM +5 5 INCOIS (INDIA) +6 6 INABUOY (INDONESIA) +7 7 ENVIRTECH +127 127 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/2048.table b/definitions/bufr/tables/0/wmo/40/codetables/2048.table new file mode 100644 index 000000000..e4325f83b --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/2048.table @@ -0,0 +1,16 @@ +0 0 HIRS +1 1 MSU +2 2 SSU +3 3 AMSU-A +4 4 AMSU-B +5 5 AVHRR +6 6 SSMI +7 7 NSCAT +8 8 SEAWINDS +9 9 POSEIDON ALTIMETER +10 10 JMR (JASON MICROWAVE RADIOMETER) +11 11 MHS +12 12 ASCAT +13 13 OSCAT2 +14 14 RESERVED +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/2049.table b/definitions/bufr/tables/0/wmo/40/codetables/2049.table new file mode 100644 index 000000000..ade5cac86 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/2049.table @@ -0,0 +1,4 @@ +1 1 PROCESSING TECHNIQUE NOT DEFINED +2 2 SIMULTANEOUS PHYSICAL RETRIEVAL +3 3 CLEAR SOUNDING +4 4 CLOUDY SOUNDING diff --git a/definitions/bufr/tables/0/wmo/40/codetables/2050.table b/definitions/bufr/tables/0/wmo/40/codetables/2050.table new file mode 100644 index 000000000..fbcce617d --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/2050.table @@ -0,0 +1,19 @@ +1 1 1 +2 2 2 +3 3 3 +4 4 4 +5 5 5 +6 6 6 +7 7 7 +8 8 8 +9 9 9 +10 10 10 +11 11 11 +12 12 12 +13 13 13 +14 14 14 +15 15 15 +16 16 16 +17 17 17 +18 18 18 +19 19 19 diff --git a/definitions/bufr/tables/0/wmo/40/codetables/2051.table b/definitions/bufr/tables/0/wmo/40/codetables/2051.table new file mode 100644 index 000000000..3524ae72d --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/2051.table @@ -0,0 +1,5 @@ +0 0 RESERVED +1 1 MAXIMUM/MINIMUM THERMOMETERS +2 2 AUTOMATED INSTRUMENTS +3 3 THERMOGRAPH +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/2052.table b/definitions/bufr/tables/0/wmo/40/codetables/2052.table new file mode 100644 index 000000000..8b6262caa --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/2052.table @@ -0,0 +1,5 @@ +1 1 1 +2 2 2 +3 3 3 +4 4 4 +5 5 5 diff --git a/definitions/bufr/tables/0/wmo/40/codetables/2053.table b/definitions/bufr/tables/0/wmo/40/codetables/2053.table new file mode 100644 index 000000000..03e5e295e --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/2053.table @@ -0,0 +1,5 @@ +0 0 OBSERVED BRIGHTNESS TEMPERATURE +1 1 BRIGHTNESS TEMPERATURE WITH BIAS CORRECTION APPLIED +2 2 BRIGHTNESS TEMPERATURE CALCULATED FROM FIRST GUESS +3 3 BRIGHTNESS TEMPERATURE CALCULATED FROM SOUNDING +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/2054.table b/definitions/bufr/tables/0/wmo/40/codetables/2054.table new file mode 100644 index 000000000..0995688ba --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/2054.table @@ -0,0 +1,6 @@ +0 0 PARAMETER DERIVED USING OBSERVED SOUNDER BRIGHTNESS TEMPERATURES +1 1 PARAMETER DERIVED USING OBSERVED IMAGER BRIGHTNESS TEMPERATURES +2 2 PARAMETER DERIVED USING FIRST GUESS INFORMATION +3 3 PARAMETER DERIVED USING NMC ANALYSIS INFORMATION +4 4 PARAMETER DERIVED USING RADIOSONDE INFORMATION +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/2055.table b/definitions/bufr/tables/0/wmo/40/codetables/2055.table new file mode 100644 index 000000000..ce06f0089 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/2055.table @@ -0,0 +1,10 @@ +0 0 STATISTICS GENERATED COMPARING RETRIEVAL VERSUS RADIOSONDE +1 1 STATISTICS GENERATED COMPARING RETRIEVAL VERSUS FIRST GUESS +2 2 STATISTICS GENERATED COMPARING RADIOSONDE VERSUS FIRST GUESS +3 3 STATISTICS GENERATED COMPARING OBSERVED VERSUS RETRIEVAL +4 4 STATISTICS GENERATED COMPARING OBSERVED VERSUS FIRST GUESS +5 5 STATISTICS GENERATED COMPARING RADIOSONDE VERSUS IMAGER +6 6 STATISTICS GENERATED COMPARING RADIOSONDE VERSUS SOUNDER +7 7 STATISTICS GENERATED FOR RADIOSONDE +8 8 STATISTICS GENERATED FOR FIRST GUESS +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/2056.table b/definitions/bufr/tables/0/wmo/40/codetables/2056.table new file mode 100644 index 000000000..86eb98302 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/2056.table @@ -0,0 +1,6 @@ +0 0 SUMS OF DIFFERENCES +1 1 SUMS OF SQUARED DIFFERENCES +2 2 SAMPLE SIZE +3 3 MINIMUM DIFFERENCE +4 4 MAXIMUM DIFFERENCE +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/2057.table b/definitions/bufr/tables/0/wmo/40/codetables/2057.table new file mode 100644 index 000000000..681e6bd08 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/2057.table @@ -0,0 +1,7 @@ +0 0 NESTED GRID MODEL (NGM) +1 1 AVIATION MODEL (AVN) +2 2 MEDIUM RANGE FORECAST (MRF) MODEL +3 3 GLOBAL DATA ASSIMILATION SYSTEM (GDAS) FORECAST MODEL +4 4 PRIOR SOUNDINGS (WITHIN 3 HOURS OF CURRENT TIME) +5 5 CLIMATOLOGY +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/2058.table b/definitions/bufr/tables/0/wmo/40/codetables/2058.table new file mode 100644 index 000000000..6c45eda11 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/2058.table @@ -0,0 +1,5 @@ +0 0 12 HOUR AND 18 HOUR +1 1 18 HOUR AND 24 HOUR +2 2 6 HOUR AND 12 HOUR +3 3 GREATER THAN 24 HOURS +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/2059.table b/definitions/bufr/tables/0/wmo/40/codetables/2059.table new file mode 100644 index 000000000..8f089d3c4 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/2059.table @@ -0,0 +1,5 @@ +0 0 NCEP NESTED GRID MODEL (NGM) ANALYSIS +1 1 NCEP AVIATION MODEL (AVN) ANALYSIS +2 2 NCEP MEDIUM RANGE FORECAST (MRF) MODEL ANALYSIS +3 3 NCEP GLOBAL DATA ASSIMILATION SYSTEM (GDAS) FORECAST MODEL ANALYSIS +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/2060.table b/definitions/bufr/tables/0/wmo/40/codetables/2060.table new file mode 100644 index 000000000..6f846987b --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/2060.table @@ -0,0 +1,7 @@ +0 0 CURRENT SURFACE HOURLY REPORTS +1 1 CURRENT SHIP REPORTS +2 2 CURRENT BUOY REPORTS +3 3 ONE HOUR OLD SURFACE HOURLY REPORTS +4 4 ONE HOUR OLD SHIP REPORTS +5 5 ONE HOUR OLD BUOY REPORTS +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/2061.table b/definitions/bufr/tables/0/wmo/40/codetables/2061.table new file mode 100644 index 000000000..592d51eb4 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/2061.table @@ -0,0 +1,3 @@ +0 0 INERTIAL NAVIGATION SYSTEM +1 1 OMEGA +7 7 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/2062.table b/definitions/bufr/tables/0/wmo/40/codetables/2062.table new file mode 100644 index 000000000..2d0f4e202 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/2062.table @@ -0,0 +1,7 @@ +0 0 ASDAR +1 1 ASDAR (ACARS ALSO AVAILABLE BUT NOT OPERATIVE) +2 2 ASDAR (ACARS ALSO AVAILABLE AND OPERATIVE) +3 3 ACARS +4 4 ACARS (ASDAR ALSO AVAILABLE BUT NOT OPERATIVE) +5 5 ACARS (ASDAR ALSO AVAILABLE AND OPERATIVE) +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/2064.table b/definitions/bufr/tables/0/wmo/40/codetables/2064.table new file mode 100644 index 000000000..741430292 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/2064.table @@ -0,0 +1,4 @@ +0 0 GOOD +1 1 BAD +2 2 RESERVED +3 3 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/2066.table b/definitions/bufr/tables/0/wmo/40/codetables/2066.table new file mode 100644 index 000000000..a3865dc68 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/2066.table @@ -0,0 +1,9 @@ +0 0 INTERMET IMS 2000 +1 1 INTERMET IMS 1500C +2 2 SHANGHAI GTC1 +3 3 NANJING GTC2 +4 4 NANJING GFE(L)1 +5 5 MARL-A RADAR +6 6 VEKTOR-M RADAR +62 62 OTHER +63 63 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/2070.table b/definitions/bufr/tables/0/wmo/40/codetables/2070.table new file mode 100644 index 000000000..5a098ea26 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/2070.table @@ -0,0 +1,13 @@ +0 0 ACTUAL LOCATION IN SECONDS +1 1 ACTUAL LOCATION IN MINUTES +2 2 ACTUAL LOCATION IN DEGREES +3 3 ACTUAL LOCATION IN DECIDEGREES +4 4 ACTUAL LOCATION IN CENTIDEGREES +5 5 REFERENCED TO CHECKPOINT IN SECONDS +6 6 REFERENCED TO CHECKPOINT IN MINUTES +7 7 REFERENCED TO CHECKPOINT IN DEGREES +8 8 REFERENCED TO CHECKPOINT IN DECIDEGREES +9 9 REFERENCED TO CHECKPOINT IN CENTIDEGREES +10 10 ACTUAL LOCATION IN TENTHS OF A MINUTE +11 11 REFERENCED TO CHECKPOINT IN TENTHS OF A MINUTE +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/2080.table b/definitions/bufr/tables/0/wmo/40/codetables/2080.table new file mode 100644 index 000000000..c68a39dd6 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/2080.table @@ -0,0 +1,7 @@ +0 0 KAYSAM +1 1 TOTEX +2 2 KKS +3 3 GUANGZHOU SHUANGYI (CHINA) +4 4 CHEMCHINA ZHUZHOU (CHINA) +62 62 OTHER +63 63 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/2081.table b/definitions/bufr/tables/0/wmo/40/codetables/2081.table new file mode 100644 index 000000000..dfe9551a9 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/2081.table @@ -0,0 +1,11 @@ +0 0 GP26 +1 1 GP28 +2 2 GP30 +3 3 HM26 +4 4 HM28 +5 5 HM30 +6 6 SV16 +7 7 TOTEX TA TYPE BALLOONS +8 8 TOTEX TX TYPE BALLOONS +30 30 OTHER +31 31 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/2083.table b/definitions/bufr/tables/0/wmo/40/codetables/2083.table new file mode 100644 index 000000000..611c5bf64 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/2083.table @@ -0,0 +1,7 @@ +0 0 HIGH BAY +1 1 LOW BAY +2 2 BALLOON-INFLATED LAUNCH SYSTEM (BILS) +3 3 ROOF-TOP BILS +4 4 AUTOMATED UNMANNED SOUNDING SYSTEM +14 14 OTHER +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/2084.table b/definitions/bufr/tables/0/wmo/40/codetables/2084.table new file mode 100644 index 000000000..be6430ae6 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/2084.table @@ -0,0 +1,5 @@ +0 0 HYDROGEN +1 1 HELIUM +2 2 NATURAL GAS +14 14 OTHER +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/2092.table b/definitions/bufr/tables/0/wmo/40/codetables/2092.table new file mode 100644 index 000000000..b171b55c8 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/2092.table @@ -0,0 +1,4 @@ +0 0 UV CHANNEL BASED RETRIEVAL +1 1 VISIBLE CHANNEL BASED RETRIEVAL +2 2 COMBINED UV BASED RETRIEVAL AND VISIBLE BASED RETRIEVAL +7 7 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/2095.table b/definitions/bufr/tables/0/wmo/40/codetables/2095.table new file mode 100644 index 000000000..580fe930c --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/2095.table @@ -0,0 +1,7 @@ +0 0 CAPACITANCE ANEROID +1 1 DERIVED FROM GPS +2 2 RESISTIVE STRAIN GAUGE +3 3 SILICON CAPACITOR +4 4 DERIVED FROM RADAR HEIGHT +30 30 OTHER +31 31 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/2096.table b/definitions/bufr/tables/0/wmo/40/codetables/2096.table new file mode 100644 index 000000000..9f1b1027c --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/2096.table @@ -0,0 +1,9 @@ +0 0 ROD THERMISTOR +1 1 BEAD THERMISTOR +2 2 CAPACITANCE BEAD +3 3 CAPACITANCE WIRE +4 4 RESISTIVE SENSOR +5 5 CHIP THERMISTOR +6 6 MERCURY +7 7 ALCOHOL/GLYCOL +31 31 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/2097.table b/definitions/bufr/tables/0/wmo/40/codetables/2097.table new file mode 100644 index 000000000..309ef642a --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/2097.table @@ -0,0 +1,26 @@ +0 0 VIZ MARK II CARBON HYGRISTOR +1 1 VIZ B2 HYGRISTOR +2 2 VAISALA A-HUMICAP +3 3 VAISALA H-HUMICAP +4 4 CAPACITANCE SENSOR +5 5 VAISALA RS90 +6 6 SIPPICAN MARK IIA CARBON HYGRISTOR +7 7 TWIN ALTERNATIVELY HEATED HUMICAP CAPACITANCE SENSOR +8 8 HUMICAP CAPACITANCE SENSOR WITH ACTIVE DE-ICING METHOD +9 9 CARBON HYGRISTOR +10 10 PSYCHROMETER +11 11 CAPACITIVE (POLYMER) +12 12 CAPACITIVE (CERAMIC, INCLUDING METAL OXIDE) +13 13 RESISTIVE (GENERIC) +14 14 RESISTIVE (SALT POLYMER) +15 15 RESISTIVE (CONDUCTIVE POLYMER) +16 16 THERMAL CONDUCTIVITY +17 17 GRAVIMETRIC +18 18 PAPER-METAL COIL +19 19 ORDINARY HUMAN HAIR +20 20 ROLLED HAIR (TORSION) +21 21 GOLDBEATER'S SKIN +22 22 CHILLED MIRROR HYGROMETER +23 23 DEW CELL +24 24 OPTICAL ABSORPTION SENSOR +31 31 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/2099.table b/definitions/bufr/tables/0/wmo/40/codetables/2099.table new file mode 100644 index 000000000..74cb817c9 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/2099.table @@ -0,0 +1,5 @@ +0 0 HH POLARIZATION +1 1 VV POLARIZATION +2 2 HV POLARIZATION REAL VALUED COMPONENT +3 3 HV POLARIZATION IMAGINARY VALUED COMPONENT +7 7 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/2101.table b/definitions/bufr/tables/0/wmo/40/codetables/2101.table new file mode 100644 index 000000000..efdb3ec56 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/2101.table @@ -0,0 +1,10 @@ +0 0 CENTRE FRONT-FED PARABOLOID +1 1 OFFSET FRONT-FED PARABOLOID +2 2 CENTRE CASSEGRAIN PARABOLOID +3 3 OFFSET CASSEGRAIN PARABOLOID +4 4 PLANAR ARRAY +5 5 COAXIAL-COLLINEAR ARRAY +6 6 YAGI ELEMENTS ARRAY +7 7 MICROSTRIP +14 14 OTHER +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/21026.table b/definitions/bufr/tables/0/wmo/40/codetables/21026.table new file mode 100644 index 000000000..819a6ebfd --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/21026.table @@ -0,0 +1,4 @@ +0 0 NOMINAL +1 1 CLOSE TO NOMINAL +2 2 FAR FROM NOMINAL +7 7 MISSING diff --git a/definitions/bufr/tables/0/wmo/40/codetables/2103.table b/definitions/bufr/tables/0/wmo/40/codetables/2103.table new file mode 100644 index 000000000..417d2c9a4 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/2103.table @@ -0,0 +1 @@ +1 1 RADAR ANTENNA IS PROTECTED BY A RADOME diff --git a/definitions/bufr/tables/0/wmo/40/codetables/2104.table b/definitions/bufr/tables/0/wmo/40/codetables/2104.table new file mode 100644 index 000000000..e39a15365 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/2104.table @@ -0,0 +1,9 @@ +0 0 HORIZONTAL POLARIZATION +1 1 VERTICAL POLARIZATION +2 2 RIGHT CIRCULAR POLARIZATION +3 3 LEFT CIRCULAR POLARIZATION +4 4 HORIZONTAL AND VERTICAL POLARIZATION +5 5 RIGHT AND LEFT CIRCULAR POLARIZATION +6 6 QUASI-HORIZONTAL POLARIZATION +7 7 QUASI-VERTICAL POLARIZATION +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/21066.table b/definitions/bufr/tables/0/wmo/40/codetables/21066.table new file mode 100644 index 000000000..9bcafea2a --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/21066.table @@ -0,0 +1,11 @@ +1 1 PROCESSING EQUIPMENT NOT WORKING +2 2 EQUIPMENT FAILED +3 3 PRF CODE CHANGED DURING IMAGE GENERATION +4 4 SAMPLING WINDOW CHANGED DURING IMAGE GENERATION +5 5 GAIN CHANGED DURING IMAGE GENERATION +6 6 CHIRP REPLICA EXCEEDS SPECIFIED VALUE +7 7 INPUT DATA MEAN AND STANDARD DEVIATION OF IN-PHASE AND QUADRATURE OUT OF RANGE +8 8 DOPPLER CENTROID CONFIDENCE > MMCC VALUE +9 9 DOPPLER CENTROID ABSOLUTE VALUE > PRF/2 +10 10 DOPPLER AMBIGUITY CONFIDENCE < MMCC VALUE +11 11 OUTPUT DATA MEAN AND STANDARD DEVIATION =< MMCC VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/21067.table b/definitions/bufr/tables/0/wmo/40/codetables/21067.table new file mode 100644 index 000000000..a0ed399e4 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/21067.table @@ -0,0 +1,12 @@ +1 1 NO FOREBEAM CALCULATION +2 2 NO MIDBEAM CALCULATION +3 3 NO AFTBEAM CALCULATION +4 4 FOREBEAM ARCING DETECTED +5 5 MIDBEAM ARCING DETECTED +6 6 AFTBEAM ARCING DETECTED +7 7 ANY BEAM NOISE CONTENT ABOVE OR EQUAL TO THRESHOLD +8 8 LAND (ANY LAND IN CELL FOOTPRINT) +9 9 AUTONOMOUS AMBIGUITY REMOVAL NOT USED +10 10 METEOROLOGICAL BACKGROUND NOT USED +11 11 MINIMUM RESIDUAL EXCEEDED THRESHOLD +12 12 FRAME CHECKSUM ERROR DETECTED diff --git a/definitions/bufr/tables/0/wmo/40/codetables/21068.table b/definitions/bufr/tables/0/wmo/40/codetables/21068.table new file mode 100644 index 000000000..102171f44 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/21068.table @@ -0,0 +1,7 @@ +1 1 STANDARD DEVIATION OF WIND SPEED OUTSIDE MMCC LIMIT +2 2 STANDARD DEVIATION OF SIGNIFICANT WAVE HEIGHT OUTSIDE MMCC LIMIT +3 3 STANDARD DEVIATION OF ALTITUDE OUTSIDE MMCC LIMIT +4 4 MEAN PEAKINESS OUTSIDE MMCC LIMIT +5 5 FRAME CHECKSUM ERROR DETECTED +6 6 HEIGHT-TIME LOOP TIME CONSTANT CORRECTION NOT PERFORMED +7 7 NOT ENOUGH MEASUREMENTS (N < 10) diff --git a/definitions/bufr/tables/0/wmo/40/codetables/21069.table b/definitions/bufr/tables/0/wmo/40/codetables/21069.table new file mode 100644 index 000000000..b258fae22 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/21069.table @@ -0,0 +1,9 @@ +1 1 12.0 MICRON CHANNEL PRESENT IN SOURCE DATA +2 2 11.0 MICRON CHANNEL PRESENT IN SOURCE DATA +3 3 3.7 MICRON CHANNEL PRESENT IN SOURCE DATA +4 4 1.6 MICRON CHANNEL PRESENT IN SOURCE DATA +5 5 CLOUD IDENTIFICATION USED 1.6 MICRON HISTOGRAM REFLECTANCE CLOUD TEST +6 6 1.6 MICRON HISTOGRAM REFLECTANCE CLOUD TEST USED DYNAMIC THRESHOLD +7 7 SUN GLINT DETECTED BY 1.6 MICRON REFLECTANCE CLOUD TEST +8 8 3.7 MICRON CHANNEL USED IN SEA-SURFACE TEMPERATURE RETRIEVAL +9 9 SEA-SURFACE TEMPERATURE DERIVATION USED DAYTIME DATA (NIGHT-TIME IF ZERO) diff --git a/definitions/bufr/tables/0/wmo/40/codetables/21070.table b/definitions/bufr/tables/0/wmo/40/codetables/21070.table new file mode 100644 index 000000000..669655f00 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/21070.table @@ -0,0 +1,22 @@ +1 1 CELL 1: NADIR-ONLY VIEW SST USED 3.7 MICRON CHANNEL +2 2 CELL 2: NADIR-ONLY VIEW SST USED 3.7 MICRON CHANNEL +3 3 CELL 3: NADIR-ONLY VIEW SST USED 3.7 MICRON CHANNEL +4 4 CELL 4: NADIR-ONLY VIEW SST USED 3.7 MICRON CHANNEL +5 5 CELL 5: NADIR-ONLY VIEW SST USED 3.7 MICRON CHANNEL +6 6 CELL 6: NADIR-ONLY VIEW SST USED 3.7 MICRON CHANNEL +7 7 CELL 7: NADIR-ONLY VIEW SST USED 3.7 MICRON CHANNEL +8 8 CELL 8: NADIR-ONLY VIEW SST USED 3.7 MICRON CHANNEL +9 9 CELL 9: NADIR-ONLY VIEW SST USED 3.7 MICRON CHANNEL +10 10 CELL 1: DUAL VIEW SST USED 3.7 MICRON CHANNEL +11 11 CELL 2: DUAL VIEW SST USED 3.7 MICRON CHANNEL +12 12 CELL 3: DUAL VIEW SST USED 3.7 MICRON CHANNEL +13 13 CELL 4: DUAL VIEW SST USED 3.7 MICRON CHANNEL +14 14 CELL 5: DUAL VIEW SST USED 3.7 MICRON CHANNEL +15 15 CELL 6: DUAL VIEW SST USED 3.7 MICRON CHANNEL +16 16 CELL 7: DUAL VIEW SST USED 3.7 MICRON CHANNEL +17 17 CELL 8: DUAL VIEW SST USED 3.7 MICRON CHANNEL +18 18 CELL 9: DUAL VIEW SST USED 3.7 MICRON CHANNEL +19 19 NADIR VIEW CONTAINS DAY-TIME DATA (NIGHT IF ZERO) +20 20 FORWARD VIEW CONTAINS DAY-TIME DATA (NIGHT IF ZERO) +21 21 RECORD CONTAINS CONTRIBUTIONS FROM INSTRUMENT SCANS ACQUIRED WHEN ERS PLATFORM NOT IN YAW-STEERING MODE +22 22 RECORD CONTAINS CONTRIBUTIONS FROM INSTRUMENT SCANS FOR WHICH PRODUCT CONFIDENCE DATA SHOW QUALITY IS POOR OR UNKNOWN diff --git a/definitions/bufr/tables/0/wmo/40/codetables/21072.table b/definitions/bufr/tables/0/wmo/40/codetables/21072.table new file mode 100644 index 000000000..99e4b1c29 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/21072.table @@ -0,0 +1,3 @@ +1 1 HEIGHT ERROR CORRECTION APPLIED INSTEAD OF OPEN LOOP CALIBRATION +2 2 MICROWAVE SOUNDER USED FOR TROPOSPHERE CORRECTION +3 3 AGC OUTPUT CORRECTION APPLIED INSTEAD OF OPEN LOOP CALIBRATION diff --git a/definitions/bufr/tables/0/wmo/40/codetables/21073.table b/definitions/bufr/tables/0/wmo/40/codetables/21073.table new file mode 100644 index 000000000..9538fa553 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/21073.table @@ -0,0 +1,8 @@ +1 1 BLANK DATA RECORD +2 2 TEST +3 3 CALIBRATION (CLOSED LOOP) +4 4 BITE +5 5 ACQUISITION ON ICE +6 6 ACQUISITION ON OCEAN +7 7 TRACKING ON ICE +8 8 TRACKING ON OCEAN diff --git a/definitions/bufr/tables/0/wmo/40/codetables/21076.table b/definitions/bufr/tables/0/wmo/40/codetables/21076.table new file mode 100644 index 000000000..bc52ac558 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/21076.table @@ -0,0 +1,4 @@ +0 0 LINEAR +1 1 LOGARITHMIC (BASE E) +2 2 LOGARITHMIC (BASE 10) +7 7 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/21109.table b/definitions/bufr/tables/0/wmo/40/codetables/21109.table new file mode 100644 index 000000000..deb577aa0 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/21109.table @@ -0,0 +1,7 @@ +1 1 NOT ENOUGH GOOD SIGMA-0 AVAILABLE FOR WIND RETRIEVAL +2 2 POOR AZIMUTH DIVERSITY AMONG SIGMA-0 FOR WIND RETRIEVAL +8 8 SOME PORTION OF WIND VECTOR CELL IS OVER LAND +9 9 SOME PORTION OF WIND VECTOR CELL IS OVER ICE +10 10 WIND RETRIEVAL NOT PERFORMED FOR WIND VECTOR CELL +11 11 REPORTED WIND SPEED IS GREATER THAN 30 M S-1 +12 12 REPORTED WIND SPEED IS LESS THAN OR EQUAL TO 3 M S-1 diff --git a/definitions/bufr/tables/0/wmo/40/codetables/21115.table b/definitions/bufr/tables/0/wmo/40/codetables/21115.table new file mode 100644 index 000000000..9e90133cd --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/21115.table @@ -0,0 +1,10 @@ +1 1 SIGMA-0 MEASUREMENT IS NOT USABLE +2 2 SIGNAL TO NOISE RATIO IS LOW +3 3 SIGMA-0 IS NEGATIVE +4 4 SIGMA-0 IS OUTSIDE OF ACCEPTABLE RANGE +5 5 SCATTEROMETER PULSE QUALITY IS NOT ACCEPTABLE +6 6 SIGMA-0 CELL LOCATION ALGORITHM DOES NOT CONVERGE +7 7 FREQUENCY SHIFT LIES BEYOND THE RANGE OF THE X FACTOR TABLE +8 8 SPACECRAFT TEMPERATURE IS BEYOND CALIBRATION COEFFICIENT RANGE +9 9 NO APPLICABLE ALTITUDE RECORDS WERE FOUND FOR THIS SIGMA-0 +10 10 INTERPOLATED EPHEMERIS DATA ARE NOT ACCEPTABLE FOR THIS SIGMA-0 diff --git a/definitions/bufr/tables/0/wmo/40/codetables/21116.table b/definitions/bufr/tables/0/wmo/40/codetables/21116.table new file mode 100644 index 000000000..08d5412e4 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/21116.table @@ -0,0 +1,16 @@ +1 1 CALIBRATION/MEASUREMENT PULSE FLAG (1) +2 2 CALIBRATION/MEASUREMENT PULSE FLAG (2) +3 3 OUTER ANTENNA BEAM +4 4 SIGMA-0 CELL IS AFT OF SPACECRAFT +5 5 CURRENT MODE (1) +6 6 CURRENT MODE (2) +7 7 EFFECTIVE GATE WIDTH - SLICE RESOLUTION (1) +8 8 EFFECTIVE GATE WIDTH - SLICE RESOLUTION (2) +9 9 EFFECTIVE GATE WIDTH - SLICE RESOLUTION (3) +10 10 LOW-RESOLUTION MODE - WHOLE PULSE DATA +11 11 SCATTEROMETER ELECTRONIC SUBSYSTEM B +12 12 ALTERNATE SPIN RATE - 19.8 RPM +13 13 RECEIVER PROTECTION ON +14 14 SLICES PER COMPOSITE FLAG (1) +15 15 SLICES PER COMPOSITE FLAG (2) +16 16 SLICES PER COMPOSITE FLAG (3) diff --git a/definitions/bufr/tables/0/wmo/40/codetables/21119.table b/definitions/bufr/tables/0/wmo/40/codetables/21119.table new file mode 100644 index 000000000..e17e3c04a --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/21119.table @@ -0,0 +1,14 @@ +0 0 RESERVED +1 1 SASS +2 2 SASS2 +3 3 NSCAT0 +4 4 NSCAT1 +5 5 NSCAT2 +6 6 QSCAT0 +7 7 QSCAT1 +31 31 CMOD1 +32 32 CMOD2 +33 33 CMOD3 +34 34 CMOD4 +35 35 CMOD5 +63 63 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/21144.table b/definitions/bufr/tables/0/wmo/40/codetables/21144.table new file mode 100644 index 000000000..1f082e6d9 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/21144.table @@ -0,0 +1 @@ +1 1 RAIN diff --git a/definitions/bufr/tables/0/wmo/40/codetables/21148.table b/definitions/bufr/tables/0/wmo/40/codetables/21148.table new file mode 100644 index 000000000..11413ed72 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/21148.table @@ -0,0 +1,2 @@ +1 1 NON SHORT SCALE VARIATION +2 2 SHORT SCALE VARIATION diff --git a/definitions/bufr/tables/0/wmo/40/codetables/2115.table b/definitions/bufr/tables/0/wmo/40/codetables/2115.table new file mode 100644 index 000000000..c7e866c7a --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/2115.table @@ -0,0 +1,7 @@ +0 0 PDB +1 1 RSOIS +2 2 ASOS +3 3 PSYCHROMETER +4 4 F420 +30 30 OTHER +31 31 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/21150.table b/definitions/bufr/tables/0/wmo/40/codetables/21150.table new file mode 100644 index 000000000..851004635 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/21150.table @@ -0,0 +1,4 @@ +0 0 DATA FROM SINGLE GROUND STATION (NO CO-LOCATION) +1 1 DATA FROM MULTIPLE GROUND STATION (CO-LOCATED DATA) +2 2 RESERVED +3 3 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/21155.table b/definitions/bufr/tables/0/wmo/40/codetables/21155.table new file mode 100644 index 000000000..a7837cfa7 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/21155.table @@ -0,0 +1,16 @@ +1 1 NOT ENOUGH GOOD SIGMA-0 AVAILABLE FOR WIND RETRIEVAL +2 2 POOR AZIMUTH DIVERSITY AMONG SIGMA-0 FOR WIND RETRIEVAL +3 3 ANY BEAM NOISE CONTENT ABOVE THRESHOLD +4 4 PRODUCT MONITORING NOT USED +5 5 PRODUCT MONITORING FLAG +6 6 KNMI QUALITY CONTROL FAILS +7 7 VARIATIONAL QUALITY CONTROL FAILS +8 8 SOME PORTION OF WIND VECTOR CELL IS OVER LAND +9 9 SOME PORTION OF WIND VECTOR CELL IS OVER ICE +10 10 WIND RETRIEVAL NOT PERFORMED FOR WIND VECTOR CELL +11 11 REPORTED WIND SPEED IS GREATER THAN 30 M/S +12 12 REPORTED WIND SPEED IS LESS THAN OR EQUAL TO 3 M/S +13 13 RAIN FLAG FOR THE WIND VECTOR CELL IS NOT USABLE +14 14 RAIN FLAG ALGORITHM DETECTS RAIN +15 15 NO METEOROLOGICAL BACKGROUND USED +16 16 DATA ARE REDUNDANT diff --git a/definitions/bufr/tables/0/wmo/40/codetables/21158.table b/definitions/bufr/tables/0/wmo/40/codetables/21158.table new file mode 100644 index 000000000..dd53c5159 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/21158.table @@ -0,0 +1,4 @@ +0 0 ACCEPTABLE +1 1 NOT ACCEPTABLE +2 2 RESERVED +3 3 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/21159.table b/definitions/bufr/tables/0/wmo/40/codetables/21159.table new file mode 100644 index 000000000..1703f9b8e --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/21159.table @@ -0,0 +1,4 @@ +0 0 GOOD +1 1 USABLE +2 2 BAD +3 3 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/21169.table b/definitions/bufr/tables/0/wmo/40/codetables/21169.table new file mode 100644 index 000000000..9b93444ce --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/21169.table @@ -0,0 +1,4 @@ +0 0 NO ICE PRESENT +1 1 ICE PRESENT +2 2 RESERVED +3 3 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/2119.table b/definitions/bufr/tables/0/wmo/40/codetables/2119.table new file mode 100644 index 000000000..0640af68b --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/2119.table @@ -0,0 +1,8 @@ +0 0 INTERMEDIATE FREQUENCY CALIBRATION MODE (IF CAL) +1 1 BUILT-IN TEST EQUIPMENT DIGITAL (BITE DGT) +2 2 BUILT-IN TEST EQUIPMENT RADIO FREQUENCY (BITE RF) +3 3 PRESET TRACKING (PSET TRK) +4 4 PRESET LOOP OUT +5 5 ACQUISITION +6 6 TRACKING +7 7 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/2131.table b/definitions/bufr/tables/0/wmo/40/codetables/2131.table new file mode 100644 index 000000000..f4336ef79 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/2131.table @@ -0,0 +1 @@ +1 1 STC OPERATIONAL diff --git a/definitions/bufr/tables/0/wmo/40/codetables/2137.table b/definitions/bufr/tables/0/wmo/40/codetables/2137.table new file mode 100644 index 000000000..40d33fdd3 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/2137.table @@ -0,0 +1,4 @@ +1 1 3:2 +2 2 4:3 +3 3 5:4 +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/2138.table b/definitions/bufr/tables/0/wmo/40/codetables/2138.table new file mode 100644 index 000000000..a574506ad --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/2138.table @@ -0,0 +1,3 @@ +1 1 CLOCKWISE ROTATION +2 2 COUNTERCLOCKWISE ROTATION +3 3 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/2139.table b/definitions/bufr/tables/0/wmo/40/codetables/2139.table new file mode 100644 index 000000000..f6cf80294 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/2139.table @@ -0,0 +1,3 @@ +0 0 SIRAL NOMINAL +1 1 SIRAL REDUNDANT +2 2 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/2143.table b/definitions/bufr/tables/0/wmo/40/codetables/2143.table new file mode 100644 index 000000000..975d068be --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/2143.table @@ -0,0 +1,21 @@ +0 0 RESERVED +1 1 BREWER SPECTROPHOTOMETER +2 2 CAVER TEICHERT +3 3 DOBSON +4 4 DOBSON (JAPAN) +5 5 EHMET +6 6 FECKER TELESCOPE +7 7 HOELPER +8 8 JODMETER +9 9 FILTER OZONOMETER M-83 +10 10 MAST +11 11 OXFORD +12 12 PAETZOLD +13 13 REGENER +14 14 RESERVED FOR FUTURE USE +15 15 VASSY FILTER OZONOMETER +16 16 CARBON IODIDE +17 17 SURFACE OZONE BUBBLER +18 18 FILTER OZONOMETER M-124 +19 19 ECC SONDE +127 127 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/2144.table b/definitions/bufr/tables/0/wmo/40/codetables/2144.table new file mode 100644 index 000000000..5b0f37b34 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/2144.table @@ -0,0 +1,8 @@ +0 0 DIRECT SUN +1 1 DIRECT SUN, ATTENUATOR #1 +2 2 DIRECT SUN, ATTENUATOR #2 +3 3 FOCUSED MOON +4 4 FOCUSED SUN +5 5 FOCUSED SUN CORRECTED WITH ADJACENT SKY MEASUREMENTS +6 6 ZENITH SKY +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/2145.table b/definitions/bufr/tables/0/wmo/40/codetables/2145.table new file mode 100644 index 000000000..1944e69fc --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/2145.table @@ -0,0 +1,9 @@ +0 0 WAVELENGTHS AD ORDINARY SETTING +1 1 WAVELENGTHS BD ORDINARY SETTING +2 2 WAVELENGTHS CD ORDINARY SETTING +3 3 WAVELENGTHS CC' ORDINARY SETTING +4 4 WAVELENGTHS AD FOCUSED IMAGE +5 5 WAVELENGTHS BD FOCUSED IMAGE +6 6 WAVELENGTHS CD FOCUSED IMAGE +7 7 WAVELENGTHS CC' FOCUSED IMAGE +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/2146.table b/definitions/bufr/tables/0/wmo/40/codetables/2146.table new file mode 100644 index 000000000..871b35709 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/2146.table @@ -0,0 +1,11 @@ +0 0 ON DIRECT SUN +1 1 ON DIRECT MOON +2 2 ON BLUE ZENITH SKY +3 3 ON ZENITH CLOUD (UNIFORM STRATIFIED LAYER OF SMALL OPACITY) +4 4 ON ZENITH CLOUD (UNIFORM OR MODERATELY VARIABLE LAYER OF MEDIUM OPACITY) +5 5 ON ZENITH CLOUD (UNIFORM OR MODERATELY VARIABLE LAYER OF LARGE OPACITY) +6 6 ON ZENITH CLOUD (HIGHLY VARIABLE OPACITY, WITH OR WITHOUT PRECIPITATION) +7 7 ON ZENITH CLOUD (FOG) +8 8 ON ZENITH HAZE +9 9 ON DIRECT SUN THROUGH THIN CLOUD, FOG OR HAZE +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/2147.table b/definitions/bufr/tables/0/wmo/40/codetables/2147.table new file mode 100644 index 000000000..5ef81f4a8 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/2147.table @@ -0,0 +1,11 @@ +0 0 RESERVED +1 1 DIRECT LEASED CIRCUIT +2 2 DIALLED UP CONNECTION +3 3 INTERNET ISP +4 4 DCP VIA SATELLITE (MTSAT, METEOSAT, ETC.) +5 5 VSAT +6 6 GAN, BGAN +7 7 THISS TERMINAL +8 8 IRIDIUM SATELLITES +9 9 MOBILE TELEPHONY +63 63 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/2148.table b/definitions/bufr/tables/0/wmo/40/codetables/2148.table new file mode 100644 index 000000000..7d8ca51e3 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/2148.table @@ -0,0 +1,12 @@ +0 0 RESERVED +1 1 ARGOS +2 2 GPS +3 3 GOES DCP +4 4 METEOSAT DCP +5 5 ORBCOMM +6 6 INMARSAT +7 7 IRIDIUM +8 8 IRIDIUM AND GPS +9 9 ARGOS-3 +10 10 ARGOS-4 +31 31 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/2149.table b/definitions/bufr/tables/0/wmo/40/codetables/2149.table new file mode 100644 index 000000000..04638d229 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/2149.table @@ -0,0 +1,38 @@ +0 0 UNSPECIFIED DRIFTING BUOY +1 1 STANDARD LAGRANGIAN DRIFTER (GLOBAL DRIFTER PROGRAMME) +2 2 STANDARD FGGE TYPE DRIFTING BUOY (NON-LAGRANGIAN METEOROLOGICAL DRIFTING BUOY) +3 3 WIND MEASURING FGGE TYPE DRIFTING BUOY (NON-LAGRANGIAN METEOROLOGICAL DRIFTING BUOY) +4 4 ICE DRIFTER +5 5 SVPG STANDARD LAGRANGIAN DRIFTER WITH GPS +6 6 SVP-HR DRIFTER WITH HIGH-RESOLUTION TEMPERATURE OR THERMISTOR STRING +7 7 RESERVED +8 8 UNSPECIFIED SUBSURFACE FLOAT +9 9 SOFAR +10 10 ALACE +11 11 MARVOR +12 12 RAFOS +13 13 PROVOR +14 14 SOLO +15 15 APEX +16 16 UNSPECIFIED MOORED BUOY +17 17 NOMAD +18 18 3-METRE DISCUS +19 19 10-12-METRE DISCUS +20 20 ODAS 30 SERIES +21 21 ATLAS (E.G. TAO AREA) +22 22 TRITON BUOY +23 23 FLEX MOORING (E.G. TIP AREA) +24 24 OMNIDIRECTIONAL WAVERIDER +25 25 DIRECTIONAL WAVERIDER +26 26 SUBSURFACE ARGO FLOAT +27 27 PALACE +28 28 NEMO +29 29 NINJA +30 30 ICE BUOY/FLOAT (POPS OR ITP) +34 34 MOORING OCEANOGRAPHIC +35 35 MOORING METEOROLOGICAL +36 36 MOORING MULTIDISCIPLINARY (OCEANSITES) +37 37 MOORING TIDE GAUGE OR TSUNAMI BUOY +38 38 ICE BEACON +39 39 ICE MASS BALANCE BUOY +63 63 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/2150.table b/definitions/bufr/tables/0/wmo/40/codetables/2150.table new file mode 100644 index 000000000..8193b575a --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/2150.table @@ -0,0 +1,55 @@ +0 0 RESERVED +1 1 HIRS 1 +2 2 HIRS 2 +3 3 HIRS 3 +4 4 HIRS 4 +5 5 HIRS 5 +6 6 HIRS 6 +7 7 HIRS 7 +8 8 HIRS 8 +9 9 HIRS 9 +10 10 HIRS 10 +11 11 HIRS 11 +12 12 HIRS 12 +13 13 HIRS 13 +14 14 HIRS 14 +15 15 HIRS 15 +16 16 HIRS 16 +17 17 HIRS 17 +18 18 HIRS 18 +19 19 HIRS 19 +20 20 HIRS 20 +21 21 MSU 1 +22 22 MSU 2 +23 23 MSU 3 +24 24 MSU 4 +25 25 SSU 1 +26 26 SSU 2 +27 27 SSU 3 +28 28 AMSU-A 1 +29 29 AMSU-A 2 +30 30 AMSU-A 3 +31 31 AMSU-A 4 +32 32 AMSU-A 5 +33 33 AMSU-A 6 +34 34 AMSU-A 7 +35 35 AMSU-A 8 +36 36 AMSU-A 9 +37 37 AMSU-A 10 +38 38 AMSU-A 11 +39 39 AMSU-A 12 +40 40 AMSU-A 13 +41 41 AMSU-A 14 +42 42 AMSU-A 15 +43 43 AMSU-B 1 / MHS 1 +44 44 AMSU-B 2 / MHS 2 +45 45 AMSU-B 3 / MHS 3 +46 46 AMSU-B 4 / MHS 4 +47 47 AMSU-B 5 / MHS 5 +48 48 AVHRR 1 +49 49 AVHRR 2 +50 50 AVHRR 3A +51 51 AVHRR 3B +52 52 AVHRR 4 +53 53 AVHRR 5 +63 63 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/2151.table b/definitions/bufr/tables/0/wmo/40/codetables/2151.table new file mode 100644 index 000000000..45c80df10 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/2151.table @@ -0,0 +1,11 @@ +0 0 HIRS +1 1 MSU +2 2 SSU +3 3 AMSU-A1-1 +4 4 AMSU-A1-2 +5 5 AMSU-A2 +6 6 AMSU-B +7 7 AVHRR +8 8 RESERVED +9 9 MHS +2047 2047 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/2152.table b/definitions/bufr/tables/0/wmo/40/codetables/2152.table new file mode 100644 index 000000000..880c384cf --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/2152.table @@ -0,0 +1,13 @@ +1 1 HIGH-RESOLUTION INFRARED SOUNDER (HIRS) +2 2 MICROWAVE SOUNDING UNIT (MSU) +3 3 STRATOSPHERIC SOUNDING UNIT (SSU) +4 4 AMI WIND MODE +5 5 AMI WAVE MODE +6 6 AMI IMAGE MODE +7 7 RADAR ALTIMETER +8 8 ATSR +9 9 GEOSTATIONARY IMAGER +10 10 GEOSTATIONARY SOUNDER +11 11 GEOSTATIONARY EARTH RADIATION (GERB) +12 12 MULTI-CHANNEL SCANNING RADIOMETER +13 13 POLAR-ORBITING IMAGER diff --git a/definitions/bufr/tables/0/wmo/40/codetables/2158.table b/definitions/bufr/tables/0/wmo/40/codetables/2158.table new file mode 100644 index 000000000..97c4449c5 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/2158.table @@ -0,0 +1,8 @@ +1 1 MISMATCH IN RED VEC HPA +2 2 MISMATCH IN RED VEC RFSS +3 3 PTR CALIBRATION BAND 320 MHZ (KU) +4 4 PTR CALIBRATION BAND 80 MHZ (KU) +5 5 PTR CALIBRATION BAND 20 MHZ (KU) +6 6 PTR CALIBRATION BAND 160 MHZ (S) +7 7 KU FLIGHT CALIBRATION PARAMETERS AVAILABLE +8 8 S FLIGHT CALIBRATION PARAMETERS AVAILABLE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/2159.table b/definitions/bufr/tables/0/wmo/40/codetables/2159.table new file mode 100644 index 000000000..63cb87c78 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/2159.table @@ -0,0 +1,7 @@ +1 1 TEMPERATURE INCONSISTENCY +2 2 DATA IS MISSING +3 3 REDUNDANCY CHANNEL +4 4 POWER BUS PROTECTION +5 5 OVERVOLTAGE/OVERLOAD PROTECTION +6 6 RESERVED +7 7 RESERVED diff --git a/definitions/bufr/tables/0/wmo/40/codetables/2160.table b/definitions/bufr/tables/0/wmo/40/codetables/2160.table new file mode 100644 index 000000000..fd7f37274 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/2160.table @@ -0,0 +1,11 @@ +0 0 RESERVED +1 1 10 TO LESS THAN 20 MM +2 2 RESERVED +3 3 20 TO LESS THAN 40 MM +4 4 RESERVED +5 5 40 TO LESS THAN 60 MM +6 6 RESERVED +7 7 60 TO LESS THAN 90 MM +8 8 90 TO LESS THAN 110 MM +9 9 110 MM AND GREATER +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/2161.table b/definitions/bufr/tables/0/wmo/40/codetables/2161.table new file mode 100644 index 000000000..55b88f4de --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/2161.table @@ -0,0 +1,5 @@ +11 11 WIND HEIGHT CALCULATED FROM MEDIAN CLOUD-TOP PRESSURE OF TARGET +12 12 TARGET IS CLOUDY +13 13 LOW-LEVEL INVERSION +14 14 CROSS CORRELATION CONTRIBUTION (CCC) METHOD +15 15 NESTED TRACKING diff --git a/definitions/bufr/tables/0/wmo/40/codetables/2162.table b/definitions/bufr/tables/0/wmo/40/codetables/2162.table new file mode 100644 index 000000000..510f09aa3 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/2162.table @@ -0,0 +1,19 @@ +0 0 AUTO EDITOR +1 1 IRW HEIGHT ASSIGNMENT +2 2 WV HEIGHT ASSIGNMENT +3 3 H2O INTERCEPT HEIGHT ASSIGNMENT +4 4 CO2 SLICING HEIGHT ASSIGNMENT +5 5 LOW PIXEL MAX GRADIENT +6 6 HIGHER PIXEL MAX GRADIENT +7 7 PRIMARY HEIGHT ASSIGNMENT +8 8 LAYER THICKNESS ASSIGNMENT +9 9 CUMULATIVE CONTRIBUTION FUNCTION - 10 PER CENT HEIGHT +10 10 CUMULATIVE CONTRIBUTION FUNCTION - 50 PER CENT HEIGHT +11 11 CUMULATIVE CONTRIBUTION FUNCTION - 90 PER CENT HEIGHT +12 12 CUMULATIVE CONTRIBUTION FUNCTION - HEIGHT OF MAXIMUM GRADIENT +13 13 IR/TWO WV CHANNEL RATIONING METHOD +14 14 COMPOSITE HEIGHT ASSIGNMENT +15 15 OPTIMAL ESTIMATION +16 16 INVERSION CORRECTION +17 17 GEOMETRIC HEIGHT ASSIGNMENT +63 63 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/2163.table b/definitions/bufr/tables/0/wmo/40/codetables/2163.table new file mode 100644 index 000000000..8cac63196 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/2163.table @@ -0,0 +1,16 @@ +0 0 AUTO EDITOR +1 1 IRW HEIGHT ASSIGNMENT +2 2 WV HEIGHT ASSIGNMENT +3 3 H2O INTERCEPT HEIGHT ASSIGNMENT +4 4 CO2 SLICING HEIGHT ASSIGNMENT +5 5 LOW PIXEL MAX GRADIENT +6 6 HIGHER PIXEL MAX GRADIENT +7 7 PRIMARY HEIGHT ASSIGNMENT +8 8 LAYER THICKNESS ASSIGNMENT +9 9 CUMULATIVE CONTRIBUTION FUNCTION - 10 PER CENT HEIGHT +10 10 CUMULATIVE CONTRIBUTION FUNCTION - 50 PER CENT HEIGHT +11 11 CUMULATIVE CONTRIBUTION FUNCTION - 90 PER CENT HEIGHT +12 12 CUMULATIVE CONTRIBUTION FUNCTION - HEIGHT OF MAXIMUM GRADIENT +13 13 IR / TWO WV CHANNEL RATIOING METHOD +14 14 COMPOSITE HEIGHT ASSIGNMENT +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/2164.table b/definitions/bufr/tables/0/wmo/40/codetables/2164.table new file mode 100644 index 000000000..4bf9aa961 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/2164.table @@ -0,0 +1,5 @@ +0 0 LP - NORMS LEAST SQUARE MINIMUM +1 1 EN - EUCLIDEAN NORM WITH RADIANCE CORRELATION +2 2 CC - CROSS CORRELATION +3 3 STEREO MATCHING +7 7 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/2165.table b/definitions/bufr/tables/0/wmo/40/codetables/2165.table new file mode 100644 index 000000000..628be0e75 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/2165.table @@ -0,0 +1,7 @@ +1 1 CLEAR PATH +2 2 PARTLY CLOUDY PATH +3 3 CLOUDY PATH +4 4 APODIZED +5 5 UNAPODIZED +6 6 RECONSTRUCTED +7 7 CLOUD CLEARED diff --git a/definitions/bufr/tables/0/wmo/40/codetables/2166.table b/definitions/bufr/tables/0/wmo/40/codetables/2166.table new file mode 100644 index 000000000..efac38f8d --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/2166.table @@ -0,0 +1,6 @@ +0 0 TYPE NOT DEFINED +1 1 AUTOMATED STATISTICAL REGRESSION +2 2 CLEAR PATH +3 3 PARTLY CLOUDY PATH +4 4 CLOUDY PATH +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/2167.table b/definitions/bufr/tables/0/wmo/40/codetables/2167.table new file mode 100644 index 000000000..acb2f9d9c --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/2167.table @@ -0,0 +1,4 @@ +0 0 METHOD NOT DEFINED +1 1 1B RAW RADIANCE +2 2 PROCESSED RADIANCE +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/2169.table b/definitions/bufr/tables/0/wmo/40/codetables/2169.table new file mode 100644 index 000000000..bd31667d0 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/2169.table @@ -0,0 +1,5 @@ +0 0 CUP ROTOR +1 1 PROPELLER ROTOR +2 2 WIND OBSERVATION THROUGH AMBIENT NOISE (WOTAN) +3 3 SONIC +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/2170.table b/definitions/bufr/tables/0/wmo/40/codetables/2170.table new file mode 100644 index 000000000..05bab00d7 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/2170.table @@ -0,0 +1,5 @@ +0 0 SPECTRASENSORS WVSS-II, VERSION 1 +1 1 SPECTRASENSORS WVSS-II, VERSION 2 +2 2 SPECTRASENSORS WVSS-II, VERSION 3 +62 62 OTHER +63 63 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/2172.table b/definitions/bufr/tables/0/wmo/40/codetables/2172.table new file mode 100644 index 000000000..e10ef52b8 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/2172.table @@ -0,0 +1,5 @@ +0 0 RESERVED +1 1 RETRIEVAL FROM A NADIR SOUNDING +2 2 RETRIEVAL FROM A LIMB SOUNDING +3 3 RETRIEVAL FROM AN OCCULTATION SOUNDING +255 255 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/2175.table b/definitions/bufr/tables/0/wmo/40/codetables/2175.table new file mode 100644 index 000000000..2cf2a3d55 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/2175.table @@ -0,0 +1,9 @@ +0 0 MANUAL MEASUREMENT +1 1 TIPPING BUCKET METHOD +2 2 WEIGHING METHOD +3 3 OPTICAL METHOD +4 4 PRESSURE METHOD +5 5 FLOAT METHOD +6 6 DROP COUNTER METHOD +14 14 OTHERS +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/2176.table b/definitions/bufr/tables/0/wmo/40/codetables/2176.table new file mode 100644 index 000000000..2c27a6f91 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/2176.table @@ -0,0 +1,6 @@ +0 0 MANUAL OBSERVATION +1 1 VIDEO CAMERA METHOD +2 2 INFRARED METHOD +3 3 LASER METHOD +14 14 OTHERS +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/2177.table b/definitions/bufr/tables/0/wmo/40/codetables/2177.table new file mode 100644 index 000000000..e7bb67a7d --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/2177.table @@ -0,0 +1,6 @@ +0 0 MANUAL OBSERVATION +1 1 ULTRASONIC METHOD +2 2 VIDEO CAMERA METHOD +3 3 LASER METHOD +14 14 OTHERS +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/2178.table b/definitions/bufr/tables/0/wmo/40/codetables/2178.table new file mode 100644 index 000000000..f4f8b592c --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/2178.table @@ -0,0 +1,5 @@ +0 0 MANUAL OBSERVATION +1 1 OPTICAL METHOD +2 2 CAPACITIVE METHOD +14 14 OTHERS +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/2179.table b/definitions/bufr/tables/0/wmo/40/codetables/2179.table new file mode 100644 index 000000000..9e9ba189a --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/2179.table @@ -0,0 +1,6 @@ +0 0 MANUAL OBSERVATION +1 1 VAISALA ALGORITHM +2 2 ASOS (FAA) ALGORITHM +3 3 AWOS (CANADA) ALGORITHM +14 14 OTHERS +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/2180.table b/definitions/bufr/tables/0/wmo/40/codetables/2180.table new file mode 100644 index 000000000..0b21b2c26 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/2180.table @@ -0,0 +1,8 @@ +0 0 MANUAL OBSERVATION +1 1 OPTICAL SCATTER SYSTEM COMBINED WITH PRECIPITATION OCCURRENCE SENSING SYSTEM +2 2 FORWARD AND/OR BACKSCATTER SYSTEM OF VISIBLE LIGHT +3 3 FORWARD AND/OR BACKSCATTER SYSTEM OF INFRARED LIGHT +4 4 INFRARED LIGHT EMITTING DIODE (IRED) SYSTEM +5 5 DOPPLER RADAR SYSTEM +14 14 OTHERS +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/2181.table b/definitions/bufr/tables/0/wmo/40/codetables/2181.table new file mode 100644 index 000000000..5096dc48a --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/2181.table @@ -0,0 +1,5 @@ +1 1 RAIN DETECTOR +2 2 FREEZING RAIN SENSOR +3 3 ICE DETECTION SENSOR +4 4 HAIL AND ICE PELLET SENSOR +20 20 OTHERS diff --git a/definitions/bufr/tables/0/wmo/40/codetables/2182.table b/definitions/bufr/tables/0/wmo/40/codetables/2182.table new file mode 100644 index 000000000..4ffab2652 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/2182.table @@ -0,0 +1,7 @@ +0 0 MANUAL MEASUREMENT +1 1 TRANSMISSOMETER SYSTEM (BASE > 25 M) +2 2 TRANSMISSOMETER SYSTEM (BASE < 25 M) +3 3 FORWARD SCATTER SYSTEM +4 4 BACKSCATTER SYSTEM +14 14 OTHERS +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/2183.table b/definitions/bufr/tables/0/wmo/40/codetables/2183.table new file mode 100644 index 000000000..a804ea1e1 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/2183.table @@ -0,0 +1,9 @@ +0 0 MANUAL OBSERVATION +1 1 CEILOMETER SYSTEM +2 2 INFRARED CAMERA SYSTEM +3 3 MICROWAVE VISUAL CAMERA SYSTEM +4 4 SKY IMAGER SYSTEM +5 5 VIDEO TIME-LAPSED CAMERA SYSTEM +6 6 MICROPULSE LIDAR (MPL) SYSTEM +14 14 OTHERS +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/2184.table b/definitions/bufr/tables/0/wmo/40/codetables/2184.table new file mode 100644 index 000000000..cf5ee84ac --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/2184.table @@ -0,0 +1,9 @@ +0 0 MANUAL OBSERVATION +1 1 LIGHTNING IMAGING SENSOR +2 2 ELECTRICAL STORM IDENTIFICATION SENSOR +3 3 MAGNETIC FINDER SENSOR +4 4 LIGHTNING STRIKE SENSOR +5 5 FLASH COUNTER +6 6 ATDNET VLF WAVEFORM CORRELATED SENSOR +14 14 OTHERS +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/2185.table b/definitions/bufr/tables/0/wmo/40/codetables/2185.table new file mode 100644 index 000000000..45b081051 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/2185.table @@ -0,0 +1,7 @@ +0 0 MANUAL MEASUREMENT +1 1 BALANCED FLOATING METHOD +2 2 PRESSURE METHOD +3 3 ULTRASONIC METHOD +4 4 HYDRAULIC METHOD +14 14 OTHERS +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/2186.table b/definitions/bufr/tables/0/wmo/40/codetables/2186.table new file mode 100644 index 000000000..2a9e71004 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/2186.table @@ -0,0 +1,24 @@ +1 1 PRECIPITATION-UNKNOWN TYPE +2 2 LIQUID PRECIPITATION NOT FREEZING +3 3 LIQUID FREEZING PRECIPITATION +4 4 DRIZZLE +5 5 RAIN +6 6 SOLID PRECIPITATION +7 7 SNOW +8 8 SNOW GRAINS +9 9 SNOW PELLETS +10 10 ICE PELLETS +11 11 ICE CRYSTALS +12 12 DIAMOND DUST +13 13 SMALL HAIL +14 14 HAIL +15 15 GLAZE +16 16 RIME +17 17 SOFT RIME +18 18 HARD RIME +19 19 CLEAR ICE +20 20 WET SNOW +21 21 HOAR FROST +22 22 DEW +23 23 WHITE DEW +24 24 CONVECTIVE PRECIPITATION diff --git a/definitions/bufr/tables/0/wmo/40/codetables/2187.table b/definitions/bufr/tables/0/wmo/40/codetables/2187.table new file mode 100644 index 000000000..def3d2feb --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/2187.table @@ -0,0 +1,11 @@ +1 1 DUST/SAND WHIRL +2 2 SQUALLS +3 3 SAND STORM +4 4 DUST STORM +5 5 LIGHTNING - CLOUD TO SURFACE +6 6 LIGHTNING - CLOUD TO CLOUD +7 7 LIGHTNING - DISTANT +8 8 THUNDERSTORM +9 9 FUNNEL CLOUD NOT TOUCHING SURFACE +10 10 FUNNEL CLOUD TOUCHING SURFACE +11 11 SPRAY diff --git a/definitions/bufr/tables/0/wmo/40/codetables/2188.table b/definitions/bufr/tables/0/wmo/40/codetables/2188.table new file mode 100644 index 000000000..bb8114ca8 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/2188.table @@ -0,0 +1,10 @@ +1 1 FOG +2 2 ICE FOG +3 3 STEAM FOG +7 7 MIST +8 8 HAZE +9 9 SMOKE +10 10 VOLCANIC ASH +11 11 DUST +12 12 SAND +13 13 SNOW diff --git a/definitions/bufr/tables/0/wmo/40/codetables/2189.table b/definitions/bufr/tables/0/wmo/40/codetables/2189.table new file mode 100644 index 000000000..61ac9e322 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/2189.table @@ -0,0 +1,4 @@ +1 1 MANUAL OBSERVATION +2 2 ALL LIGHTNING STRIKES WITHOUT DISCRIMINATION +3 3 LIGHTNING STRIKES CLOUD TO GROUND ONLY +4 4 ALL LIGHTNING STRIKES WITH DISCRIMINATION BETWEEN CLOUD TO GROUND AND CLOUD TO CLOUD diff --git a/definitions/bufr/tables/0/wmo/40/codetables/2191.table b/definitions/bufr/tables/0/wmo/40/codetables/2191.table new file mode 100644 index 000000000..2e96256c7 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/2191.table @@ -0,0 +1,4 @@ +0 0 GEOPOTENTIAL HEIGHT CALCULATED FROM PRESSURE +1 1 GEOPOTENTIAL HEIGHT CALCULATED FROM GPS HEIGHT +2 2 GEOPOTENTIAL HEIGHT CALCULATED FROM RADAR HEIGHT +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/22056.table b/definitions/bufr/tables/0/wmo/40/codetables/22056.table new file mode 100644 index 000000000..28ddbf4e4 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/22056.table @@ -0,0 +1,4 @@ +0 0 UPWARDS PROFILE +1 1 DOWNWARDS PROFILE +2 2 HORIZONTAL +3 3 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/22060.table b/definitions/bufr/tables/0/wmo/40/codetables/22060.table new file mode 100644 index 000000000..b73ad3235 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/22060.table @@ -0,0 +1,4 @@ +0 0 DROGUE IS DETACHED +1 1 DROGUE IS ATTACHED +2 2 DROGUE STATUS UNKNOWN +7 7 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/22061.table b/definitions/bufr/tables/0/wmo/40/codetables/22061.table new file mode 100644 index 000000000..aa8c62bae --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/22061.table @@ -0,0 +1,11 @@ +0 0 CALM (GLASSY) +1 1 CALM (RIPPLED) +2 2 SMOOTH (WAVELETS) +3 3 SLIGHT +4 4 MODERATE +5 5 ROUGH +6 6 VERY ROUGH +7 7 HIGH +8 8 VERY HIGH +9 9 PHENOMENAL +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/22067.table b/definitions/bufr/tables/0/wmo/40/codetables/22067.table new file mode 100644 index 000000000..7225c44b5 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/22067.table @@ -0,0 +1,118 @@ +1 1 SIPPICAN T-4 +2 2 SIPPICAN T-4 +11 11 SIPPICAN T-5 +21 21 SIPPICAN FAST DEEP +31 31 SIPPICAN T-6 +32 32 SIPPICAN T-6 +41 41 SIPPICAN T-7 +42 42 SIPPICAN T-7 +51 51 SIPPICAN DEEP BLUE +52 52 SIPPICAN DEEP BLUE +61 61 SIPPICAN T-10 +71 71 SIPPICAN T-11 +81 81 SIPPICAN AXBT (300 M PROBES) +201 201 TSK T-4 +202 202 TSK T-4 +211 211 TSK T-6 +212 212 TSK T-6 +221 221 TSK T-7 +222 222 TSK T-7 +231 231 TSK T-5 +241 241 TSK T-10 +251 251 TSK DEEP BLUE +252 252 TSK DEEP BLUE +261 261 TSK AXBT +401 401 SPARTON XBT-1 +411 411 SPARTON XBT-3 +421 421 SPARTON XBT-4 +431 431 SPARTON XBT-5 +441 441 SPARTON XBT-5DB +451 451 SPARTON XBT-6 +461 461 SPARTON XBT-7 +462 462 SPARTON XBT-7 +471 471 SPARTON XBT-7DB +481 481 SPARTON XBT-10 +491 491 SPARTON XBT-20 +501 501 SPARTON XBT-20DB +510 510 SPARTON 536 AXBT +700 700 SIPPICAN XCTD STANDARD +710 710 SIPPICAN XCTD DEEP +720 720 SIPPICAN AXCTD +730 730 SIPPICAN SXCTD +741 741 TSK XCTD/XCTD-1/XCTD-1N +742 742 TSK XCTD-2/XCTD-2N +743 743 TSK XCTD-2F +744 744 TSK XCTD-3/XCTD-3N +745 745 TSK XCTD-4/XCTD-4N +751 751 TSK AXCTD +780 780 SEA-BIRD SBE21 SEACAT THERMOSALINOGRAPH +781 781 SEA-BIRD SBE45 MICROTSG THERMOSALINOGRAPH +800 800 MECHANICAL BT +810 810 HYDROCAST +820 820 THERMISTOR CHAIN +825 825 TEMPERATURE (SONIC) AND PRESSURE PROBES +830 830 CTD +831 831 CTD-P-ALACE FLOAT +834 834 PROVOR V SBE +835 835 PROVOR IV +836 836 PROVOR III +837 837 ARVOR_C, SBE CONDUCTIVITY SENSOR +838 838 ARVOR_D, SBE CONDUCTIVITY SENSOR +839 839 PROVOR-II, SBE CONDUCTIVITY SENSOR +840 840 PROVOR, NO CONDUCTIVITY SENSOR +841 841 PROVOR, SEA-BIRD CONDUCTIVITY SENSOR +842 842 PROVOR, FSI CONDUCTIVITY SENSOR +843 843 POLAR OCEAN PROFILING SYSTEM (POPS), PROVOR, SBE CTD +844 844 PROFILING FLOAT, ARVOR, SEA-BIRD CONDUCTIVITY SENSOR +845 845 WEBB RESEARCH, NO CONDUCTIVITY SENSOR +846 846 WEBB RESEARCH, SEA-BIRD CONDUCTIVITY SENSOR +847 847 WEBB RESEARCH, FSI CONDUCTIVITY SENSOR +848 848 APEX-EM, SBE CONDUCTIVITY SENSOR +849 849 APEX_D, SBE CONDUCTIVITY SENSOR +850 850 SOLO, NO CONDUCTIVITY SENSOR +851 851 SOLO, SEA-BIRD CONDUCTIVITY SENSOR +852 852 SOLO, FSI CONDUCTIVITY SENSOR +853 853 PROFILING FLOAT, SOLO2 (SCRIPPS), SEA-BIRD CONDUCTIVITY SENSOR +854 854 S2A, SBE CONDUCTIVITY SENSOR +855 855 PROFILING FLOAT, NINJA, NO CONDUCTIVITY SENSOR +856 856 PROFILING FLOAT, NINJA, SBE CONDUCTIVITY SENSOR +857 857 PROFILING FLOAT, NINJA, FSI CONDUCTIVITY SENSOR +858 858 PROFILING FLOAT, NINJA, TSK CONDUCTIVITY SENSOR +859 859 PROFILING FLOAT, NEMO, NO CONDUCTIVITY SENSOR +860 860 PROFILING FLOAT, NEMO, SBE CONDUCTIVITY SENSOR +861 861 PROFILING FLOAT, NEMO, FSI CONDUCTIVITY SENSOR +862 862 SOLO_D, SBE CONDUCTIVITY SENSOR +863 863 NAVIS-A, SBE CONDUCTIVITY SENSOR +864 864 NINJA_D, SBE CONDUCTIVITY SENSOR +865 865 NOVA, SBE CONDUCTIVITY SENSOR +866 866 ALAMO, NO CONDUCTIVITY SENSOR +867 867 ALAMO, RBR CONDUCTIVITY SENSOR +868 868 ALAMO, SBE CONDUCTIVITY SENSOR +869 869 RESERVED +870 870 HM2000 +871 871 COPEX +872 872 S2X +873 873 ALTO +874 874 SOLO_D_MRV +875 875 ALTO RBR +876 876 ALTO SBE +877 877 APEX RBR +878 878 ARVOR RBR +879 879 SOLO II RBR +880 880 S2A RBR +881 881 HM4000 SBE +882 882 HM6000 SBE +900 900 SIPPICAN LMP-5 XBT +901 901 ICE-TETHERED PROFILER (ITP), SBE CTD +902 902 BROOKE OCEAN MOVING VESSEL PROFILER (MVP) +903 903 SEA-BIRD CTD +904 904 AML OCEANOGRAPHIC CTD +905 905 FALMOUTH SCIENTIFIC CTD +906 906 OCEAN SENSORS CTD +907 907 VALEPORT CTD +908 908 OCEANSCIENCE MVP +909 909 IDRONAUT CTD +910 910 SEA-BIRD SBE 38 +995 995 INSTRUMENT ATTACHED TO MARINE MAMMALS +996 996 INSTRUMENT ATTACHED TO ANIMALS OTHER THAN MARINE MAMMALS +1023 1023 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/22068.table b/definitions/bufr/tables/0/wmo/40/codetables/22068.table new file mode 100644 index 000000000..f6ddeb270 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/22068.table @@ -0,0 +1,43 @@ +1 1 SIPPICAN STRIP CHART RECORDER +2 2 SIPPICAN MK2A/SSQ-61 +3 3 SIPPICAN MK-9 +4 4 SIPPICAN AN/BHQ-7/MK8 +5 5 SIPPICAN MK-12 +6 6 SIPPICAN MK-21 +7 7 SIPPICAN MK-8 LINEAR RECORDER +8 8 SIPPICAN MK-10 +10 10 SPARTON SOC BT/SV PROCESSOR MODEL 100 +11 11 LOCKHEED-SANDERS MODEL OL5005 +20 20 ARGOS XBT-ST +21 21 CLS-ARGOS/PROTECNO XBT-ST MODEL-1 +22 22 CLS-ARGOS/PROTECNO XBT-ST MODEL-2 +30 30 BATHY SYSTEMS SA-810 +31 31 SCRIPPS METROBYTE CONTROLLER +32 32 MURAYAMA DENKI Z-60-16 III +33 33 MURAYAMA DENKI Z-60-16 II +34 34 PROTECNO ETSM2 +35 35 NAUTILUS MARINE SERVICE NMS-XBT +40 40 TSK MK-2A +41 41 TSK MK-2S +42 42 TSK MK-30 +43 43 TSK MK-30N +45 45 TSK MK-100 +46 46 TSK MK-130 COMPATIBLE RECORDER FOR BOTH XBT AND XCTD +47 47 TSK MK-130A XCTD RECORDER +48 48 TSK AXBT RECEIVER MK-300 +49 49 TSK MK-150/MK-150N COMPATIBLE RECORDER FOR BOTH XBT AND XCTD +50 50 JMA ASTOS +60 60 ARGOS COMMUNICATIONS, SAMPLING ON UP TRANSIT +61 61 ARGOS COMMUNICATIONS, SAMPLING ON DOWN TRANSIT +62 62 ORBCOMM COMMUNICATIONS, SAMPLING ON UP TRANSIT +63 63 ORBCOMM COMMUNICATIONS, SAMPLING ON DOWN TRANSIT +64 64 IRIDIUM COMMUNICATIONS, SAMPLING ON UP TRANSIT +65 65 IRIDIUM COMMUNICATIONS, SAMPLING ON DOWN TRANSIT +70 70 CSIRO DEVIL-1 XBT ACQUISITION SYSTEM +71 71 CSIRO DEVIL-2 XBT ACQUISITION SYSTEM +72 72 TURO/CSIRO QUOLL XBT ACQUISITION SYSTEM +80 80 APPLIED MICROSYSTEMS LTD., MICRO-SVT&P +81 81 SEA MAMMAL RESEARCH UNIT, UNIV. ST. ANDREWS, UK, UNCORRECTED SALINITY FROM A SEA MAMMAL MOUNTED INSTRUMENT +82 82 SEA MAMMAL RESEARCH UNIT, UNIV. ST. ANDREWS, UK, CORRECTED SALINITY FROM A SEA MAMMAL MOUNTED INSTRUMENT +99 99 UNKNOWN +127 127 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/22120.table b/definitions/bufr/tables/0/wmo/40/codetables/22120.table new file mode 100644 index 000000000..8c747ce66 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/22120.table @@ -0,0 +1,13 @@ +0 0 GOOD DATA +1 1 MAXIMUM (HIGH) WATER LEVEL LIMIT EXCEEDED +2 2 MINIMUM (LOW) WATER LEVEL LIMIT EXCEEDED +3 3 RATE OF CHANGE LIMIT FOR WATER LEVEL EXCEEDED +4 4 FLAT LIMIT FOR WATER LEVEL EXCEEDED +5 5 OBSERVED MINUS PREDICTED WATER LEVEL VALUE LIMIT EXCEEDED +6 6 OBSERVED VALUE FROM PRIMARY WATER LEVEL SENSOR MINUS BACKUP WATER LEVEL SENSOR +7 7 VALUE EXCEEDED SPECIFIED TOLERANCE FROM EXPECTED VALUE +8 8 WATER LEVEL QA PARAMETER (SIGMAS AND/OR OUTLIERS) LIMITS EXCEEDED +9 9 SEA TEMPERATURE OUTSIDE OF EXPECTED RANGE +10 10 MULTIPLE QC CHECKS (ABOVE) FAILED +11 11 NO AUTOMATED WATER LEVEL CHECKS PERFORMED +31 31 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/22121.table b/definitions/bufr/tables/0/wmo/40/codetables/22121.table new file mode 100644 index 000000000..7d4dfa821 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/22121.table @@ -0,0 +1,9 @@ +0 0 OPERATIONAL +1 1 POSSIBLE CLOGGING PROBLEM OR OTHERWISE DEGRADED WATER LEVEL DATA +2 2 POSSIBLE DATUM SHIFT +3 3 UNKNOWN STATUS OF WATER LEVEL SENSOR +4 4 SUSPECTED OR KNOWN SEA TEMPERATURE SENSOR PROBLEM +5 5 MULTIPLE POSSIBLE PROBLEMS (ABOVE) +6 6 BAD DATA - DO NOT DISSEMINATE! +7 7 NO MANUAL WATER LEVEL CHECKS PERFORMED +31 31 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/22122.table b/definitions/bufr/tables/0/wmo/40/codetables/22122.table new file mode 100644 index 000000000..aa9d5ebbe --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/22122.table @@ -0,0 +1,8 @@ +0 0 GOOD DATA FROM ALL SENSORS +1 1 WIND DIRECTION OUTSIDE OF ALLOWABLE RANGE +2 2 WIND SPEED OUTSIDE OF EXPECTED RANGE +3 3 BAROMETRIC PRESSURE OUTSIDE OF EXPECTED RANGE +4 4 AIR TEMPERATURE OUTSIDE OF EXPECTED RANGE +5 5 MULTIPLE SENSORS FAILED QC CHECKS +6 6 NO AUTOMATED METEOROLOGICAL DATA CHECKS PERFORMED +31 31 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/22123.table b/definitions/bufr/tables/0/wmo/40/codetables/22123.table new file mode 100644 index 000000000..acfb61609 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/22123.table @@ -0,0 +1,9 @@ +0 0 OPERATIONAL +1 1 SUSPECTED OR KNOWN PROBLEM WITH WIND SENSOR +2 2 SUSPECTED OR KNOWN PROBLEM WITH BAROMETRIC PRESSURE SENSOR +3 3 SUSPECTED OR KNOWN PROBLEM WITH AIR TEMPERATURE SENSOR +4 4 UNKNOWN STATUS OF ALL SENSORS +5 5 SUSPECTED OR KNOWN PROBLEMS WITH MULTIPLE SENSORS +6 6 BAD DATA - DO NOT DISSEMINATE! +7 7 NO MANUAL METEOROLOGICAL DATA CHECKS PERFORMED +31 31 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/22178.table b/definitions/bufr/tables/0/wmo/40/codetables/22178.table new file mode 100644 index 000000000..355848cc5 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/22178.table @@ -0,0 +1,12 @@ +0 0 UNKNOWN +1 1 LM-2A DECK-MOUNTED +2 2 LM-3A HAND-HELD +3 3 LM-4A THRU-HULL +10 10 AL-12 TSK AUTOLAUNCHER (UP TO 12 PROBES) +20 20 SIO XBT AUTOLAUNCHER (UP TO 6 PROBES) +30 30 AOML XBT V6 AUTOLAUNCHER (UP TO 6 DEEP BLUE PROBES) +31 31 AOML XBT V8.0 AUTOLAUNCHER (UP TO 8 DEEP BLUE PROBES) +32 32 AOML XBT V8.1 AUTOLAUNCHER (UP TO 8 DEEP BLUE AND FAST DEEP PROBES) +90 90 CSIRO DEVIL AUTOLAUNCHER +100 100 MFSTEP AUTOLAUNCHER (MEDITERRANEAN) +255 255 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/23001.table b/definitions/bufr/tables/0/wmo/40/codetables/23001.table new file mode 100644 index 000000000..92ac5deaf --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/23001.table @@ -0,0 +1,5 @@ +0 0 RESERVED +1 1 ARTICLES 1 AND 2 +2 2 ARTICLE 3 +3 3 ARTICLE 5.2 +7 7 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/23002.table b/definitions/bufr/tables/0/wmo/40/codetables/23002.table new file mode 100644 index 000000000..12815c6a8 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/23002.table @@ -0,0 +1,16 @@ +0 0 RESERVED +1 1 NUCLEAR REACTOR ON GROUND +2 2 NUCLEAR REACTOR AT SEA +3 3 NUCLEAR REACTOR IN SPACE +4 4 NUCLEAR FUEL FACILITY +5 5 RADIOACTIVE WASTE MANAGEMENT FACILITY +6 6 TRANSPORT OF NUCLEAR FUEL OR RADIOACTIVE WASTE +7 7 STORAGE OF NUCLEAR FUEL OR RADIOACTIVE WASTE +8 8 MANUFACTURE OF RADIO-ISOTOPES +9 9 USE OF RADIO-ISOTOPES +10 10 STORAGE OF RADIO-ISOTOPES +11 11 DISPOSAL OF RADIO-ISOTOPES +12 12 TRANSPORT OF RADIO-ISOTOPES +13 13 USE OF RADIO-ISOTOPES FOR POWER GENERATION +30 30 OTHER +31 31 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/23003.table b/definitions/bufr/tables/0/wmo/40/codetables/23003.table new file mode 100644 index 000000000..e3e891f9b --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/23003.table @@ -0,0 +1,8 @@ +0 0 NO RELEASE +1 1 RELEASE TO ATMOSPHERE +2 2 RELEASE TO WATER +3 3 RELEASE TO BOTH ATMOSPHERE AND WATER +4 4 EXPECTED RELEASE TO ATMOSPHERE +5 5 EXPECTED RELEASE TO WATER +6 6 EXPECTED RELEASE TO BOTH ATMOSPHERE AND WATER +7 7 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/23004.table b/definitions/bufr/tables/0/wmo/40/codetables/23004.table new file mode 100644 index 000000000..383731cec --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/23004.table @@ -0,0 +1,6 @@ +0 0 NO COUNTERMEASURES +1 1 EVACUATION +2 2 SHELTERING +3 3 PROPHYLAXIS +4 4 WATER +7 7 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/23005.table b/definitions/bufr/tables/0/wmo/40/codetables/23005.table new file mode 100644 index 000000000..c5ff5ae75 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/23005.table @@ -0,0 +1,4 @@ +0 0 INCIDENT STATE DOES NOT UNDERSTAND WHAT HAPPENED +1 1 INCIDENT STATE KNOWS THE CAUSE OF THE INCIDENT +2 2 RESERVED +3 3 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/23006.table b/definitions/bufr/tables/0/wmo/40/codetables/23006.table new file mode 100644 index 000000000..fe7706af4 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/23006.table @@ -0,0 +1,8 @@ +0 0 NO IMPROVEMENT +1 1 UNSTABLE +2 2 NO DETERIORATION +3 3 IMPROVING +4 4 STABLE +5 5 DETERIORATING +6 6 RESERVED +7 7 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/23007.table b/definitions/bufr/tables/0/wmo/40/codetables/23007.table new file mode 100644 index 000000000..59fc043a8 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/23007.table @@ -0,0 +1,5 @@ +0 0 NO RELEASE +1 1 RELEASE HAS STOPPED +2 2 RELEASE +3 3 RELEASE IS CONTINUING +7 7 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/23008.table b/definitions/bufr/tables/0/wmo/40/codetables/23008.table new file mode 100644 index 000000000..4ac5c5837 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/23008.table @@ -0,0 +1,4 @@ +0 0 GASEOUS +1 1 PARTICULATE +2 2 MIXTURE OF GASEOUS AND PARTICULATE +3 3 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/23009.table b/definitions/bufr/tables/0/wmo/40/codetables/23009.table new file mode 100644 index 000000000..4ac5c5837 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/23009.table @@ -0,0 +1,4 @@ +0 0 GASEOUS +1 1 PARTICULATE +2 2 MIXTURE OF GASEOUS AND PARTICULATE +3 3 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/23016.table b/definitions/bufr/tables/0/wmo/40/codetables/23016.table new file mode 100644 index 000000000..ae84bae45 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/23016.table @@ -0,0 +1,4 @@ +0 0 NO SIGNIFICANT CHEMICAL TOXIC HEALTH EFFECT +1 1 SIGNIFICANT CHEMICAL TOXIC HEALTH EFFECT POSSIBLE +2 2 RESERVED +3 3 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/23018.table b/definitions/bufr/tables/0/wmo/40/codetables/23018.table new file mode 100644 index 000000000..ccdcc456d --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/23018.table @@ -0,0 +1,6 @@ +0 0 RELEASE NO LONGER OCCURRING +1 1 RELEASE STILL OCCURRING +2 2 RELEASE EXPECTED TO INCREASE IN NEXT SIX HOURS +3 3 RELEASE EXPECTED TO REMAIN CONSTANT IN NEXT SIX HOURS +4 4 RELEASE EXPECTED TO DECREASE IN NEXT SIX HOURS +7 7 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/23031.table b/definitions/bufr/tables/0/wmo/40/codetables/23031.table new file mode 100644 index 000000000..cf20e26ee --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/23031.table @@ -0,0 +1,4 @@ +0 0 PLUME WILL NOT ENCOUNTER RAIN IN INCIDENT STATE +1 1 PLUME WILL ENCOUNTER RAIN IN INCIDENT STATE +2 2 RESERVED +3 3 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/23032.table b/definitions/bufr/tables/0/wmo/40/codetables/23032.table new file mode 100644 index 000000000..0f439b70d --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/23032.table @@ -0,0 +1,4 @@ +0 0 NO SIGNIFICANT CHANGE EXPECTED WITHIN THE NEXT SIX HOURS +1 1 ANTICIPATED SIGNIFICANT CHANGE EXPECTED WITHIN THE NEXT SIX HOURS +2 2 RESERVED +3 3 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/24003.table b/definitions/bufr/tables/0/wmo/40/codetables/24003.table new file mode 100644 index 000000000..2daa8104b --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/24003.table @@ -0,0 +1,5 @@ +0 0 NOBLE GASES +1 1 IODINES +2 2 CAESIUMS +3 3 TRANSURANICS +31 31 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/25004.table b/definitions/bufr/tables/0/wmo/40/codetables/25004.table new file mode 100644 index 000000000..dfe451727 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/25004.table @@ -0,0 +1,4 @@ +0 0 INCOHERENT +1 1 COHERENT (DOPPLER) +2 2 RESERVED +3 3 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/25005.table b/definitions/bufr/tables/0/wmo/40/codetables/25005.table new file mode 100644 index 000000000..bc693a7bf --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/25005.table @@ -0,0 +1,4 @@ +0 0 LOGARITHM - 2.5 DB +1 1 LINEAR +2 2 SPECIAL +3 3 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/25006.table b/definitions/bufr/tables/0/wmo/40/codetables/25006.table new file mode 100644 index 000000000..bf9d1f52a --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/25006.table @@ -0,0 +1,5 @@ +0 0 ZH TO R CONVERSION +1 1 (ZH, ZDR) TO (NO, DO) TO R +2 2 (Z (F1), Z (F2)) TO ATTENUATION TO R +6 6 OTHER +7 7 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/25009.table b/definitions/bufr/tables/0/wmo/40/codetables/25009.table new file mode 100644 index 000000000..bf34fb227 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/25009.table @@ -0,0 +1,4 @@ +1 1 NONE +2 2 CALIBRATION TARGET OR SIGNAL +3 3 AGAINST RAINGAUGES +4 4 AGAINST OTHER INSTRUMENTS (DISDROMETER - ATTENUATION) diff --git a/definitions/bufr/tables/0/wmo/40/codetables/25010.table b/definitions/bufr/tables/0/wmo/40/codetables/25010.table new file mode 100644 index 000000000..e88b3ca3c --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/25010.table @@ -0,0 +1,8 @@ +0 0 NONE +1 1 MAP +2 2 INSERTION OF HIGHER ELEVATION DATA AND MAP +3 3 ANALYSIS OF THE FLUCTUATING LOGARITHM SIGNAL (CLUTTER DETECTION) +4 4 EXTRACTION OF THE FLUCTUATING PART OF LINEAR SIGNAL (CLUTTER SUPPRESSION) +5 5 CLUTTER SUPPRESSION - DOPPLER +6 6 MULTIPARAMETER ANALYSIS +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/25011.table b/definitions/bufr/tables/0/wmo/40/codetables/25011.table new file mode 100644 index 000000000..f73949830 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/25011.table @@ -0,0 +1,4 @@ +0 0 NONE +1 1 MAP OF CORRECTION FACTORS +2 2 INTERPOLATION (AZIMUTH OR ELEVATION) +3 3 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/25012.table b/definitions/bufr/tables/0/wmo/40/codetables/25012.table new file mode 100644 index 000000000..c869a4ace --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/25012.table @@ -0,0 +1,4 @@ +0 0 HARDWARE +1 1 SOFTWARE +2 2 HARDWARE AND SOFTWARE +3 3 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/25013.table b/definitions/bufr/tables/0/wmo/40/codetables/25013.table new file mode 100644 index 000000000..b91ea71db --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/25013.table @@ -0,0 +1 @@ +1 1 BRIGHT-BAND CORRECTION diff --git a/definitions/bufr/tables/0/wmo/40/codetables/25015.table b/definitions/bufr/tables/0/wmo/40/codetables/25015.table new file mode 100644 index 000000000..043e587b6 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/25015.table @@ -0,0 +1 @@ +1 1 RADOME ATTENUATION CORRECTION diff --git a/definitions/bufr/tables/0/wmo/40/codetables/25017.table b/definitions/bufr/tables/0/wmo/40/codetables/25017.table new file mode 100644 index 000000000..ed48487e1 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/25017.table @@ -0,0 +1 @@ +1 1 PRECIPITATION ATTENUATION CORRECTION diff --git a/definitions/bufr/tables/0/wmo/40/codetables/25020.table b/definitions/bufr/tables/0/wmo/40/codetables/25020.table new file mode 100644 index 000000000..6133da3bf --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/25020.table @@ -0,0 +1,4 @@ +0 0 FFT (FAST FOURIER TRANSFORM) +1 1 PPP (PULSE-PAIR PROCESSING) +2 2 VPC (VECTOR-PHASE CHANGE) +3 3 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/25021.table b/definitions/bufr/tables/0/wmo/40/codetables/25021.table new file mode 100644 index 000000000..314716b3b --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/25021.table @@ -0,0 +1,5 @@ +1 1 SIMPLE AVERAGE +2 2 CONSENSUS AVERAGE +3 3 MEDIAN CHECK +4 4 VERTICAL CONSISTENCY CHECK +5 5 OTHER diff --git a/definitions/bufr/tables/0/wmo/40/codetables/25022.table b/definitions/bufr/tables/0/wmo/40/codetables/25022.table new file mode 100644 index 000000000..95848784f --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/25022.table @@ -0,0 +1,8 @@ +1 1 UNPROCESSED +2 2 LAND SUSPECTED +3 3 WIND SPEED TOO LARGE +4 4 ICE DETECTED +5 5 RAIN DETECTED (MICROWAVE RETRIEVALS ONLY) +6 6 CLOUDY DETECTED (INFRA-RED RETRIEVALS ONLY) +7 7 COSMETIC VALUE +8 8 SST OUT OF RANGE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/25023.table b/definitions/bufr/tables/0/wmo/40/codetables/25023.table new file mode 100644 index 000000000..e4840dc8c --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/25023.table @@ -0,0 +1,8 @@ +1 1 DEFAULT CONFIDENCE VALUE HAS BEEN USED +2 2 DEFAULT BIAS AND STANDARD DEVIATION HAVE BEEN USED +3 3 SUN GLINT SUSPECTED +4 4 SEA ICE RETRIEVAL FOR MICROWAVE DATA +5 5 HIGH WIND SPEED RETRIEVAL +6 6 INACCURATE SST DUE TO LOW SST (< 285K) (ONLY APPLIES TO THE TMI INSTRUMENT) +7 7 RELAXED RAIN CONTAMINATION SUSPECTED +8 8 POTENTIAL SIDE LOBE CONTAMINATION diff --git a/definitions/bufr/tables/0/wmo/40/codetables/25024.table b/definitions/bufr/tables/0/wmo/40/codetables/25024.table new file mode 100644 index 000000000..81b26380c --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/25024.table @@ -0,0 +1,13 @@ +0 0 UNPROCESSED INFRARED RETRIEVAL +1 1 CLOUDY RETRIEVALS +2 2 BAD: DATA THAT ARE PROBABLY CONTAMINATED BY CLOUD +3 3 SUSPECT DATA +4 4 ACCEPTABLE DATA +5 5 EXCELLENT DATA +6 6 COOL SKIN SUSPECTED +10 10 UNPROCESSED MICROWAVE RETRIEVAL +11 11 QUESTIONABLE MICROWAVE RETRIEVAL THAT MAY BE CONTAMINATED +12 12 ACCEPTABLE MICROWAVE RETRIEVAL +13 13 HIGH PROBABILITY OF DIURNAL VARIABILITY +14 14 RESERVED +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/25029.table b/definitions/bufr/tables/0/wmo/40/codetables/25029.table new file mode 100644 index 000000000..fb00d01ca --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/25029.table @@ -0,0 +1,5 @@ +1 1 RESERVED +2 2 CALIBRATION TARGET OR SIGNAL +3 3 AGAINST RAINGAUGES +4 4 AGAINST OTHER INSTRUMENTS (DISDROMETER - ATTENUATION) +5 5 RESERVED diff --git a/definitions/bufr/tables/0/wmo/40/codetables/25030.table b/definitions/bufr/tables/0/wmo/40/codetables/25030.table new file mode 100644 index 000000000..c3235d6e5 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/25030.table @@ -0,0 +1,4 @@ +0 0 RUNNING MEAN SEA-SURFACE TEMPERATURE NOT USED BECAUSE USAGE CRITERIA NOT MET +1 1 RUNNING MEAN SEA-SURFACE TEMPERATURE NOT USED BECAUSE DATA NOT AVAILABLE +2 2 RUNNING MEAN SEA-SURFACE TEMPERATURE USED AS PREDICTOR +3 3 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/25031.table b/definitions/bufr/tables/0/wmo/40/codetables/25031.table new file mode 100644 index 000000000..16ff950a1 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/25031.table @@ -0,0 +1,6 @@ +0 0 RESERVED +1 1 NO THINNING APPLIED (ALL NATIVE MODEL LEVELS ARE INCLUDED FROM BASE TO TOP OF PSEUDO-SOUNDING) +2 2 NATIVE MODEL LEVELS ARE PRESENT ONLY IF THEY ARE SIGNIFICANT LEVELS AS PER REGULATIONS B/C 25 FOR CONVENTIONAL TEMP SOUNDINGS +3 3 A PREDEFINED SUBSET OF NATIVE MODEL LEVELS IS PRESENT +4 4 NO NATIVE MODEL LEVELS ARE PRESENT. ALL PROFILE LEVELS ARE INTERPOLATED TO A PREDEFINED SET OF PRESSURE COORDINATE LEVELS +7 7 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/25032.table b/definitions/bufr/tables/0/wmo/40/codetables/25032.table new file mode 100644 index 000000000..9b894f470 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/25032.table @@ -0,0 +1,4 @@ +0 0 RESERVED +1 1 DATA FROM LOW MODE +2 2 DATA FROM HIGH MODE +3 3 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/25033.table b/definitions/bufr/tables/0/wmo/40/codetables/25033.table new file mode 100644 index 000000000..e7141c078 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/25033.table @@ -0,0 +1,4 @@ +0 0 WIND PROFILER OPERATING IN SUBMODE A +1 1 WIND PROFILER OPERATING IN SUBMODE B +2 2 RESERVED +3 3 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/25034.table b/definitions/bufr/tables/0/wmo/40/codetables/25034.table new file mode 100644 index 000000000..473338a40 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/25034.table @@ -0,0 +1,3 @@ +1 1 TEST A PERFORMED AND FAILED +2 2 TEST B PERFORMED AND FAILED +3 3 TEST RESULTS INCONCLUSIVE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/25035.table b/definitions/bufr/tables/0/wmo/40/codetables/25035.table new file mode 100644 index 000000000..a0c8faa59 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/25035.table @@ -0,0 +1,8 @@ +0 0 NOT DEFINED +1 1 INDIVIDUAL VOLTAGE DEFLECTION +2 2 CURRENT BASED, ABOVE A THRESHOLD +3 3 VOLTAGE BASED, ABOVE A THRESHOLD +4 4 CONSENSUS OF SENSORS, CURRENT ABOVE A THRESHOLD +5 5 CONSENSUS OF SENSORS, VOLTAGE ABOVE A THRESHOLD +6 6 RESERVED +7 7 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/25036.table b/definitions/bufr/tables/0/wmo/40/codetables/25036.table new file mode 100644 index 000000000..79ebd8887 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/25036.table @@ -0,0 +1,4 @@ +0 0 NETWORK OF SEVERAL DIRECTION-FINDERS OPERATING ON THE SAME INDIVIDUAL ATMOSPHERICS +1 1 NETWORK OF SEVERAL ARRIVAL-TIME STATIONS OPERATING ON THE SAME INDIVIDUAL ATMOSPHERICS +6 6 SINGLE STATION RANGE BEARING TECHNIQUE +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/25040.table b/definitions/bufr/tables/0/wmo/40/codetables/25040.table new file mode 100644 index 000000000..3ddf12e20 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/25040.table @@ -0,0 +1,10 @@ +0 0 NON-SPECIFIC MODE +1 1 FIRST GUESS DATA +2 2 CLOUD DATA +3 3 AVERAGE VECTOR DATA +4 4 PRIMARY DATA +5 5 GUESS DATA +6 6 VECTOR DATA +7 7 TRACER DATA; THIS IMAGE +8 8 TRACER DATA TO NEXT IMAGE +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/25041.table b/definitions/bufr/tables/0/wmo/40/codetables/25041.table new file mode 100644 index 000000000..f388da0c2 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/25041.table @@ -0,0 +1,4 @@ +0 0 DIRECTION ORIGINALLY REPORTED IN TRUE DEGREES +1 1 DIRECTION ORIGINALLY REPORTED USING CODE TABLE 0700, FM 13 +2 2 RESERVED +3 3 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/25042.table b/definitions/bufr/tables/0/wmo/40/codetables/25042.table new file mode 100644 index 000000000..f3cf05999 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/25042.table @@ -0,0 +1,4 @@ +0 0 SPEED ORIGINALLY REPORTED IN METRES PER SECOND +1 1 SPEED ORIGINALLY REPORTED USING CODE TABLE 4451, FM 13 +2 2 RESERVED +3 3 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/25053.table b/definitions/bufr/tables/0/wmo/40/codetables/25053.table new file mode 100644 index 000000000..af3413851 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/25053.table @@ -0,0 +1,6 @@ +1 1 GOOD +2 2 REDUNDANT +3 3 QUESTIONABLE +4 4 BAD +5 5 EXPERIMENTAL +6 6 PRECIPITATING diff --git a/definitions/bufr/tables/0/wmo/40/codetables/25063.table b/definitions/bufr/tables/0/wmo/40/codetables/25063.table new file mode 100644 index 000000000..a8970eaf4 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/25063.table @@ -0,0 +1,4 @@ +0 0 NOT DEFINED +1 1 MAIN PROCESSOR +2 2 BACKUP PROCESSOR +255 255 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/25069.table b/definitions/bufr/tables/0/wmo/40/codetables/25069.table new file mode 100644 index 000000000..e627613dd --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/25069.table @@ -0,0 +1,7 @@ +1 1 SMOOTHED +2 2 BASELINE ADJUSTED +3 3 NORMALIZED TIME INTERVAL +4 4 OUTLIER CHECKED +5 5 PLAUSIBILITY CHECKED +6 6 CONSISTENCY CHECKED +7 7 INTERPOLATED diff --git a/definitions/bufr/tables/0/wmo/40/codetables/25086.table b/definitions/bufr/tables/0/wmo/40/codetables/25086.table new file mode 100644 index 000000000..294fa6977 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/25086.table @@ -0,0 +1,4 @@ +0 0 DEPTHS ARE NOT CORRECTED +1 1 DEPTHS ARE CORRECTED +2 2 RESERVED +3 3 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/25090.table b/definitions/bufr/tables/0/wmo/40/codetables/25090.table new file mode 100644 index 000000000..77c509d1a --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/25090.table @@ -0,0 +1,11 @@ +0 0 ORBIT COMPUTED DURING A MANOEUVRE +1 1 ADJUSTED MISSION OPERATIONS ORBIT +2 2 EXTRAPOLATED MISSION OPERATIONS ORBIT +3 3 ADJUSTED (PRELIMINARY/PRECISE) ORBIT +4 4 (PRELIMINARY/PRECISE) ORBIT IS ESTIMATED DURING A MANOEUVRE PERIOD +5 5 (PRELIMINARY/PRECISE) ORBIT IS INTERPOLATED OVER A TRACKING DATA GAP +6 6 (PRELIMINARY/PRECISE) ORBIT IS EXTRAPOLATED FOR A DURATION LESS THAN 1 DAY +7 7 (PRELIMINARY/PRECISE) ORBIT IS EXTRAPOLATED FOR A DURATION THAT RANGES FROM 1 DAY TO 2 DAYS +8 8 (PRELIMINARY/PRECISE) ORBIT IS EXTRAPOLATED FOR A DURATION LARGER THAN 2 DAYS, OR THAT THE ORBIT IS EXTRAPOLATED JUST AFTER A MANOEUVRE +9 9 DORIS DIODE NAVIGATOR ORBIT +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/25093.table b/definitions/bufr/tables/0/wmo/40/codetables/25093.table new file mode 100644 index 000000000..e547e6c81 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/25093.table @@ -0,0 +1,3 @@ +1 1 NO CORRECTION +2 2 VERTICAL VELOCITY CORRECTION +7 7 ALL CORRECTIONS diff --git a/definitions/bufr/tables/0/wmo/40/codetables/25095.table b/definitions/bufr/tables/0/wmo/40/codetables/25095.table new file mode 100644 index 000000000..c446a5045 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/25095.table @@ -0,0 +1 @@ +1 1 ALTIMETER OPERATING (0 IF NOMINAL, 1 IF BACKUP) diff --git a/definitions/bufr/tables/0/wmo/40/codetables/25096.table b/definitions/bufr/tables/0/wmo/40/codetables/25096.table new file mode 100644 index 000000000..89dcc3914 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/25096.table @@ -0,0 +1,4 @@ +1 1 MODE INDICATOR (0 IF MODE 2, 1 IF MODE 1) +2 2 MODE 1 CALIBRATION SEQUENCE INDICATOR (0 IF NORMAL DATA TAKING EITHER MODE 1 OR 2, 1 IF MODE 1 CALIBRATION SEQUENCE) BITS 3 AND 4 INDICATE ACTIVE 23.8 GHZ CHANNEL(S): +3 3 CHANNEL 2 (0 IF ON, 1 IF OFF) +4 4 CHANNEL 3 (0 IF ON, 1 IF OFF) diff --git a/definitions/bufr/tables/0/wmo/40/codetables/25097.table b/definitions/bufr/tables/0/wmo/40/codetables/25097.table new file mode 100644 index 000000000..d4e1e4646 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/25097.table @@ -0,0 +1,11 @@ +0 0 RANGES BETWEEN 0 AND 30 CM +1 1 RANGES BETWEEN 30 AND 60 CM +2 2 RANGES BETWEEN 60 AND 90 CM +3 3 RANGES BETWEEN 90 AND 120 CM +4 4 RANGES BETWEEN 120 AND 150 CM +5 5 RANGES BETWEEN 150 AND 180 CM +6 6 RANGES BETWEEN 180 AND 210 CM +7 7 RANGES BETWEEN 210 AND 240 CM +8 8 RANGES BETWEEN 240 AND 270 CM +9 9 RANGES LARGER THAN 270 CM +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/25098.table b/definitions/bufr/tables/0/wmo/40/codetables/25098.table new file mode 100644 index 000000000..ac736f5c0 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/25098.table @@ -0,0 +1,8 @@ +1 1 KU BAND RANGE +2 2 C BAND RANGE +3 3 KU BAND SWH +4 4 C BAND SWH +5 5 KU BAND BACKSCATTER COEFFICIENT +6 6 C BAND BACKSCATTER COEFFICIENT +7 7 OFF NADIR ANGLE FROM KU BAND WAVEFORM PARAMETERS +8 8 OFF NADIR ANGLE FROM PLATFORM diff --git a/definitions/bufr/tables/0/wmo/40/codetables/25099.table b/definitions/bufr/tables/0/wmo/40/codetables/25099.table new file mode 100644 index 000000000..94d679c10 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/25099.table @@ -0,0 +1,6 @@ +1 1 KU BAND RANGE INSTRUMENTAL CORRECTION +2 2 C BAND RANGE INSTRUMENTAL CORRECTION +3 3 KU BAND SWH INSTRUMENTAL CORRECTION +4 4 C BAND SWH INSTRUMENTAL CORRECTION +5 5 KU BAND BACKSCATTER COEFFICIENT INSTRUMENTAL CORRECTION +6 6 C BAND BACKSCATTER COEFFICIENT INSTRUMENTAL CORRECTION diff --git a/definitions/bufr/tables/0/wmo/40/codetables/25110.table b/definitions/bufr/tables/0/wmo/40/codetables/25110.table new file mode 100644 index 000000000..912e01f54 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/25110.table @@ -0,0 +1,6 @@ +1 1 RAW DATA ANALYSIS USED FOR RAW DATA CORRECTION. CORRECTION DONE USING DEFAULT PARAMETERS +2 2 RAW DATA ANALYSIS USED FOR RAW DATA CORRECTION. CORRECTION DONE USING RAW DATA ANALYSIS RESULTS +3 3 ANTENNA ELEVATION PATTERN CORRECTION APPLIED +4 4 NOMINAL CHIRP REPLICA USED +5 5 RECONSTRUCTED CHIRP USED +6 6 SLANT RANGE TO GROUND RANGE CONVERSION APPLIED diff --git a/definitions/bufr/tables/0/wmo/40/codetables/25112.table b/definitions/bufr/tables/0/wmo/40/codetables/25112.table new file mode 100644 index 000000000..a2a4ec9d3 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/25112.table @@ -0,0 +1,5 @@ +1 1 BAND SPECIFIC RANGE +2 2 BAND SPECIFIC SIGNIFICANT WAVE HEIGHT +3 3 BAND SPECIFIC BACKSCATTER COEFFICIENT +4 4 OFF NADIR ANGLE FROM BAND SPECIFIC WAVEFORM PARAMETERS +5 5 OFF NADIR ANGLE FROM PLATFORM diff --git a/definitions/bufr/tables/0/wmo/40/codetables/25113.table b/definitions/bufr/tables/0/wmo/40/codetables/25113.table new file mode 100644 index 000000000..ef394b626 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/25113.table @@ -0,0 +1,3 @@ +1 1 BAND SPECIFIC RANGE INSTRUMENTAL CORRECTION +2 2 BAND SPECIFIC SIGNIFICANT WAVE HEIGHT INSTRUMENTAL CORRECTION +3 3 BAND SPECIFIC BACKSCATTER COEFFICIENT INSTRUMENTAL CORRECTION diff --git a/definitions/bufr/tables/0/wmo/40/codetables/25120.table b/definitions/bufr/tables/0/wmo/40/codetables/25120.table new file mode 100644 index 000000000..c45b0addf --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/25120.table @@ -0,0 +1,4 @@ +0 0 PERCENTAGE OF DSRS FREE OF PROCESSING ERRORS DURING LEVEL 2 PROCESSING IS GREATER THAN THE ACCEPTABLE THRESHOLD +1 1 PERCENTAGE OF DSRS FREE OF PROCESSING ERRORS DURING LEVEL 2 PROCESSING IS LESS THAN THE ACCEPTABLE THRESHOLD +2 2 RESERVED +3 3 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/25122.table b/definitions/bufr/tables/0/wmo/40/codetables/25122.table new file mode 100644 index 000000000..1085ef980 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/25122.table @@ -0,0 +1,4 @@ +0 0 HARDWARE CONFIGURATION FOR RF IS A +1 1 HARDWARE CONFIGURATION FOR RF IS B +2 2 RESERVED +3 3 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/25123.table b/definitions/bufr/tables/0/wmo/40/codetables/25123.table new file mode 100644 index 000000000..70f0670e9 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/25123.table @@ -0,0 +1,4 @@ +0 0 HARDWARE CONFIGURATION FOR HPA IS A +1 1 HARDWARE CONFIGURATION FOR HPA IS B +2 2 RESERVED +3 3 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/25124.table b/definitions/bufr/tables/0/wmo/40/codetables/25124.table new file mode 100644 index 000000000..c45b0addf --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/25124.table @@ -0,0 +1,4 @@ +0 0 PERCENTAGE OF DSRS FREE OF PROCESSING ERRORS DURING LEVEL 2 PROCESSING IS GREATER THAN THE ACCEPTABLE THRESHOLD +1 1 PERCENTAGE OF DSRS FREE OF PROCESSING ERRORS DURING LEVEL 2 PROCESSING IS LESS THAN THE ACCEPTABLE THRESHOLD +2 2 RESERVED +3 3 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/25139.table b/definitions/bufr/tables/0/wmo/40/codetables/25139.table new file mode 100644 index 000000000..39b215e09 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/25139.table @@ -0,0 +1,3 @@ +0 0 L1B +1 1 L2A +31 31 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/25150.table b/definitions/bufr/tables/0/wmo/40/codetables/25150.table new file mode 100644 index 000000000..7b452c327 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/25150.table @@ -0,0 +1,3 @@ +1 1 THE DVORAK'S VIS (VISUAL IMAGERY) INTENSITY ANALYSIS +2 2 THE DVORAK'S EIR (ENHANCED INFRARED IMAGERY) INTENSITY ANALYSIS +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/25174.table b/definitions/bufr/tables/0/wmo/40/codetables/25174.table new file mode 100644 index 000000000..c8a11b6d7 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/25174.table @@ -0,0 +1,13 @@ +1 1 PIXEL IS AFFECTED BY RFI EFFECTS +2 2 PIXEL IS LOCATED IN THE HEXAGONAL ALIAS DIRECTION CENTRED ON SUN ALIAS +3 3 PIXEL IS CLOSE TO THE BORDER DELIMITING THE EXTENDED ALIAS FREE ZONE +4 4 PIXEL IS INSIDE THE EXTENDED ALIAS FREE ZONE +5 5 PIXEL IS INSIDE THE EXCLUSIVE OF ALIAS FREE ZONE +6 6 PIXEL IS LOCATED IN A ZONE WHERE A MOON ALIAS WAS RECONSTRUCTED +7 7 PIXEL IS LOCATED IN A ZONE WHERE SUN REFLECTION HAS BEEN DETECTED +8 8 PIXEL IS LOCATED IN A ZONE WHERE SUN ALIAS WAS RECONSTRUCTED +9 9 FLAT TARGET TRANSFORMATION HAS BEEN PERFORMED DURING IMAGE RECONSTRUCTION OF THIS PIXEL +10 10 SCENE HAS BEEN COMBINED WITH AN ADJUSTMENT SCENE IN OPPOSITE POLARIZATION DURING IMAGE RECONSTRUCTION TO ACCOUNT FOR CROSS-POLARIZATION LEAKAGE +11 11 DIRECT MOON CORRECTION HAS BEEN PERFORMED DURING IMAGE RECONSTRUCTION OF THIS PIXEL +12 12 REFLECTED SUN CORRECTION HAS BEEN PERFORMED DURING IMAGE RECONSTRUCTION OF THIS PIXEL +13 13 DIRECT SUN CORRECTION HAS BEEN PERFORMED DURING IMAGE RECONSTRUCTION OF THIS IMAGE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/25181.table b/definitions/bufr/tables/0/wmo/40/codetables/25181.table new file mode 100644 index 000000000..2c1eabf7c --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/25181.table @@ -0,0 +1,3 @@ +0 0 OK +1 1 PERCENTAGE OF L2B RECORDS FREE OF PROCESSING ERRORS IS LESS THAN ACCEPTABLE THRESHOLD +2 2 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/25182.table b/definitions/bufr/tables/0/wmo/40/codetables/25182.table new file mode 100644 index 000000000..9827b1dfd --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/25182.table @@ -0,0 +1,3 @@ +0 0 OK +1 1 PERCENTAGE OF L1B RECORDS FREE OF PROCESSING ERRORS IS LESS THAN ACCEPTABLE THRESHOLD +2 2 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/25184.table b/definitions/bufr/tables/0/wmo/40/codetables/25184.table new file mode 100644 index 000000000..29005c133 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/25184.table @@ -0,0 +1,3 @@ +0 0 OK +1 1 PRODUCT AS A DURATION SHORTER THAN THE INPUT PRODUCT +2 2 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/25185.table b/definitions/bufr/tables/0/wmo/40/codetables/25185.table new file mode 100644 index 000000000..ac18abae4 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/25185.table @@ -0,0 +1,2 @@ +0 0 AES 256 +255 255 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/25187.table b/definitions/bufr/tables/0/wmo/40/codetables/25187.table new file mode 100644 index 000000000..683c09709 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/25187.table @@ -0,0 +1,3 @@ +0 0 VALID +1 1 INVALID +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/25188.table b/definitions/bufr/tables/0/wmo/40/codetables/25188.table new file mode 100644 index 000000000..b18013f21 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/25188.table @@ -0,0 +1,6 @@ +0 0 PRESSURE ADJUSTED TO MEAN SEA LEVEL FOLLOWING WMO-NO. 8 FOR LOW LEVEL (< 50 M) STATIONS +1 1 PRESSURE ADJUSTED TO MEAN SEA LEVEL FOLLOWING WMO-NO. 8 FOR STATIONS BELOW 750 M +2 2 PRESSURE ADJUSTED TO SEA LEVEL FOLLOWING NATIONAL PRACTICE +3 3 PRESSURE ADJUSTED TO LOCAL WATER LEVEL FOLLOWING NATIONAL PRACTICE +4 4 PRESSURE NOT CORRECTED FOR HEIGHT +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/25190.table b/definitions/bufr/tables/0/wmo/40/codetables/25190.table new file mode 100644 index 000000000..62fbc7616 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/25190.table @@ -0,0 +1,7 @@ +0 0 LOW-RESOLUTION MODE (LRM) +1 1 SYNTHETIC APERTURE RADAR (SAR) +2 2 LRM AND SAR (INTERLEAVED) +3 3 RESERVED +4 4 PSEUDO-LRM (PLRM) +5 5 SAR INTERFEROMETRIC MODE (SARIN) +255 255 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/25191.table b/definitions/bufr/tables/0/wmo/40/codetables/25191.table new file mode 100644 index 000000000..ea22b6872 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/25191.table @@ -0,0 +1,4 @@ +0 0 OPEN LOOP +1 1 CLOSED LOOP +2 2 OPEN LOOP FIXED GAIN +255 255 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/26010.table b/definitions/bufr/tables/0/wmo/40/codetables/26010.table new file mode 100644 index 000000000..f825040f4 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/26010.table @@ -0,0 +1,25 @@ +1 1 0100 INCLUDED +2 2 0200 INCLUDED +3 3 0300 INCLUDED +4 4 0400 INCLUDED +5 5 0500 INCLUDED +6 6 0600 INCLUDED +7 7 0700 INCLUDED +8 8 0800 INCLUDED +9 9 0900 INCLUDED +10 10 1000 INCLUDED +11 11 1100 INCLUDED +12 12 1200 INCLUDED +13 13 1300 INCLUDED +14 14 1400 INCLUDED +15 15 1500 INCLUDED +16 16 1600 INCLUDED +17 17 1700 INCLUDED +18 18 1800 INCLUDED +19 19 1900 INCLUDED +20 20 2000 INCLUDED +21 21 2100 INCLUDED +22 22 2200 INCLUDED +23 23 2300 INCLUDED +24 24 2400 INCLUDED +25 25 UNKNOWN MIXTURE OF HOURS diff --git a/definitions/bufr/tables/0/wmo/40/codetables/29001.table b/definitions/bufr/tables/0/wmo/40/codetables/29001.table new file mode 100644 index 000000000..884b29a84 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/29001.table @@ -0,0 +1,8 @@ +0 0 GNOMONIC PROJECTION +1 1 POLAR STEREOGRAPHIC PROJECTION +2 2 LAMBERT'S CONFORMAL CONIC PROJECTION +3 3 MERCATOR'S PROJECTION +4 4 SCANNING CONE (RADAR) +5 5 RESERVED +6 6 NO PROJECTION +7 7 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/29002.table b/definitions/bufr/tables/0/wmo/40/codetables/29002.table new file mode 100644 index 000000000..1d7efd0c8 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/29002.table @@ -0,0 +1,4 @@ +0 0 CARTESIAN +1 1 POLAR +2 2 OTHER +7 7 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/3001.table b/definitions/bufr/tables/0/wmo/40/codetables/3001.table new file mode 100644 index 000000000..e9caa2a14 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/3001.table @@ -0,0 +1,12 @@ +0 0 LAND STATION (SYNOPTIC NETWORK) +1 1 SHALLOW WATER STATION (FIXED TO SEA/LAKE FLOOR) +2 2 SHIP +3 3 RIG/PLATFORM +4 4 MOORED BUOY +5 5 DRIFTING BUOY (OR DRIFTER) +6 6 ICE BUOY +7 7 LAND STATION (LOCAL NETWORK) +8 8 LAND VEHICLE +9 9 AUTONOMOUS MARINE VEHICLE +10 10 TAG ATTACHED TO MARINE ANIMAL +31 31 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/3003.table b/definitions/bufr/tables/0/wmo/40/codetables/3003.table new file mode 100644 index 000000000..cf530237f --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/3003.table @@ -0,0 +1,8 @@ +0 0 SCREEN +1 1 SLING/WHIRLING +2 2 UNSCREENED +3 3 RADIATION SHIELD +4 4 ASPIRATED (E.G. ASSMANN) +5 5 OTHER SHELTER +6 6 HANDHELD +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/30031.table b/definitions/bufr/tables/0/wmo/40/codetables/30031.table new file mode 100644 index 000000000..80cce26f1 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/30031.table @@ -0,0 +1,13 @@ +0 0 PPI +1 1 COMPOSITE +2 2 CAPPL +3 3 VERTICAL SECTION +4 4 ALPHANUMERIC DATA +5 5 MAP OF SUBJECT CLUTTER +6 6 MAP +7 7 TEST PICTURE +8 8 COMMENTS +9 9 MAP OF GROUND OCCULTATION +10 10 MAP OF RADAR BEAM HEIGHT +14 14 OTHER +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/30032.table b/definitions/bufr/tables/0/wmo/40/codetables/30032.table new file mode 100644 index 000000000..942cb5d7f --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/30032.table @@ -0,0 +1,9 @@ +1 1 MAP +2 2 SATELLITE IR +3 3 SATELLITE VIS +4 4 SATELLITE WV +5 5 SATELLITE MULTISPECTRAL +6 6 SYNOPTIC OBSERVATIONS +7 7 FORECAST PARAMETERS +8 8 LIGHTNING DATA +15 15 OTHER DATA diff --git a/definitions/bufr/tables/0/wmo/40/codetables/3004.table b/definitions/bufr/tables/0/wmo/40/codetables/3004.table new file mode 100644 index 000000000..571e234bf --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/3004.table @@ -0,0 +1,11 @@ +0 0 STEVENSON SCREEN +1 1 MARINE STEVENSON SCREEN +2 2 CYLINDRICAL SECTION PLATE SHIELD +3 3 CONCENTRIC TUBE +4 4 RECTANGULAR SECTION SHIELD +5 5 SQUARE SECTION SHIELD +6 6 TRIANGULAR SECTION SHIELD +7 7 OPEN COVERED LEAN-TO +8 8 OPEN COVERED INVERTED V ROOF +9 9 INTEGRATED (E.G. CHILLED MIRROR) +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/3008.table b/definitions/bufr/tables/0/wmo/40/codetables/3008.table new file mode 100644 index 000000000..e321d5562 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/3008.table @@ -0,0 +1,4 @@ +0 0 NATURAL VENTILATION IN USE +1 1 ARTIFICIAL ASPIRATION IN USE: CONSTANT FLOW AT TIME OF READING +2 2 ARTIFICIAL ASPIRATION IN USE: VARIABLE FLOW AT TIME OF READING +7 7 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/3010.table b/definitions/bufr/tables/0/wmo/40/codetables/3010.table new file mode 100644 index 000000000..75746a1c3 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/3010.table @@ -0,0 +1,12 @@ +0 0 RESERVED +1 1 ADCP +2 2 GEK (GEOMAGNETIC ELECTROKINETOGRAPH) +3 3 SHIP'S SET AND DRIFT DETERMINED BY FIXES 3-6 HOURS APART +4 4 SHIP'S SET AND DRIFT DETERMINED BY FIXES MORE THAN 6 HOURS BUT LESS THAN 12 HOURS APART +5 5 DRIFT OF BUOY +6 6 ADCP +7 7 ADCP BOTTOM TRACKING MODE +8 8 ELECTROMAGNETIC SENSOR +9 9 ROTOR AND VANE +10 10 LOWERED ADCP +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/3011.table b/definitions/bufr/tables/0/wmo/40/codetables/3011.table new file mode 100644 index 000000000..748826848 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/3011.table @@ -0,0 +1,4 @@ +0 0 DEPTH CALCULATED USING FALL RATE EQUATION +1 1 DEPTH CALCULATED FROM WATER PRESSURE/EQUATION OF STATE +2 2 RESERVED +3 3 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/3012.table b/definitions/bufr/tables/0/wmo/40/codetables/3012.table new file mode 100644 index 000000000..35bdeadd5 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/3012.table @@ -0,0 +1,3 @@ +0 0 ANDERRAA OXYGEN OPTODE +1 1 WINKLER BOTTLE +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/3016.table b/definitions/bufr/tables/0/wmo/40/codetables/3016.table new file mode 100644 index 000000000..792788f42 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/3016.table @@ -0,0 +1,9 @@ +0 0 FAST LANE BETWEEN THE WHEEL TRACKS +1 1 FAST LANE BETWEEN THE WHEEL TRACKS IN THE OPPOSITE DIRECTION +2 2 FAST LANE IN THE WHEEL TRACKS +3 3 FAST LANE IN THE WHEEL TRACKS IN THE OPPOSITE DIRECTION +4 4 SLOW LANE BETWEEN THE WHEEL TRACKS +5 5 SLOW LANE BETWEEN THE WHEEL TRACKS IN THE OPPOSITE DIRECTION +6 6 SLOW LANE IN THE WHEEL TRACKS +7 7 SLOW LANE IN THE WHEEL TRACKS IN THE OPPOSITE DIRECTION +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/3017.table b/definitions/bufr/tables/0/wmo/40/codetables/3017.table new file mode 100644 index 000000000..e94c0a449 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/3017.table @@ -0,0 +1,5 @@ +1 1 AUTOMATIC +2 2 MANNED +3 3 EVENT TRIGGERED +4 4 LONGER TIME PERIOD THAN THE STANDARD +5 5 RESERVED diff --git a/definitions/bufr/tables/0/wmo/40/codetables/3018.table b/definitions/bufr/tables/0/wmo/40/codetables/3018.table new file mode 100644 index 000000000..b3769ae40 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/3018.table @@ -0,0 +1,22 @@ +0 0 FREE TRACK WITHOUT FURTHER INFORMATION +1 1 FREE TRACK, EMBANKMENT +2 2 FREE TRACK, FLAT RELATIVE TO SURROUNDINGS +3 3 FREE TRACK, WATER BASIN(S) IN VICINITY +4 4 FREE TRACK, FOREST +5 5 FREE TRACK, CLEFT +6 6 FREE TRACK, ON HILLTOP +7 7 FREE TRACK, ON HILLTOP, FOREST +8 8 FREE TRACK, IN VALLEY +9 9 FREE TRACK, IN VALLEY, FOREST +10 10 FREE TRACK, NORTH INCLINATION +11 11 FREE TRACK, NORTH INCLINATION, FOREST +12 12 FREE TRACK, SOUTH INCLINATION +13 13 FREE TRACK, SOUTH INCLINATION, FOREST +20 20 BRIDGE WITHOUT FURTHER INFORMATION +21 21 BRIDGE ACROSS A VALLEY IN AN URBAN AREA +22 22 BRIDGE ACROSS A VALLEY WITH FOREST/MEADOWS/FIELDS +23 23 BRIDGE ACROSS STREET/TRACK +24 24 BRIDGE ACROSS BIG RIVER/CANAL +25 25 BRIDGE ACROSS RIVER/CANAL OF MEDIUM SIZE +26 26 BRIDGE ACROSS A SMALL STREAM/LOADING CANAL +31 31 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/3019.table b/definitions/bufr/tables/0/wmo/40/codetables/3019.table new file mode 100644 index 000000000..2f55b0028 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/3019.table @@ -0,0 +1,8 @@ +0 0 ASPHALT +1 1 CONCRETE +2 2 CONCRETE CONSTRUCTION +3 3 STEEL-GIRDER CONSTRUCTION +4 4 BOX GIRDER BRIDGE +5 5 ORTHOTROPIC SLAB +6 6 DRAIN ASPHALT +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/3020.table b/definitions/bufr/tables/0/wmo/40/codetables/3020.table new file mode 100644 index 000000000..9f0feaea7 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/3020.table @@ -0,0 +1,5 @@ +0 0 WOOD +1 1 METAL ALLOY +2 2 PLASTIC/GRP +3 3 REED/GRASS/LEAF +7 7 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/3021.table b/definitions/bufr/tables/0/wmo/40/codetables/3021.table new file mode 100644 index 000000000..27e1bfad4 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/3021.table @@ -0,0 +1,4 @@ +0 0 UNHEATED +1 1 HEATED +2 2 NOT APPLICABLE +3 3 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/3022.table b/definitions/bufr/tables/0/wmo/40/codetables/3022.table new file mode 100644 index 000000000..daf67e27f --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/3022.table @@ -0,0 +1,4 @@ +0 0 NATIONAL HYDROMETEOROLOGICAL/WEATHER SERVICE +1 1 OTHER +2 2 STANDARDS INSTITUTE +7 7 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/3023.table b/definitions/bufr/tables/0/wmo/40/codetables/3023.table new file mode 100644 index 000000000..9e683c891 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/3023.table @@ -0,0 +1,8 @@ +0 0 SINGLE V-SECTION LOUVERS +1 1 OVERLAPPING LOUVERS +2 2 DOUBLE V-SECTION LOUVERS +3 3 NON-OVERLAPPING LOUVERS +4 4 VENTED, NON-LOUVERED +5 5 NOT APPLICABLE +6 6 RESERVED FOR FUTURE USE +7 7 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/3027.table b/definitions/bufr/tables/0/wmo/40/codetables/3027.table new file mode 100644 index 000000000..8280e8602 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/3027.table @@ -0,0 +1,8 @@ +0 0 SOLO (SINGLE RADIOSONDE) +1 1 BLOCK +2 2 BAR +3 3 CROSS +4 4 T-RIG +5 5 DOUBLE T-RIG +6 6 COMPLEX +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/3028.table b/definitions/bufr/tables/0/wmo/40/codetables/3028.table new file mode 100644 index 000000000..9cc805953 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/3028.table @@ -0,0 +1,8 @@ +0 0 MULTI POINT MANUAL SNOW SURVEY +1 1 SINGLE POINT MANUAL SNOW WATER EQUIVALENT MEASUREMENT +2 2 SNOW PILLOW OR SNOW SCALE +3 3 PASSIVE GAMMA +4 4 GNSS/GPS METHODS +5 5 COSMIC RAY ATTENUATION +6 6 TIME DOMAIN REFLECTOMETRY +63 63 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/3029.table b/definitions/bufr/tables/0/wmo/40/codetables/3029.table new file mode 100644 index 000000000..374df7c0e --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/3029.table @@ -0,0 +1,3 @@ +0 0 LEFT HAND SIDE +1 1 RIGHT HAND SIDE +7 7 MISSING diff --git a/definitions/bufr/tables/0/wmo/40/codetables/3030.table b/definitions/bufr/tables/0/wmo/40/codetables/3030.table new file mode 100644 index 000000000..48033d8f4 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/3030.table @@ -0,0 +1,3 @@ +0 0 TRANSMITTING +1 1 RECEIVING +7 7 MISSING diff --git a/definitions/bufr/tables/0/wmo/40/codetables/31021.table b/definitions/bufr/tables/0/wmo/40/codetables/31021.table new file mode 100644 index 000000000..3b4875d89 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/31021.table @@ -0,0 +1,10 @@ +0 0 RESERVED +1 1 1-BIT INDICATOR OF QUALITY +2 2 2-BIT INDICATOR OF QUALITY +5 5 8-BIT INDICATOR OF QUALITY CONTROL +6 6 4-BIT INDICATOR OF QUALITY CONTROL CLASS ACCORDING TO GTSPP +7 7 PERCENTAGE CONFIDENCE +8 8 0 = NOT SUSPECTED, 1 = SUSPECTED, 2 = RESERVED, 3 = INFORMATION NOT REQUIRED +9 9 0 = DATA PRESENT, GOOD, COLLOCATED, 1 = DATA AVAILABLE BUT OF DEGRADED QUALITY AND NOT USED, 2 = NO SPATIOTEMPORALLY COLLOCATED DATA AVAILABLE, 3-14 = NOT USED (RESERVED), 15 = MISSING VALUE +21 21 1-BIT INDICATOR OF CORRECTION +63 63 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/31031.table b/definitions/bufr/tables/0/wmo/40/codetables/31031.table new file mode 100644 index 000000000..d268b380c --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/31031.table @@ -0,0 +1 @@ +1 1 0 = DATA PRESENT, 1 = DATA NOT PRESENT diff --git a/definitions/bufr/tables/0/wmo/40/codetables/33002.table b/definitions/bufr/tables/0/wmo/40/codetables/33002.table new file mode 100644 index 000000000..4177c0577 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/33002.table @@ -0,0 +1,4 @@ +0 0 DATA NOT SUSPECT +1 1 DATA SUSPECT +2 2 RESERVED +3 3 QUALITY INFORMATION NOT GIVEN diff --git a/definitions/bufr/tables/0/wmo/40/codetables/33003.table b/definitions/bufr/tables/0/wmo/40/codetables/33003.table new file mode 100644 index 000000000..7577129b0 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/33003.table @@ -0,0 +1,5 @@ +0 0 DATA NOT SUSPECT +1 1 DATA SLIGHTLY SUSPECT +2 2 DATA HIGHLY SUSPECT +3 3 DATA CONSIDERED UNFIT FOR USE +7 7 QUALITY INFORMATION NOT GIVEN diff --git a/definitions/bufr/tables/0/wmo/40/codetables/33005.table b/definitions/bufr/tables/0/wmo/40/codetables/33005.table new file mode 100644 index 000000000..8d7569ad2 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/33005.table @@ -0,0 +1,23 @@ +1 1 NO AUTOMATED METEOROLOGICAL DATA CHECKS PERFORMED +2 2 PRESSURE DATA SUSPECT +3 3 WIND DATA SUSPECT +4 4 AIR TEMPERATURE DATA SUSPECT +5 5 WET-BULB TEMPERATURE DATA SUSPECT +6 6 HUMIDITY DATA SUSPECT +7 7 GROUND TEMPERATURE DATA SUSPECT +8 8 SOIL TEMPERATURE (DEPTH 1) DATA SUSPECT +9 9 SOIL TEMPERATURE (DEPTH 2) DATA SUSPECT +10 10 SOIL TEMPERATURE (DEPTH 3) DATA SUSPECT +11 11 SOIL TEMPERATURE (DEPTH 4) DATA SUSPECT +12 12 SOIL TEMPERATURE (DEPTH 5) DATA SUSPECT +13 13 CLOUD DATA SUSPECT +14 14 VISIBILITY DATA SUSPECT +15 15 PRESENT WEATHER DATA SUSPECT +16 16 LIGHTNING DATA SUSPECT +17 17 ICE DEPOSIT DATA SUSPECT +18 18 PRECIPITATION DATA SUSPECT +19 19 STATE OF GROUND DATA SUSPECT +20 20 SNOW DATA SUSPECT +21 21 WATER CONTENT DATA SUSPECT +22 22 EVAPORATION/EVAPOTRANSPIRATION DATA SUSPECT +23 23 SUNSHINE DATA SUSPECT diff --git a/definitions/bufr/tables/0/wmo/40/codetables/33006.table b/definitions/bufr/tables/0/wmo/40/codetables/33006.table new file mode 100644 index 000000000..0ea44a50b --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/33006.table @@ -0,0 +1,5 @@ +0 0 SELF-CHECK OK +1 1 AT LEAST ONE WARNING ACTIVE, NO ALARMS +2 2 AT LEAST ONE ALARM ACTIVE +3 3 SENSOR FAILURE +7 7 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/33015.table b/definitions/bufr/tables/0/wmo/40/codetables/33015.table new file mode 100644 index 000000000..f585808d0 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/33015.table @@ -0,0 +1,16 @@ +0 0 PASSED ALL CHECKS +1 1 MISSING DATA CHECK +2 2 DESCENDING/REASCENDING BALLOON CHECK +3 3 DATA PLAUSIBILITY CHECK (ABOVE LIMITS) +4 4 DATA PLAUSIBILITY CHECK (BELOW LIMITS) +5 5 SUPERADIABATIC LAPSE RATE CHECK +6 6 LIMITING ANGLES CHECK +7 7 ASCENSION RATE CHECK +8 8 EXCESSIVE CHANGE FROM PREVIOUS FLIGHT +9 9 BALLOON OVERHEAD CHECK +10 10 WIND SPEED CHECK +11 11 WIND DIRECTION CHECK +12 12 DEPENDENCY CHECK +13 13 DATA VALID BUT MODIFIED +14 14 DATA OUTLIER CHECK +63 63 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/33020.table b/definitions/bufr/tables/0/wmo/40/codetables/33020.table new file mode 100644 index 000000000..ba7a4d4ea --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/33020.table @@ -0,0 +1,8 @@ +0 0 GOOD +1 1 INCONSISTENT +2 2 DOUBTFUL +3 3 WRONG +4 4 NOT CHECKED +5 5 HAS BEEN CHANGED +6 6 ESTIMATED +7 7 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/33021.table b/definitions/bufr/tables/0/wmo/40/codetables/33021.table new file mode 100644 index 000000000..e3e67ae8c --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/33021.table @@ -0,0 +1,4 @@ +0 0 WITHIN LIMITS +1 1 OUTSIDE LIMITS +2 2 RESERVED +3 3 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/33022.table b/definitions/bufr/tables/0/wmo/40/codetables/33022.table new file mode 100644 index 000000000..50ef65feb --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/33022.table @@ -0,0 +1,4 @@ +0 0 GOOD (SEVERAL IDENTICAL REPORTS HAVE BEEN RECEIVED) +1 1 DUBIOUS (NO IDENTICAL REPORTS HAVE BEEN RECEIVED) +2 2 RESERVED +3 3 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/33023.table b/definitions/bufr/tables/0/wmo/40/codetables/33023.table new file mode 100644 index 000000000..896c816a9 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/33023.table @@ -0,0 +1,4 @@ +0 0 RELIABLE (LOCATION WAS MADE OVER TWO SATELLITE PASSES) +1 1 LATEST KNOWN (NO LOCATION OVER THE CORRESPONDING PASS) +2 2 DUBIOUS (LOCATION MADE OVER ONE PASS ONLY; A SECOND SOLUTION IS POSSIBLE IN 5 PER CENT OF THE CASES) +3 3 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/33024.table b/definitions/bufr/tables/0/wmo/40/codetables/33024.table new file mode 100644 index 000000000..771e04b81 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/33024.table @@ -0,0 +1,10 @@ +0 0 RESERVED +1 1 EXCELLENT - WITHIN 3 METRES +2 2 GOOD - WITHIN 10 METRES +3 3 FAIR - WITHIN 20 METRES +4 4 POOR - MORE THAN 20 METRES +5 5 EXCELLENT - WITHIN 10 FEET +6 6 GOOD - WITHIN 30 FEET +7 7 FAIR - WITHIN 60 FEET +8 8 POOR - MORE THAN 60 FEET +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/33025.table b/definitions/bufr/tables/0/wmo/40/codetables/33025.table new file mode 100644 index 000000000..4da695aa0 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/33025.table @@ -0,0 +1,5 @@ +0 0 TIME INTERPOLATED, LATITUDE AND LONGITUDE REPORTED +1 1 TIME REPORTED, LATITUDE AND LONGITUDE INTERPOLATED +2 2 TIME, LATITUDE, AND LONGITUDE INTERPOLATED +3 3 TIME, LATITUDE, AND LONGITUDE REPORTED +7 7 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/33026.table b/definitions/bufr/tables/0/wmo/40/codetables/33026.table new file mode 100644 index 000000000..08c61254b --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/33026.table @@ -0,0 +1,17 @@ +0 0 NORMAL OPERATIONS - MEASUREMENT MODE +1 1 NORMAL OPERATIONS - NON-MEASUREMENT MODE +2 2 SMALL RH +3 3 HUMIDITY ELEMENT IS WET +4 4 HUMIDITY ELEMENT CONTAMINATED +5 5 HEATER FAIL +6 6 HEATER FAIL AND WET/CONTAMINATED HUMIDITY ELEMENT +7 7 AT LEAST ONE OF THE INPUT PARAMETERS USED IN THE CALCULATION OF MIXING RATIO IS INVALID +8 8 NUMERIC ERROR +9 9 SENSOR NOT INSTALLED +10 10 CALCULATED RH > 100% +11 11 INPUT LASER POWER TOO LOW +12 12 PROBE WV TEMPERATURE OUT OF RANGE +13 13 PROBE WV PRESSURE OUT OF RANGE +14 14 SPECTRAL LINE OUT OF RANGE +15 15 NO LASER OUTPUT +63 63 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/33027.table b/definitions/bufr/tables/0/wmo/40/codetables/33027.table new file mode 100644 index 000000000..c563af46f --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/33027.table @@ -0,0 +1,6 @@ +0 0 RADIUS >= 1500 M +1 1 500 M =< RADIUS <1500 M +2 2 250 M =< RADIUS < 500 M +3 3 RADIUS < 250 M +4 4 =< 100 M +7 7 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/33028.table b/definitions/bufr/tables/0/wmo/40/codetables/33028.table new file mode 100644 index 000000000..84bd666f9 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/33028.table @@ -0,0 +1,5 @@ +1 1 NOMINAL +2 2 DEGRADED BY SW ERROR; ANY ERROR REPORTED BY THE ALGORITHMS +3 3 DEGRADED BY INSTRUMENT ERROR +4 4 DEGRADED BY CORRUPTED /MISSING ADF +7 7 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/33030.table b/definitions/bufr/tables/0/wmo/40/codetables/33030.table new file mode 100644 index 000000000..c9e36c0f4 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/33030.table @@ -0,0 +1,7 @@ +1 1 DO NOT USE SCAN FOR PRODUCT GENERATION +2 2 TIME SEQUENCE ERROR DETECTED WITH THIS SCAN +3 3 DATA GAP PRECEDES THIS SCAN +4 4 NO CALIBRATION +5 5 NO EARTH LOCATION +6 6 FIRST GOOD TIME FOLLOWING A CLOCK UPDATE +7 7 INSTRUMENT STATUS CHANGED WITH THIS SCAN diff --git a/definitions/bufr/tables/0/wmo/40/codetables/33031.table b/definitions/bufr/tables/0/wmo/40/codetables/33031.table new file mode 100644 index 000000000..c11fd4a09 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/33031.table @@ -0,0 +1,21 @@ +1 1 TIME FIELD IS BAD BUT CAN PROBABLY BE INFERRED FROM THE PREVIOUS GOOD TIME +2 2 TIME FIELD IS BAD AND CANNOT BE INFERRED FROM THE PREVIOUS GOOD TIME +3 3 THIS RECORD STARTS A SEQUENCE THAT IS INCONSISTENT WITH PREVIOUS TIMES (I.E. THERE IS A TIME DISCONTINUITY). THIS MAY OR MAY NOT BE ASSOCIATED WITH A SPACECRAFT CLOCK UPDATE (SEE SCAN LINE STATUS FLAGS FOR ATOVS) +4 4 START OF A SEQUENCE THAT APPARENTLY REPEATS SCAN TIMES THAT HAVE BEEN PREVIOUSLY ACCEPTED +5 5 SCAN LINE WAS NOT CALIBRATED BECAUSE OF BAD TIME +6 6 SCAN LINE WAS CALIBRATED USING FEWER THAN THE PREFERRED NUMBER OF SCAN LINES BECAUSE OF PROXIMITY TO START OR END OF DATA OR TO A DATA GAP +7 7 SCAN LINE WAS NOT CALIBRATED BECAUSE OF BAD OR INSUFFICIENT PRT DATA +8 8 SCAN LINE WAS CALIBRATED BUT WITH MARGINAL PRT DATA +9 9 SOME UNCALIBRATED CHANNELS ON THIS SCAN +10 10 UNCALIBRATED DUE TO INSTRUMENT MODE +11 11 QUESTIONABLE CALIBRATION BECAUSE OF ANTENNA POSITION ERROR OF SPACE VIEW +12 12 QUESTIONABLE CALIBRATION BECAUSE OF ANTENNA POSITION ERROR OF BLACK BODY +13 13 NOT EARTH LOCATED BECAUSE OF BAD TIME +14 14 EARTH LOCATION QUESTIONABLE BECAUSE OF QUESTIONABLE TIME CODE (SEE TIME PROBLEM CODE BITS) +15 15 EARTH LOCATION QUESTIONABLE - ONLY MARGINAL AGREEMENT WITH REASONABLENESS CHECK +16 16 EARTH LOCATION QUESTIONABLE - FAILS REASONABLENESS CHECK +17 17 EARTH LOCATION QUESTIONABLE BECAUSE OF ANTENNA POSITION CHECK +18 18 SCAN LINE CALIBRATION COLD BLACK BODY +19 19 SCAN LINE CALIBRATION WARM BLACK BODY +20 20 SCAN LINE CALIBRATION SPACE VIEW +21 21 EARTH VIEW diff --git a/definitions/bufr/tables/0/wmo/40/codetables/33032.table b/definitions/bufr/tables/0/wmo/40/codetables/33032.table new file mode 100644 index 000000000..33307f50a --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/33032.table @@ -0,0 +1,7 @@ +1 1 NO GOOD BLACKBODY COUNTS FOR SCAN LINE +2 2 NO GOOD SPACE VIEW COUNTS FOR THIS LINE +3 3 NO GOOD PRTS FOR THIS LINE +4 4 SOME BAD BLACKBODY VIEW COUNTS FOR THIS LINE +5 5 SOME BAD SPACE VIEW COUNTS FOR THIS LINE +6 6 SOME BAD PRT TEMPS ON THIS LINE +7 7 QUALITY FOR THIS SCAN IS REDUCED diff --git a/definitions/bufr/tables/0/wmo/40/codetables/33033.table b/definitions/bufr/tables/0/wmo/40/codetables/33033.table new file mode 100644 index 000000000..6fd320510 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/33033.table @@ -0,0 +1,3 @@ +1 1 SET IF SECONDARY CALIBRATION USED +22 22 SET IF ALL THE CHANNELS ARE MISSING +23 23 SUSPECT diff --git a/definitions/bufr/tables/0/wmo/40/codetables/33035.table b/definitions/bufr/tables/0/wmo/40/codetables/33035.table new file mode 100644 index 000000000..01996bae4 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/33035.table @@ -0,0 +1,10 @@ +0 0 AUTOMATIC QUALITY CONTROL PASSED AND NOT MANUALLY CHECKED +1 1 AUTOMATIC QUALITY CONTROL PASSED AND MANUALLY CHECKED AND PASSED +2 2 AUTOMATIC QUALITY CONTROL PASSED AND MANUALLY CHECKED AND DELETED +3 3 AUTOMATIC QUALITY CONTROL FAILED AND MANUALLY NOT CHECKED +4 4 AUTOMATIC QUALITY CONTROL FAILED AND MANUALLY CHECKED AND FAILED +5 5 AUTOMATIC QUALITY CONTROL FAILED AND MANUALLY CHECKED AND RE-INSERTED +6 6 AUTOMATIC QUALITY CONTROL FLAGGED DATA AS QUESTIONABLE AND NOT MANUALLY CHECKED +7 7 AUTOMATIC QUALITY CONTROL FLAGGED DATA AS QUESTIONABLE AND MANUALLY CHECKED AND FAILED +8 8 MANUALLY CHECKED AND FAILED +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/33037.table b/definitions/bufr/tables/0/wmo/40/codetables/33037.table new file mode 100644 index 000000000..9f26652a5 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/33037.table @@ -0,0 +1,19 @@ +1 1 U DEPARTURE FROM GUESS +2 2 V DEPARTURE FROM GUESS +3 3 U AND V DEPARTURE FROM GUESS +4 4 U ACCELERATION +5 5 V ACCELERATION +6 6 U AND V ACCELERATION +7 7 POSSIBLE LAND FEATURE +8 8 U ACCELERATION AND POSSIBLE LAND FEATURE +9 9 V ACCELERATION AND POSSIBLE LAND FEATURE +10 10 U AND V ACCELERATION AND POSSIBLE LAND FEATURE +11 11 BAD WIND GUESS +12 12 CORRELATION FAILURE +13 13 SEARCH BOX OFF EDGE OF AREA +14 14 TARGET BOX OFF EDGE OF AREA +15 15 PIXEL BRIGHTNESS OUT OF BOUNDS (NOISY LINE) +16 16 TARGET OUTSIDE OF LATITUDE/LONGITUDE BOX +17 17 TARGET OUTSIDE OF PRESSURE MINIMUM/MAXIMUM +18 18 AUTOEDITOR FLAGGED SLOW VECTOR +19 19 AUTOEDITOR FLAGGED VECTORS diff --git a/definitions/bufr/tables/0/wmo/40/codetables/33038.table b/definitions/bufr/tables/0/wmo/40/codetables/33038.table new file mode 100644 index 000000000..3dc1192e8 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/33038.table @@ -0,0 +1,9 @@ +1 1 TOTAL ZENITH DELAY QUALITY IS CONSIDERED POOR +2 2 GALILEO SATELLITES USED +3 3 GLONASS SATELLITES USED +4 4 GPS SATELLITES USED +5 5 METEOROLOGICAL DATA APPLIED +6 6 ATMOSPHERIC LOADING CORRECTION APPLIED +7 7 OCEAN TIDE LOADING APPLIED +8 8 CLIMATE QUALITY DATA PROCESSING +9 9 NEAR-REAL TIME DATA PROCESSING diff --git a/definitions/bufr/tables/0/wmo/40/codetables/33039.table b/definitions/bufr/tables/0/wmo/40/codetables/33039.table new file mode 100644 index 000000000..c34540914 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/33039.table @@ -0,0 +1,12 @@ +1 1 NON-NOMINAL QUALITY +2 2 OFFLINE PRODUCT +3 3 ASCENDING OCCULTATION FLAG +4 4 EXCESS PHASE PROCESSING NON-NOMINAL +5 5 BENDING ANGLE PROCESSING NON-NOMINAL +6 6 REFRACTIVITY PROCESSING NON-NOMINAL +7 7 METEOROLOGICAL PROCESSING NON-NOMINAL +8 8 OPEN LOOP DATA INCLUDED +9 9 SURFACE REFLECTIONS DETECTED +10 10 L2C GNSS SIGNALS USED +14 14 BACKGROUND PROFILE NON-NOMINAL +15 15 BACKGROUND (I.E. NOT RETRIEVED) PROFILE PRESENT diff --git a/definitions/bufr/tables/0/wmo/40/codetables/33041.table b/definitions/bufr/tables/0/wmo/40/codetables/33041.table new file mode 100644 index 000000000..8bbdba90a --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/33041.table @@ -0,0 +1,4 @@ +0 0 THE FOLLOWING VALUE IS THE TRUE VALUE +1 1 THE FOLLOWING VALUE IS HIGHER THAN THE TRUE VALUE (THE MEASUREMENT HIT THE LOWER LIMIT OF THE INSTRUMENT) +2 2 THE FOLLOWING VALUE IS LOWER THAN THE TRUE VALUE (THE MEASUREMENT HIT THE HIGHER LIMIT OF THE INSTRUMENT) +3 3 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/33042.table b/definitions/bufr/tables/0/wmo/40/codetables/33042.table new file mode 100644 index 000000000..b75447a4a --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/33042.table @@ -0,0 +1,5 @@ +0 0 EXCLUSIVE LOWER LIMIT (>) +1 1 INCLUSIVE LOWER LIMIT (>=) +2 2 EXCLUSIVE UPPER LIMIT (<) +3 3 INCLUSIVE UPPER LIMIT (=<) +7 7 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/33043.table b/definitions/bufr/tables/0/wmo/40/codetables/33043.table new file mode 100644 index 000000000..398d9ab2c --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/33043.table @@ -0,0 +1,4 @@ +1 1 SEA MDS. NADIR ONLY SST RETRIEVAL USED 3.7 MICRON CHANNEL. LAND MDS RESERVED +2 2 SEA MDS. DUAL VIEW SST RETRIEVAL USED 3.7 MICRON CHANNEL. LAND MDS RESERVED +3 3 NADIR VIEW CONTAINS DAY TIME DATA +4 4 FORWARD VIEW CONTAINS DAY TIME DATA diff --git a/definitions/bufr/tables/0/wmo/40/codetables/33044.table b/definitions/bufr/tables/0/wmo/40/codetables/33044.table new file mode 100644 index 000000000..01746c795 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/33044.table @@ -0,0 +1,14 @@ +1 1 INPUT DATA MEAN OUTSIDE NOMINAL RANGE FLAG +2 2 INPUT DATA STANDARD DEVIATION OUTSIDE NOMINAL RANGE FLAG +3 3 NUMBER OF INPUT DATA GAPS > THRESHOLD VALUE +4 4 PERCENTAGE OF MISSING LINES > THRESHOLD VALUE +5 5 DOPPLER CENTROID UNCERTAIN. CONFIDENCE MEASURE < SPECIFIC VALUE +6 6 DOPPLER AMBIGUITY ESTIMATE UNCERTAIN. CONFIDENCE MEASURE < SPECIFIC VALUE +7 7 OUTPUT DATA MEAN OUTSIDE NOMINAL RANGE FLAG +8 8 OUTPUT DATA STANDARD DEVIATION OUTSIDE NOMINAL RANGE FLAG +9 9 CHIRP RECONSTRUCTION FAILED OR IS OF LOW QUALITY FLAG +10 10 DATA SET MISSING +11 11 INVALID DOWNLINK PARAMETERS +12 12 AZIMUTH CUT-OFF ITERATION COUNT. THE AZIMUTH CUT-OFF FIT DID NOT CONVERGE WITHIN A MINIMUM NUMBER OF ITERATIONS +13 13 AZIMUTH CUT-OFF FIT DID NOT CONVERGE WITHIN A MINIMUM NUMBER OF ITERATIONS +14 14 PHASE INFORMATION CONFIDENCE MEASURE. THE IMAGINARY SPECTRAL PEAK IS LESS THAN A MINIMUM THRESHOLD, OR THE ZERO LAG SHIFT IS GREATER THAN A MINIMUM THRESHOLD diff --git a/definitions/bufr/tables/0/wmo/40/codetables/33047.table b/definitions/bufr/tables/0/wmo/40/codetables/33047.table new file mode 100644 index 000000000..f69b56e18 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/33047.table @@ -0,0 +1,27 @@ +1 1 ERROR DETECTED AND ATTEMPTS TO RECOVER MADE +2 2 ANOMALY IN ON-BOARD DATA HANDLING (OBDH) VALUE DETECTED +3 3 ANOMALY IN ULTRA STABLE OSCILLATOR PROCESSING (USOP) VALUE DETECTED +4 4 ERRORS DETECTED BY ON-BOARD COMPUTER +5 5 AUTOMATIC GAIN CONTROL (AGC) OUT OF RANGE +6 6 RECEPTION (RX) DELAY FAULT. RX DISTANCE OUT OF RANGE +7 7 WAVE FORM SAMPLES FAULT IDENTIFIER. ERROR +8 8 S BAND ANOMALY/ERROR DETECTED +12 12 BRIGHTNESS TEMPERATURE (CHANNEL 1) OUT OF RANGE +13 13 BRIGHTNESS TEMPERATURE (CHANNEL 2) OUT OF RANGE +14 14 RESERVED +15 15 KU BAND OCEAN RETRACKING ERROR +16 16 S BAND OCEAN RETRACKING ERROR +17 17 KU BAND ICE 1 RETRACKING ERROR +18 18 S BAND ICE 1 RETRACKING ERROR +19 19 KU BAND ICE 2 RETRACKING ERROR +20 20 S BAND ICE 2 RETRACKING ERROR +21 21 KU BAND SEA ICE RETRACKING ERROR +22 22 ARITHMETIC FAULT ERROR +23 23 METEO DATA STATE. NO MAP +24 24 METEO DATA STATE. 1 MAP +25 25 METEO DATA STATE. 2 MAPS DEGRADED +26 26 METEO DATA STATE. 2 MAPS NOMINAL +27 27 ORBIT PROPAGATOR STATUS FOR PROPAGATION MODE, SEVERAL ERRORS +28 28 ORBIT PROPAGATOR STATUS FOR PROPAGATION MODE, WARNING DETECTED +29 29 ORBIT PROPAGATOR STATUS FOR INITIALIZATION MODE, SEVERAL ERRORS +30 30 ORBIT PROPAGATOR STATUS FOR INITIALIZATION MODE, WARNING DETECTED diff --git a/definitions/bufr/tables/0/wmo/40/codetables/33048.table b/definitions/bufr/tables/0/wmo/40/codetables/33048.table new file mode 100644 index 000000000..312ba4071 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/33048.table @@ -0,0 +1,4 @@ +0 0 INVERSION SUCCESSFUL +1 1 INVERSION NOT SUCCESSFUL +2 2 RESERVED +3 3 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/33049.table b/definitions/bufr/tables/0/wmo/40/codetables/33049.table new file mode 100644 index 000000000..bdde0619b --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/33049.table @@ -0,0 +1,4 @@ +0 0 EXTERNAL WIND DIRECTION USED DURING INVERSION +1 1 EXTERNAL WIND DIRECTION NOT USED DURING INVERSION +2 2 RESERVED +3 3 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/33050.table b/definitions/bufr/tables/0/wmo/40/codetables/33050.table new file mode 100644 index 000000000..ee7bb6deb --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/33050.table @@ -0,0 +1,9 @@ +0 0 UNQUALIFIED +1 1 CORRECT VALUE (ALL CHECKS PASSED) +2 2 PROBABLY GOOD BUT VALUE INCONSISTENT WITH STATISTICS (DIFFER FROM CLIMATOLOGY) +3 3 PROBABLY BAD (SPIKE, GRADIENT, ETC., IF OTHER TESTS PASSED) +4 4 BAD VALUE, IMPOSSIBLE VALUE (OUT OF SCALE, VERTICAL INSTABILITY, CONSTANT PROFILE) +5 5 VALUE MODIFIED DURING QUALITY CONTROL +8 8 INTERPOLATED VALUE +9 9 GOOD FOR OPERATIONAL USE; CAUTION; CHECK LITERATURE FOR OTHER USES +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/33055.table b/definitions/bufr/tables/0/wmo/40/codetables/33055.table new file mode 100644 index 000000000..b757af0bb --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/33055.table @@ -0,0 +1,13 @@ +11 11 OCEAN SIGMA-0 IS NOT AVAILABLE FOR WIND RETRIEVALS +12 12 BACKGROUND WIND IS NOT AVAILABLE +13 13 BACKGROUND MODEL DETECT LAND +14 14 BACKGROUND MODEL DETECT ICE +15 15 SIGMA-0 IS NOT LAND/ICE FREE +16 16 SIGMA-0 LAND CONTAMINATION +17 17 SIGMA-0 ICE CONTAMINATION +18 18 NOT ENOUGH AZIMUTHAL DIVERSITY +19 19 INVERSION IS NOT DONE +20 20 OVERALL WVC FLAG +21 21 INVERSION IS ATTEMPTED (FLAG IS SET) +22 22 RAINFLAG IS ATTEMPTED (FLAG IS SET) +23 23 RAIN IS DETECTED diff --git a/definitions/bufr/tables/0/wmo/40/codetables/33056.table b/definitions/bufr/tables/0/wmo/40/codetables/33056.table new file mode 100644 index 000000000..ce44ca922 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/33056.table @@ -0,0 +1,13 @@ +8 8 ASCENDING +9 9 VV POLARISATION +10 10 FORE OF SPACECRAFT +11 11 LAND +12 12 POOR SIGMA-0 (SUMMARY) +13 13 INVALID SIGMA-0 (SUMMARY) +14 14 POOR BT +15 15 INVALID BT +16 16 LAND-SEA BOUNDARY +17 17 NEGATIVE SIGMA-0 +21 21 ICE +22 22 MISSING DATA AT A GIVEN LATITUDE-LONGITUDE FOR SEA-ICE FLAGGING PROCESS FOR 2 OR MORE DAYS +23 23 ICE-OCEAN CONTAMINATION diff --git a/definitions/bufr/tables/0/wmo/40/codetables/33060.table b/definitions/bufr/tables/0/wmo/40/codetables/33060.table new file mode 100644 index 000000000..741430292 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/33060.table @@ -0,0 +1,4 @@ +0 0 GOOD +1 1 BAD +2 2 RESERVED +3 3 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/33066.table b/definitions/bufr/tables/0/wmo/40/codetables/33066.table new file mode 100644 index 000000000..a80e6ab9a --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/33066.table @@ -0,0 +1,4 @@ +20 20 GOOD WIND, BUT AN ALTERNATIVE CHANNEL USED FOR FEATURE TRACKING +21 21 GOOD WIND, BUT AN ALTERNATIVE SET OF CHANNELS USED FOR THE DETERMINATION OF CLOUD-TOP HEIGHT/AMV HEIGHT ASSIGNMENT +22 22 CORRELATION SURFACE CONSTRAINT FAILS +23 23 RESERVED diff --git a/definitions/bufr/tables/0/wmo/40/codetables/33070.table b/definitions/bufr/tables/0/wmo/40/codetables/33070.table new file mode 100644 index 000000000..8a0467b65 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/33070.table @@ -0,0 +1,14 @@ +0 0 GOOD RETRIEVAL +1 1 BAD AEROSOL INFORMATION FLAG OR NOAA-16 RADIANCE ANOMALY +2 2 SOLAR ZENITH ANGLE GREATER THAN 84 DEGREES +3 3 380 NM RESIDUE GREATER THAN LIMIT +4 4 OZONE INCONSISTENCY +5 5 DIFFERENCE BETWEEN PROFILE OZONE AND STEP 3 TOTAL OZONE EXCEEDS THRESHOLD (SET TO 25 DU) +6 6 STEP 1 OZONE ITERATION DID NOT CONVERGE +7 7 ANY CHANNEL RESIDUE GREATER THAN 16 OR BAD RADIANCE +8 8 INSUFFICIENT PIXELS - NOT PROCESSED +9 9 FIRST GUESS GOOD - OZONE FORECAST DATA USED +10 10 HIGH CLOUD IN PIXEL - NOT PROCESSED +11 11 SUCCESSFUL OZONE RETRIEVAL +12 12 UNSUCCESSFUL OZONE RETRIEVAL +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/33071.table b/definitions/bufr/tables/0/wmo/40/codetables/33071.table new file mode 100644 index 000000000..262a46c89 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/33071.table @@ -0,0 +1,10 @@ +0 0 GOOD RETRIEVAL +1 1 SOLAR ZENITH ANGLE GREATER THAN 84 DEGREES +2 2 DIFFERENCE BETWEEN STEP 3 AND PROFILE TOTAL OZONE GREATER THAN LIMIT (25 DU) +3 3 AVERAGE FINAL RESIDUE FOR WAVELENGTHS USED IN RETRIEVAL GREATER THAN THRESHOLD +4 4 FINAL RESIDUE GREATER THAN 3 TIMES A PRIORI ERROR +5 5 DIFFERENCE BETWEEN RETRIEVED AND A PRIORI GREATER THAN 3 TIMES A PRIORI ERROR +6 6 NON-CONVERGENT SOLUTION +7 7 UPPER LEVEL PROFILE ANOMALY OR STRAY LIGHT ANOMALY +8 8 INITIAL RESIDUE GREATER THAN 18.0 N-VALUE UNITS +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/33072.table b/definitions/bufr/tables/0/wmo/40/codetables/33072.table new file mode 100644 index 000000000..fcc7f0972 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/33072.table @@ -0,0 +1,18 @@ +0 0 GOOD RETRIEVAL +1 1 REFLECTIVITY OUT OF RANGE +2 2 LARGER PIXELS (NUMBER OF CROSS-TRACK PIXELS LESS THAN 32) OR BACKWARD SCANS ERROR +3 3 SOLAR ZENITH ANGLE GREATER THAN 88 DEGREES +4 4 LATITUDE/LONGITUDE OUT OF RANGE +5 5 VIEWING ZENITH ANGLE OR SOLAR ZENITH ANGLE OUT OF RANGE +6 6 STEP-ONE PROCESS FAILED IN GENERAL +7 7 FIRST GUESS OZONE OUT OF RANGE +8 8 TOO MANY ITERATIONS (EXCEED 8) +9 9 STEP-ONE RESIDUE CALCULATION FAILED +10 10 STEP-TWO PROCESS FAILED IN GENERAL +11 11 FIRST GUESS OZONE PROFILE OUT OF RANGE +12 12 STEP-TWO OZONE VALUE OUT OF RANGE +13 13 STEP-TWO RESIDUE CALCULATION FAILED +14 14 STEP-THREE PROCESS FAILED IN GENERAL +15 15 POLARIZATION CORRECTION ACCURACY ALERT +16 16 RADIANCE OR IRRADIANCE LESS OR EQUAL TO ZERO +31 31 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/33075.table b/definitions/bufr/tables/0/wmo/40/codetables/33075.table new file mode 100644 index 000000000..23edae628 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/33075.table @@ -0,0 +1,5 @@ +1 1 GAP IN RAW DATA RECORD (RDR) DATA DETECTED (I.E., MISSING SCAN(S) PRECEDING THE CURRENT SCAN) +2 2 RECORDED TIME IS NOT IN SEQUENCE (I.E., THE SCAN START TIME IS OUT OF SEQUENCE) +3 3 LAMBDA MONITORED CALCULATION CANNOT BE UPDATED +4 4 THE MEASURED TEMPERATURES OF ANY INSTRUMENT COMPONENTS (E.G., BEAM-SPLITTER, SCAN MIRROR, SCAN BAFFLE) ARE OUTSIDE THE ALLOWABLE RANGES +5 5 AT LEAST ONE OF THE MONITORED INSTRUMENT TEMPERATURES HAS DRIFTED MORE THAN A SPECIFIED TOLERANCE VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/33076.table b/definitions/bufr/tables/0/wmo/40/codetables/33076.table new file mode 100644 index 000000000..7100c4a0d --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/33076.table @@ -0,0 +1,2 @@ +1 1 LUNAR INTRUSION ON FIRST DEEP SPACE VIEW +2 2 LUNAR INTRUSION ON SECOND DEEP SPACE VIEW diff --git a/definitions/bufr/tables/0/wmo/40/codetables/33077.table b/definitions/bufr/tables/0/wmo/40/codetables/33077.table new file mode 100644 index 000000000..769be02f2 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/33077.table @@ -0,0 +1,12 @@ +1 1 DEGRADED SDR QUALITY +2 2 INVALID SDR QUALITY +3 3 INVALID SDR GEOLOCATION INFORMATION +4 4 DEGRADED RADIOMETRIC CALIBRATION +5 5 INVALID RADIOMETRIC CALIBRATION +6 6 DEGRADED SPECTRAL CALIBRATION +7 7 INVALID SPECTRAL CALIBRATION +8 8 FRINGE COUNT ERROR DETECTED AND CORRECTED +9 9 DAY/NIGHT INDICATOR +10 10 INVALID RDR DATA +11 11 SIGNIFICANT FRINGE COUNT ERROR DETECTED +12 12 BIT TRIM FAILED diff --git a/definitions/bufr/tables/0/wmo/40/codetables/33078.table b/definitions/bufr/tables/0/wmo/40/codetables/33078.table new file mode 100644 index 000000000..f3a218067 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/33078.table @@ -0,0 +1,5 @@ +0 0 NOMINAL - ALTITUDE AND EPHEMERIS DATA AVAILABLE +1 1 MISSING AT MOST A SMALL GAP OF ALTITUDE AND EPHEMERIS DATA +2 2 MISSING MORE THAN A SMALL GAP OF ALTITUDE AND EPHEMERIS DATA, BUT NO MORE THAN A GRANULE BOUNDARY +3 3 MISSING MORE THAN A GRANULE BOUNDARY OF ALTITUDE AND EPHEMERIS DATA +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/33079.table b/definitions/bufr/tables/0/wmo/40/codetables/33079.table new file mode 100644 index 000000000..08751431e --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/33079.table @@ -0,0 +1,10 @@ +6 6 THE NO. 1-NO. 7 HEALTH CHECKS FAILED +7 7 THE NO. 8-NO. 15 HEALTH CHECKS FAILED +8 8 THE NO. 16-NO. 23 HEALTH CHECKS FAILED +9 9 THE NO. 24-NO. 31 HEALTH CHECKS FAILED +10 10 THE NO. 32-NO. 39 HEALTH CHECKS FAILED +11 11 THE NO. 40-NO. 47 HEALTH CHECKS FAILED +12 12 THE NO. 48-NO. 55 HEALTH CHECKS FAILED +13 13 THE NO. 56-NO. 63 HEALTH CHECKS FAILED +14 14 THE NO. 64-NO. 70 HEALTH CHECKS FAILED +15 15 QUADRATIC CORRECTION APPLIED TO THE RADIOMETRIC TRANSFER FUNCTION FOR NON-LINEARITY CORRECTION diff --git a/definitions/bufr/tables/0/wmo/40/codetables/33080.table b/definitions/bufr/tables/0/wmo/40/codetables/33080.table new file mode 100644 index 000000000..a39dd47ea --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/33080.table @@ -0,0 +1,13 @@ +7 7 DIVIDE-BY-ZERO CONDITION OR COMPUTATION LOOP FAILED TO CONVERGE IN THE K/KA AND V (KAV) BAND PRT +8 8 DIVIDE-BY-ZERO CONDITION OR COMPUTATION LOOP FAILED TO CONVERGE IN THE WG BAND PRT +9 9 DIVIDE-BY-ZERO CONDITION OR COMPUTATION LOOP FAILED TO CONVERGE IN THE K/KA, V, W, G BAND RECEIVER SHELF PRT K TEMPERATURE COMPUTATION +10 10 OUT OF RANGE CONDITION FOR THE K/KA AND V BAND PRT +11 11 OUT OF RANGE CONDITION FOR THE WG BAND PRT +12 12 KAV PRT TEMPERATURE INCONSISTENCY +13 13 WG PRT TEMPERATURE INCONSISTENCY +14 14 TIME SEQUENCE ERROR +15 15 DATA GAP - MISSING SCAN(S) PRECEDING THE CURRENT SCAN +16 16 KAV PRT SUFFICIENCY - INSUFFICIENT KAV PRT DATA ARE AVAILABLE +17 17 WG PRT SUFFICIENCY - INSUFFICIENT WG PRT DATA ARE AVAILABLE +18 18 SPACE VIEW ANTENNA POSITION ERROR +19 19 BLACKBODY ANTENNA POSITION ERROR diff --git a/definitions/bufr/tables/0/wmo/40/codetables/33081.table b/definitions/bufr/tables/0/wmo/40/codetables/33081.table new file mode 100644 index 000000000..f8759e0ef --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/33081.table @@ -0,0 +1,9 @@ +3 3 MOON IN SPACE VIEW +4 4 GAIN ERROR - THE LOWEST BLACKBODY COUNT IS SMALLER THAN OR EQUAL TO THE HIGHEST SPACE VIEW COUNT IN A SCAN +5 5 CALIBRATION WITH FEWER THAN PREFERRED SAMPLES +6 6 SPACE VIEW DATA SUFFICIENCY CHECK - INSUFFICIENT SPACE VIEW SAMPLES ARE AVAILABLE +7 7 BLACKBODY VIEW DATA SUFFICIENCY CHECK - INSUFFICIENT BLACKBODY VIEW SAMPLES ARE AVAILABLE +8 8 OUT OF RANGE CONDITION FOR THE SPACE VIEW +9 9 OUT OF RANGE CONDITION FOR THE BLACKBODY VIEW +10 10 SPACE VIEW INCONSISTENCY +11 11 BLACKBODY VIEW INCONSISTENCY diff --git a/definitions/bufr/tables/0/wmo/40/codetables/33082.table b/definitions/bufr/tables/0/wmo/40/codetables/33082.table new file mode 100644 index 000000000..467157461 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/33082.table @@ -0,0 +1,10 @@ +6 6 WITHIN SOUTH ATLANTIC ANOMALY +7 7 INVALID INPUT DATA (INDICATES THAT ANY OF THE SPACECRAFT EPHEMERIS OR ATTITUDE DATA ARE INVALID) +8 8 BAD POINTING (INDICATES THAT THE SENSOR LOS DOES NOT INTERSECT THE GEOID, IS NEAR THE LIMB, HAS INVALID SENSOR ANGLES OR OTHER SIMILAR CONDITION) +9 9 BAD TERRAIN (INDICATES THAT THE ALGORITHM COULD NOT OBTAIN A VALID TERRAIN VALUE) +10 10 INVALID SOLAR ANGLES +11 11 MISSING AT MOST A SMALL GAP OF ALTITUDE AND EPHEMERIS DATA +12 12 MISSING MORE THAN A SMALL GAP OF ALTITUDE AND EPHEMERIS DATA, BUT NO MORE THAN A GRANULE BOUNDARY +13 13 MISSING MORE THAN A GRANULE BOUNDARY OF ALTITUDE AND EPHEMERIS DATA +14 14 THE NUMBER OF ENCODER PULSE VALUES PER DELTA TIME IS NOT AS EXPECTED +15 15 SOLAR ECLIPSE DURING EARTH VIEW SCAN diff --git a/definitions/bufr/tables/0/wmo/40/codetables/33083.table b/definitions/bufr/tables/0/wmo/40/codetables/33083.table new file mode 100644 index 000000000..ecd8a1abf --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/33083.table @@ -0,0 +1,10 @@ +6 6 PIXEL IS AFFECTED BY RADIO-FREQUENCY INTERFERENCE +7 7 POOR CALIBRATION QUALITY DUE TO BAD SPACE VIEW OFFSETS, OBC VIEW OFFSETS, ETC. OR USE OF A PREVIOUS CALIBRATION VIEW +8 8 SATURATED PIXEL +9 9 MISSING DATA -DATA REQUIRED FOR CALIBRATION PROCESSING ARE NOT AVAILABLE FOR PROCESSING +10 10 CALIBRATED PIXEL RADIANCE OUT OF RANGE +11 11 CALIBRATED PIXEL REFLECTANCE OR EBBT OUT OF RANGE +12 12 THE MOON HAS CORRUPTED THE SPACE VIEW +13 13 SCAN DATA IS NOT PRESENT (NO VALID DATA) +14 14 QUALITY FOR THIS SCAN-LINE IS REDUCED. THE VALUE IS DETERMINED BY THE COMBINED NUMBER OF STEPS REQUIRED TO FIND A REPLACEMENT FOR THERMISTOR OR CALIBRATION SOURCE DATA +15 15 BAD DETECTOR diff --git a/definitions/bufr/tables/0/wmo/40/codetables/33084.table b/definitions/bufr/tables/0/wmo/40/codetables/33084.table new file mode 100644 index 000000000..accb209c5 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/33084.table @@ -0,0 +1,10 @@ +6 6 BULK SST OUTSIDE OF VALIDATION RANGE +7 7 SKIN SST OUTSIDE OF VALIDATION RANGE +8 8 SENSOR ZENITH ANGLE > 40 DEGREES (PIXEL IS NOT WITHIN 40 DEGREES OF NADIR AND THEREFORE IS NOT OF HIGH QUALITY) +9 9 DEGRADATION - HORIZONTAL CELL SIZE (HCS) > 1.3 KM (HCS > 1.3 KM, SWATH WIDTH > 1 700 KM, SENSOR ZENITH ANGLE > 50.3 DEGREES) +10 10 EXCLUSION: NO OCEAN IN PIXEL +11 11 DEGRADATION: AEROSOL OPTICAL THICKNESS (AOT) > 0.6 (AOT IN HORIZONTAL CELL > 0.6 ON THE SLANT PATH (AOT @550 NM)) +12 12 EXCLUSION: AOT > 1.0 (AOT IN HORIZONTAL CELL > 1.0 ON THE SLANT PATH (AOT @550 NM)) +13 13 SUN GLINT PRESENT IN PIXEL +14 14 ICE CONCENTRATION THRESHOLD EXCEEDED (SST NOT RETRIEVED DUE TO ICE CONCENTRATION EXCEEDING THRESHOLD IN SYSTEM SPEC) +15 15 THIN CIRRUS DETECTED IN PIXEL diff --git a/definitions/bufr/tables/0/wmo/40/codetables/33085.table b/definitions/bufr/tables/0/wmo/40/codetables/33085.table new file mode 100644 index 000000000..844157b20 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/33085.table @@ -0,0 +1,14 @@ +4 4 ANGSTROM EXPONENT IS OUTSIDE OF THE SYSTEM SPECIFICATION RANGE +5 5 EXCLUDED, ANGSTROM EXPONENT FOR AOT AT 550 NM < 0.15 +6 6 BRIGHT SURFACE IN CELL (IF OVER LAND), OR SHALLOW OR TURBID WATER IN CELL (IF OVER OCEAN) +7 7 LOW SUN, EXCLUDED, SOLAR ZENITH ANGLE > 80 DEGREES +8 8 LOW SUN, DEGRADED, 65 DEGREES < SOLAR ZENITH ANGLE =< 80 DEGREES +9 9 FIRE DETECTED IN CELL +10 10 SNOW/ICE IN CELL +11 11 CLOUD SHADOW IN CELL +12 12 SUN GLINT IN CELL +13 13 BAD SDR DATA PRESENT IN HORIZONTAL CELL (QUALITY OF AOT/APSP DEGRADED OR AOT/APSP NOT RETRIEVED DUE TO BAD SDR DATA IN HORIZONTAL CELL) +14 14 CIRRUS CONTAMINATION IN CELL +15 15 CLOUD ADJACENT TO CELL +16 16 CLOUD CONTAMINATION IN CELL +17 17 AOT IS OUTSIDE OF THE SYSTEM SPECIFICATION RANGE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/33086.table b/definitions/bufr/tables/0/wmo/40/codetables/33086.table new file mode 100644 index 000000000..b7cda3212 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/33086.table @@ -0,0 +1,5 @@ +0 0 NOT RETRIEVED +1 1 EXCLUDED +2 2 DEGRADED +3 3 HIGH QUALITY +7 7 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/33087.table b/definitions/bufr/tables/0/wmo/40/codetables/33087.table new file mode 100644 index 000000000..f3000e258 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/33087.table @@ -0,0 +1,10 @@ +0 0 LESS THAN OR EQUAL TO 10% +1 1 GREATER THAN 10% BUT LESS THAN OR EQUAL TO 20% +2 2 GREATER THAN 20% BUT LESS THAN OR EQUAL TO 30% +3 3 GREATER THAN 30% BUT LESS THAN OR EQUAL TO 40% +4 4 GREATER THAN 40% BUT LESS THAN OR EQUAL TO 50% +5 5 GREATER THAN 50% BUT LESS THAN OR EQUAL TO 60% +6 6 GREATER THAN 60% BUT LESS THAN OR EQUAL TO 70% +7 7 GREATER THAN 70% BUT LESS THAN OR EQUAL TO 80% +8 8 GREATER THAN 80% +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/33088.table b/definitions/bufr/tables/0/wmo/40/codetables/33088.table new file mode 100644 index 000000000..744a5d31b --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/33088.table @@ -0,0 +1,12 @@ +6 6 SURFACE REFLECTIVITY OUT OF RANGE +7 7 RESIDUAL TOO LARGE +8 8 AEROSOL INDEX LIMIT EXCEEDED +9 9 SOLAR ECLIPSE PRESENT (ALL OR PART OF THE IFOV IS AFFECTED BY A SOLAR ECLIPSE, UMBRA OR PENUMBRA VIEWING) +10 10 SUN GLINT PRESENT WITHIN IFOV +11 11 SNOW OR ICE SURFACE IS WITHIN THE IFOV +12 12 SOLAR ZENITH ANGLE IN EXCLUDED (NIGHT) CONDITION (SOLAR ZENITH ANGLE >= 88 DEGREES) +13 13 SOLAR ZENITH ANGLE IN DEGRADED CONDITION (80 DEGREES =< SOLAR ZENITH ANGLE < 88 DEGREES) +14 14 SO2 INDEX > 6 DU (DEGRADED CONDITION) +15 15 RESIDUES ARE NOT CONSISTENT (INDICATES WHETHER THE RESIDUES FROM THE 22 WAVELENGTHS ARE CONSISTENT) +16 16 O3 TRIPLET SELECTION IS NOT CONSISTENT WITHIN RETRIEVAL (OZONE TRIPLET CONSISTENCY) +17 17 INPUT DATA QUALITY IS NOT GOOD diff --git a/definitions/bufr/tables/0/wmo/40/codetables/33092.table b/definitions/bufr/tables/0/wmo/40/codetables/33092.table new file mode 100644 index 000000000..2a9557582 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/33092.table @@ -0,0 +1,2 @@ +1 1 ALTIMETER OPERATING +2 2 MICROWAVE RADIOMETER (MWR) OPERATING diff --git a/definitions/bufr/tables/0/wmo/40/codetables/33093.table b/definitions/bufr/tables/0/wmo/40/codetables/33093.table new file mode 100644 index 000000000..d872dc664 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/33093.table @@ -0,0 +1,19 @@ +1 1 PATH DELAY QUALITY IS CONSIDERED POOR +2 2 GALILEO SATELLITES USED +3 3 GLONASS SATELLITES USED +4 4 GPS SATELLITES USED +5 5 BEIDOU SATELLITES USED +9 9 METEOROLOGICAL DATA APPLIED +10 10 ATMOSPHERIC LOADING CORRECTION APPLIED +11 11 OCEAN TIDE LOADING APPLIED +12 12 SECOND ORDER IONOSPHERE CORRECTIONS APPLIED +13 13 THIRD ORDER IONOSPHERE CORRECTIONS APPLIED +14 14 PPP SOLUTION +15 15 GRADIENTS APPLIED TO PATH DELAY +16 16 MULTIPATH CORRECTIONS APPLIED TO PATH DELAY +17 17 RESIDUAL APPLIED TO PATH DELAY +18 18 CLIMATE QUALITY DATA PROCESSING +19 19 RE-PROCESSING +20 20 POST-PROCESSING +21 21 NEAR-REAL TIME DATA PROCESSING +22 22 REAL TIME DATA PROCESSING diff --git a/definitions/bufr/tables/0/wmo/40/codetables/33094.table b/definitions/bufr/tables/0/wmo/40/codetables/33094.table new file mode 100644 index 000000000..047801771 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/33094.table @@ -0,0 +1,8 @@ +16 16 NON-OCEAN +17 17 LUNAR OR SOLAR INTRUSION +18 18 SPACECRAFT MANEUVER +19 19 COLD CALIBRATION CONSISTENCY +20 20 WARM CALIBRATION CONSISTENCY +21 21 DESCENDING +22 22 NIGHT +23 23 PAYLOAD REAR ORIENTATION diff --git a/definitions/bufr/tables/0/wmo/40/codetables/33095.table b/definitions/bufr/tables/0/wmo/40/codetables/33095.table new file mode 100644 index 000000000..63be174e9 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/33095.table @@ -0,0 +1,7 @@ +1 1 PRTS OR THMS TEMPERATURES ARE MISSING OR WITH ANOMALOUS READINGS +2 2 PRT TEMPERATURES OF OBCT USED IN THE RADIOMETRIC CALIBRATIONS IS MISSING OR WITH ANOMALOUS READINGS +3 3 THMS TEMPERATURES OF SVR USED IN THE RADIOMETRIC CALIBRATIONS ARE MISSING OR WITH ANOMALOUS READINGS +4 4 THMS TEMPERATURES OF MAIN REFLECTOR ARE MISSING OR WITH ANOMALOUS READINGS +5 5 THMS TEMPERATURES OF THE RACETRACK ARE MISSING OR WITH ANOMALOUS READINGS +6 6 THMS TEMPERATURES OF THE RECEIVERS ARE MISSING OR WITH ANOMALOUS READINGS +7 7 RESERVED diff --git a/definitions/bufr/tables/0/wmo/40/codetables/33096.table b/definitions/bufr/tables/0/wmo/40/codetables/33096.table new file mode 100644 index 000000000..398df5d1f --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/33096.table @@ -0,0 +1,15 @@ +1 1 RADIOMETRIC CALIBRATION FAILED OR IS DEGRADED +2 2 OBCT VIEW COUNTS AVERAGED VALUE OVER SCANS IS MISSING (THIS IS VALID FOR THE HIGH-REFERENCE CALIBRATION LOAD WHEN THE BACK-UP CALIBRATION IS APPLIED FOR CHANNELS MWI-1 TO MWI-3) +3 3 COLD SPACE VIEW COUNTS AVERAGED VALUE OVER SCANS IS MISSING (THIS IS VALID FOR THE LOW-REFERENCE CALIBRATION LOAD WHEN THE BACK-UP CALIBRATION IS APPLIED FOR CHANNELS MWI-1 TO MWI-3) +4 4 OBCT VIEW COUNTS AVERAGED VALUE OVER SCANS IS DEGRADED DUE TO MISSING OR ANOMALOUS COUNTS VALUES (THIS IS VALID FOR THE HIGH-REFERENCE CALIBRATION LOAD WHEN THE BACK-UP CALIBRATION IS APPLIED FOR CHANNELS MWI-1 TO MWI-3) +5 5 COLD SPACE VIEW COUNTS AVERAGED VALUE OVER SCANS IS DEGRADED DUE TO MISSING OR ANOMALOUS COUNTS VALUES (THIS IS VALID FOR THE LOW-REFERENCE CALIBRATION LOAD WHEN THE BACK-UP CALIBRATION IS APPLIED FOR CHANNELS MWI-1 TO MWI-3) +6 6 OBCT VIEW RADIANCE AVERAGED VALUE OVER SCANS IS MISSING (THIS IS VALID FOR THE HIGH-REFERENCE CALIBRATION LOAD WHEN THE BACK-UP CALIBRATION IS APPLIED FOR CHANNELS MWI-1 TO MWI-3) +7 7 COLD SPACE VIEW RADIANCE AVERAGED VALUE OVER SCANS IS MISSING (THIS IS VALID FOR THE LOW-REFERENCE CALIBRATION LOAD WHEN THE BACK-UP CALIBRATION IS APPLIED FOR CHANNELS MWI-1 TO MWI-3) +8 8 OBCT VIEW RADIANCE AVERAGED VALUE OVER SCANS IS DEGRADED DUE TO MISSING OR ANOMALOUS VALUES (THIS IS VALID FOR THE HIGH-REFERENCE CALIBRATION LOAD WHEN THE BACK-UP CALIBRATION IS APPLIED FOR CHANNELS MWI-1 TO MWI-3) +9 9 COLD SPACE VIEW RADIANCE AVERAGED VALUE OVER SCANS IS DEGRADED DUE TO MISSING OR ANOMALOUS VALUES (THIS IS VALID FOR THE LOW-REFERENCE CALIBRATION LOAD WHEN THE BACK-UP CALIBRATION IS APPLIED FOR CHANNELS MWI-1 TO MWI-3) +10 10 NON-LINEARITY PARAMETER COMPUTED USING NOISE DIODES IS MISSING (MEANINGFUL ONLY FOR CHANNELS MWI-1 TO MWI-3) +11 11 NON-LINEARITY PARAMETER COMPUTED USING NOISE DIODES IS DEGRADED (MEANINGFUL ONLY FOR CHANNELS MWI-1 TO MWI-3) +12 12 PRTS OR THMS TEMPERATURES OF CURRENT SCAN ARE MISSING OR WITH ANOMALOUS READINGS +13 13 MOON INTRUSION IN COLD SPACE DEGRADED CALIBRATION (LESS THAN NVALID_C VALID SAMPLES ARE NOT AFFECTED BY MOON FOR THE CONSIDERED CHANNEL AND SCAN) +14 14 BACK-UP CALIBRATION WITH NOISE DIODES PERFORMED (MEANINGFUL ONLY FOR MWI-1 TO MWI-3) +15 15 DEGRADED RECEIVER TEMPERATURES LEAD TO DEGRADED CALIBRATION diff --git a/definitions/bufr/tables/0/wmo/40/codetables/33097.table b/definitions/bufr/tables/0/wmo/40/codetables/33097.table new file mode 100644 index 000000000..4a5ac50f1 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/33097.table @@ -0,0 +1,10 @@ +1 1 SCAN IS DEGRADED IN RAW DATA RECORD +2 2 TIME SEQUENCE ERROR +3 3 CURRENT SCAN IS ACQUIRED AFTER A GAP +4 4 SCAN IS IN PERIOD OF INITIALIZATION OF CALIBRATION OF DATA AVERAGES OVER SCANS (BECAUSE OF COLD START/COLD END, MISSING WARM/COLD L0 PACKETS OR DATA GAPS). +5 5 MOON INTRUSION ANGLE IN SPACE VIEW BELOW THRESHOLD FOR AT LEAST ONE CHANNEL +6 6 MOON CORRECTION IS APPLIED BUT IS DEGRADED FOR AT LEAST ONE CHANNEL +7 7 SUN GLINT ANGLE BELOW THRESHOLD FOR AT LEAST ONE CHANNEL +8 8 RFI CONTAMINATION IN THE EARTH VIEW OR RFI PACKET MISSING FOR THE CONSIDERED SCAN (ONLY FOR MWI-1V AND MWI-1H) +9 9 SATELLITE MANOEUVRE OCCURS IN CURRENT SCAN +10 10 MISSING WARM OR COLD L0 PACKETS FOR THE CONSIDERED SCAN diff --git a/definitions/bufr/tables/0/wmo/40/codetables/33098.table b/definitions/bufr/tables/0/wmo/40/codetables/33098.table new file mode 100644 index 000000000..51170985b --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/33098.table @@ -0,0 +1,8 @@ +1 1 MWI SPECTRAL RADIANCE DATA OF CHANNEL IS MISSING OR DEGRADED +2 2 EARTH VIEW COUNTS OF CHANNEL WITHIN SCAN ARE MISSING OR OUT OF BOUNDS +3 3 RADIOMETRIC CALIBRATION FAILED OR IS DEGRADED +4 4 GEOLOCATION OF CHANNEL IS ERRONEOUS OR DEGRADED +5 5 NEΔT OF THIS DATA GRANULE IS ABOVE THRESHOLD +6 6 MR EMISSIVITY AND SPILLOVER CORRECTION FAILED OR DEGRADED +7 7 MR SIDELOBE CORRECTION FAILED OR DEGRADED +8 8 CHANNEL IS DEFECTIVE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/33099.table b/definitions/bufr/tables/0/wmo/40/codetables/33099.table new file mode 100644 index 000000000..40b24e279 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/33099.table @@ -0,0 +1,15 @@ +1 1 GEOLOCATION OF CHANNEL IS ERRONEOUS OR DEGRADED +2 2 TIME SEQUENCE ERROR +3 3 MISSING OR CORRUPTED NAVATT FILE LEAD TO THE USE OF PREDICTED ORBIT FILES +4 4 NAVATT ATTITUDE DATA IS DEGRADED +5 5 TIME CORRELATION ERROR (MISSING IERS BULLETIN) +6 6 INVALID EPHEMERIS OR ATTITUDE DATA +7 7 SATELLITE MANOEUVRE OCCURS IN CURRENT SCAN +8 8 NON-NOMINAL ATTITUDE WITH YAW, PITCH, ROLL ERROR ABOVE THRESHOLD DELTA_YPR (NOMINALLY THESE ANGLES ARE 0.0 DEG FOR YSM) +9 9 SAMPLING TIME NOT WITHIN PRESCRIBED LIMITS +10 10 SCAN VELOCITY NOT WITHIN PRESCRIBED LIMITS +11 11 BAD POINTING (SENSOR LOS DOES NOT INTERSECT ELLIPSOID OR NOT COMPLIANT WITH OBSERVATION AZIMUTH/ELEVATION LIMITS) +12 12 INVALID SOLAR AZIMUTH/ZENITH ANGLES COMPUTED +13 13 DEM GEOLOCATION NOT PERFORMED (WITH USE_DEM_FLAG = 1) +14 14 ERROR IN LAND FRACTION COMPUTATION +15 15 PREDICTED ORBIT FILE NOT AVAILABLE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/33100.table b/definitions/bufr/tables/0/wmo/40/codetables/33100.table new file mode 100644 index 000000000..780907a29 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/33100.table @@ -0,0 +1,7 @@ +1 1 PRTS OR THMS TEMPERATURES ARE MISSING OR WITH ANOMALOUS READINGS +2 2 PRT TEMPERATURES OF OBCT USED IN THE RADIOMETRIC CALIBRATIONS IS MISSING OR WITH ANOMALOUS READINGS +3 3 PRT TEMPERATURES OF SVR USED IN THE RADIOMETRIC CALIBRATIONS ARE MISSING OR WITH ANOMALOUS READINGS +4 4 PRT TEMPERATURES OF IRP AND SUN SHIELD ARE MISSING OR WITH ANOMALOUS READINGS +5 5 THMS TEMPERATURE OF BACK-END ARE MISSING OR WITH ANOMALOUS READINGS +6 6 THMS TEMPERATURE OF FRONT-END ARE MISSING OR WITH ANOMALOUS READINGS +7 7 PRT TEMPERATURES OF MAIN REFLECTOR ARE MISSING OR WITH ANOMALOUS READINGS diff --git a/definitions/bufr/tables/0/wmo/40/codetables/33101.table b/definitions/bufr/tables/0/wmo/40/codetables/33101.table new file mode 100644 index 000000000..5b0c65df6 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/33101.table @@ -0,0 +1,12 @@ +1 1 RADIOMETRIC CALIBRATION FAILED OR IS DEGRADED +2 2 OBCT VIEW COUNTS AVERAGED VALUE OVER SCANS IS MISSING +3 3 COLD SPACE VIEW COUNTS AVERAGED VALUE OVER SCANS IS MISSING +4 4 OBCT VIEW COUNTS AVERAGED VALUE OVER SCANS IS DEGRADED DUE TO MISSING OR ANOMALOUS COUNTS VALUES +5 5 COLD SPACE VIEW COUNTS AVERAGED VALUE OVER SCANS IS DEGRADED DUE TO MISSING OR ANOMALOUS COUNTS VALUES +6 6 OBCT VIEW RADIANCE AVERAGED VALUE OVER SCANS IS MISSING +7 7 COLD SPACE VIEW RADIANCE AVERAGED VALUE OVER SCANS IS MISSING +8 8 OBCT VIEW RADIANCE AVERAGED VALUE OVER SCANS IS DEGRADED DUE TO MISSING OR ANOMALOUS VALUES +9 9 COLD SPACE VIEW RADIANCE AVERAGED VALUE OVER SCANS IS DEGRADED DUE TO MISSING OR ANOMALOUS VALUES +10 10 PRTS OR THMS TEMPERATURES OF CURRENT SCAN ARE MISSING OR WITH ANOMALOUS READINGS +11 11 MOON INTRUSION IN COLD SPACE DEGRADED CALIBRATION (LESS THAN NVALID_C VALID SAMPLES ARE NOT AFFECTED BY MOON FOR THE CONSIDERED CHANNEL AND SCAN) +12 12 DEGRADED OR MISSING BACK-END TEMPERATURES LEAD TO DEGRADED CALIBRATION diff --git a/definitions/bufr/tables/0/wmo/40/codetables/33102.table b/definitions/bufr/tables/0/wmo/40/codetables/33102.table new file mode 100644 index 000000000..cc406573d --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/33102.table @@ -0,0 +1,9 @@ +1 1 SCAN IS DEGRADED IN RAW DATA RECORDS +2 2 TIME SEQUENCE ERROR +3 3 CURRENT SCAN IS ACQUIRED AFTER A GAP +4 4 SCAN IS IN PERIOD OF INITIALIZATION OF CALIBRATION OF DATA AVERAGES OVER SCANS (BECAUSE OF COLD START/COLD END, MISSING WARM/COLD L0 PACKETS OR DATA GAPS) +5 5 MOON INTRUSION ANGLE IN SPACE VIEW BELOW THRESHOLD FOR AT LEAST ONE CHANNEL +6 6 MOON CORRECTION IS APPLIED BUT IS DEGRADED FOR AT LEAST ONE CHANNEL +7 7 SUN GLINT ANGLE BELOW THRESHOLD FOR AT LEAST ONE CHANNEL +8 8 SATELLITE MANOEUVRE OCCURS IN CURRENT SCAN +9 9 MISSING WARM OR COLD L0 PACKETS FOR THE CONSIDERED SCAN diff --git a/definitions/bufr/tables/0/wmo/40/codetables/33103.table b/definitions/bufr/tables/0/wmo/40/codetables/33103.table new file mode 100644 index 000000000..7683c6afa --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/33103.table @@ -0,0 +1,8 @@ +1 1 ICI SPECTRAL RADIANCE DATA OF CHANNEL IS MISSING OR DEGRADED +2 2 EARTH VIEW COUNTS OF CHANNEL WITHIN SCAN ARE MISSING OR OUT OF BOUNDS +3 3 RADIOMETRIC CALIBRATION FAILED OR IS DEGRADED +4 4 GEOLOCATION OF CHANNEL IS ERRONEOUS OR DEGRADED +5 5 NEΔT OF THIS DATA GRANULE IS ABOVE THRESHOLD +6 6 MR EMISSIVITY AND SPILLOVER CORRECTION FAILED OR DEGRADED +7 7 MR SIDELOBE CORRECTION FAILED OR DEGRADED +8 8 CHANNEL IS DEFECTIVE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/33104.table b/definitions/bufr/tables/0/wmo/40/codetables/33104.table new file mode 100644 index 000000000..7b0ca41d9 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/33104.table @@ -0,0 +1,15 @@ +1 1 GEOLOCATION OF CHANNELS IS ERRONEOUS OR DEGRADED +2 2 TIME SEQUENCE ERROR +3 3 MISSING OR CORRUPTED NAVATT FILE LEAD TO THE USE OF PREDICTED ORBIT FILES +4 4 NAVATT ATTITUDE DATA IS DEGRADED +5 5 TIME CORRELATION ERROR (MISSING IERS BULLETIN) +6 6 INVALID EPHEMERIS OR ATTITUDE DATA +7 7 SATELLITE MANOEUVRE OCCURS IN CURRENT SCAN +8 8 NON-NOMINAL ATTITUDE WITH YAW, PITCH, ROLL ERROR ABOVE THRESHOLD DELTA_YPR (NOMINALLY THESE ANGLES ARE 0.0 DEG FOR YSM) +9 9 SAMPLING TIME NOT WITHIN PRESCRIBED LIMITS +10 10 SCAN VELOCITY NOT WITHIN PRESCRIBED LIMITS +11 11 BAD POINTING (SENSOR LOS DOES NOT INTERSECT ELLIPSOID OR NOT COMPLIANT WITH OBSERVATION AZIMUTH/ELEVATION LIMITS) +12 12 INVALID SOLAR AZIMUTH/ZENITH ANGLES COMPUTED +13 13 DEM GEOLOCATION NOT PERFORMED (WITH USE_DEM_FLAG = 1) +14 14 ERROR IN LAND FRACTION COMPUTATION +15 15 PREDICTED ORBIT FILE NOT AVAILABLE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/33105.table b/definitions/bufr/tables/0/wmo/40/codetables/33105.table new file mode 100644 index 000000000..c8e6c8af5 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/33105.table @@ -0,0 +1,9 @@ +1 1 MOON CONTAMINATION CORRECTION ON COLD SPACE VIEW COUNTS IS NOT APPLIED +2 2 MR SPILLOVER CORRECTION RELATIVE TO EMISSION BY INSTRUMENT PLATFORM IS NOT APPLIED +3 3 SVR SPILLOVER CORRECTION RELATIVE TO EMISSION BY INSTRUMENT PLATFORM IS NOT APPLIED +4 4 SVR SIDELOBE CORRECTION IS NOT APPLIED +5 5 FULL CROSS-POLARIZATION CORRECTION INCLUDING SMALL ANGLES CORRECTION IS APPLIED +6 6 DYNAMIC SIDELOBE CORRECTION IS NOT APPLIED FOR ICI-1 +7 7 DYNAMIC SIDELOBE CORRECTION IS NOT APPLIED FOR ICI-2 +8 8 DYNAMIC SIDELOBE CORRECTION IS NOT APPLIED FOR ICI-3 +9 9 DYNAMIC SIDELOBE CORRECTION IS NOT APPLIED FOR ICI-4 V AND ICI-4 H diff --git a/definitions/bufr/tables/0/wmo/40/codetables/33106.table b/definitions/bufr/tables/0/wmo/40/codetables/33106.table new file mode 100644 index 000000000..811926c02 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/33106.table @@ -0,0 +1,12 @@ +1 1 MOON CONTAMINATION CORRECTION ON COLD SPACE VIEW COUNTS IS NOT APPLIED +2 2 CALIBRATION WITH NOISE DIODES IS NOT APPLIED FOR AT LEAST ONE CHANNEL AMONG MWI-1 TO MWI-3 +3 3 MR SPILLOVER CORRECTION RELATIVE TO EMISSION BY INSTRUMENT PLATFORM IS NOT APPLIED +4 4 SVR SPILLOVER CORRECTION RELATIVE TO EMISSION BY INSTRUMENT PLATFORM IS NOT APPLIED +5 5 SVR SIDELOBE CORRECTION IS NOT APPLIED +6 6 FULL CROSS-POLARIZATION CORRECTION INCLUDING SMALL ANGLES CORRECTION IS APPLIED +7 7 RFI CORRECTION IN THE EARTH VIEW IS NOT APPLIED +8 8 DYNAMIC SIDELOBE CORRECTION IS NOT APPLIED FOR MWI-1 +9 9 DYNAMIC SIDELOBE CORRECTION IS NOT APPLIED FOR MWI-2 +10 10 DYNAMIC SIDELOBE CORRECTION IS NOT APPLIED FOR MWI-3 +11 11 DYNAMIC SIDELOBE CORRECTION IS NOT APPLIED FOR MWI-4 +12 12 DYNAMIC SIDELOBE CORRECTION IS NOT APPLIED FOR MWI-8 diff --git a/definitions/bufr/tables/0/wmo/40/codetables/33107.table b/definitions/bufr/tables/0/wmo/40/codetables/33107.table new file mode 100644 index 000000000..8487a7300 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/33107.table @@ -0,0 +1,15 @@ +1 1 NON-NOMINAL SCAN DUE TO GAP +2 2 NON-NOMINAL WARM TARGET TEMPERATURE +3 3 NON-NOMINAL ALONG-TRACK AVERAGING OF WARM TARGET TEMPERATURES +4 4 NON-NOMINAL INSTRUMENT TEMPERATURE +5 5 NON-NOMINAL ALONG-TRACK AVERAGING OF INSTRUMENT TEMPERATURES +6 6 NON-NOMINAL ROTATING REFLECTOR TEMPERATURE +7 7 NON-NOMINAL ALONG-TRACK AVERAGING OF ROTATING REFLECTOR TEMPERATURES +8 8 NON-NOMINAL ANTENNA SCAN ANGLE EARTH VIEW +9 9 NON-NOMINAL ANTENNA SCAN ANGLE COLD VIEW +10 10 NON-NOMINAL ANTENNA SCAN ANGLE WARM VIEW +11 11 NON-NOMINAL GEOLOCATION +12 12 NON-NOMINAL LSM AND DEM ASSIGNMENT +13 13 ONGOING SATELLITE MANOEUVRE +14 14 REDUNDANT 50GHZ REC AND PRT SET IN USE +15 15 RESERVED diff --git a/definitions/bufr/tables/0/wmo/40/codetables/33108.table b/definitions/bufr/tables/0/wmo/40/codetables/33108.table new file mode 100644 index 000000000..70f883e37 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/33108.table @@ -0,0 +1,12 @@ +1 1 NON-NOMINAL CONDITION +2 2 SCAN NOT PROCESSED +3 3 GEOLOCATION NOT SUCCESSFUL +4 4 ORBIT NOT INITIALIZED WITH NAVATT +5 5 ATTITUDE NOT INITIALIZED WITH NAVATT +6 6 PREDICTED ORBIT FILE INGEST ERROR +7 7 MANOEUVRE +8 8 IERS BULLETIN A INGEST ERROR +9 9 TIME CORRELATION AND EOP INITIALIZED WITH PREDICTED ORBIT FILE +10 10 FULL ACCURACY OF NAVATT INITIALIZED ATTITUDE NOT REACHED +11 11 POINTING MODE NOT YSM +12 12 NAVATT INGEST ERROR diff --git a/definitions/bufr/tables/0/wmo/40/codetables/33109.table b/definitions/bufr/tables/0/wmo/40/codetables/33109.table new file mode 100644 index 000000000..467f6c0ae --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/33109.table @@ -0,0 +1,6 @@ +1 1 MISSING INPUT PRODUCT(S) +2 2 DATA GAP(S) +3 3 CORRUPTED INPUT PRODUCT(S) +4 4 INSTRUMENT ANOMALY +5 5 MISSING OR DEGRADED AUXILIARY DATA +6 6 DEGRADED DUE TO MANOEUVRE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/33110.table b/definitions/bufr/tables/0/wmo/40/codetables/33110.table new file mode 100644 index 000000000..ac33f50c9 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/33110.table @@ -0,0 +1,8 @@ +1 1 CHANNEL IS OFF +2 2 NON-NOMINAL MEAN WARM VIEW COUNT +3 3 NON-NOMINAL ALONG-TRACK AVERAGING OF WARM VIEW COUNTS +4 4 NON-NOMINAL MEAN COLD VIEW COUNT +5 5 NON-NOMINAL ALONG-TRACK AVERAGING OF COLD VIEW COUNTS +6 6 NON-NOMINAL CALIBRATION COEFFICIENTS +7 7 MOON INTRUSION IN SOME OF THE COLD VIEW FOVS +8 8 NON-NOMINAL PROCESSING OR EXCESSIVE VALUE FOR NEDT (COLD OR WARM) diff --git a/definitions/bufr/tables/0/wmo/40/codetables/33111.table b/definitions/bufr/tables/0/wmo/40/codetables/33111.table new file mode 100644 index 000000000..fea38a90b --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/33111.table @@ -0,0 +1,31 @@ +1 1 PREDICTED ORBIT FILE USED +2 2 MANOEUVRE TAKING PLACE +3 3 RESERVED +4 4 SATELLITE IS NOT IN YAW STEERING MODE +5 5 TRANSPONDER SIGNAL IS PRESENT +6 6 NOISE ESTIMATE IS POOR +7 7 NOISE ESTIMATE IS VERY POOR +8 8 NOISE OUTLIER IS PRESENT +9 9 ANCILLARY DATA IS POOR +10 10 ANCILLARY DATA IS VERY POOR +11 11 CHARACTERISATION TABLE LIMITS EXCEEDED +12 12 POWER-GAIN ESTIMATE IS POOR +13 13 POWER-GAIN ESTIMATE IS VERY POOR +14 14 POWER-GAIN OUT OF LIMITS +15 15 WAVEGUIDE LOSS ESTIMATE IS POOR +16 16 WAVEGUIDE LOSS ESTIMATE IS VERY POOR +17 17 WAVEGUIDE TABLE LIMITS EXCEEDED +18 18 ECHO IS OUT OF ADC RANGE +19 19 RESERVED +20 20 MISSING NORMALISATION TABLES +21 21 NUMBER OF SAMPLES IN WINDOW IS LOW +22 22 NUMBER OF SAMPLES IN WINDOW IS VERY LOW +23 23 NEGATIVE BACKSCATTER IN RESAMPLED DATA +24 24 POSSIBLE INTERFERENCE FROM SOLAR ARRAY +25 25 RESERVED +26 26 RESERVED +27 27 RESERVED +28 28 LAND +29 29 WATER +30 30 ASCENDING PASS +31 31 DESCENDING PASS diff --git a/definitions/bufr/tables/0/wmo/40/codetables/33113.table b/definitions/bufr/tables/0/wmo/40/codetables/33113.table new file mode 100644 index 000000000..a8f4ce101 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/33113.table @@ -0,0 +1,11 @@ +1 1 GENERAL QUALITY (0 IF BITS 2 TO 11 ARE ALL 0, 1 OTHERWISE) +2 2 SOUNDER RADIOMETRIC +3 3 SOUNDER SPECTRAL +4 4 IMAGER GEOMETRIC +5 5 IMAGER CLASSIFICATION +6 6 IMAGER RADIOMETRIC +7 7 GENERAL SOUNDER +8 8 PRESENCE OF MATHEMATICAL ERRORS +9 9 TM DATA MISSING +10 10 TM DATA CORRUPT +11 11 TM INTEGRITY INSTRUMENT diff --git a/definitions/bufr/tables/0/wmo/40/codetables/33114.table b/definitions/bufr/tables/0/wmo/40/codetables/33114.table new file mode 100644 index 000000000..576d09d85 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/33114.table @@ -0,0 +1,16 @@ +1 1 TEMPERATURE PROFILE +2 2 WATER VAPOUR PROFILE +3 3 OZONE PROFILE +4 4 SURFACE SKIN TEMPERATURE +5 5 SURFACE AIR TEMPERATURE +6 6 SURFACE AIR DEW POINT TEMPERATURE +7 7 SURFACE PRESSURE +8 8 SURFACE SKIN TEMPERATURE ERROR ESTIMATE (QUALITY INDICATOR) +9 9 SURFACE AIR TEMPERATURE ERROR ESTIMATE (QUALITY INDICATOR) +10 10 SURFACE AIR DEW POINT TEMPERATURE ERROR ESTIMATE (QUALITY INDICATOR) +11 11 SURFACE PRESSURE ERROR ESTIMATE (QUALITY INDICATOR) +12 12 SURFACE EMISSIVITY COARSE INFRARED SPECTRUM +13 13 SURFACE EMISSIVITY MICROWAVE SPECTRUM +14 14 CO2 PROFILE +15 15 CH4 PROFILE +16 16 N2O PROFILE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/33115.table b/definitions/bufr/tables/0/wmo/40/codetables/33115.table new file mode 100644 index 000000000..911a3c2e7 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/33115.table @@ -0,0 +1,6 @@ +0 0 GOOD +1 1 CLOUDY NADIR +2 2 CLOUDY OBLIQUE +3 3 GLINT NADIR +4 4 GLINT OBLIQUE +31 31 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/35000.table b/definitions/bufr/tables/0/wmo/40/codetables/35000.table new file mode 100644 index 000000000..8c57023e3 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/35000.table @@ -0,0 +1 @@ +1023 1023 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/35001.table b/definitions/bufr/tables/0/wmo/40/codetables/35001.table new file mode 100644 index 000000000..bba0c812e --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/35001.table @@ -0,0 +1,4 @@ +0 0 REAL TIME +1 1 NEAR-REAL TIME +2 2 NON-REAL TIME +7 7 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/35030.table b/definitions/bufr/tables/0/wmo/40/codetables/35030.table new file mode 100644 index 000000000..5b83f8b81 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/35030.table @@ -0,0 +1,10 @@ +0 0 NO DISCREPANCIES +1 1 NON-COMPLIANCE WITH STANDARD AND RECOMMENDED PRACTICES AND PROCEDURES INCLUDING THOSE OF MONITORING +2 2 CATALOGUES OF METEOROLOGICAL BULLETINS NOT UPDATED IN A TIMELY MANNER +3 3 INCORRECT ROUTING DIRECTORIES +4 4 LACK OF FLEXIBILITY IN THE ROUTING ARRANGEMENTS +5 5 DEFICIENCIES IN THE OPERATION OF GTS CENTRES AND CIRCUITS +6 6 LOSS OF DATA OR DELAYS IN RELAYING DATA ON THE GTS +7 7 ROUTING OF DATA DIFFERENT FROM THE ROUTING PROVIDED IN THE PLAN +8 8 VARIOUS MALPRACTICES +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/35031.table b/definitions/bufr/tables/0/wmo/40/codetables/35031.table new file mode 100644 index 000000000..bdd705ddd --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/35031.table @@ -0,0 +1,20 @@ +1 1 SUFFICIENT AND ALL OF ACCEPTABLE QUALITY +2 2 SUFFICIENT BUT PARTLY OF ACCEPTABLE QUALITY +3 3 INSUFFICIENT BUT ALL OF ACCEPTABLE QUALITY +4 4 INSUFFICIENT AND OF UNACCEPTABLE QUALITY +5 5 SOME MESSAGES NOT COMPLETE +6 6 SUSPECT OR WRONGLY CODED GROUPS COULD NOT BE INTERPRETED CONFIDENTLY +7 7 GROSS CODING ERRORS +8 8 TRANSMISSION SEQUENTIAL ORDER NOT OBSERVED +9 9 REPORT COMPLETELY GARBLED AND THUS DISCARDED +10 10 DEFICIENCIES IDENTIFIED AND RECTIFIED +11 11 DEFICIENCIES IDENTIFIED BUT NOT RECTIFIED +12 12 DEFICIENCIES NOT IDENTIFIED +13 13 MEASURING ERRORS +14 14 MUTUAL INCONSISTENCY +15 15 TEMPORAL INCONSISTENCY +16 16 FORECAST ERROR +17 17 BIAS +18 18 IMPROVE SYSTEM OF QUALITY CONTROL +19 19 EXPAND TRAINING PROGRAMMES +127 127 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/35032.table b/definitions/bufr/tables/0/wmo/40/codetables/35032.table new file mode 100644 index 000000000..7f53a05f9 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/35032.table @@ -0,0 +1,10 @@ +1 1 DATA GROUPS MISSING DUE TO RADIO FADING +2 2 DATA GROUPS MISSING DUE TO OUTAGE OF CENTRE +3 3 DATA GROUPS MISSING DUE TO OUTAGE OF CIRCUIT +4 4 NON-IMPLEMENTATION OR MAINTENANCE OF REQUIRED RBSN DENSITY +5 5 SHORTAGE OF QUALIFIED STAFF TO MAN STATIONS +6 6 LACK OF CONSUMABLES +7 7 INSTRUMENT FAILURE +8 8 NON-ADHERENCE TO TELECOMMUNICATION PROCEDURES +9 9 SOME OBSERVING PROGRAMMES CEASED +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/35033.table b/definitions/bufr/tables/0/wmo/40/codetables/35033.table new file mode 100644 index 000000000..86e9592ef --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/35033.table @@ -0,0 +1,12 @@ +1 1 NO DEFICIENCY +2 2 OBSERVATIONS NOT MADE REGULARLY +3 3 OBSERVATIONS NOT MADE AT RIGHT TIME +4 4 OBSERVATIONS MADE BUT NOT DISSEMINATED +5 5 OBSERVATIONS MADE AND SENT TO INCORRECT USERS +6 6 COLLECTION NOT RECEIVED +7 7 COLLECTION TRANSMITTED LATE +8 8 COLLECTION NOT TRANSMITTED +9 9 DIFFICULTIES IN HF PROPAGATION AND SELECTION OF SUITABLE FREQUENCY +10 10 DIFFICULTIES IN MAINTENANCE OF COMMUNICATION EQUIPMENT AT REMOTE STATIONS +11 11 NO ALTERNATIVE ARRANGEMENT FOR ROUTING METEOROLOGICAL OBSERVATION +123 123 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/35034.table b/definitions/bufr/tables/0/wmo/40/codetables/35034.table new file mode 100644 index 000000000..7297664cf --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/35034.table @@ -0,0 +1,7 @@ +1 1 SLIGHT IMPROVEMENT +2 2 SIGNIFICANT IMPROVEMENT +3 3 MOST SIGNIFICANT IMPROVEMENT +4 4 STEADY +5 5 DECREASING +6 6 EFFORTS REQUIRED TO IMPROVE NIGHT-TIME OBSERVATIONS +7 7 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/35035.table b/definitions/bufr/tables/0/wmo/40/codetables/35035.table new file mode 100644 index 000000000..0fce6ddb7 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/35035.table @@ -0,0 +1,20 @@ +0 0 RESERVED +1 1 BALLOON BURST +2 2 BALLOON FORCED DOWN BY ICING +3 3 LEAKING OR FLOATING BALLOON +4 4 WEAK OR FADING SIGNAL +5 5 BATTERY FAILURE +6 6 GROUND EQUIPMENT FAILURE +7 7 SIGNAL INTERFERENCE +8 8 RADIOSONDE FAILURE +9 9 EXCESSIVE MISSING DATA FRAMES +10 10 RESERVED +11 11 EXCESSIVE MISSING TEMPERATURE +12 12 EXCESSIVE MISSING PRESSURE +13 13 USER TERMINATED +14 14 SUDDEN LOSS OF SIGNAL +15 15 TRACKING LOST +16 16 INCREASING PRESSURE +17 17 INVALID AND/OR MISSED DATA TIME LIMITS EXCEEDED +30 30 OTHER +31 31 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/40005.table b/definitions/bufr/tables/0/wmo/40/codetables/40005.table new file mode 100644 index 000000000..045a4f1b1 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/40005.table @@ -0,0 +1,5 @@ +1 1 SOIL MOISTURE BETWEEN -20% AND 0% +2 2 SOIL MOISTURE BETWEEN 100% AND 120% +3 3 CORRECTION OF WET BACKSCATTER REFERENCE +4 4 CORRECTION OF DRY BACKSCATTER REFERENCE +5 5 CORRECTION OF VOLUME SCATTERING IN SAND diff --git a/definitions/bufr/tables/0/wmo/40/codetables/40006.table b/definitions/bufr/tables/0/wmo/40/codetables/40006.table new file mode 100644 index 000000000..d53382eff --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/40006.table @@ -0,0 +1,8 @@ +1 1 NOT SOIL +2 2 SENSITIVITY TO SOIL MOISTURE BELOW LIMIT +3 3 AZIMUTHAL NOISE ABOVE LIMIT +4 4 BACKSCATTER FORE-AFT BEAM OUT OF RANGE +5 5 SLOPE MID-FORE BEAM OUT OF RANGE +6 6 SLOPE MID-AFT BEAM OUT OF RANGE +7 7 SOIL MOISTURE BELOW -20% +8 8 SOIL MOISTURE ABOVE 120% diff --git a/definitions/bufr/tables/0/wmo/40/codetables/40011.table b/definitions/bufr/tables/0/wmo/40/codetables/40011.table new file mode 100644 index 000000000..ddc7e8672 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/40011.table @@ -0,0 +1,4 @@ +1 1 MEAN SEA-SURFACE (MSS) INTERPOLATION FLAG +2 2 OCEAN TIDE SOLUTION 1 INTERPOLATION FLAG (0 = 4 POINTS OVER OCEAN, 1 = LESS THAN 4 POINTS) +3 3 OCEAN TIDE SOLUTION 2 INTERPOLATION FLAG (0 = 4 POINTS OVER OCEAN, 1 = LESS THAN 4 POINTS) +4 4 METEOROLOGICAL DATA INTERPOLATION FLAG (0 = 4 POINTS OVER OCEAN, 1 = LESS THAN 4 POINTS) diff --git a/definitions/bufr/tables/0/wmo/40/codetables/40012.table b/definitions/bufr/tables/0/wmo/40/codetables/40012.table new file mode 100644 index 000000000..d8ce14d86 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/40012.table @@ -0,0 +1,3 @@ +1 1 18.7 GHZ BRIGHTNESS TEMPERATURE +2 2 23.8 GHZ BRIGHTNESS TEMPERATURE +3 3 34 GHZ BRIGHTNESS TEMPERATURE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/40013.table b/definitions/bufr/tables/0/wmo/40/codetables/40013.table new file mode 100644 index 000000000..766e93f79 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/40013.table @@ -0,0 +1,5 @@ +0 0 INTERPOLATION WITH NO GAP BETWEEN JMR DATA +1 1 INTERPOLATION WITH GAPS BETWEEN JMR DATA +2 2 EXTRAPOLATION OF JMR DATA +3 3 FAILURE OF EXTRAPOLATION AND INTERPOLATION +7 7 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/40020.table b/definitions/bufr/tables/0/wmo/40/codetables/40020.table new file mode 100644 index 000000000..fa1d1f5c5 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/40020.table @@ -0,0 +1,16 @@ +1 1 NZPD AND COMPLEX CALIBRATION ERROR +2 2 BAND 3 AFFECTED BY SPIKE +3 3 BAND 3 AFFECTED BY SATURATION +4 4 BAND 2 AFFECTED BY SPIKE +5 5 BAND 1 AFFECTED BY SPIKE +6 6 OVERFLOW/UNDER FLOW +7 7 ON-BOARD PROCESSING ERROR +8 8 SPECTRAL CALIBRATION ERROR +9 9 RADIOMETRIC CALIBRATION ERROR +10 10 MISSING AVHRR DATA +11 11 MISSING IIS DATA +12 12 MISSING SOUNDER DATA +13 13 GQISFLAGQUAL SUMMARY FLAG FOR ALL BANDS +14 14 ON-GROUND PROCESSING ERROR +15 15 INTER-CALIBRATION ERROR IASI/AVHRR +16 16 SPARE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/40023.table b/definitions/bufr/tables/0/wmo/40/codetables/40023.table new file mode 100644 index 000000000..2e4cbfb69 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/40023.table @@ -0,0 +1,4 @@ +1 1 BAND SEQUENCE (0 = 3KU_1C_3KU, 1 = 2KU_1C_2KU) +2 2 C BAND FREQUENCY (0 = 320 MHZ, 1 = 100 MHZ) +3 3 C BAND STATUS (0 = ON, 1 = OFF) +4 4 KU BAND STATUS (0 = ON, 1 = OFF) diff --git a/definitions/bufr/tables/0/wmo/40/codetables/40024.table b/definitions/bufr/tables/0/wmo/40/codetables/40024.table new file mode 100644 index 000000000..c8421e5af --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/40024.table @@ -0,0 +1,5 @@ +0 0 2 MAPS AVAILABLE (6 HOURS APART) +1 1 2 MAPS AVAILABLE (> 6 HOURS APART) +2 2 1 MAP AVAILABLE; DATA EXTRAPOLATED +3 3 NO MAPS USED +7 7 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/40025.table b/definitions/bufr/tables/0/wmo/40/codetables/40025.table new file mode 100644 index 000000000..741430292 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/40025.table @@ -0,0 +1,4 @@ +0 0 GOOD +1 1 BAD +2 2 RESERVED +3 3 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/40028.table b/definitions/bufr/tables/0/wmo/40/codetables/40028.table new file mode 100644 index 000000000..e094f29dc --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/40028.table @@ -0,0 +1,16 @@ +0 0 GOOD DATA +1 1 POSSIBLE SUN GLINT +2 2 POSSIBLE RADIO-FREQUENCY INTERFERENCE +3 3 DEGRADED GEOLOCATION DATA +4 4 DATA CORRECTED FOR WARM LOAD INTRUSION +5 5 SCAN BLANKING ON +6 6 DATA IS MISSING FROM FILE OR UNREADABLE +7 7 UNPHYSICAL BRIGHTNESS TEMPERATURE +8 8 ERROR IN GEOLOCATION DATA +9 9 DATA MISSING IN ONE CHANNEL +10 10 DATA MISSING IN MULTIPLE CHANNELS +11 11 LAT/LON VALUES ARE OUT OF RANGE +12 12 NON-NORMAL STATUS MODES +13 13 DISTANCE TO CORRESPONDING LOW FREQUENCY PIXEL > 7 KM +14 14 RESERVED +15 15 MISSING VALUE (NO QUALITY INFORMATION AVAILABLE) diff --git a/definitions/bufr/tables/0/wmo/40/codetables/40036.table b/definitions/bufr/tables/0/wmo/40/codetables/40036.table new file mode 100644 index 000000000..9a5418e3a --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/40036.table @@ -0,0 +1,3 @@ +0 0 CLEAR +1 1 CLOUD +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/40043.table b/definitions/bufr/tables/0/wmo/40/codetables/40043.table new file mode 100644 index 000000000..859484624 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/40043.table @@ -0,0 +1,4 @@ +0 0 THE PLATFORM IS NOT UNDERGOING A MANOEUVRE +1 1 THE PLATFORM IS UNDERGOING A MANOEUVRE, NOMINAL PROCESSING +2 2 THE PLATFORM IS UNDERGOING A MANOEUVRE, NO PROCESSING +7 7 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/40045.table b/definitions/bufr/tables/0/wmo/40/codetables/40045.table new file mode 100644 index 000000000..08b600150 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/40045.table @@ -0,0 +1,4 @@ +1 1 CLOUD PRODUCTS RETRIEVED WITH THE CHI-SQUARED METHOD +2 2 CLOUD PRODUCTS RETRIEVED WITH THE CO2-SLICING +3 3 HEIGHT ASSIGNMENT PERFORMED WITH STATISTICAL FIRST GUESS RETRIEVAL +4 4 HEIGHT ASSIGNMENT PERFORMED WITH NWP FORECASTS diff --git a/definitions/bufr/tables/0/wmo/40/codetables/40046.table b/definitions/bufr/tables/0/wmo/40/codetables/40046.table new file mode 100644 index 000000000..31077db10 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/40046.table @@ -0,0 +1,5 @@ +0 0 THE IASI IFOV IS CLEAR +1 1 SMALL CLOUD CONTAMINATION POSSIBLE +2 2 THE IASI IFOV IS PARTIALLY COVERED BY CLOUDS +3 3 HIGH OR FULL CLOUD COVERAGE +7 7 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/40047.table b/definitions/bufr/tables/0/wmo/40/codetables/40047.table new file mode 100644 index 000000000..f7f29c7b8 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/40047.table @@ -0,0 +1,4 @@ +0 0 THE MEASUREMENTS AND SIDE INFORMATION ARE AVAILABLE AND OF GOOD QUALITY FOR L2 PROCESSING +1 1 THE L1C PRODUCTS ARE OF DEGRADED QUALITY ACCORDING TO L1C FLAGS, NO L2 PROCESSING +2 2 QUALITY CONTROL INDICATES THAT THE L1C DATA ARE OF DEGRADED QUALITY (NOT INDICATED BY THE IASI L1C FLAGS), NO L2 PROCESSING +7 7 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/40048.table b/definitions/bufr/tables/0/wmo/40/codetables/40048.table new file mode 100644 index 000000000..ee5d4fe0f --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/40048.table @@ -0,0 +1,4 @@ +0 0 THE EXPECTED AMSU MEASUREMENTS ARE AVAILABLE, OF GOOD QUALITY AND COLLOCATED WITH IASI FOR PROCESSING +1 1 AMSU-A DATA ARE AVAILABLE BUT OF DEGRADED QUALITY (ACCORDING TO AMSU L1 FLAGS OR QC TESTS) AND NOT USED FOR PROCESSING +2 2 NO COINCIDENT (TIME AND SPACE) AMSU MEASUREMENTS AVAILABLE FOR PROCESSING +7 7 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/40049.table b/definitions/bufr/tables/0/wmo/40/codetables/40049.table new file mode 100644 index 000000000..19d1fe9d8 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/40049.table @@ -0,0 +1,12 @@ +4 4 IASI CLOUD OPTICAL THICKNESS INDICATES A CLOUD +5 5 IASI CLOUD OPTICAL THICKNESS COMPUTED +6 6 AVHRR HETEROGENEITY TEST INDICATES A CLOUD +7 7 AVHRR HETEROGENEITY TEST EXECUTED +8 8 IASI-AVHRR ANN CLOUD TEST INDICATES A CLOUD +9 9 IASI-AVHRR ANN CLOUD TEST EXECUTED +10 10 AVHRR INTEGRATED CLOUD FRACTION INDICATES A CLOUD +11 11 AVHRR INTEGRATED CLOUD FRACTION ASSESSED +12 12 AMSU CLOUD TEST INDICATES A CLOUD +13 13 AMSU CLOUD TEST EXECUTED +14 14 IASI WINDOW CLOUD TEST INDICATES A CLOUD +15 15 IASI WINDOW CLOUD TEST EXECUTED diff --git a/definitions/bufr/tables/0/wmo/40/codetables/40050.table b/definitions/bufr/tables/0/wmo/40/codetables/40050.table new file mode 100644 index 000000000..503ab1443 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/40050.table @@ -0,0 +1,3 @@ +5 5 MHS INCLUDED +6 6 AMSU INCLUDED +7 7 IASI INCLUDED diff --git a/definitions/bufr/tables/0/wmo/40/codetables/40051.table b/definitions/bufr/tables/0/wmo/40/codetables/40051.table new file mode 100644 index 000000000..60542bc0f --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/40051.table @@ -0,0 +1,8 @@ +0 0 OPTIMAL ESTIMATION METHODS (OEM) NOT ATTEMPTED +1 1 OEM ABORTED BECAUSE FIRST GUESS RESIDUALS TOO HIGH +2 2 THE MINIMIZATION DID NOT CONVERGE, SOUNDING REJECTED +3 3 THE MINIMIZATION DID NOT CONVERGE, SOUNDING ACCEPTED +4 4 THE MINIMIZATION CONVERGED BUT SOUNDING REJECTED +5 5 THE MINIMIZATION CONVERGED, SOUNDING ACCEPTED +6 6 RESERVED +7 7 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/40052.table b/definitions/bufr/tables/0/wmo/40/codetables/40052.table new file mode 100644 index 000000000..1f48809c0 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/40052.table @@ -0,0 +1,4 @@ +4 4 SUPERSATURATION CONDITIONS IN THE OEM RETRIEVAL +5 5 SUPERADIABATIC CONDITIONS IN THE OEM RETRIEVAL +6 6 SUPERSATURATION CONDITIONS IN THE FIRST GUESS +7 7 SUPERADIABATIC CONDITIONS IN THE FIRST GUESS diff --git a/definitions/bufr/tables/0/wmo/40/codetables/40054.table b/definitions/bufr/tables/0/wmo/40/codetables/40054.table new file mode 100644 index 000000000..a034bc322 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/40054.table @@ -0,0 +1,12 @@ +1 1 AN ERROR HAS BEEN DETECTED +2 2 MESSAGE FROM L1 +3 3 MESSAGE FROM L2 +4 4 MESSAGE FROM ANCILLARY DATA +5 5 MESSAGE FROM FITTING PROCEDURE +6 6 FILE OPENING +7 7 FILE READING +8 8 QUALITY FLAG +9 9 LEVEL 2 FROM LINEAR REGRESSION(F_QUAL), REPORT A PIXEL WHERE L2 ARE NOT FULLY TRUSTED +10 10 EMPTY FIELD OR DATA +11 11 MISSING SURFACE PRESSURE VALUE +12 12 RADIANCE FILTERING diff --git a/definitions/bufr/tables/0/wmo/40/codetables/40055.table b/definitions/bufr/tables/0/wmo/40/codetables/40055.table new file mode 100644 index 000000000..7aa99d433 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/40055.table @@ -0,0 +1,20 @@ +1 1 RADIANCE FILTERING +2 2 POLAR REGIONS +3 3 LOCATION IN THE NIGHT +4 4 NEGATIVE ALTITUDE SURFACE BELOW MEAN SEA LEVEL +5 5 CLOUD COVERED SCENE +6 6 SCENE ABOVE THE SEA +7 7 SCENE ABOVE DESERT +8 8 SKIN TEMPERATURE +9 9 SKIN TEMPERATURE DIFFERENTIAL +10 10 SPECTRAL LINE CONTRAST TOO WEAK +11 11 MAXIMUM NUMBER OF ITERATIONS EXCEEDED +12 12 NEGATIVE PARTIAL COLUMNS +13 13 MATRIX ILL CONDITIONED +14 14 FIT DIVERGED +15 15 ERROR IN GNU SCIENTIFIC LIBRARY (GSL) USAGE +16 16 RESIDUALS BIASED +17 17 RESIDUALS SLOPED +18 18 RESIDUALS ROOT MEAN SQUARE (RMS) ERROR IS LARGE +19 19 WEIRD AVERAGING KERNELS +20 20 ICE PRESENCE DETECTED diff --git a/definitions/bufr/tables/0/wmo/40/codetables/40056.table b/definitions/bufr/tables/0/wmo/40/codetables/40056.table new file mode 100644 index 000000000..f4a31d340 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/40056.table @@ -0,0 +1,4 @@ +0 0 USE NOT RECOMMENDED +1 1 USE WITH CAUTION +2 2 BEST QUALITY +7 7 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/40057.table b/definitions/bufr/tables/0/wmo/40/codetables/40057.table new file mode 100644 index 000000000..c8a50e778 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/40057.table @@ -0,0 +1,30 @@ +1 1 AN ERROR HAS BEEN DETECTED +2 2 MESSAGE FROM L1 +3 3 MESSAGE FROM L2 +4 4 MESSAGE FROM ANCILLARY DATA +5 5 MESSAGE FROM FITTING PROCEDURE +6 6 RESERVED +7 7 BAD L1 OR L2 FLAG RAISED +8 8 LEVEL 2 NOT FULLY TRUSTED +9 9 MISSING TEMPERATURE OR HUMIDITY LEVELS IN THE VERTICAL PROFILE +10 10 MISSING SURFACE PRESSURE VALUE +11 11 RADIANCE FILTERING +12 12 POLAR REGIONS +13 13 LOCATION IN THE NIGHT +14 14 NEGATIVE ALTITUDE +15 15 CLOUD COVERED SCENE +16 16 SCENE ABOVE THE SEA +17 17 SCENE ABOVE DESERT +18 18 MISSING SKIN TEMPERATURE +19 19 RETRIEVED SKIN TEMPERATURE TOO DIFFERENT FROM MODEL +20 20 SPECTRAL LINE CONTRAST TOO WEAK +21 21 MAXIMUM NUMBER OF ITERATIONS EXCEEDS +22 22 NEGATIVE PARTIAL COLUMNS +23 23 MATRIX ILL CONDITIONED +24 24 FIT DIVERGED +25 25 ERROR IN GSL USAGE +26 26 RESIDUALS BIASED +27 27 RESIDUALS SLOPED +28 28 RESIDUALS RMS ERROR IS LARGE +29 29 WEIRD AVERAGING KERNELS +30 30 ICE PRESENCE DETECTED diff --git a/definitions/bufr/tables/0/wmo/40/codetables/40068.table b/definitions/bufr/tables/0/wmo/40/codetables/40068.table new file mode 100644 index 000000000..0b1484e0b --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/40068.table @@ -0,0 +1,4 @@ +0 0 VALUES CALCULATED WITH IASI L2 +1 1 PRESSURE AND TEMPERATURE PROFILES MISSING IN IASI L2 DATA; MODEL/FORECAST DATA USED INSTEAD +2 2 BEST QUALITY +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/40074.table b/definitions/bufr/tables/0/wmo/40/codetables/40074.table new file mode 100644 index 000000000..911a95245 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/40074.table @@ -0,0 +1,10 @@ +1 1 INCOMPATIBILITY OF A SCAN ANGLE FOR ELECTROENCEPHALOGRAM +2 2 CALIBRATION FAILURE (LIMIT OF BLACK BODY TEMPERATURE REACHED, NOT ENOUGH SOURCES FOR INTERFEROMETRY, ETC.) +3 3 GEOLOCATION EXECUTED TAKING INTO ACCOUNT THE ORIENTATION OF THE SPACECRAFT AND USING THE STAR CATALOGUE +4 4 HIGH LEVEL OF CRYOGENIC SEDIMENT REACHED, REQUIRING OUTGASSING OF THE RADIATION COOLER. SET WHEN NESR LEVEL OF THE ICE COVER THRESHOLD CROSSED +5 5 INTERFEROMETRY PACKAGE FLAG +6 6 GENERAL ACCURACY FLAG +7 7 NOISE PRESENT DURING THE INTERFEROMETRY +8 8 OUTGASSING OF THE RADIATION COOLER +9 9 FLAG PRECEDING THE FIRST 24 HOURS/DAY MARK (SET TO ON AS A RULE) +10 10 TELEMETRY PACKAGE FLAG diff --git a/definitions/bufr/tables/0/wmo/40/codetables/4059.table b/definitions/bufr/tables/0/wmo/40/codetables/4059.table new file mode 100644 index 000000000..91fc6f4f9 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/4059.table @@ -0,0 +1,5 @@ +1 1 0000 UTC +2 2 0600 UTC +3 3 1200 UTC +4 4 1800 UTC +5 5 OTHER HOURS diff --git a/definitions/bufr/tables/0/wmo/40/codetables/4080.table b/definitions/bufr/tables/0/wmo/40/codetables/4080.table new file mode 100644 index 000000000..84caf2108 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/4080.table @@ -0,0 +1,6 @@ +0 0 SPOT VALUES +1 1 LESS THAN 15 MINUTES +2 2 FROM 15 TO 45 MINUTES +3 3 MORE THAN 45 MINUTES +9 9 DATA NOT AVAILABLE +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/42004.table b/definitions/bufr/tables/0/wmo/40/codetables/42004.table new file mode 100644 index 000000000..15a91da16 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/42004.table @@ -0,0 +1,3 @@ +0 0 WAVE DIRECTION RESOLVED +1 1 180-DEGREE AMBIGUITY NOT RESOLVED +15 15 MISSING diff --git a/definitions/bufr/tables/0/wmo/40/codetables/5069.table b/definitions/bufr/tables/0/wmo/40/codetables/5069.table new file mode 100644 index 000000000..24c2f5bbb --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/5069.table @@ -0,0 +1,4 @@ +0 0 MIE +1 1 RAYLEIGH +2 2 CROSS POLAR +3 3 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/8001.table b/definitions/bufr/tables/0/wmo/40/codetables/8001.table new file mode 100644 index 000000000..6210da3b3 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/8001.table @@ -0,0 +1,6 @@ +1 1 SURFACE +2 2 STANDARD LEVEL +3 3 TROPOPAUSE LEVEL +4 4 MAXIMUM WIND LEVEL +5 5 SIGNIFICANT LEVEL, TEMPERATURE AND/OR RELATIVE HUMIDITY +6 6 SIGNIFICANT LEVEL, WIND diff --git a/definitions/bufr/tables/0/wmo/40/codetables/8002.table b/definitions/bufr/tables/0/wmo/40/codetables/8002.table new file mode 100644 index 000000000..6ab4fd72d --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/8002.table @@ -0,0 +1,19 @@ +0 0 OBSERVING RULES FOR BASE OF LOWEST CLOUD AND CLOUD TYPES OF FM 12 SYNOP AND FM 13 SHIP APPLY +1 1 FIRST NON-CUMULONIMBUS SIGNIFICANT LAYER +2 2 SECOND NON-CUMULONIMBUS SIGNIFICANT LAYER +3 3 THIRD NON-CUMULONIMBUS SIGNIFICANT LAYER +4 4 CUMULONIMBUS LAYER +5 5 CEILING +6 6 CLOUDS NOT DETECTED BELOW THE FOLLOWING HEIGHT(S) +7 7 LOW CLOUD +8 8 MIDDLE CLOUD +9 9 HIGH CLOUD +10 10 CLOUD LAYER WITH BASE BELOW AND TOP ABOVE THE STATION +11 11 CLOUD LAYER WITH BASE AND TOP BELOW THE STATION LEVEL +20 20 NO CLOUDS DETECTED BY THE CLOUD DETECTION SYSTEM +21 21 FIRST INSTRUMENT DETECTED CLOUD LAYER +22 22 SECOND INSTRUMENT DETECTED CLOUD LAYER +23 23 THIRD INSTRUMENT DETECTED CLOUD LAYER +24 24 FOURTH INSTRUMENT DETECTED CLOUD LAYER +62 62 VALUE NOT APPLICABLE +63 63 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/8003.table b/definitions/bufr/tables/0/wmo/40/codetables/8003.table new file mode 100644 index 000000000..373135140 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/8003.table @@ -0,0 +1,12 @@ +0 0 SURFACE +1 1 BASE OF SATELLITE SOUNDING +2 2 CLOUD TOP +3 3 TROPOPAUSE +4 4 PRECIPITABLE WATER +5 5 SOUNDING RADIANCES +6 6 MEAN TEMPERATURES +7 7 OZONE +8 8 LOW CLOUD +9 9 MED CLOUD +10 10 HIGH CLOUD +63 63 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/8004.table b/definitions/bufr/tables/0/wmo/40/codetables/8004.table new file mode 100644 index 000000000..2a8925eeb --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/8004.table @@ -0,0 +1,6 @@ +2 2 UNSTEADY (UNS) +3 3 LEVEL FLIGHT, ROUTINE OBSERVATION (LVR) +4 4 LEVEL FLIGHT, HIGHEST WIND ENCOUNTERED (LVW) +5 5 ASCENDING (ASC) +6 6 DESCENDING (DES) +7 7 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/8005.table b/definitions/bufr/tables/0/wmo/40/codetables/8005.table new file mode 100644 index 000000000..587ea9924 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/8005.table @@ -0,0 +1,7 @@ +0 0 RESERVED +1 1 STORM CENTRE +2 2 OUTER LIMIT OR EDGE OF STORM +3 3 LOCATION OF MAXIMUM WIND +4 4 LOCATION OF THE STORM IN THE PERTURBED ANALYSIS +5 5 LOCATION OF THE STORM IN THE ANALYSIS +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/8006.table b/definitions/bufr/tables/0/wmo/40/codetables/8006.table new file mode 100644 index 000000000..9f56c628d --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/8006.table @@ -0,0 +1,8 @@ +1 1 SURFACE +2 2 STANDARD LEVEL +3 3 TROPOPAUSE LEVEL +4 4 PROMINENT MAXIMUM LEVEL +5 5 PROMINENT MINIMUM LEVEL +6 6 MINIMUM PRESSURE LEVEL +7 7 RESERVED +8 8 LEVEL OF UNDETERMINED SIGNIFICANCE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/8007.table b/definitions/bufr/tables/0/wmo/40/codetables/8007.table new file mode 100644 index 000000000..3e4d2cc3c --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/8007.table @@ -0,0 +1,5 @@ +0 0 POINT +1 1 LINE +2 2 AREA +3 3 VOLUME +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/8008.table b/definitions/bufr/tables/0/wmo/40/codetables/8008.table new file mode 100644 index 000000000..2714b5aa2 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/8008.table @@ -0,0 +1,8 @@ +1 1 SURFACE +2 2 STANDARD LEVEL +3 3 TROPOPAUSE LEVEL +4 4 LEVEL OF BETA RADIATION MAXIMUM +5 5 LEVEL OF GAMMA RADIATION MAXIMUM +6 6 MINIMUM PRESSURE LEVEL +7 7 RESERVED +8 8 LEVEL OF UNDETERMINED SIGNIFICANCE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/8009.table b/definitions/bufr/tables/0/wmo/40/codetables/8009.table new file mode 100644 index 000000000..b03398230 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/8009.table @@ -0,0 +1,16 @@ +0 0 LEVEL FLIGHT, ROUTINE OBSERVATION, UNSTEADY +1 1 LEVEL FLIGHT, HIGHEST WIND ENCOUNTERED, UNSTEADY +2 2 UNSTEADY (UNS) +3 3 LEVEL FLIGHT, ROUTINE OBSERVATION (LVR) +4 4 LEVEL FLIGHT, HIGHEST WIND ENCOUNTERED (LVW) +5 5 ASCENDING (ASC) +6 6 DESCENDING (DES) +7 7 ASCENDING, OBSERVATION INTERVALS SELECTED BY TIME INCREMENTS +8 8 ASCENDING, OBSERVATION INTERVALS SELECTED BY TIME INCREMENTS, UNSTEADY +9 9 ASCENDING, OBSERVATION INTERVALS SELECTED BY PRESSURE INCREMENTS +10 10 ASCENDING, OBSERVATION INTERVALS SELECTED BY PRESSURE INCREMENTS, UNSTEADY +11 11 DESCENDING, OBSERVATION INTERVALS SELECTED BY TIME INCREMENTS +12 12 DESCENDING, OBSERVATION INTERVALS SELECTED BY TIME INCREMENTS, UNSTEADY +13 13 DESCENDING, OBSERVATION INTERVALS SELECTED BY PRESSURE INCREMENTS +14 14 DESCENDING, OBSERVATION INTERVALS SELECTED BY PRESSURE INCREMENTS, UNSTEADY +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/8010.table b/definitions/bufr/tables/0/wmo/40/codetables/8010.table new file mode 100644 index 000000000..3c5fe71f3 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/8010.table @@ -0,0 +1,14 @@ +0 0 RESERVED +1 1 BARE SOIL +2 2 BARE ROCK +3 3 LAND GRASS COVER +4 4 WATER (LAKE, SEA) +5 5 FLOOD WATER UNDERNEATH +6 6 SNOW +7 7 ICE +8 8 RUNWAY OR ROAD +9 9 SHIP OR PLATFORM DECK IN STEEL +10 10 SHIP OR PLATFORM DECK IN WOOD +11 11 SHIP OR PLATFORM DECK PARTLY COVERED WITH RUBBER MAT +12 12 BUILDING ROOF +31 31 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/8011.table b/definitions/bufr/tables/0/wmo/40/codetables/8011.table new file mode 100644 index 000000000..e7a822114 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/8011.table @@ -0,0 +1,27 @@ +0 0 QUASI-STATIONARY FRONT AT THE SURFACE +1 1 QUASI-STATIONARY FRONT ABOVE THE SURFACE +2 2 WARM FRONT AT THE SURFACE +3 3 WARM FRONT ABOVE THE SURFACE +4 4 COLD FRONT AT THE SURFACE +5 5 COLD FRONT ABOVE THE SURFACE +6 6 OCCLUSION +7 7 INSTABILITY LINE +8 8 INTERTROPICAL FRONT +9 9 CONVERGENCE LINE +10 10 JET STREAM +11 11 CLOUD CLEAR +12 12 CLOUD +13 13 TURBULENCE +14 14 STORM +15 15 AIRFRAME ICING +16 16 PHENOMENON +17 17 VOLCANO +18 18 ATMOSPHERICS +19 19 RESERVED +20 20 SPECIAL CLOUDS +21 21 THUNDERSTORM +22 22 TROPICAL CYCLONE +23 23 MOUNTAIN WAVE +24 24 DUSTSTORM +25 25 SANDSTORM +63 63 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/8012.table b/definitions/bufr/tables/0/wmo/40/codetables/8012.table new file mode 100644 index 000000000..769bc0bb7 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/8012.table @@ -0,0 +1,4 @@ +0 0 LAND +1 1 SEA +2 2 COAST +3 3 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/8013.table b/definitions/bufr/tables/0/wmo/40/codetables/8013.table new file mode 100644 index 000000000..e18d2959b --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/8013.table @@ -0,0 +1,4 @@ +0 0 NIGHT +1 1 DAY +2 2 TWILIGHT +3 3 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/8014.table b/definitions/bufr/tables/0/wmo/40/codetables/8014.table new file mode 100644 index 000000000..e6f2e46b6 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/8014.table @@ -0,0 +1,10 @@ +0 0 10-MINUTE MEAN VALUE - NORMAL VALUE +1 1 10-MINUTE MEAN VALUE - ABOVE THE UPPER LIMIT FOR ASSESSMENTS OF RVR (P) +2 2 10-MINUTE MEAN VALUE - BELOW THE LOWER LIMIT FOR ASSESSMENTS OF RVR (M) +3 3 ONE-MINUTE MINIMUM VALUE - NORMAL VALUE +4 4 ONE-MINUTE MINIMUM VALUE - ABOVE THE UPPER LIMIT FOR ASSESSMENTS OF RVR (P) +5 5 ONE-MINUTE MINIMUM VALUE - BELOW THE LOWER LIMIT FOR ASSESSMENTS OF RVR (M) +6 6 ONE-MINUTE MAXIMUM VALUE - NORMAL VALUE +7 7 ONE-MINUTE MAXIMUM VALUE - ABOVE THE UPPER LIMIT FOR ASSESSMENTS OF RVR (P) +8 8 ONE-MINUTE MAXIMUM VALUE - BELOW THE LOWER LIMIT FOR ASSESSMENTS OF RVR (M) +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/8015.table b/definitions/bufr/tables/0/wmo/40/codetables/8015.table new file mode 100644 index 000000000..6830b9591 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/8015.table @@ -0,0 +1,4 @@ +0 0 SINGLE SENSOR +1 1 PRIMARY SENSOR +2 2 SECONDARY SENSOR (BACKUP) +7 7 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/8016.table b/definitions/bufr/tables/0/wmo/40/codetables/8016.table new file mode 100644 index 000000000..6b8a1fa66 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/8016.table @@ -0,0 +1,5 @@ +0 0 NOSIG +1 1 BECMG +2 2 TEMPO +3 3 FM +7 7 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/8017.table b/definitions/bufr/tables/0/wmo/40/codetables/8017.table new file mode 100644 index 000000000..b3156f87e --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/8017.table @@ -0,0 +1,4 @@ +0 0 FM +1 1 TL +2 2 AT +3 3 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/8018.table b/definitions/bufr/tables/0/wmo/40/codetables/8018.table new file mode 100644 index 000000000..f91e554ea --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/8018.table @@ -0,0 +1,4 @@ +1 1 LAND IS PRESENT +2 2 SURFACE ICE MAP INDICATES ICE IS PRESENT +11 11 ICE MAP DATA NOT AVAILABLE +12 12 ATTENUATION MAP DATA NOT AVAILABLE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/8019.table b/definitions/bufr/tables/0/wmo/40/codetables/8019.table new file mode 100644 index 000000000..4ed413301 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/8019.table @@ -0,0 +1,8 @@ +0 0 RESERVED +1 1 ATS (AIR TRAFFIC SERVICE) UNIT SERVING FIR (FLIGHT INFORMATION REGION) +2 2 FIR (FLIGHT INFORMATION REGION) +3 3 UIR (UPPER FLIGHT INFORMATION REGION) +4 4 CTA (CONTROL AREA) +5 5 VAAC (VOLCANIC ASH ADVISORY CENTRE) +6 6 MWO (METEOROLOGICAL WATCH OFFICE) ISSUING SIGMET +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/8021.table b/definitions/bufr/tables/0/wmo/40/codetables/8021.table new file mode 100644 index 000000000..8fbd35dd4 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/8021.table @@ -0,0 +1,32 @@ +0 0 RESERVED +1 1 TIME SERIES +2 2 TIME AVERAGED +3 3 ACCUMULATED +4 4 FORECAST +5 5 FORECAST TIME SERIES +6 6 FORECAST TIME AVERAGED +7 7 FORECAST ACCUMULATED +8 8 ENSEMBLE MEAN +9 9 ENSEMBLE MEAN TIME SERIES +10 10 ENSEMBLE MEAN TIME AVERAGED +11 11 ENSEMBLE MEAN ACCUMULATED +12 12 ENSEMBLE MEAN FORECAST +13 13 ENSEMBLE MEAN FORECAST TIME SERIES +14 14 ENSEMBLE MEAN FORECAST TIME AVERAGED +15 15 ENSEMBLE MEAN FORECAST ACCUMULATED +16 16 ANALYSIS +17 17 START OF PHENOMENON +18 18 RADIOSONDE LAUNCH TIME +19 19 START OF ORBIT +20 20 END OF ORBIT +21 21 TIME OF ASCENDING NODE +22 22 TIME OF OCCURRENCE OF WIND SHIFT +23 23 MONITORING PERIOD +24 24 AGREED TIME LIMIT FOR REPORT RECEPTION +25 25 NOMINAL REPORTING TIME +26 26 TIME OF LAST KNOWN POSITION +27 27 FIRST GUESS +28 28 START OF SCAN +29 29 END OF SCAN OR TIME OF ENDING +30 30 TIME OF OCCURRENCE +31 31 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/8023.table b/definitions/bufr/tables/0/wmo/40/codetables/8023.table new file mode 100644 index 000000000..4f78743a5 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/8023.table @@ -0,0 +1,15 @@ +2 2 MAXIMUM VALUE +3 3 MINIMUM VALUE +4 4 MEAN VALUE +5 5 MEDIAN VALUE +6 6 MODAL VALUE +7 7 MEAN ABSOLUTE ERROR +8 8 RESERVED +9 9 BEST ESTIMATE OF STANDARD DEVIATION (N-1) +10 10 STANDARD DEVIATION (N) +11 11 HARMONIC MEAN +12 12 ROOT-MEAN-SQUARE VECTOR ERROR +13 13 ROOT-MEAN-SQUARE +14 14 ROOT-MEAN-SQUARE ERROR +32 32 VECTOR MEAN +63 63 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/8024.table b/definitions/bufr/tables/0/wmo/40/codetables/8024.table new file mode 100644 index 000000000..377858bb1 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/8024.table @@ -0,0 +1,12 @@ +2 2 OBSERVED MINUS MAXIMUM +3 3 OBSERVED MINUS MINIMUM +4 4 OBSERVED MINUS MEAN +5 5 OBSERVED MINUS MEDIAN +6 6 OBSERVED MINUS MODE +11 11 OBSERVED MINUS CLIMATOLOGY (ANOMALY) +12 12 OBSERVED MINUS ANALYSED VALUE +13 13 OBSERVED MINUS INITIALIZED ANALYSED VALUE +14 14 OBSERVED MINUS FORECAST VALUE +21 21 OBSERVED MINUS INTERPOLATED VALUE +22 22 OBSERVED MINUS HYDROSTATICALLY CALCULATED VALUE +63 63 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/8025.table b/definitions/bufr/tables/0/wmo/40/codetables/8025.table new file mode 100644 index 000000000..1d88fa54f --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/8025.table @@ -0,0 +1,5 @@ +0 0 UNIVERSAL TIME COORDINATED (UTC) MINUS LOCAL STANDARD TIME (LST) +1 1 LOCAL STANDARD TIME +2 2 UNIVERSAL TIME COORDINATED (UTC) MINUS SATELLITE CLOCK +5 5 TIME DIFFERENCE FROM EDGE OF PROCESSING SEGMENT +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/8026.table b/definitions/bufr/tables/0/wmo/40/codetables/8026.table new file mode 100644 index 000000000..9bcef7864 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/8026.table @@ -0,0 +1,5 @@ +0 0 AVERAGING KERNEL MATRIX +1 1 CORRELATION MATRIX (C) +2 2 LOWER TRIANGULAR CORRELATION MATRIX SQUARE ROOT (L FROM C=LLT) +3 3 INVERSE OF LOWER TRIANGULAR CORRELATION MATRIX SQUARE ROOT (L-1) +63 63 MISSING OR UNDEFINED SIGNIFICANCE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/8029.table b/definitions/bufr/tables/0/wmo/40/codetables/8029.table new file mode 100644 index 000000000..d0eae5a57 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/8029.table @@ -0,0 +1,16 @@ +0 0 OPEN OCEAN OR SEMI-ENCLOSED SEA +1 1 ENCLOSED SEA OR LAKE +2 2 CONTINENTAL ICE +3 3 LAND +4 4 LOW INLAND (BELOW SEA LEVEL) +5 5 MIX OF LAND AND WATER +6 6 MIX OF LAND AND LOW INLAND +11 11 RIVER +12 12 LAKE +13 13 SEA +14 14 GLACIER +15 15 URBAN LAND +16 16 RURAL LAND +17 17 SUBURBAN LAND +18 18 SEA ICE +255 255 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/8032.table b/definitions/bufr/tables/0/wmo/40/codetables/8032.table new file mode 100644 index 000000000..712400dd1 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/8032.table @@ -0,0 +1,7 @@ +0 0 ROUTINE OPERATION +1 1 EVENT TRIGGERED BY STORM SURGE +2 2 EVENT TRIGGERED BY TSUNAMI +3 3 EVENT TRIGGERED MANUALLY +4 4 INSTALLATION TESTING +5 5 MAINTENANCE TESTING +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/8033.table b/definitions/bufr/tables/0/wmo/40/codetables/8033.table new file mode 100644 index 000000000..1c695372b --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/8033.table @@ -0,0 +1,6 @@ +0 0 RESERVED +1 1 PERCENTAGE CONFIDENCE CALCULATED USING CLOUD FRACTION +2 2 PERCENTAGE CONFIDENCE CALCULATED USING STANDARD DEVIATION OF TEMPERATURE +3 3 PERCENTAGE CONFIDENCE CALCULATED USING PROBABILITY OF CLOUD CONTAMINATION +4 4 PERCENTAGE CONFIDENCE CALCULATED USING NORMALITY OF DISTRIBUTION +127 127 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/8034.table b/definitions/bufr/tables/0/wmo/40/codetables/8034.table new file mode 100644 index 000000000..879f27400 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/8034.table @@ -0,0 +1,10 @@ +0 0 SECONDARY SAMPLING: AVERAGED +1 1 SECONDARY SAMPLING: DISCRETE +2 2 SECONDARY SAMPLING: MIXED +3 3 NEAR-SURFACE SAMPLING: AVERAGED, PUMPED +4 4 NEAR-SURFACE SAMPLING: AVERAGED, UNPUMPED +5 5 NEAR-SURFACE SAMPLING: DISCRETE, PUMPED +6 6 NEAR-SURFACE SAMPLING: DISCRETE, UNPUMPED +7 7 NEAR-SURFACE SAMPLING: MIXED, PUMPED +8 8 NEAR-SURFACE SAMPLING: MIXED, UNPUMPED +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/8035.table b/definitions/bufr/tables/0/wmo/40/codetables/8035.table new file mode 100644 index 000000000..3d641fd15 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/8035.table @@ -0,0 +1,8 @@ +0 0 GLOBAL +1 1 REGIONAL +2 2 NATIONAL +3 3 SPECIAL +4 4 BILATERAL +5 5 RESERVED +6 6 RESERVED +7 7 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/8036.table b/definitions/bufr/tables/0/wmo/40/codetables/8036.table new file mode 100644 index 000000000..6436989e6 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/8036.table @@ -0,0 +1,8 @@ +0 0 WMO SECRETARIAT +1 1 WMO +2 2 RSMC +3 3 NMC +4 4 RTH +5 5 OBSERVING SITE +6 6 OTHER +7 7 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/8037.table b/definitions/bufr/tables/0/wmo/40/codetables/8037.table new file mode 100644 index 000000000..a5f9be382 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/8037.table @@ -0,0 +1,4 @@ +0 0 MANUFACTURER'S BASELINE CHECK UNIT +1 1 WEATHER SCREEN +2 2 GRUAN STANDARD HUMIDITY CHAMBER +31 31 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/8038.table b/definitions/bufr/tables/0/wmo/40/codetables/8038.table new file mode 100644 index 000000000..aa4d7b77b --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/8038.table @@ -0,0 +1,3 @@ +0 0 VERIFIED INSTRUMENT READING +1 1 REFERENCE INSTRUMENT READING +255 255 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/8039.table b/definitions/bufr/tables/0/wmo/40/codetables/8039.table new file mode 100644 index 000000000..f4403c63d --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/8039.table @@ -0,0 +1,8 @@ +0 0 ISSUE TIME OF FORECAST +1 1 TIME OF COMMENCEMENT OF PERIOD OF THE FORECAST +2 2 TIME OF ENDING OF PERIOD OF THE FORECAST +3 3 FORECAST TIME OF MAXIMUM TEMPERATURE +4 4 FORECAST TIME OF MINIMUM TEMPERATURE +5 5 TIME OF BEGINNING OF THE FORECAST CHANGE +6 6 TIME OF ENDING OF THE FORECAST CHANGE +63 63 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/8040.table b/definitions/bufr/tables/0/wmo/40/codetables/8040.table new file mode 100644 index 000000000..42c5af0e5 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/8040.table @@ -0,0 +1,49 @@ +0 0 HIGH-RESOLUTION DATA SAMPLE +1 1 WITHIN 20 HPA OF SURFACE +2 2 PRESSURE LESS THAN 10 HPA (I.E., 9, 8, 7, ETC.) WHEN NO OTHER REASON APPLIES +3 3 BASE PRESSURE LEVEL FOR STABILITY INDEX +4 4 BEGIN DOUBTFUL TEMPERATURE, HEIGHT DATA +5 5 BEGIN MISSING DATA (ALL ELEMENTS) +6 6 BEGIN MISSING RELATIVE HUMIDITY DATA +7 7 BEGIN MISSING TEMPERATURE DATA +8 8 HIGHEST LEVEL REACHED BEFORE BALLOON DESCENT BECAUSE OF ICING OR TURBULENCE +9 9 END DOUBTFUL TEMPERATURE, HEIGHT DATA +10 10 END MISSING DATA (ALL ELEMENTS) +11 11 END MISSING RELATIVE HUMIDITY DATA +12 12 END MISSING TEMPERATURE DATA +13 13 ZERO DEGREES CELSIUS CROSSING(S) FOR RADAT +14 14 STANDARD PRESSURE LEVEL +15 15 OPERATOR-ADDED LEVEL +16 16 OPERATOR-DELETED LEVEL +17 17 BALLOON RE-ASCENDED BEYOND PREVIOUS HIGHEST ASCENT LEVEL +18 18 SIGNIFICANT RELATIVE HUMIDITY LEVEL +19 19 RELATIVE HUMIDITY LEVEL SELECTION TERMINATED +20 20 SURFACE LEVEL +21 21 SIGNIFICANT TEMPERATURE LEVEL +22 22 MANDATORY TEMPERATURE LEVEL +23 23 FLIGHT TERMINATION LEVEL +24 24 TROPOPAUSE(S) +25 25 AIRCRAFT REPORT +26 26 INTERPOLATED (GENERATED) LEVEL +27 27 MANDATORY WIND LEVEL +28 28 SIGNIFICANT WIND LEVEL +29 29 MAXIMUM WIND LEVEL +30 30 INCREMENTAL WIND LEVEL (FIXED REGIONAL) +31 31 INCREMENTAL HEIGHT LEVEL (GENERATED) +32 32 WIND TERMINATION LEVEL +33 33 PRESSURE 100 TO 110 HPA, WHEN NO OTHER REASON APPLIES +34 34 FREEZING LEVEL BASE +35 35 FREEZING LEVEL TOP +36 36 FLIGHT LEVEL BASE +37 37 FLIGHT LEVEL TOP +38 38 TOP OF WIND SOUNDING +39 39 BOTTOM OF WIND SOUNDING +40 40 SIGNIFICANT THERMODYNAMIC LEVEL (INVERSION) +41 41 SIGNIFICANT RELATIVE HUMIDITY LEVEL (ACCORDING TO NCDC CRITERIA) +42 42 SIGNIFICANT TEMPERATURE LEVEL (ACCORDING TO NCDC) +43 43 BEGIN MISSING WIND DATA +44 44 END MISSING WIND DATA +60 60 LEVEL OF 80-KNOT ISOTACH ABOVE JET +61 61 LEVEL OF 80-KNOT ISOTACH BELOW JET +62 62 OTHER +63 63 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/8041.table b/definitions/bufr/tables/0/wmo/40/codetables/8041.table new file mode 100644 index 000000000..1f48fbedc --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/8041.table @@ -0,0 +1,15 @@ +0 0 PARENT SITE +1 1 OBSERVATION SITE +2 2 BALLOON MANUFACTURE DATE +3 3 BALLOON LAUNCH POINT +4 4 SURFACE OBSERVATION +5 5 SURFACE OBSERVATION DISPLACEMENT FROM LAUNCH POINT +6 6 FLIGHT LEVEL OBSERVATION +7 7 FLIGHT LEVEL TERMINATION POINT +8 8 IFR CEILING AND VISIBILITY +9 9 MOUNTAIN OBSCURATION +10 10 STRONG SURFACE WIND +11 11 FREEZING LEVEL +12 12 MULTIPLE FREEZING LEVEL +13 13 INSTRUMENT MANUFACTURE DATE +31 31 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/8042.table b/definitions/bufr/tables/0/wmo/40/codetables/8042.table new file mode 100644 index 000000000..c71709a4c --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/8042.table @@ -0,0 +1,17 @@ +1 1 SURFACE +2 2 STANDARD LEVEL +3 3 TROPOPAUSE LEVEL +4 4 MAXIMUM WIND LEVEL +5 5 SIGNIFICANT TEMPERATURE LEVEL +6 6 SIGNIFICANT HUMIDITY LEVEL +7 7 SIGNIFICANT WIND LEVEL +8 8 BEGINNING OF MISSING TEMPERATURE DATA +9 9 END OF MISSING TEMPERATURE DATA +10 10 BEGINNING OF MISSING HUMIDITY DATA +11 11 END OF MISSING HUMIDITY DATA +12 12 BEGINNING OF MISSING WIND DATA +13 13 END OF MISSING WIND DATA +14 14 TOP OF WIND SOUNDING +15 15 LEVEL DETERMINED BY REGIONAL DECISION +16 16 FREEZING LEVEL +17 17 PRESSURE LEVEL ORIGINALLY INDICATED BY HEIGHT AS THE VERTICAL COORDINATE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/8043.table b/definitions/bufr/tables/0/wmo/40/codetables/8043.table new file mode 100644 index 000000000..b6975ed39 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/8043.table @@ -0,0 +1,20 @@ +0 0 OZONE +1 1 WATER VAPOUR +2 2 METHANE +3 3 CARBON DIOXIDE +4 4 CARBON MONOXIDE +5 5 NITROGEN DIOXIDE +6 6 NITROUS OXIDE +7 7 FORMALDEHYDE +8 8 SULPHUR DIOXIDE +9 9 VOLCANIC SULPHUR DIOXIDE +25 25 PARTICULATE MATTER < 1.0 MICRONS +26 26 PARTICULATE MATTER < 2.5 MICRONS +27 27 PARTICULATE MATTER < 10 MICRONS +28 28 AEROSOLS (GENERIC) +29 29 SMOKE (GENERIC) +30 30 CRUSTAL MATERIAL (GENERIC DUST) +31 31 VOLCANIC ASH +32 32 CLOUD +33 33 CLOUD AND AEROSOLS +255 255 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/8050.table b/definitions/bufr/tables/0/wmo/40/codetables/8050.table new file mode 100644 index 000000000..4b401f1d2 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/8050.table @@ -0,0 +1,11 @@ +0 0 RESERVED +1 1 PRESSURE +2 2 TEMPERATURE +3 3 EXTREME TEMPERATURE +4 4 VAPOUR PRESSURE +5 5 PRECIPITATION +6 6 SUNSHINE DURATION +7 7 MAXIMUM TEMPERATURE +8 8 MINIMUM TEMPERATURE +9 9 WIND +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/8051.table b/definitions/bufr/tables/0/wmo/40/codetables/8051.table new file mode 100644 index 000000000..5249fe6a2 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/8051.table @@ -0,0 +1,7 @@ +1 1 PRESSURE +2 2 TEMPERATURE +3 3 EXTREME TEMPERATURE +4 4 VAPOUR PRESSURE +5 5 PRECIPITATION +6 6 SUNSHINE DURATION +7 7 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/8052.table b/definitions/bufr/tables/0/wmo/40/codetables/8052.table new file mode 100644 index 000000000..46dcbbe21 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/8052.table @@ -0,0 +1,26 @@ +0 0 MEAN WIND SPEED OVER A 10-MINUTE PERIOD OBSERVED OR RECORDED EQUAL TO OR MORE THAN 10 M S-1 OR 20 KNOTS +1 1 MEAN WIND SPEED OVER A 10-MINUTE PERIOD OBSERVED OR RECORDED EQUAL TO OR MORE THAN 20 M S-1 OR 40 KNOTS +2 2 MEAN WIND SPEED OVER A 10-MINUTE PERIOD OBSERVED OR RECORDED EQUAL TO OR MORE THAN 30 M S-1 OR 60 KNOTS +3 3 MAXIMUM TEMPERATURE LESS THAN 273.15 K +4 4 MAXIMUM TEMPERATURE EQUAL TO OR MORE THAN 298.15 K +5 5 MAXIMUM TEMPERATURE EQUAL TO OR MORE THAN 303.15 K +6 6 MAXIMUM TEMPERATURE EQUAL TO OR MORE THAN 308.15 K +7 7 MAXIMUM TEMPERATURE EQUAL TO OR MORE THAN 313.15 K +8 8 MINIMUM TEMPERATURE LESS THAN 273.15 K +9 9 MAXIMUM TEMPERATURE EQUAL TO OR MORE THAN 273.15 K +10 10 PRECIPITATION EQUAL TO OR MORE THAN 1.0 KG M-2 +11 11 PRECIPITATION EQUAL TO OR MORE THAN 5.0 KG M-2 +12 12 PRECIPITATION EQUAL TO OR MORE THAN 10.0 KG M-2 +13 13 PRECIPITATION EQUAL TO OR MORE THAN 50.0 KG M-2 +14 14 PRECIPITATION EQUAL TO OR MORE THAN 100.0 KG M-2 +15 15 PRECIPITATION EQUAL TO OR MORE THAN 150.0 KG M-2 +16 16 SNOW DEPTH MORE THAN 0.00 M +17 17 SNOW DEPTH MORE THAN 0.01 M +18 18 SNOW DEPTH MORE THAN 0.10 M +19 19 SNOW DEPTH MORE THAN 0.50 M +20 20 HORIZONTAL VISIBILITY LESS THAN 50 M +21 21 HORIZONTAL VISIBILITY LESS THAN 100 M +22 22 HORIZONTAL VISIBILITY LESS THAN 1000 M +23 23 HAIL +24 24 THUNDERSTORM +31 31 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/8053.table b/definitions/bufr/tables/0/wmo/40/codetables/8053.table new file mode 100644 index 000000000..cbc11c9a7 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/8053.table @@ -0,0 +1,4 @@ +0 0 VALUE OCCURRED ON ONLY ONE DAY IN THE MONTH +1 1 VALUE OCCURRED ON MORE THAN ONE DAY IN THE MONTH +2 2 RESERVED +3 3 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/8054.table b/definitions/bufr/tables/0/wmo/40/codetables/8054.table new file mode 100644 index 000000000..51b908e08 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/8054.table @@ -0,0 +1,3 @@ +0 0 WIND SPEED OR GUST IS AS REPORTED +1 1 WIND SPEED IS GREATER THAN THAT REPORTED (P IN METAR/TAF/SPECI) +7 7 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/8060.table b/definitions/bufr/tables/0/wmo/40/codetables/8060.table new file mode 100644 index 000000000..2865fece5 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/8060.table @@ -0,0 +1,8 @@ +0 0 RESERVED +1 1 RANGE +2 2 AZIMUTH +3 3 HORIZONTAL +4 4 VERTICAL +5 5 NORTH/SOUTH +6 6 EAST/WEST +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/8065.table b/definitions/bufr/tables/0/wmo/40/codetables/8065.table new file mode 100644 index 000000000..69b80ea33 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/8065.table @@ -0,0 +1,4 @@ +0 0 NO SUN-GLINT +1 1 SUN-GLINT +2 2 RESERVED +3 3 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/8066.table b/definitions/bufr/tables/0/wmo/40/codetables/8066.table new file mode 100644 index 000000000..fcc0252c9 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/8066.table @@ -0,0 +1,4 @@ +0 0 OPAQUE +1 1 SEMI-TRANSPARENT +2 2 RESERVED +3 3 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/8070.table b/definitions/bufr/tables/0/wmo/40/codetables/8070.table new file mode 100644 index 000000000..f58061757 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/8070.table @@ -0,0 +1,6 @@ +0 0 RESERVED +1 1 RESERVED +2 2 EARTH LOCATED INSTRUMENT COUNTS, CALIBRATION COEFFICIENTS AND HOUSEKEEPING (LEVEL 1B) +3 3 EARTH LOCATED CALIBRATED RADIANCES (LEVEL 1C) +4 4 MAPPED TO A COMMON FOOTPRINT, EARTH LOCATED CALIBRATED RADIANCES (LEVEL 1D) +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/8072.table b/definitions/bufr/tables/0/wmo/40/codetables/8072.table new file mode 100644 index 000000000..7dcd9611b --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/8072.table @@ -0,0 +1,6 @@ +0 0 MIXED +1 1 CLEAR +2 2 CLOUDY +3 3 PROBABLY CLEAR +4 4 PROBABLY CLOUDY +7 7 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/8074.table b/definitions/bufr/tables/0/wmo/40/codetables/8074.table new file mode 100644 index 000000000..5778e6552 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/8074.table @@ -0,0 +1,4 @@ +0 0 OPEN OCEAN OR SEMI-ENCLOSED SEA +1 1 NON-OCEAN LIKE +2 2 RESERVED +3 3 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/8075.table b/definitions/bufr/tables/0/wmo/40/codetables/8075.table new file mode 100644 index 000000000..5f5e3a24c --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/8075.table @@ -0,0 +1,4 @@ +0 0 ASCENDING ORBIT +1 1 DESCENDING ORBIT +2 2 RESERVED +3 3 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/8076.table b/definitions/bufr/tables/0/wmo/40/codetables/8076.table new file mode 100644 index 000000000..431496fbc --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/8076.table @@ -0,0 +1,9 @@ +0 0 KU +1 1 C +2 2 LONG-WAVE INFRARED +3 3 MEDIUM-WAVE INFRARED +4 4 SHORT-WAVE INFRARED +5 5 M +6 6 I +7 7 DAY/NIGHT +63 63 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/8077.table b/definitions/bufr/tables/0/wmo/40/codetables/8077.table new file mode 100644 index 000000000..2c7902bd7 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/8077.table @@ -0,0 +1,7 @@ +0 0 LAND +1 1 SEA +2 2 COASTAL +3 3 OPEN OCEAN OR SEMI-ENCLOSED SEA +4 4 ENCLOSED SEA OR LAKE +5 5 CONTINENTAL ICE +127 127 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/8079.table b/definitions/bufr/tables/0/wmo/40/codetables/8079.table new file mode 100644 index 000000000..735a09c37 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/8079.table @@ -0,0 +1,9 @@ +0 0 NORMAL ISSUE +1 1 CORRECTION TO A PREVIOUSLY ISSUED PRODUCT (COR) +2 2 AMENDMENT TO A PREVIOUSLY ISSUED PRODUCT (AMD) +3 3 CORRECTION TO A PREVIOUSLY ISSUED AMENDED PRODUCT (COR AMD) +4 4 CANCELLATION OF A PREVIOUSLY ISSUED PRODUCT (CNL) +5 5 NO PRODUCT AVAILABLE (NIL) +6 6 SPECIAL REPORT (SPECI) +7 7 CORRECTED SPECIAL REPORT (SPECI COR) +15 15 MISSING OR NOT APPLICABLE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/8080.table b/definitions/bufr/tables/0/wmo/40/codetables/8080.table new file mode 100644 index 000000000..25188b6ad --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/8080.table @@ -0,0 +1,16 @@ +0 0 TOTAL WATER PRESSURE PROFILE +1 1 TOTAL WATER TEMPERATURE PROFILE +2 2 TOTAL WATER SALINITY PROFILE +3 3 TOTAL WATER CONDUCTIVITY PROFILE +4 4 TOTAL WATER DEPTH +10 10 WATER PRESSURE AT A LEVEL +11 11 WATER TEMPERATURE AT A LEVEL +12 12 SALINITY AT A LEVEL +13 13 WATER DEPTH AT A LEVEL +14 14 SEA/WATER CURRENT SPEED AT A LEVEL +15 15 SEA/WATER CURRENT DIRECTION AT A LEVEL +16 16 DISSOLVED OXYGEN AT A LEVEL +20 20 POSITION +25 25 WATER CONDUCTIVITY AT A LEVEL +26 26 SEA WATER POTENTIAL DENSITY REFERENCED TO SEA SURFACE AT A LEVEL +63 63 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/8081.table b/definitions/bufr/tables/0/wmo/40/codetables/8081.table new file mode 100644 index 000000000..75d288732 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/8081.table @@ -0,0 +1,5 @@ +0 0 SENSOR +1 1 TRANSMITTER +2 2 RECEIVER +3 3 OBSERVING PLATFORM +63 63 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/8082.table b/definitions/bufr/tables/0/wmo/40/codetables/8082.table new file mode 100644 index 000000000..1f24db866 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/8082.table @@ -0,0 +1,3 @@ +0 0 SENSOR HEIGHT IS NOT MODIFIED +1 1 SENSOR HEIGHT IS MODIFIED TO STANDARD LEVEL +7 7 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/8083.table b/definitions/bufr/tables/0/wmo/40/codetables/8083.table new file mode 100644 index 000000000..174ef3428 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/8083.table @@ -0,0 +1,9 @@ +1 1 ADJUSTED TO OR WITH RESPECT TO REPRESENTATIVE HEIGHT OF SENSOR ABOVE LOCAL GROUND (OR DECK OF MARINE PLATFORM) +2 2 ADJUSTED TO OR WITH RESPECT TO REPRESENTATIVE HEIGHT OF SENSOR ABOVE WATER SURFACE +3 3 ADJUSTED WITH RESPECT TO STANDARD SURFACE ROUGHNESS +4 4 ADJUSTED WITH RESPECT TO WIND SPEED +5 5 ADJUSTED WITH RESPECT TO TEMPERATURE +6 6 ADJUSTED WITH RESPECT TO PRESSURE +7 7 ADJUSTED WITH RESPECT TO HUMIDITY +8 8 ADJUSTED WITH RESPECT TO EVAPORATION +9 9 ADJUSTED WITH RESPECT TO WETTING LOSSES diff --git a/definitions/bufr/tables/0/wmo/40/codetables/8085.table b/definitions/bufr/tables/0/wmo/40/codetables/8085.table new file mode 100644 index 000000000..79e1a3d90 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/8085.table @@ -0,0 +1,4 @@ +0 0 FORE BEAM +1 1 MID BEAM +2 2 AFT BEAM +7 7 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/8086.table b/definitions/bufr/tables/0/wmo/40/codetables/8086.table new file mode 100644 index 000000000..a9ecd0351 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/8086.table @@ -0,0 +1,11 @@ +1 1 MODEL GROUND SURFACE +2 2 STANDARD LEVEL +3 3 TROPOPAUSE LEVEL +4 4 MAXIMUM WIND LEVEL +5 5 SIGNIFICANT TEMPERATURE LEVEL +6 6 SIGNIFICANT HUMIDITY LEVEL +7 7 SIGNIFICANT WIND LEVEL +8 8 VERTICALLY INTERPOLATED LEVEL (THIS SHOULD BE SET TO 1 FOR POINTS ON THE VERTICAL PROFILE THAT FALL BETWEEN THE MODEL'S NATIVE VERTICAL LEVELS.) +9 9 VIRTUAL STATION HEIGHT +10 10 LEVEL OF BEST FIT +11 11 RESERVED diff --git a/definitions/bufr/tables/0/wmo/40/codetables/8087.table b/definitions/bufr/tables/0/wmo/40/codetables/8087.table new file mode 100644 index 000000000..d556c98de --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/8087.table @@ -0,0 +1,5 @@ +0 0 UPPER LEFT +1 1 UPPER RIGHT +2 2 LOWER RIGHT +3 3 LOWER LEFT +7 7 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/8088.table b/definitions/bufr/tables/0/wmo/40/codetables/8088.table new file mode 100644 index 000000000..d6f51be70 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/8088.table @@ -0,0 +1,4 @@ +0 0 TOP VIEW (GEOGRAPHICAL LONGITUDE ON X-AXIS AND LATITUDE ON Y-AXIS) +1 1 NORTH-SOUTH VIEW (TRANSECT WITH GEOGRAPHICAL LONGITUDE ON X-AXIS AND VERTICAL HEIGHT ON Y-AXIS) +2 2 EAST-WEST VIEW (TRANSECT WITH GEOGRAPHICAL LATITUDE ON X-AXIS AND VERTICAL HEIGHT ON Y-AXIS) +63 63 MISSING diff --git a/definitions/bufr/tables/0/wmo/40/codetables/8091.table b/definitions/bufr/tables/0/wmo/40/codetables/8091.table new file mode 100644 index 000000000..3a8c44df1 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/8091.table @@ -0,0 +1,11 @@ +0 0 SATELLITE COORDINATES +1 1 OBSERVATION COORDINATES +2 2 START OF OBSERVATION +3 3 END OF OBSERVATION +4 4 HORIZONTAL CENTRE OF GRAVITY OF THE OBSERVATION +5 5 VERTICAL CENTRE OF GRAVITY OF THE OBSERVATION +6 6 TOP OF THE OBSERVATION +7 7 BOTTOM OF THE OBSERVATION +8 8 PROJECTION ORIGIN +9 9 COORDINATES OF TRUE SCALE +255 255 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/8092.table b/definitions/bufr/tables/0/wmo/40/codetables/8092.table new file mode 100644 index 000000000..e40754f8e --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/8092.table @@ -0,0 +1,3 @@ +0 0 STANDARD UNCERTAINTY +1 1 COMBINED STANDARD UNCERTAINTY +31 31 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/8093.table b/definitions/bufr/tables/0/wmo/40/codetables/8093.table new file mode 100644 index 000000000..74f5c3a63 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/8093.table @@ -0,0 +1,4 @@ +0 0 TOTAL UNCERTAINTY +1 1 SYSTEMATIC COMPONENT OF UNCERTAINTY +2 2 RANDOM COMPONENT OF UNCERTAINTY +31 31 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/8094.table b/definitions/bufr/tables/0/wmo/40/codetables/8094.table new file mode 100644 index 000000000..e2ead0bc9 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/8094.table @@ -0,0 +1,8 @@ +0 0 AVERAGE OF MAXIMUM AND MINIMUM VALUES: TM = (TX + TN)/2 +1 1 AVERAGE OF THE 8 OBSERVATIONS TAKEN EVERY THREE HOURS +2 2 AVERAGE OF THE 24 HOURLY OBSERVATIONS +3 3 WEIGHTED AVERAGE OF 3 OBSERVATIONS: TM = (AT1 +BT2 + CT3) +4 4 WEIGHTED AVERAGE OF 3 OBSERVATIONS AND ALSO MAXIMUM AND MINIMUM VALUES: TM= (AT1 +BT2 + CT3 +DTX + ETN) +5 5 AUTOMATIC WEATHER STATION COMPLETE INTEGRATION FROM MINUTE DATA +6 6 AVERAGE OF THE 4 OBSERVATIONS TAKEN EVERY SIX HOURS +255 255 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/8095.table b/definitions/bufr/tables/0/wmo/40/codetables/8095.table new file mode 100644 index 000000000..f9d14f75f --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/8095.table @@ -0,0 +1,36 @@ +0 0 RESERVED +1 1 1A +2 2 1B +3 3 1C +4 4 1D +5 5 RESERVED +6 6 2A +7 7 2B +8 8 2C +9 9 2D +10 10 RESERVED +11 11 3A +12 12 3B +13 13 3C +14 14 3D +15 15 RESERVED +16 16 4A +17 17 4B +18 18 4C +19 19 4D +20 20 RESERVED +21 21 5A +22 22 5B +23 23 5C +24 24 5D +25 25 RESERVED +26 26 1 +27 27 2 +28 28 3 +29 29 4 +30 30 5 +31 31 A +32 32 B +33 33 C +34 34 D +255 255 MISSING diff --git a/definitions/bufr/tables/0/wmo/40/codetables/8096.table b/definitions/bufr/tables/0/wmo/40/codetables/8096.table new file mode 100644 index 000000000..f9d14f75f --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/8096.table @@ -0,0 +1,36 @@ +0 0 RESERVED +1 1 1A +2 2 1B +3 3 1C +4 4 1D +5 5 RESERVED +6 6 2A +7 7 2B +8 8 2C +9 9 2D +10 10 RESERVED +11 11 3A +12 12 3B +13 13 3C +14 14 3D +15 15 RESERVED +16 16 4A +17 17 4B +18 18 4C +19 19 4D +20 20 RESERVED +21 21 5A +22 22 5B +23 23 5C +24 24 5D +25 25 RESERVED +26 26 1 +27 27 2 +28 28 3 +29 29 4 +30 30 5 +31 31 A +32 32 B +33 33 C +34 34 D +255 255 MISSING diff --git a/definitions/bufr/tables/0/wmo/40/codetables/8097.table b/definitions/bufr/tables/0/wmo/40/codetables/8097.table new file mode 100644 index 000000000..1107d7b19 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/8097.table @@ -0,0 +1,4 @@ +0 0 THE AVERAGE OF SIX TEMPERATURE SENSORS PLACED THROUGHOUT THE PAYLOAD +1 1 AVERAGE OF WF-BAND IFP AND RFE SENSORS FOR CHANNELS 1 TO 8 +2 2 AVERAGE OF G-BAND RFE SENSOR FOR CHANNELS 9 TO 12 +127 127 MISSING diff --git a/definitions/bufr/tables/0/wmo/40/codetables/8098.table b/definitions/bufr/tables/0/wmo/40/codetables/8098.table new file mode 100644 index 000000000..63fb59bb9 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/8098.table @@ -0,0 +1,7 @@ +0 0 ON-BOARD CALIBRATION TARGET +1 1 SPACE VIEW REFLECTOR +2 2 MAIN REFLECTOR +3 3 RACETRACK +4 4 SUN SHIELD +5 5 ROTATING REFLECTOR +15 15 MISSING diff --git a/definitions/bufr/tables/0/wmo/40/codetables/8099.table b/definitions/bufr/tables/0/wmo/40/codetables/8099.table new file mode 100644 index 000000000..b8c9664c4 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/8099.table @@ -0,0 +1,3 @@ +0 0 NADIR +1 1 OBLIQUE +15 15 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/element.table b/definitions/bufr/tables/0/wmo/40/element.table new file mode 100644 index 000000000..6fff63c57 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/element.table @@ -0,0 +1,1789 @@ +#code|abbreviation|type|name|unit|scale|reference|width|crex_unit|crex_scale|crex_width +000001|tableAEntry|string|TABLE A: ENTRY|CCITT IA5|0|0|24|Character|0|3 +000002|tableALine1|string|TABLE A: DATA CATEGORY DESCRIPTION, LINE 1|CCITT IA5|0|0|256|Character|0|32 +000003|tableALine2|string|TABLE A: DATA CATEGORY DESCRIPTION, LINE 2|CCITT IA5|0|0|256|Character|0|32 +000004|masterTable|string|BUFR/CREX MASTER TABLE|CCITT IA5|0|0|16|Character|0|2 +000005|editionNumber|string|BUFR/CREX EDITION NUMBER|CCITT IA5|0|0|24|Character|0|3 +000006|bufrMasterTableVersionNumber|string|BUFR MASTER TABLE VERSION NUMBER|CCITT IA5|0|0|16|Character|0|2 +000007|crexMasterTableVersionNumber|string|CREX MASTER TABLE VERSION NUMBER|CCITT IA5|0|0|16|Character|0|2 +000008|bufrLocalTableVersionNumber|string|BUFR LOCAL TABLE VERSION NUMBER|CCITT IA5|0|0|16|Character|0|2 +000010|fDescriptorToBeAddedOrDefined|string|F DESCRIPTOR TO BE ADDED OR DEFINED|CCITT IA5|0|0|8|Character|0|1 +000011|xDescriptorToBeAddedOrDefined|string|X DESCRIPTOR TO BE ADDED OR DEFINED|CCITT IA5|0|0|16|Character|0|2 +000012|yDescriptorToBeAddedOrDefined|string|Y DESCRIPTOR TO BE ADDED OR DEFINED|CCITT IA5|0|0|24|Character|0|3 +000013|elementNameLine1|string|ELEMENT NAME, LINE 1|CCITT IA5|0|0|256|Character|0|32 +000014|elementNameLine2|string|ELEMENT NAME, LINE 2|CCITT IA5|0|0|256|Character|0|32 +000015|unitsName|string|UNITS NAME|CCITT IA5|0|0|192|Character|0|24 +000016|unitsScaleSign|string|UNITS SCALE SIGN|CCITT IA5|0|0|8|Character|0|1 +000017|unitsScale|string|UNITS SCALE|CCITT IA5|0|0|24|Character|0|3 +000018|unitsReferenceSign|string|UNITS REFERENCE SIGN|CCITT IA5|0|0|8|Character|0|1 +000019|unitsReferenceValue|string|UNITS REFERENCE VALUE|CCITT IA5|0|0|80|Character|0|10 +000020|elementDataWidth|string|ELEMENT DATA WIDTH|CCITT IA5|0|0|24|Character|0|3 +000024|codeFigure|string|CODE FIGURE|CCITT IA5|0|0|64|Character|0|8 +000025|codeFigureMeaning|string|CODE FIGURE MEANING|CCITT IA5|0|0|496|Character|0|62 +000026|bitNumber|string|BIT NUMBER|CCITT IA5|0|0|48|Character|0|6 +000027|bitNumberMeaning|string|BIT NUMBER MEANING|CCITT IA5|0|0|496|Character|0|62 +000030|descriptorDefiningSequence|string|DESCRIPTOR DEFINING SEQUENCE|CCITT IA5|0|0|48|Character|0|6 +001001|blockNumber|long|WMO BLOCK NUMBER|Numeric|0|0|7|Numeric|0|2 +001002|stationNumber|long|WMO STATION NUMBER|Numeric|0|0|10|Numeric|0|3 +001003|regionNumber|table|WMO REGION NUMBER/GEOGRAPHICAL AREA|CODE TABLE|0|0|3|CODE TABLE|0|1 +001004|wmoRegionSubArea|long|WMO REGION SUB-AREA|Numeric|0|0|3|Numeric|0|1 +001005|buoyOrPlatformIdentifier|long|BUOY/PLATFORM IDENTIFIER|Numeric|0|0|17|Numeric|0|5 +001006|aircraftFlightNumber|string|AIRCRAFT FLIGHT NUMBER|CCITT IA5|0|0|64|Character|0|8 +001007|satelliteIdentifier|table|SATELLITE IDENTIFIER|CODE TABLE|0|0|10|CODE TABLE|0|4 +001008|aircraftRegistrationNumberOrOtherIdentification|string|AIRCRAFT REGISTRATION NUMBER OR OTHER IDENTIFICATION|CCITT IA5|0|0|64|Character|0|8 +001009|commercialAircraftType|string|TYPE OF COMMERCIAL AIRCRAFT|CCITT IA5|0|0|64|Character|0|8 +001010|stationaryBuoyPlatformIdentifierEGCManBuoys|string|STATIONARY BUOY PLATFORM IDENTIFIER; E.G. C-MAN BUOYS|CCITT IA5|0|0|64|Character|0|8 +001011|shipOrMobileLandStationIdentifier|string|SHIP OR MOBILE LAND STATION IDENTIFIER|CCITT IA5|0|0|72|Character|0|9 +001012|directionOfMotionOfMovingObservingPlatform|long|DIRECTION OF MOTION OF MOVING OBSERVING PLATFORM|deg|0|0|9|deg|0|3 +001013|movingObservingPlatformSpeed|long|SPEED OF MOTION OF MOVING OBSERVING PLATFORM|m/s|0|0|10|m/s|0|3 +001014|platformDriftSpeed|double|PLATFORM DRIFT SPEED (HIGH PRECISION)|m/s|2|0|10|m/s|2|4 +001015|stationOrSiteName|string|STATION OR SITE NAME|CCITT IA5|0|0|160|Character|0|20 +001016|satelliteSubIdentifier|long|SATELLITE SUB-IDENTIFIER|Numeric|0|0|16|Numeric|0|5 +001018|shortStationName|string|SHORT STATION OR SITE NAME|CCITT IA5|0|0|40|Character|0|5 +001019|longStationName|string|LONG STATION OR SITE NAME|CCITT IA5|0|0|256|Character|0|32 +001020|wmoRegionSubArea|long|WMO REGION SUB-AREA|Numeric|0|0|4|Numeric|0|2 +001021|synopticFeatureIdentifier|long|SYNOPTIC FEATURE IDENTIFIER|Numeric|0|0|14|Numeric|0|4 +001022|featureName|string|NAME OF FEATURE|CCITT IA5|0|0|224|Character|0|28 +001023|observationSequenceNumber|long|OBSERVATION SEQUENCE NUMBER|Numeric|0|0|9|Numeric|0|3 +001024|windSpeedSource|table|WIND SPEED SOURCE|CODE TABLE|0|0|5|CODE TABLE|0|2 +001025|stormIdentifier|string|STORM IDENTIFIER|CCITT IA5|0|0|24|Character|0|3 +001026|stormName|string|WMO STORM NAME|CCITT IA5|0|0|64|Character|0|8 +001027|longStormName|string|WMO LONG STORM NAME|CCITT IA5|0|0|80|Character|0|10 +001028|aerosolOpticalDepthSource|table|AEROSOL OPTICAL DEPTH (AOD) SOURCE|CODE TABLE|0|0|5|CODE TABLE|0|2 +001029|ssiSource|table|SSI SOURCE|CODE TABLE|0|0|5|CODE TABLE|0|2 +001030|numericalModelIdentifier|string|NUMERICAL MODEL IDENTIFIER|CCITT IA5|0|0|128|Character|0|16 +001031|centre|table|IDENTIFICATION OF ORIGINATING/GENERATING CENTRE|CODE TABLE|0|0|16|CODE TABLE|0|5 +001032|generatingApplication|table|GENERATING APPLICATION|CODE TABLE defined by originating/generating centre|0|0|8|CODE TABLE|0|3 +001033|centre|table|IDENTIFICATION OF ORIGINATING/GENERATING CENTRE|Common CODE TABLE C-1|0|0|8|Common CODE TABLE C-1|0|3 +001034|subCentre|table|IDENTIFICATION OF ORIGINATING/GENERATING SUB-CENTRE|Common CODE TABLE C-12|0|0|8|Common CODE TABLE C-12|0|3 +001035|centre|table|ORIGINATING CENTRE|Common CODE TABLE C-11|0|0|16|Common CODE TABLE C-11|0|5 +001036|agencyInChargeOfOperatingObservingPlatform|table|AGENCY IN CHARGE OF OPERATING THE OBSERVING PLATFORM|CODE TABLE|0|0|20|CODE TABLE|0|7 +001037|sigmetSequenceIdentifier|string|SIGMET SEQUENCE IDENTIFIER|CCITT IA5|0|0|24|Character|0|3 +001038|sourceOfSeaIceFraction|table|SOURCE OF SEA ICE FRACTION|CODE TABLE|0|0|5|CODE TABLE|0|2 +001039|graphicalAreaForecastSequenceIdentifier|string|GRAPHICAL AREA FORECAST (GFA) SEQUENCE IDENTIFIER|CCITT IA5|0|0|40|Character|0|5 +001040|processingCentreIdCode|string|PROCESSING CENTRE ID CODE|CCITT IA5|0|0|48|Character|0|6 +001041|absolutePlatformVelocityFirstComponent|double|ABSOLUTE PLATFORM VELOCITY - FIRST COMPONENT|m/s|5|-1073741824|31|m/s|5|10 +001042|absolutePlatformVelocitySecondComponent|double|ABSOLUTE PLATFORM VELOCITY - SECOND COMPONENT|m/s|5|-1073741824|31|m/s|5|10 +001043|absolutePlatformVelocityThirdComponent|double|ABSOLUTE PLATFORM VELOCITY - THIRD COMPONENT|m/s|5|-1073741824|31|m/s|5|10 +001044|standardGeneratingApplication|table|STANDARD GENERATING APPLICATION|CODE TABLE|0|0|8|CODE TABLE|0|3 +001050|platformTransmitterIdNumber|long|PLATFORM TRANSMITTER ID NUMBER|Numeric|0|0|17|Numeric|0|6 +001051|platformTransmitterIdNumber|string|PLATFORM TRANSMITTER ID NUMBER|CCITT IA5|0|0|96|Character|0|12 +001052|platformTransmitterId|table|PLATFORM TRANSMITTER ID|CODE TABLE|0|0|3|CODE TABLE|0|1 +001053|tsunameterReportSequenceNumber|long|TSUNAMETER REPORT SEQUENCE NUMBER TRIGGERED BY A TSUNAMI EVENT|Numeric|0|0|7|Numeric|0|2 +001060|aircraftReportingPointBeaconIdentifier|string|AIRCRAFT REPORTING POINT (BEACON IDENTIFIER)|CCITT IA5|0|0|64|Character|0|8 +001062|shortIcaoLocationIndicator|string|SHORT ICAO LOCATION INDICATOR|CCITT IA5|0|0|32|Character|0|4 +001063|icaoLocationIndicator|string|ICAO LOCATION INDICATOR|CCITT IA5|0|0|64|Character|0|8 +001064|runwayDesignator|string|RUNWAY DESIGNATOR|CCITT IA5|0|0|32|Character|0|4 +001065|icaoRegionIdentifier|string|ICAO REGION IDENTIFIER|CCITT IA5|0|0|256|Character|0|32 +001075|tideStationIdentification|string|TIDE STATION IDENTIFICATION|CCITT IA5|0|0|40|Character|0|5 +001079|uniqueIdentifierForProfile|string|UNIQUE IDENTIFIER FOR THE PROFILE|CCITT IA5|0|0|64|Character|0|8 +001080|shipLineNumberAccordingToSoop|string|SHIP LINE NUMBER ACCORDING TO SOOP|CCITT IA5|0|0|32|Character|0|4 +001081|radiosondeSerialNumber|string|RADIOSONDE SERIAL NUMBER|CCITT IA5|0|0|160|Character|0|20 +001082|radiosondeAscensionNumber|long|RADIOSONDE ASCENSION NUMBER|Numeric|0|0|14|Numeric|0|4 +001083|radiosondeReleaseNumber|long|RADIOSONDE RELEASE NUMBER|Numeric|0|0|3|Numeric|0|1 +001085|observingPlatformManufacturerModel|string|OBSERVING PLATFORM MANUFACTURER'S MODEL|CCITT IA5|0|0|160|Character|0|20 +001086|observingPlatformManufacturerSerialNumber|string|OBSERVING PLATFORM MANUFACTURER'S SERIAL NUMBER|CCITT IA5|0|0|256|Character|0|32 +001087|marineObservingPlatformIdentifier|long|WMO MARINE OBSERVING PLATFORM EXTENDED IDENTIFIER|Numeric|0|0|23|Numeric|0|7 +001090|techniqueForMakingUpInitialPerturbations|table|TECHNIQUE FOR MAKING UP INITIAL PERTURBATIONS|CODE TABLE|0|0|8|CODE TABLE|0|3 +001091|ensembleMemberNumber|long|ENSEMBLE MEMBER NUMBER|Numeric|0|0|10|Numeric|0|4 +001092|ensembleForecastType|table|TYPE OF ENSEMBLE FORECAST|CODE TABLE|0|0|8|CODE TABLE|0|3 +001093|balloonLotNumber|string|BALLOON LOT NUMBER|CCITT IA5|0|0|96|Character|0|12 +001094|wbanNumber|long|WBAN NUMBER|Numeric|0|0|17|Numeric|0|5 +001095|observerIdentification|string|OBSERVER IDENTIFICATION|CCITT IA5|0|0|32|Character|0|4 +001096|stationAcquisition|string|STATION ACQUISITION|CCITT IA5|0|0|160|Character|0|20 +001099|uniqueProductDefinition|string|UNIQUE PRODUCT DEFINITION|CCITT IA5|0|0|248|Character|0|31 +001101|stateIdentifier|table|STATE IDENTIFIER|CODE TABLE|0|0|10|CODE TABLE|0|3 +001102|nationalStationNumber|long|NATIONAL STATION NUMBER|Numeric|0|0|30|Numeric|0|9 +001103|imoNumber|long|IMO NUMBER. UNIQUE LLOYD'S REGISTER|Numeric|0|0|24|Numeric|0|7 +001104|stateOrFederalStateIdentifier|string|STATE/FEDERAL STATE IDENTIFIER|CCITT IA5|0|0|32|Character|0|4 +001105|highwayDesignator|string|HIGHWAY DESIGNATOR|CCITT IA5|0|0|40|Character|0|5 +001106|locationAlongHighwayAsIndicatedByPositionMarkers|long|LOCATION ALONG HIGHWAY AS INDICATED BY POSITION MARKERS|m|-2|0|14|m|-2|5 +001110|aircraftTailNumber|string|AIRCRAFT TAIL NUMBER|CCITT IA5|0|0|48|Character|0|6 +001111|originationAirport|string|ORIGINATION AIRPORT|CCITT IA5|0|0|24|Character|0|3 +001112|destinationAirport|string|DESTINATION AIRPORT|CCITT IA5|0|0|24|Character|0|3 +001113|templateVersionNumberDefinedByOriginatingCentre|long|TEMPLATE VERSION NUMBER DEFINED BY ORIGINATING CENTRE|Numeric|1|0|9|Numeric|1|3 +001114|encryptedStationIdentifierBase64Encoding|string|ENCRYPTED SHIP OR MOBILE LAND STATION IDENTIFIER (BASE64 ENCODING)|CCITT IA5|0|0|352|Character|0|44 +001115|identifierOfTheCruiseOrMission|string|IDENTIFIER OF THE CRUISE OR MISSION UNDER WHICH THE DATA WERE COLLECTED|CCITT IA5|0|0|160|Character|0|20 +001124|gridPointIdentifier|long|GRID POINT IDENTIFIER|Numeric|0|0|24|Numeric|0|8 +001125|wigosIdentifierSeries|long|WIGOS IDENTIFIER SERIES|Numeric|0|0|4|Numeric|0|2 +001126|wigosIssuerOfIdentifier|long|WIGOS ISSUER OF IDENTIFIER|Numeric|0|0|16|Numeric|0|5 +001127|wigosIssueNumber|long|WIGOS ISSUE NUMBER|Numeric|0|0|16|Numeric|0|5 +001128|wigosLocalIdentifierCharacter|string|WIGOS LOCAL IDENTIFIER (CHARACTER)|CCITT IA5|0|0|128|Character|0|16 +001144|snapshotIdentifier|long|SNAPSHOT IDENTIFIER|Numeric|0|0|31|Numeric|0|10 +001145|lightSourceIdentifier|long|LIGHT SOURCE IDENTIFIER|Numeric|0|-8|20|Numeric|0|7 +001150|coordinateReferenceSystem|table|COORDINATE REFERENCE SYSTEM|CODE TABLE|0|0|16|CODE TABLE|0|5 +001151|fixedMeanSeaLevelReferenceDatum|table|FIXED MEAN SEA-LEVEL REFERENCE DATUM|CODE TABLE|0|0|12|CODE TABLE|0|4 +001152|semiMajorAxisOfRotationEllipsoid|double|SEMI-MAJOR AXIS OF ROTATION ELLIPSOID|m|2|0|31|m|2|11 +001153|semiMinorAxisOfRotationEllipsoid|double|SEMI-MINOR AXIS OF ROTATION ELLIPSOID|m|2|0|31|m|2|11 +001154|sensorIdentifier|long|SENSOR IDENTIFIER|Numeric|0|0|12|Numeric|0|4 +001155|retrievalIdentifier|table|RETRIEVAL IDENTIFIER|CODE TABLE|0|0|8|CODE TABLE|0|3 +002001|stationType|table|TYPE OF STATION|CODE TABLE|0|0|2|CODE TABLE|0|1 +002002|instrumentationForWindMeasurement|flag|TYPE OF INSTRUMENTATION FOR WIND MEASUREMENT|FLAG TABLE|0|0|4|FLAG TABLE|0|2 +002003|measuringEquipmentType|table|TYPE OF MEASURING EQUIPMENT USED|CODE TABLE|0|0|4|CODE TABLE|0|2 +002004|typeOfInstrumentationForEvaporationMeasurement|table|TYPE OF INSTRUMENTATION FOR EVAPORATION MEASUREMENT OR TYPE OF CROP FOR WHICH EVAPOTRANSPIRATION IS REPORTED|CODE TABLE|0|0|4|CODE TABLE|0|2 +002005|temperatureObservationPrecision|double|PRECISION OF TEMPERATURE OBSERVATION|K|2|0|7|K|2|3 +002006|upperAirRemoteSensingInstrumentType|table|UPPER AIR REMOTE SENSING INSTRUMENT TYPE|CODE TABLE|0|0|6|CODE TABLE|0|0 +002007|sensorForWaterLevelMeasuringInstrumentType|table|TYPE OF SENSOR FOR WATER LEVEL MEASURING INSTRUMENT|CODE TABLE|0|0|6|CODE TABLE|0|2 +002008|typeOfOffshorePlatform|table|TYPE OF OFFSHORE PLATFORM|CODE TABLE|0|0|4|CODE TABLE|0|2 +002011|radiosondeType|table|RADIOSONDE TYPE|CODE TABLE|0|0|8|CODE TABLE|0|3 +002012|radiosondeComputationalMethod|table|RADIOSONDE COMPUTATIONAL METHOD|CODE TABLE|0|0|4|CODE TABLE|0|2 +002013|solarAndInfraredRadiationCorrection|table|SOLAR AND INFRARED RADIATION CORRECTION|CODE TABLE|0|0|4|CODE TABLE|0|2 +002014|trackingTechniqueOrStatusOfSystem|table|TRACKING TECHNIQUE/STATUS OF SYSTEM USED|CODE TABLE|0|0|7|CODE TABLE|0|3 +002015|radiosondeCompleteness|table|RADIOSONDE COMPLETENESS|CODE TABLE|0|0|4|CODE TABLE|0|2 +002016|radiosondeConfiguration|flag|RADIOSONDE CONFIGURATION|FLAG TABLE|0|0|5|FLAG TABLE|0|2 +002017|correctionAlgorithmsForHumidityMeasurements|table|CORRECTION ALGORITHMS FOR HUMIDITY MEASUREMENTS|CODE TABLE|0|0|5|CODE TABLE|0|2 +002019|satelliteInstruments|table|SATELLITE INSTRUMENTS|CODE TABLE|0|0|11|CODE TABLE|0|4 +002020|satelliteClassification|table|SATELLITE CLASSIFICATION|CODE TABLE|0|0|9|CODE TABLE|0|3 +002021|satelliteInstrumentDataUsedInProcessing|flag|SATELLITE INSTRUMENT DATA USED IN PROCESSING|FLAG TABLE|0|0|9|FLAG TABLE|0|3 +002022|satelliteDataProcessingTechnique|flag|SATELLITE DATA-PROCESSING TECHNIQUE USED|FLAG TABLE|0|0|8|FLAG TABLE|0|3 +002023|satelliteDerivedWindComputationMethod|table|SATELLITE-DERIVED WIND COMPUTATION METHOD|CODE TABLE|0|0|4|CODE TABLE|0|2 +002024|meanHumidityComputationalMethod|table|INTEGRATED MEAN HUMIDITY COMPUTATIONAL METHOD|CODE TABLE|0|0|4|CODE TABLE|0|2 +002025|satelliteChannelsUsedInComputation|flag|SATELLITE CHANNEL(S) USED IN COMPUTATION|FLAG TABLE|0|0|25|FLAG TABLE|0|9 +002026|crossTrackResolution|double|CROSS-TRACK RESOLUTION|m|2|0|12|m|2|4 +002027|alongTrackResolution|double|ALONG-TRACK RESOLUTION|m|2|0|12|m|2|4 +002028|segmentSizeAtNadirInXDirection|long|SEGMENT SIZE AT NADIR IN X-DIRECTION|m|0|0|18|m|0|6 +002029|segmentSizeAtNadirInYDirection|long|SEGMENT SIZE AT NADIR IN Y-DIRECTION|m|0|0|18|m|0|6 +002030|methodOfCurrentMeasurement|table|METHOD OF CURRENT MEASUREMENT|CODE TABLE|0|0|3|CODE TABLE|0|1 +002031|durationAndTimeOfCurrentMeasurement|table|DURATION AND TIME OF CURRENT MEASUREMENT|CODE TABLE|0|0|5|CODE TABLE|0|2 +002032|indicatorForDigitization|table|INDICATOR FOR DIGITIZATION|CODE TABLE|0|0|2|CODE TABLE|0|1 +002033|methodOfSalinityOrDepthMeasurement|table|METHOD OF SALINITY/DEPTH MEASUREMENT|CODE TABLE|0|0|3|CODE TABLE|0|1 +002034|drogueType|table|DROGUE TYPE|CODE TABLE|0|0|5|CODE TABLE|0|2 +002035|cableLength|long|CABLE LENGTH|m|0|0|9|m|0|3 +002036|buoyType|table|BUOY TYPE|CODE TABLE|0|0|2|CODE TABLE|0|1 +002037|methodOfTidalObservation|table|METHOD OF TIDAL OBSERVATION|CODE TABLE|0|0|3|CODE TABLE|0|1 +002038|methodOfWaterTemperatureAndOrOrSalinityMeasurement|table|METHOD OF WATER TEMPERATURE AND/OR SALINITY MEASUREMENT|CODE TABLE|0|0|4|CODE TABLE|0|2 +002039|methodOfWetBulbTemperatureMeasurement|table|METHOD OF WET-BULB TEMPERATURE MEASUREMENT|CODE TABLE|0|0|3|CODE TABLE|0|1 +002040|methodOfRemovingVelocityAndMotionOfPlatformFromCurrent|table|METHOD OF REMOVING VELOCITY AND MOTION OF PLATFORM FROM CURRENT|CODE TABLE|0|0|4|CODE TABLE|0|2 +002041|methodForEstimatingReportsRelatedToSynopticFeatures|table|METHOD FOR ESTIMATING REPORTS RELATED TO SYNOPTIC FEATURES|CODE TABLE|0|0|6|CODE TABLE|0|2 +002042|indicatorForSeaSurfaceCurrentSpeed|table|INDICATOR FOR SEA-SURFACE CURRENT SPEED|CODE TABLE|0|0|2|CODE TABLE|0|1 +002044|indicatorForMethodOfCalculatingSpectralWaveData|table|INDICATOR FOR METHOD OF CALCULATING SPECTRAL WAVE DATA|CODE TABLE|0|0|4|CODE TABLE|0|2 +002045|platformType|table|INDICATOR FOR TYPE OF PLATFORM|CODE TABLE|0|0|4|CODE TABLE|0|2 +002046|waveMeasurementInstrumentation|table|WAVE MEASUREMENT INSTRUMENTATION|CODE TABLE|0|0|4|CODE TABLE|0|2 +002047|deepOceanTsunameterType|table|DEEP-OCEAN TSUNAMETER TYPE|CODE TABLE|0|0|7|CODE TABLE|0|2 +002048|satelliteSensorIndicator|table|SATELLITE SENSOR INDICATOR|CODE TABLE|0|0|4|CODE TABLE|0|2 +002049|geostationarySatelliteDataProcessingTechnique|flag|GEOSTATIONARY SATELLITE DATA-PROCESSING TECHNIQUE USED|FLAG TABLE|0|0|8|FLAG TABLE|0|3 +002050|geostationarySounderSatelliteChannels|flag|GEOSTATIONARY SOUNDER SATELLITE CHANNELS USED|FLAG TABLE|0|0|20|FLAG TABLE|0|7 +002051|indicatorToSpecifyObservingMethodForExtremeTemperatures|table|INDICATOR TO SPECIFY OBSERVING METHOD FOR EXTREME TEMPERATURES|CODE TABLE|0|0|4|CODE TABLE|0|2 +002052|geostationaryImagerSatelliteChannels|flag|GEOSTATIONARY IMAGER SATELLITE CHANNELS USED|FLAG TABLE|0|0|6|FLAG TABLE|0|2 +002053|goesBrightnessTemperatureCharacteristics|table|GOES-I/M BRIGHTNESS TEMPERATURE CHARACTERISTICS|CODE TABLE|0|0|4|CODE TABLE|0|2 +002054|goesSoundingsParameter|table|GOES-I/M SOUNDINGS PARAMETER CHARACTERISTICS|CODE TABLE|0|0|4|CODE TABLE|0|2 +002055|geostationarySoundingsStatisticalParameters|table|GEOSTATIONARY SOUNDINGS STATISTICAL PARAMETERS|CODE TABLE|0|0|4|CODE TABLE|0|2 +002056|geostationarySoundingsAccuracyStatistics|table|GEOSTATIONARY SOUNDINGS ACCURACY STATISTICS|CODE TABLE|0|0|4|CODE TABLE|0|2 +002057|originOfFirstGuessInformationForGoesIOrMSoundings|table|ORIGIN OF FIRST-GUESS INFORMATION FOR GOES-I/M SOUNDINGS|CODE TABLE|0|0|4|CODE TABLE|0|2 +002058|validTimesOfFirstGuessInformationForGoesIOrMSoundings|table|VALID TIMES OF FIRST-GUESS INFORMATION FOR GOES-I/M SOUNDINGS|CODE TABLE|0|0|4|CODE TABLE|0|2 +002059|originOfAnalysisInformationForGoesIOrMSoundings|table|ORIGIN OF ANALYSIS INFORMATION FOR GOES-I/M SOUNDINGS|CODE TABLE|0|0|4|CODE TABLE|0|2 +002060|originOfSurfaceInformationForGoesIOrMSoundings|table|ORIGIN OF SURFACE INFORMATION FOR GOES-I/M SOUNDINGS|CODE TABLE|0|0|4|CODE TABLE|0|2 +002061|aircraftNavigationalSystem|table|AIRCRAFT NAVIGATIONAL SYSTEM|CODE TABLE|0|0|3|CODE TABLE|0|1 +002062|aircraftDataRelaySystemType|table|TYPE OF AIRCRAFT DATA RELAY SYSTEM|CODE TABLE|0|0|4|CODE TABLE|0|2 +002063|aircraftRollAngle|double|AIRCRAFT ROLL ANGLE|deg|2|-18000|16|deg|2|5 +002064|aircraftRollAngleQuality|table|AIRCRAFT ROLL ANGLE QUALITY|CODE TABLE|0|0|2|CODE TABLE|0|1 +002065|acarsGroundReceivingStation|string|ACARS GROUND-RECEIVING STATION|CCITT IA5|0|0|40|Character|0|5 +002066|radiosondeGroundReceivingSystem|table|RADIOSONDE GROUND RECEIVING SYSTEM|CODE TABLE|0|0|6|CODE TABLE|0|2 +002067|radiosondeOperatingFrequency|long|RADIOSONDE OPERATING FREQUENCY|Hz|-5|0|15|Hz|-5|5 +002070|originalSpecificationOfLatitudeOrLongitude|table|ORIGINAL SPECIFICATION OF LATITUDE/LONGITUDE|CODE TABLE|0|0|4|CODE TABLE|0|2 +002071|spectrographicWavelength|double|SPECTROGRAPHIC WAVELENGTH|m|13|0|30|m|13|10 +002072|spectrographicWidth|double|SPECTROGRAPHIC WIDTH|m|13|0|30|m|13|10 +002080|balloonManufacturer|table|BALLOON MANUFACTURER|CODE TABLE|0|0|6|CODE TABLE|0|2 +002081|balloonType|table|TYPE OF BALLOON|CODE TABLE|0|0|5|CODE TABLE|0|2 +002082|weightOfBalloon|double|WEIGHT OF BALLOON|kg|3|0|12|kg|3|4 +002083|balloonShelterType|table|TYPE OF BALLOON SHELTER|CODE TABLE|0|0|4|CODE TABLE|0|2 +002084|typeOfGasUsedInBalloon|table|TYPE OF GAS USED IN BALLOON|CODE TABLE|0|0|4|CODE TABLE|0|2 +002085|amountOfGasUsedInBalloon|double|AMOUNT OF GAS USED IN BALLOON|kg|3|0|13|kg|3|4 +002086|balloonFlightTrainLength|double|BALLOON FLIGHT TRAIN LENGTH|m|1|0|10|m|1|4 +002087|parachuteSurfaceArea|double|PARACHUTE SURFACE AREA|m2|4|0|15|m2|4|5 +002088|volumeOfGasUsedInBalloon|double|VOLUME OF GAS USED IN BALLOON|m3|3|0|13|m3|3|4 +002090|instrumentWavelength|double|INSTRUMENT WAVELENGTH|m|9|0|16|m|9|5 +002091|entrySensor4Or20Ma|double|ENTRY SENSOR 4/20 MA|A|4|0|10|A|4|3 +002092|ozoneProfileComputationMethod|table|OZONE PROFILE COMPUTATION METHOD|CODE TABLE|0|0|3|CODE TABLE|0|1 +002095|pressureSensorType|table|TYPE OF PRESSURE SENSOR|CODE TABLE|0|0|5|CODE TABLE|0|2 +002096|temperatureSensorType|table|TYPE OF TEMPERATURE SENSOR|CODE TABLE|0|0|5|CODE TABLE|0|2 +002097|humiditySensorType|table|TYPE OF HUMIDITY SENSOR|CODE TABLE|0|0|5|CODE TABLE|0|2 +002099|polarization|table|POLARIZATION|CODE TABLE|0|0|3|CODE TABLE|0|1 +002100|radarConstant|double|RADAR CONSTANT|dB|1|0|12|dB|1|4 +002101|antennaType|table|TYPE OF ANTENNA|CODE TABLE|0|0|4|CODE TABLE|0|2 +002102|antennaHeightAboveTowerBase|long|ANTENNA HEIGHT ABOVE TOWER BASE|m|0|0|8|m|0|3 +002103|radome|flag|RADOME|FLAG TABLE|0|0|2|FLAG TABLE|0|1 +002104|antennaPolarization|table|ANTENNA POLARIZATION|CODE TABLE|0|0|4|CODE TABLE|0|2 +002105|maximumAntennaGain|long|MAXIMUM ANTENNA GAIN|dB|0|0|6|dB|0|2 +002106|3DbBeamwidth|double|3-DB BEAMWIDTH|deg|1|0|6|deg|1|2 +002107|sidelobeSuppression|long|SIDELOBE SUPPRESSION|dB|0|0|6|dB|0|2 +002108|crosspolDiscriminationOnAxis|long|CROSSPOL DISCRIMINATION (ON AXIS)|dB|0|0|6|dB|0|2 +002109|antennaSpeedAzimuth|double|ANTENNA SPEED (AZIMUTH)|deg/s|2|0|12|deg/s|2|4 +002110|antennaSpeedElevation|double|ANTENNA SPEED (ELEVATION)|deg/s|2|0|12|deg/s|2|4 +002111|radarIncidenceAngle|double|RADAR INCIDENCE ANGLE|deg|1|0|10|deg|1|4 +002112|radarLookAngle|double|RADAR LOOK ANGLE|deg|1|0|12|deg|1|4 +002113|numberOfAzimuthLooks|long|NUMBER OF AZIMUTH LOOKS|Numeric|0|0|4|Numeric|0|2 +002114|antennaEffectiveSurfaceArea|long|ANTENNA EFFECTIVE SURFACE AREA|m2|0|0|15|m2|0|5 +002115|surfaceObservingEquipmentType|table|TYPE OF SURFACE OBSERVING EQUIPMENT|CODE TABLE|0|0|5|CODE TABLE|0|2 +002116|percentageOf320MhzBandProcessed|long|PERCENTAGE OF 320 MHZ BAND PROCESSED|%|0|0|7|%|0|3 +002117|percentageOf80MhzBandProcessed|long|PERCENTAGE OF 80 MHZ BAND PROCESSED|%|0|0|7|%|0|3 +002118|percentageOf20MhzBandProcessed|long|PERCENTAGE OF 20 MHZ BAND PROCESSED|%|0|0|7|%|0|3 +002119|ra2InstrumentOperations|table|RA-2 INSTRUMENT OPERATIONS|CODE TABLE|0|0|3|CODE TABLE|0|1 +002120|oceanWaveFrequency|double|OCEAN WAVE FREQUENCY|Hz|3|0|10|Hz|3|4 +002121|meanFrequency|long|MEAN FREQUENCY|Hz|-8|0|7|Hz|-8|3 +002122|frequencyAgilityRange|long|FREQUENCY AGILITY RANGE|Hz|-6|-128|8|Hz|-6|3 +002123|peakPower|long|PEAK POWER|W|-4|0|7|W|-4|3 +002124|averagePower|long|AVERAGE POWER|W|-1|0|7|W|-1|3 +002125|pulseRepetitionFrequency|long|PULSE REPETITION FREQUENCY|Hz|-1|0|8|Hz|-1|3 +002126|pulseWidth|double|PULSE WIDTH|s|7|0|6|s|7|2 +002127|receiverIntermediateFrequency|long|RECEIVER INTERMEDIATE FREQUENCY|Hz|-6|0|7|Hz|-6|3 +002128|intermediateFrequencyBandwidth|long|INTERMEDIATE FREQUENCY BANDWIDTH|Hz|-5|0|6|Hz|-5|2 +002129|minimumDetectableSignal|long|MINIMUM DETECTABLE SIGNAL|dB|0|-150|5|dB|0|3 +002130|dynamicRange|long|DYNAMIC RANGE|dB|0|0|7|dB|0|3 +002131|sensitivityTimeControl|flag|SENSITIVITY TIME CONTROL (STC)|FLAG TABLE|0|0|2|FLAG TABLE|0|1 +002132|azimuthPointingAccuracy|double|AZIMUTH POINTING ACCURACY|deg|2|0|6|deg|2|2 +002133|elevationPointingAccuracy|double|ELEVATION POINTING ACCURACY|deg|2|0|6|deg|2|2 +002134|antennaBeamAzimuth|double|ANTENNA BEAM AZIMUTH|deg|2|0|16|deg|2|5 +002135|antennaElevation|double|ANTENNA ELEVATION|deg|2|-9000|15|deg|2|5 +002136|rangeProcessedByRangeAttenuationCorrection|long|RANGE PROCESSED BY RANGE ATTENUATION CORRECTION|m|-3|0|16|m|-3|5 +002137|radarDualPrfRatio|table|RADAR DUAL PRF RATIO|CODE TABLE|0|0|4|CODE TABLE|0|2 +002138|antennaRotationDirection|table|ANTENNA ROTATION DIRECTION|CODE TABLE|0|0|2|CODE TABLE|0|1 +002139|siralInstrumentConfiguration|table|SIRAL INSTRUMENT CONFIGURATION|CODE TABLE|0|0|2|CODE TABLE|0|1 +002140|satelliteRadarBeamAzimuthAngle|long|SATELLITE RADAR BEAM AZIMUTH ANGLE|deg|0|0|9|deg|0|3 +002141|measurementType|string|MEASUREMENT TYPE|CCITT IA5|0|0|24|Character|0|3 +002142|ozoneInstrument|string|OZONE INSTRUMENT SERIAL NUMBER/IDENTIFICATION|CCITT IA5|0|0|32|Character|0|4 +002143|ozoneInstrumentType|table|OZONE INSTRUMENT TYPE|CODE TABLE|0|0|7|CODE TABLE|0|3 +002144|lightSourceTypeForBrewerSpectrophotometer|table|LIGHT SOURCE TYPE FOR BREWER SPECTROPHOTOMETER|CODE TABLE|0|0|4|CODE TABLE|0|2 +002145|wavelengthSettingForDobsonInstruments|table|WAVELENGTH SETTING FOR DOBSON INSTRUMENTS|CODE TABLE|0|0|4|CODE TABLE|0|2 +002146|sourceConditionsForDobsonInstruments|table|SOURCE CONDITIONS FOR DOBSON INSTRUMENTS|CODE TABLE|0|0|4|CODE TABLE|0|2 +002147|methodOfTransmissionToCollectionCentre|table|METHOD OF TRANSMISSION TO COLLECTION CENTRE|CODE TABLE|0|0|6|CODE TABLE|0|2 +002148|dataCollectionLocationSystem|table|DATA COLLECTION AND/OR LOCATION SYSTEM|CODE TABLE|0|0|5|CODE TABLE|0|2 +002149|dataBuoyType|table|TYPE OF DATA BUOY|CODE TABLE|0|0|6|CODE TABLE|0|2 +002150|tovsOrAtovsOrAvhrrInstrumentationChannelNumber|table|TOVS/ATOVS/AVHRR INSTRUMENTATION CHANNEL NUMBER|CODE TABLE|0|0|6|CODE TABLE|0|2 +002151|radiometerIdentifier|table|RADIOMETER IDENTIFIER|CODE TABLE|0|0|11|CODE TABLE|0|4 +002152|satelliteInstrumentUsedInDataProcessing|flag|SATELLITE INSTRUMENT USED IN DATA PROCESSING|FLAG TABLE|0|0|31|FLAG TABLE|0|10 +002153|satelliteChannelCentreFrequency|long|SATELLITE CHANNEL CENTRE FREQUENCY|Hz|-8|0|26|Hz|-8|8 +002154|satelliteChannelBandWidth|long|SATELLITE CHANNEL BAND WIDTH|Hz|-8|0|26|Hz|-8|8 +002155|satelliteChannelWavelength|double|SATELLITE CHANNEL WAVELENGTH|m|9|0|16|m|9|5 +002156|percentageOfValidKuOceanRetrackerMeasurements|long|PERCENTAGE OF VALID KU OCEAN RETRACKER MEASUREMENTS|%|0|0|7|%|0|3 +002157|percentageOfValidSOceanRetrackerMeasurements|long|PERCENTAGE OF VALID S OCEAN RETRACKER MEASUREMENTS|%|0|0|7|%|0|3 +002158|ra2Instrument|flag|RA-2 INSTRUMENT|FLAG TABLE|0|0|9|FLAG TABLE|0|3 +002159|mwrInstrument|flag|MWR INSTRUMENT|FLAG TABLE|0|0|8|FLAG TABLE|0|3 +002160|radarWaveLength|table|WAVELENGTH OF THE RADAR|CODE TABLE|0|0|4|CODE TABLE|0|2 +002161|windProcessingMethod|flag|WIND PROCESSING METHOD|FLAG TABLE|0|0|16|FLAG TABLE|0|6 +002162|extendedHeightAssignmentMethod|table|EXTENDED HEIGHT ASSIGNMENT METHOD|CODE TABLE|0|0|6|CODE TABLE|0|2 +002163|heightAssignmentMethod|table|HEIGHT ASSIGNMENT METHOD|CODE TABLE|0|0|4|CODE TABLE|0|2 +002164|tracerCorrelationMethod|table|TRACER CORRELATION METHOD|CODE TABLE|0|0|3|CODE TABLE|0|1 +002165|radianceTypeFlags|flag|RADIANCE TYPE FLAGS|FLAG TABLE|0|0|15|FLAG TABLE|0|5 +002166|radianceType|table|RADIANCE TYPE|CODE TABLE|0|0|4|CODE TABLE|0|2 +002167|radianceComputationalMethod|table|RADIANCE COMPUTATIONAL METHOD|CODE TABLE|0|0|4|CODE TABLE|0|2 +002168|hydrostaticPressureOfLowerEndOfCableThermistorString|long|HYDROSTATIC PRESSURE OF LOWER END OF CABLE (THERMISTOR STRING)|Pa|-3|0|16|kPa|0|5 +002169|anemometerType|table|ANEMOMETER TYPE|CODE TABLE|0|0|4|CODE TABLE|0|2 +002170|aircraftHumiditySensors|table|AIRCRAFT HUMIDITY SENSORS|CODE TABLE|0|0|6|CODE TABLE|0|2 +002171|instrumentSerialNumberForWaterTemperatureProfile|string|INSTRUMENT SERIAL NUMBER FOR WATER TEMPERATURE PROFILE MEASUREMENT|CCITT IA5|0|0|64|Character|0|8 +002172|productTypeForRetrievedAtmosphericGases|table|PRODUCT TYPE FOR RETRIEVED ATMOSPHERIC GASES|CODE TABLE|0|0|8|CODE TABLE|0|3 +002173|squareOfOffNadirAngle|double|SQUARE OF THE OFF-NADIR ANGLE|deg2|4|0|10|deg2|4|4 +002174|meanAcrossTrackPixelNumber|long|MEAN ACROSS TRACK PIXEL NUMBER|Numeric|0|0|9|Numeric|0|3 +002175|methodOfPrecipitationMeasurement|table|METHOD OF PRECIPITATION MEASUREMENT|CODE TABLE|0|0|4|CODE TABLE|0|2 +002176|methodOfStateOfGroundMeasurement|table|METHOD OF STATE OF GROUND MEASUREMENT|CODE TABLE|0|0|4|CODE TABLE|0|2 +002177|methodOfSnowDepthMeasurement|table|METHOD OF SNOW DEPTH MEASUREMENT|CODE TABLE|0|0|4|CODE TABLE|0|2 +002178|methodOfLiquidContentMeasurementOfPrecipitation|table|METHOD OF LIQUID CONTENT MEASUREMENT OF PRECIPITATION|CODE TABLE|0|0|4|CODE TABLE|0|2 +002179|skyConditionAlgorithmType|table|TYPE OF SKY CONDITION ALGORITHM|CODE TABLE|0|0|4|CODE TABLE|0|2 +002180|mainPresentWeatherDetectingSystem|table|MAIN PRESENT WEATHER DETECTING SYSTEM|CODE TABLE|0|0|4|CODE TABLE|0|2 +002181|supplementaryPresentWeatherSensor|flag|SUPPLEMENTARY PRESENT WEATHER SENSOR|FLAG TABLE|0|0|21|FLAG TABLE|0|7 +002182|visibilityMeasurementSystem|table|VISIBILITY MEASUREMENT SYSTEM|CODE TABLE|0|0|4|CODE TABLE|0|2 +002183|cloudDetectionSystem|table|CLOUD DETECTION SYSTEM|CODE TABLE|0|0|4|CODE TABLE|0|2 +002184|lightningDetectionSensorType|table|TYPE OF LIGHTNING DETECTION SENSOR|CODE TABLE|0|0|4|CODE TABLE|0|2 +002185|methodOfEvaporationMeasurement|table|METHOD OF EVAPORATION MEASUREMENT|CODE TABLE|0|0|4|CODE TABLE|0|2 +002186|capabilityToDetectPrecipitationPhenomena|flag|CAPABILITY TO DETECT PRECIPITATION PHENOMENA|FLAG TABLE|0|0|30|FLAG TABLE|0|10 +002187|capabilityToDetectOtherWeatherPhenomena|flag|CAPABILITY TO DETECT OTHER WEATHER PHENOMENA|FLAG TABLE|0|0|18|FLAG TABLE|0|6 +002188|capabilityToDetectObscuration|flag|CAPABILITY TO DETECT OBSCURATION|FLAG TABLE|0|0|21|FLAG TABLE|0|7 +002189|capabilityToDiscriminateLightningStrikes|flag|CAPABILITY TO DISCRIMINATE LIGHTNING STRIKES|FLAG TABLE|0|0|12|FLAG TABLE|0|4 +002190|lagrangianDrifterSubmergenceTimeSubmerged|long|LAGRANGIAN DRIFTER SUBMERGENCE (% TIME SUBMERGED)|%|0|0|7|%|0|3 +002191|geopotentialHeightCalculation|table|GEOPOTENTIAL HEIGHT CALCULATION|CODE TABLE|0|0|4|CODE TABLE|0|2 +003001|surfaceStationType|table|SURFACE STATION TYPE|CODE TABLE|0|0|5|CODE TABLE|0|2 +003003|thermometerOrHygrometerHousing|table|THERMOMETER/HYGROMETER HOUSING|CODE TABLE|0|0|4|CODE TABLE|0|2 +003004|typeOfScreenOrShelterOrRadiationShield|table|TYPE OF SCREEN/SHELTER/RADIATION SHIELD|CODE TABLE|0|0|4|CODE TABLE|0|2 +003005|horizontalWidthOfScreenOrShieldX|double|HORIZONTAL WIDTH OF SCREEN OR SHIELD (X)|m|3|0|16|m|3|5 +003006|horizontalDepthOfScreenOrShieldY|double|HORIZONTAL DEPTH OF SCREEN OR SHIELD (Y)|m|3|0|16|m|3|5 +003007|verticalHeightOfScreenOrShieldZ|double|VERTICAL HEIGHT OF SCREEN OR SHIELD (Z)|m|3|0|16|m|3|5 +003008|artificiallyVentilatedScreenOrShield|table|ARTIFICIALLY VENTILATED SCREEN OR SHIELD|CODE TABLE|0|0|3|CODE TABLE|0|1 +003009|amountOfForcedVentilationAtTimeOfReading|double|AMOUNT OF FORCED VENTILATION AT TIME OF READING|m/s|1|0|9|m/s|1|3 +003010|methodOfSeaOrWaterCurrentMeasurement|table|METHOD OF SEA/WATER CURRENT MEASUREMENT|CODE TABLE|0|0|4|CODE TABLE|0|2 +003011|methodOfDepthCalculation|table|METHOD OF DEPTH CALCULATION|CODE TABLE|0|0|2|CODE TABLE|0|1 +003012|instrumentTypeOrSensorForDissolvedOxygenMeasurement|table|INSTRUMENT TYPE/SENSOR FOR DISSOLVED OXYGEN MEASUREMENT|CODE TABLE|0|0|4|CODE TABLE|0|2 +003016|positionOfRoadSensors|table|POSITION OF ROAD SENSORS|CODE TABLE|0|0|4|CODE TABLE|0|2 +003017|extendedTypeOfStation|flag|EXTENDED TYPE OF STATION|FLAG TABLE|0|0|6|FLAG TABLE|0|2 +003018|typeOfRoad|table|TYPE OF ROAD|CODE TABLE|0|0|5|CODE TABLE|0|2 +003019|typeOfConstruction|table|TYPE OF CONSTRUCTION|CODE TABLE|0|0|4|CODE TABLE|0|2 +003020|materialForThermometerOrHygrometerHousing|table|MATERIAL FOR THERMOMETER/HYGROMETER HOUSING|CODE TABLE|0|0|3|CODE TABLE|0|1 +003021|hygrometerHeating|table|HYGROMETER HEATING|CODE TABLE|0|0|2|CODE TABLE|0|1 +003022|instrumentOwner|table|INSTRUMENT OWNER|CODE TABLE|0|0|3|CODE TABLE|0|1 +003023|configurationOfLouversForThermometerOrHygrometerScreen|table|CONFIGURATION OF LOUVERS FOR THERMOMETER/HYGROMETER SCREEN|CODE TABLE|0|0|3|CODE TABLE|0|1 +003024|psychrometricCoefficient|double|PSYCHROMETRIC COEFFICIENT|K-1|6|0|10|K-1|6|3 +003025|crossTrackEstimationAreaSize|long|CROSS-TRACK ESTIMATION AREA SIZE|m|0|5000|16|m|0|5 +003026|alongTrackEstimationAreaSize|long|ALONG-TRACK ESTIMATION AREA SIZE|m|0|5000|16|m|0|5 +003027|typeOfFlightRig|table|TYPE OF FLIGHT RIG|CODE TABLE|0|0|4|CODE TABLE|0|2 +003028|methodOfSnowWaterEquivalentMeasurement|table|METHOD OF SNOW WATER EQUIVALENT MEASUREMENT|CODE TABLE|0|0|6|CODE TABLE|0|2 +003029|swath|table|SWATH|CODE TABLE|0|0|3|CODE TABLE|0|1 +003030|antennaStatus|table|ANTENNA STATUS|CODE TABLE|0|0|3|CODE TABLE|0|1 +004001|year|long|YEAR|a|0|0|12|a|0|4 +004002|month|long|MONTH|mon|0|0|4|mon|0|2 +004003|day|long|DAY|d|0|0|6|d|0|2 +004004|hour|long|HOUR|h|0|0|5|h|0|2 +004005|minute|long|MINUTE|min|0|0|6|min|0|2 +004006|second|long|SECOND|s|0|0|6|s|0|2 +004007|secondsWithinAMinuteMicrosecond|double|SECONDS WITHIN A MINUTE (MICROSECOND ACCURACY)|s|6|0|26|s|6|8 +004011|timeIncrement|long|TIME INCREMENT|a|0|-1024|11|a|0|4 +004012|timeIncrement|long|TIME INCREMENT|mon|0|-1024|11|mon|0|4 +004013|timeIncrement|long|TIME INCREMENT|d|0|-1024|11|d|0|4 +004014|timeIncrement|long|TIME INCREMENT|h|0|-1024|11|h|0|4 +004015|timeIncrement|long|TIME INCREMENT|min|0|-2048|12|min|0|4 +004016|timeIncrement|long|TIME INCREMENT|s|0|-4096|13|s|0|4 +004017|referenceTimePeriodForAccumulatedOrExtremeData|long|REFERENCE TIME PERIOD FOR ACCUMULATED OR EXTREME DATA|min|0|-1440|12|min|0|4 +004021|timePeriod|long|TIME PERIOD OR DISPLACEMENT|a|0|-1024|11|a|0|4 +004022|timePeriod|long|TIME PERIOD OR DISPLACEMENT|mon|0|-1024|11|mon|0|4 +004023|timePeriod|long|TIME PERIOD OR DISPLACEMENT|d|0|-1024|11|d|0|4 +004024|timePeriod|long|TIME PERIOD OR DISPLACEMENT|h|0|-2048|12|h|0|4 +004025|timePeriod|long|TIME PERIOD OR DISPLACEMENT|min|0|-2048|12|min|0|4 +004026|timePeriod|long|TIME PERIOD OR DISPLACEMENT|s|0|-4096|13|s|0|4 +004031|durationOfTimeRelatingToFollowingValue|long|DURATION OF TIME RELATING TO FOLLOWING VALUE|h|0|0|8|h|0|3 +004032|durationOfTimeRelatingToFollowingValue|long|DURATION OF TIME RELATING TO FOLLOWING VALUE|min|0|0|6|min|0|2 +004041|timeDifferenceUtcLmt|long|TIME DIFFERENCE, UTC - LMT|min|0|-1440|12|min|0|4 +004043|dayOfYear|long|DAY OF THE YEAR|d|0|0|9|d|0|3 +004051|principalTimeOfDailyReadingOfMaximumTemperature|long|PRINCIPAL TIME OF DAILY READING OF MAXIMUM TEMPERATURE|h|0|0|5|h|0|2 +004052|principalTimeOfDailyReadingOfMinimumTemperature|long|PRINCIPAL TIME OF DAILY READING OF MINIMUM TEMPERATURE|h|0|0|5|h|0|2 +004053|numberOfDaysWithPrecipitationEqualToOrMoreThan1Mm|long|NUMBER OF DAYS WITH PRECIPITATION EQUAL TO OR MORE THAN 1 MM|Numeric|0|0|6|Numeric|0|2 +004059|timesOfObservationUsedToComputeReportedMeanValues|flag|TIMES OF OBSERVATION USED TO COMPUTE THE REPORTED MEAN VALUES|FLAG TABLE|0|0|6|FLAG TABLE|0|2 +004065|timeIncrement|long|SHORT TIME INCREMENT|min|0|-128|8|min|0|2 +004066|timeIncrement|long|SHORT TIME INCREMENT|s|0|-128|8|s|0|2 +004073|timePeriod|long|SHORT TIME PERIOD OR DISPLACEMENT|d|0|-128|8|d|0|2 +004074|timePeriod|long|SHORT TIME PERIOD OR DISPLACEMENT|h|0|-128|8|h|0|2 +004075|timePeriod|long|SHORT TIME PERIOD OR DISPLACEMENT|min|0|-128|8|min|0|2 +004080|averagingPeriodForFollowingValue|table|AVERAGING PERIOD FOR FOLLOWING VALUE|CODE TABLE|0|0|4|CODE TABLE|0|2 +004086|timePeriod|long|LONG TIME PERIOD OR DISPLACEMENT|s|0|-8192|15|s|0|5 +005001|latitude|double|LATITUDE (HIGH ACCURACY)|deg|5|-9000000|25|deg|5|7 +005002|latitude|double|LATITUDE (COARSE ACCURACY)|deg|2|-9000|15|deg|2|4 +005011|latitudeIncrement|double|LATITUDE INCREMENT (HIGH ACCURACY)|deg|5|-9000000|25|deg|5|7 +005012|latitudeIncrement|double|LATITUDE INCREMENT (COARSE ACCURACY)|deg|2|-9000|15|deg|2|4 +005015|latitudeDisplacement|double|LATITUDE DISPLACEMENT (HIGH ACCURACY)|deg|5|-9000000|25|deg|5|7 +005016|latitudeDisplacement|double|LATITUDE DISPLACEMENT (COARSE ACCURACY)|deg|2|-9000|15|deg|2|4 +005021|bearingOrAzimuth|double|BEARING OR AZIMUTH|deg|2|0|16|deg|2|5 +005022|solarAzimuth|double|SOLAR AZIMUTH|deg|2|0|16|deg|2|5 +005023|sunToSatelliteAzimuthDifference|double|SUN TO SATELLITE AZIMUTH DIFFERENCE|deg|1|-1800|12|deg|1|4 +005030|directionSpectral|long|DIRECTION (SPECTRAL)|deg|0|0|12|deg|0|4 +005031|rowNumber|long|ROW NUMBER|Numeric|0|0|12|Numeric|0|4 +005032|yOffset|double|Y OFFSET|m|2|-1073741824|31|m|2|11 +005033|pixelSizeOnHorizontal1|long|PIXEL SIZE ON HORIZONTAL - 1|m|-1|0|16|m|-1|5 +005034|alongTrackRowNumber|long|ALONG TRACK ROW NUMBER|Numeric|0|0|11|Numeric|0|4 +005035|xDimensionMaximumSize|long|MAXIMUM SIZE OF X-DIMENSION|Numeric|0|0|12|Numeric|0|4 +005036|shipTransectNumberAccordingToSoop|long|SHIP TRANSECT NUMBER ACCORDING TO SOOP|Numeric|0|0|7|Numeric|0|2 +005040|orbitNumber|long|ORBIT NUMBER|Numeric|0|0|24|Numeric|0|8 +005041|scanLineNumber|long|SCAN LINE NUMBER|Numeric|0|0|8|Numeric|0|3 +005042|channelNumber|long|CHANNEL NUMBER|Numeric|0|0|6|Numeric|0|2 +005043|fieldOfViewNumber|long|FIELD OF VIEW NUMBER|Numeric|0|0|8|Numeric|0|3 +005044|satelliteCycleNumber|long|SATELLITE CYCLE NUMBER|Numeric|0|0|11|Numeric|0|4 +005045|fieldOfRegardNumber|long|FIELD OF REGARD NUMBER|Numeric|0|0|8|Numeric|0|3 +005052|channelNumberIncrement|long|CHANNEL NUMBER INCREMENT|Numeric|0|0|5|Numeric|0|2 +005053|fieldOfViewNumberIncrement|long|FIELD OF VIEW NUMBER INCREMENT|Numeric|0|0|5|Numeric|0|2 +005060|yAngularPositionFromCentreOfGravity|double|Y ANGULAR POSITION FROM CENTRE OF GRAVITY|deg|6|-8000000|24|deg|6|8 +005061|zAngularPositionFromCentreOfGravity|double|Z ANGULAR POSITION FROM CENTRE OF GRAVITY|deg|6|-8000000|24|deg|6|8 +005063|spacecraftRoll|double|SPACECRAFT ROLL|deg|2|0|16|deg|2|5 +005064|spacecraftPitch|double|SPACECRAFT PITCH|deg|2|0|16|deg|2|5 +005066|spacecraftYaw|double|SPACECRAFT YAW|deg|2|0|16|deg|2|5 +005067|numberOfScanLines|long|NUMBER OF SCAN LINES|Numeric|0|0|8|Numeric|0|3 +005068|profileNumber|long|PROFILE NUMBER|Numeric|0|0|16|Numeric|0|5 +005069|receiverChannel|table|RECEIVER CHANNEL|CODE TABLE|0|0|2|CODE TABLE|0|1 +005070|observationIdentifier|long|OBSERVATION IDENTIFIER|Numeric|0|0|30|Numeric|0|10 +005071|stripmapIdentifier|long|STRIPMAP IDENTIFIER|Numeric|0|0|16|Numeric|0|5 +005072|numberOfSpectraInRangeDirection|long|NUMBER OF SPECTRA IN RANGE DIRECTION|Numeric|0|0|8|Numeric|0|3 +005073|numberOfSpectraInAzimuthalDirection|long|NUMBER OF SPECTRA IN AZIMUTHAL DIRECTION|Numeric|0|0|8|Numeric|0|3 +005074|indexInRangeDirection|long|INDEX IN RANGE DIRECTION|Numeric|0|0|8|Numeric|0|3 +005075|indexInAzimuthalDirection|long|INDEX IN AZIMUTHAL DIRECTION|Numeric|0|0|8|Numeric|0|3 +005076|solarAzimuthInInstrumentReferenceFrame|double|SOLAR AZIMUTH IN INSTRUMENT REFERENCE FRAME|deg|2|0|16|deg|2|6 +005077|subSatellitePointLatitude|double|SUB-SATELLITE POINT LATITUDE|deg|4|-900000|21|deg|4|7 +005078|hornNumber|long|HORN NUMBER|Numeric|0|0|4|Numeric|0|2 +005079|bandNumber|long|BAND NUMBER|Numeric|0|0|6|Numeric|0|2 +005080|resolutionRadius|long|RESOLUTION RADIUS|m|-3|0|6|m|-3|2 +006001|longitude|double|LONGITUDE (HIGH ACCURACY)|deg|5|-18000000|26|deg|5|8 +006002|longitude|double|LONGITUDE (COARSE ACCURACY)|deg|2|-18000|16|deg|2|5 +006011|longitudeIncrement|double|LONGITUDE INCREMENT (HIGH ACCURACY)|deg|5|-18000000|26|deg|5|8 +006012|longitudeIncrement|double|LONGITUDE INCREMENT (COARSE ACCURACY)|deg|2|-18000|16|deg|2|5 +006015|longitudeDisplacement|double|LONGITUDE DISPLACEMENT (HIGH ACCURACY)|deg|5|-18000000|26|deg|5|8 +006016|longitudeDisplacement|double|LONGITUDE DISPLACEMENT (COARSE ACCURACY)|deg|2|-18000|16|deg|2|5 +006021|distance|long|DISTANCE|m|-1|0|13|m|-1|4 +006029|waveNumber|double|WAVE NUMBER|/m|1|0|22|/m|1|7 +006030|waveNumberSpectral|double|WAVE NUMBER (SPECTRAL)|rad/m|5|0|13|rad/m|5|4 +006031|columnNumber|long|COLUMN NUMBER|Numeric|0|0|12|Numeric|0|4 +006032|xOffset|double|X OFFSET|m|2|-1073741824|31|m|2|11 +006033|pixelSizeOnHorizontal2|long|PIXEL SIZE ON HORIZONTAL - 2|m|-1|0|16|m|-1|5 +006034|crossTrackCellNumber|long|CROSS-TRACK CELL NUMBER|Numeric|0|0|7|Numeric|0|3 +006035|yDimensionMaximumSize|long|MAXIMUM SIZE OF Y-DIMENSION|Numeric|0|0|12|Numeric|0|4 +006040|radiusOfConfidence|long|RADIUS OF CONFIDENCE|m|0|0|13|m|0|4 +006041|earthScanSampleNumber|long|EARTH SCAN SAMPLE NUMBER|Numeric|0|0|11|Numeric|0|4 +006042|spaceOrMoonScanSampleNumber|long|SPACE/MOON SCAN SAMPLE NUMBER|Numeric|0|0|6|Numeric|0|2 +006043|subSatellitePointLongitude|double|SUB-SATELLITE POINT LONGITUDE|deg|4|-1800000|22|deg|4|8 +007001|heightOfStation|long|HEIGHT OF STATION|m|0|-400|15|m|0|5 +007002|height|long|HEIGHT OR ALTITUDE|m|-1|-40|16|m|-1|5 +007003|geopotential|long|GEOPOTENTIAL|m2 s-2|-1|-400|17|m2 s-2|-1|6 +007004|pressure|long|PRESSURE|Pa|-1|0|14|Pa|-1|5 +007005|heightIncrement|long|HEIGHT INCREMENT|m|0|-400|12|m|0|4 +007006|heightAboveStation|long|HEIGHT ABOVE STATION|m|0|0|15|m|0|5 +007007|height|long|HEIGHT|m|0|-1000|17|m|0|6 +007008|geopotential|long|GEOPOTENTIAL|m2 s-2|0|-10000|20|m2 s-2|0|7 +007009|geopotentialHeight|long|GEOPOTENTIAL HEIGHT|gpm|0|-1000|17|gpm|0|5 +007010|flightLevel|long|FLIGHT LEVEL|m|0|-1024|16|ft|-1|5 +007012|gridPointAltitude|double|GRID POINT ALTITUDE|m|2|-50000|20|m|2|7 +007021|elevation|double|ELEVATION|deg|2|-9000|15|deg|2|5 +007022|solarElevation|double|SOLAR ELEVATION|deg|2|-9000|15|deg|2|5 +007024|satelliteZenithAngle|double|SATELLITE ZENITH ANGLE|deg|2|-9000|15|deg|2|5 +007025|solarZenithAngle|double|SOLAR ZENITH ANGLE|deg|2|-9000|15|deg|2|5 +007026|satelliteZenithAngle|double|SATELLITE ZENITH ANGLE|deg|4|-900000|21|deg|4|7 +007030|heightOfStationGroundAboveMeanSeaLevel|double|HEIGHT OF STATION GROUND ABOVE MEAN SEA LEVEL|m|1|-4000|17|m|1|5 +007031|heightOfBarometerAboveMeanSeaLevel|double|HEIGHT OF BAROMETER ABOVE MEAN SEA LEVEL|m|1|-4000|17|m|1|5 +007032|heightOfSensorAboveLocalGroundOrDeckOfMarinePlatform|double|HEIGHT OF SENSOR ABOVE LOCAL GROUND (OR DECK OF MARINE PLATFORM)|m|2|0|16|m|2|5 +007033|heightOfSensorAboveWaterSurface|double|HEIGHT OF SENSOR ABOVE WATER SURFACE|m|1|0|12|m|1|4 +007035|zDimensionMaximumSize|long|MAXIMUM SIZE OF Z-DIMENSION|Numeric|0|0|12|Numeric|0|4 +007036|levelIndexOfZ|long|LEVEL INDEX OF Z|Numeric|0|0|12|Numeric|0|4 +007040|impactParameter|double|IMPACT PARAMETER|m|1|62000000|22|m|1|8 +007061|depthBelowLandSurface|double|DEPTH BELOW LAND SURFACE|m|2|0|14|m|2|5 +007062|depthBelowWaterSurface|double|DEPTH BELOW SEA/WATER SURFACE|m|1|0|17|m|1|6 +007063|depthBelowWaterSurface|double|DEPTH BELOW SEA/WATER SURFACE (CM)|m|2|0|20|m|2|7 +007064|representativeHeightOfSensorAboveStation|long|REPRESENTATIVE HEIGHT OF SENSOR ABOVE STATION|m|0|0|4|m|0|2 +007065|waterPressure|long|WATER PRESSURE|Pa|-3|0|17|Pa|-3|6 +007070|drogueDepth|long|DROGUE DEPTH|m|0|0|10|m|0|4 +007071|height|double|HEIGHT (HIGH RESOLUTION)|m|3|-10000000|26|m|3|8 +007072|scanAngle|double|SCAN ANGLE|deg|2|-9000|15|deg|2|6 +007073|angleBetweenMoonAndSpaceView|double|ANGLE BETWEEN MOON AND SPACE VIEW|deg|2|0|15|deg|2|5 +007074|solarElevationAngleInInstrumentReferenceFrame|double|SOLAR ELEVATION ANGLE IN INSTRUMENT REFERENCE FRAME|deg|2|-9000|15|deg|2|5 +007075|scatteringAngle|long|SCATTERING ANGLE|deg|0|0|8|deg|0|3 +007076|relativeAzimuthAngle|long|RELATIVE AZIMUTH ANGLE|deg|0|0|8|deg|0|3 +008001|verticalSoundingSignificance|flag|VERTICAL SOUNDING SIGNIFICANCE|FLAG TABLE|0|0|7|FLAG TABLE|0|3 +008002|verticalSignificanceSurfaceObservations|table|VERTICAL SIGNIFICANCE (SURFACE OBSERVATIONS)|CODE TABLE|0|0|6|CODE TABLE|0|2 +008003|verticalSignificanceSatelliteObservations|table|VERTICAL SIGNIFICANCE (SATELLITE OBSERVATIONS)|CODE TABLE|0|0|6|CODE TABLE|0|2 +008004|phaseOfAircraftFlight|table|PHASE OF AIRCRAFT FLIGHT|CODE TABLE|0|0|3|CODE TABLE|0|1 +008005|meteorologicalAttributeSignificance|table|METEOROLOGICAL ATTRIBUTE SIGNIFICANCE|CODE TABLE|0|0|4|CODE TABLE|0|2 +008006|ozoneVerticalSoundingSignificance|flag|OZONE VERTICAL SOUNDING SIGNIFICANCE|FLAG TABLE|0|0|9|FLAG TABLE|0|3 +008007|dimensionalSignificance|table|DIMENSIONAL SIGNIFICANCE|CODE TABLE|0|0|4|CODE TABLE|0|2 +008008|radiationVerticalSoundingSignificance|flag|RADIATION VERTICAL SOUNDING SIGNIFICANCE|FLAG TABLE|0|0|9|FLAG TABLE|0|3 +008009|detailedPhaseOfFlight|table|DETAILED PHASE OF FLIGHT|CODE TABLE|0|0|4|CODE TABLE|0|2 +008010|surfaceQualifierForTemperatureData|table|SURFACE QUALIFIER (TEMPERATURE DATA)|CODE TABLE|0|0|5|CODE TABLE|0|2 +008011|meteorologicalFeature|table|METEOROLOGICAL FEATURE|CODE TABLE|0|0|6|CODE TABLE|0|2 +008012|landOrSeaQualifier|table|LAND/SEA QUALIFIER|CODE TABLE|0|0|2|CODE TABLE|0|1 +008013|dayOrNightQualifier|table|DAY/NIGHT QUALIFIER|CODE TABLE|0|0|2|CODE TABLE|0|1 +008014|qualifierForRunwayVisualRange|table|QUALIFIER FOR RUNWAY VISUAL RANGE|CODE TABLE|0|0|4|CODE TABLE|0|2 +008015|significantQualifierForSensor|table|SIGNIFICANT QUALIFIER FOR SENSOR|CODE TABLE|0|0|3|CODE TABLE|0|1 +008016|changeQualifierOfATrendTypeForecastOrAnAerodromeForecast|table|CHANGE QUALIFIER OF A TREND-TYPE FORECAST OR AN AERODROME FORECAST|CODE TABLE|0|0|3|CODE TABLE|0|1 +008017|qualifierOfTimeWhenForecastChangeExpected|table|QUALIFIER OF THE TIME WHEN THE FORECAST CHANGE IS EXPECTED|CODE TABLE|0|0|2|CODE TABLE|0|1 +008018|seawindsLandOrIceSurfaceType|flag|SEAWINDS LAND/ICE SURFACE TYPE|FLAG TABLE|0|0|17|FLAG TABLE|0|6 +008019|qualifierForFollowingCentreIdentifier|table|QUALIFIER FOR FOLLOWING CENTRE IDENTIFIER|CODE TABLE|0|0|4|CODE TABLE|0|2 +008020|totalNumberOfMissingEntitiesWithRespectToAccumulationOrAverage|long|TOTAL NUMBER OF MISSING ENTITIES (WITH RESPECT TO ACCUMULATION OR AVERAGE)|Numeric|0|0|16|Numeric|0|5 +008021|timeSignificance|table|TIME SIGNIFICANCE|CODE TABLE|0|0|5|CODE TABLE|0|2 +008022|totalNumberWithRespectToAccumulationOrAverage|long|TOTAL NUMBER (WITH RESPECT TO ACCUMULATION OR AVERAGE)|Numeric|0|0|16|Numeric|0|5 +008023|firstOrderStatistics|table|FIRST-ORDER STATISTICS|CODE TABLE|0|0|6|CODE TABLE|0|2 +008024|differenceStatistics|table|DIFFERENCE STATISTICS|CODE TABLE|0|0|6|CODE TABLE|0|2 +008025|timeDifferenceQualifier|table|TIME DIFFERENCE QUALIFIER|CODE TABLE|0|0|4|CODE TABLE|0|2 +008026|matrixSignificance|table|MATRIX SIGNIFICANCE|CODE TABLE|0|0|6|CODE TABLE|0|2 +008029|surfaceType|table|SURFACE TYPE|CODE TABLE|0|0|8|CODE TABLE|0|3 +008030|manualOnCodesVolumeI1SectionCCodeTableFromWhichDataAreDerived|long|MANUAL ON CODES (VOLUME I.1, SECTION C) CODE TABLE FROM WHICH DATA ARE DERIVED|Numeric|0|0|13|Numeric|0|4 +008031|dataCategoryCrexTableA|long|DATA CATEGORY - CREX TABLE A|Numeric|0|0|8|Numeric|0|3 +008032|statusOfOperation|table|STATUS OF OPERATION|CODE TABLE|0|0|4|CODE TABLE|0|2 +008033|methodOfDerivationOfPercentageConfidence|table|METHOD OF DERIVATION OF PERCENTAGE CONFIDENCE|CODE TABLE|0|0|7|CODE TABLE|0|3 +008034|temperatureOrSalinityMeasurementQualifier|table|TEMPERATURE/SALINITY MEASUREMENT QUALIFIER|CODE TABLE|0|0|4|CODE TABLE|0|2 +008035|monitoringExerciseType|table|TYPE OF MONITORING EXERCISE|CODE TABLE|0|0|3|CODE TABLE|0|1 +008036|typeOfCentreOrStationPerformingMonitoring|table|TYPE OF CENTRE OR STATION PERFORMING MONITORING|CODE TABLE|0|0|3|CODE TABLE|0|1 +008037|baselineCheckSignificance|table|BASELINE CHECK SIGNIFICANCE|CODE TABLE|0|0|5|CODE TABLE|0|2 +008038|instrumentDataSignificance|table|INSTRUMENT DATA SIGNIFICANCE|CODE TABLE|0|0|8|CODE TABLE|0|3 +008039|timeSignificanceAviationForecast|table|TIME SIGNIFICANCE (AVIATION FORECAST)|CODE TABLE|0|0|6|CODE TABLE|0|2 +008040|flightLevelSignificance|table|FLIGHT LEVEL SIGNIFICANCE|CODE TABLE|0|0|6|CODE TABLE|0|2 +008041|dataSignificance|table|DATA SIGNIFICANCE|CODE TABLE|0|0|5|CODE TABLE|0|2 +008042|extendedVerticalSoundingSignificance|flag|EXTENDED VERTICAL SOUNDING SIGNIFICANCE|FLAG TABLE|0|0|18|FLAG TABLE|0|6 +008043|atmosphericChemical|table|ATMOSPHERIC CHEMICAL OR PHYSICAL CONSTITUENT TYPE|CODE TABLE|0|0|8|CODE TABLE|0|3 +008044|casRegistryNumber|string|CAS REGISTRY NUMBER|CCITT IA5|0|0|88|Character|0|11 +008046|atmosphericChemical|table|ATMOSPHERIC CHEMICAL OR PHYSICAL CONSTITUENT TYPE|Common CODE TABLE C-14|0|0|16|Common CODE TABLE C-14|0|5 +008049|numberOfObservations|long|NUMBER OF OBSERVATIONS|Numeric|0|0|8|Numeric|0|3 +008050|qualifierForNumberOfMissingValuesInCalculationOfStatistic|table|QUALIFIER FOR NUMBER OF MISSING VALUES IN CALCULATION OF STATISTIC|CODE TABLE|0|0|4|CODE TABLE|0|2 +008051|qualifierForNumberOfMissingValuesInCalculationOfStatistic|table|QUALIFIER FOR NUMBER OF MISSING VALUES IN CALCULATION OF STATISTIC|CODE TABLE|0|0|3|CODE TABLE|0|1 +008052|conditionForWhichNumberOfDaysOfOccurrenceFollows|table|CONDITION FOR WHICH NUMBER OF DAYS OF OCCURRENCE FOLLOWS|CODE TABLE|0|0|5|CODE TABLE|0|2 +008053|dayOfOccurrenceQualifier|table|DAY OF OCCURRENCE QUALIFIER|CODE TABLE|0|0|2|CODE TABLE|0|1 +008054|qualifierForWindSpeedOrWindGusts|table|QUALIFIER FOR WIND SPEED OR WIND GUSTS|CODE TABLE|0|0|3|CODE TABLE|0|1 +008060|sampleScanningModeSignificance|table|SAMPLE SCANNING MODE SIGNIFICANCE|CODE TABLE|0|0|4|CODE TABLE|0|2 +008065|sunGlintIndicator|table|SUN-GLINT INDICATOR|CODE TABLE|0|0|2|CODE TABLE|0|1 +008066|semiTransparencyIndicator|table|SEMI-TRANSPARENCY INDICATOR|CODE TABLE|0|0|2|CODE TABLE|0|1 +008070|verticalSoundingProductQualifier|table|VERTICAL SOUNDING PRODUCT QUALIFIER|CODE TABLE|0|0|4|CODE TABLE|0|2 +008072|pixelType|table|PIXEL(S) TYPE|CODE TABLE|0|0|3|CODE TABLE|0|1 +008074|altimeterEchoType|table|ALTIMETER ECHO TYPE|CODE TABLE|0|0|2|CODE TABLE|0|1 +008075|orbitQualifier|table|ASCENDING/DESCENDING ORBIT QUALIFIER|CODE TABLE|0|0|2|CODE TABLE|0|1 +008076|band|table|TYPE OF BAND|CODE TABLE|0|0|6|CODE TABLE|0|2 +008077|radiometerSensedSurfaceType|table|RADIOMETER SENSED SURFACE TYPE|CODE TABLE|0|0|7|CODE TABLE|0|3 +008079|productStatus|table|PRODUCT STATUS|CODE TABLE|0|0|4|CODE TABLE|0|2 +008080|qualifierForGtsppQualityFlag|table|QUALIFIER FOR GTSPP QUALITY FLAG|CODE TABLE|0|0|6|CODE TABLE|0|2 +008081|equipmentType|table|TYPE OF EQUIPMENT|CODE TABLE|0|0|6|CODE TABLE|0|2 +008082|modificationOfSensorHeightToAnotherValue|table|MODIFICATION OF SENSOR HEIGHT TO ANOTHER VALUE|CODE TABLE|0|0|3|CODE TABLE|0|1 +008083|nominalValueIndicator|flag|NOMINAL VALUE INDICATOR|FLAG TABLE|0|0|15|FLAG TABLE|0|5 +008085|beamIdentifier|table|BEAM IDENTIFIER|CODE TABLE|0|0|3|CODE TABLE|0|1 +008086|verticalSignificanceForNwp|flag|VERTICAL SIGNIFICANCE FOR NWP|FLAG TABLE|0|0|12|FLAG TABLE|0|4 +008087|cornerPositionOfObservation|table|CORNER POSITION OF OBSERVATION|CODE TABLE|0|0|3|CODE TABLE|0|1 +008088|mapSignificance|table|MAP SIGNIFICANCE|CODE TABLE|0|0|6|CODE TABLE|0|2 +008090|decimalScaleOfFollowingSignificands|long|DECIMAL SCALE OF FOLLOWING SIGNIFICANDS|Numeric|0|-127|8|Numeric|0|3 +008091|coordinatesSignificance|table|COORDINATES SIGNIFICANCE|CODE TABLE|0|0|8|CODE TABLE|0|3 +008092|measurementUncertaintyExpression|table|MEASUREMENT UNCERTAINTY EXPRESSION|CODE TABLE|0|0|5|CODE TABLE|0|2 +008093|measurementUncertaintySignificance|table|MEASUREMENT UNCERTAINTY SIGNIFICANCE|CODE TABLE|0|0|5|CODE TABLE|0|2 +008094|methodUsedToCalculateTheAverageDailyTemperature|table|METHOD USED TO CALCULATE THE AVERAGE DAILY TEMPERATURE|CODE TABLE|0|0|8|CODE TABLE|0|3 +008095|sitingAndMeasurementQualityClassificationForTemperature|table|SITING AND MEASUREMENT QUALITY CLASSIFICATION FOR TEMPERATURE|CODE TABLE|0|0|8|CODE TABLE|0|3 +008096|sitingAndMeasurementQualityClassificationForPrecipitation|table|SITING AND MEASUREMENT QUALITY CLASSIFICATION FOR PRECIPITATION|CODE TABLE|0|0|8|CODE TABLE|0|3 +008097|methodUsedToCalculateTheAverageInstrumentTemperature|table|METHOD USED TO CALCULATE THE AVERAGE INSTRUMENT TEMPERATURE|CODE TABLE|0|0|7|CODE TABLE|0|3 +008098|sourceOfTemperatureMeasurement|table|SOURCE OF TEMPERATURE MEASUREMENT|CODE TABLE|0|0|4|CODE TABLE|0|2 +008099|sensingDirection|table|SENSING DIRECTION|CODE TABLE|0|0|4|CODE TABLE|0|2 +010001|heightOfLandSurface|long|HEIGHT OF LAND SURFACE|m|0|-400|15|m|0|5 +010002|nonCoordinateHeight|long|HEIGHT|m|-1|-40|16|m|-1|5 +010003|nonCoordinateGeopotential|long|GEOPOTENTIAL|m2 s-2|-1|-400|17|m2 s-2|-1|6 +010004|nonCoordinatePressure|long|PRESSURE|Pa|-1|0|14|Pa|-1|5 +010007|nonCoordinateHeight|long|HEIGHT|m|0|-1000|17|m|0|6 +010008|nonCoordinateGeopotential|long|GEOPOTENTIAL|m2 s-2|0|-10000|20|m2 s-2|0|7 +010009|nonCoordinateGeopotentialHeight|long|GEOPOTENTIAL HEIGHT|gpm|0|-1000|17|gpm|0|5 +010010|minimumPressureReducedToMeanSeaLevel|long|MINIMUM PRESSURE REDUCED TO MEAN SEA LEVEL|Pa|-1|0|14|Pa|-1|5 +010011|maximumPressureReducedToMeanSeaLevel|long|MAXIMUM PRESSURE REDUCED TO MEAN SEA LEVEL|Pa|-1|0|14|Pa|-1|5 +010031|DistanceFromEarthCentreInDirectionOfNorthPole|double|IN DIRECTION OF THE NORTH POLE, DISTANCE FROM THE EARTH'S CENTRE|m|2|-1073741824|31|m|2|10 +010032|satelliteDistanceToEarthCentre|double|SATELLITE DISTANCE TO EARTH'S CENTRE|m|1|0|27|m|2|9 +010033|altitudePlatformToEllipsoid|double|ALTITUDE (PLATFORM TO ELLIPSOID)|m|1|0|27|m|2|9 +010034|earthRadius|double|EARTH'S RADIUS|m|1|0|27|m|2|9 +010035|earthLocalRadiusOfCurvature|double|EARTH'S LOCAL RADIUS OF CURVATURE|m|1|62000000|22|m|1|8 +010036|geoidUndulation|double|GEOID UNDULATION|m|2|-15000|15|m|2|6 +010038|maximumHeightOfDeckCargoAboveSummerLoadLine|long|MAXIMUM HEIGHT OF DECK CARGO ABOVE SUMMER LOAD LINE|m|0|0|6|m|0|2 +010039|departureOfReferenceLevelSummerMaximumLoadLineFromActualSeaLevel|long|DEPARTURE OF REFERENCE LEVEL (SUMMER MAXIMUM LOAD LINE) FROM ACTUAL SEA LEVEL|m|0|-32|6|m|0|3 +010040|numberOfRetrievedLayers|long|NUMBER OF RETRIEVED LAYERS|Numeric|0|0|10|Numeric|0|4 +010050|standardDeviationAltitude|double|STANDARD DEVIATION ALTITUDE|m|2|0|16|m|2|5 +010051|pressureReducedToMeanSeaLevel|long|PRESSURE REDUCED TO MEAN SEA LEVEL|Pa|-1|0|14|Pa|-1|5 +010052|altimeterSettingQnh|long|ALTIMETER SETTING (QNH)|Pa|-1|0|14|Pa|-1|5 +010053|globalNavigationSatelliteSystemAltitude|long|GLOBAL NAVIGATION SATELLITE SYSTEM ALTITUDE|m|0|-1000|17|m|0|5 +010060|pressureChange|long|PRESSURE CHANGE|Pa|-1|-1024|11|Pa|-1|4 +010061|3HourPressureChange|long|3-HOUR PRESSURE CHANGE|Pa|-1|-500|10|Pa|-1|4 +010062|24HourPressureChange|long|24-HOUR PRESSURE CHANGE|Pa|-1|-1000|11|Pa|-1|4 +010063|characteristicOfPressureTendency|table|CHARACTERISTIC OF PRESSURE TENDENCY|CODE TABLE|0|0|4|CODE TABLE|0|2 +010064|sigmetCruisingLevel|table|SIGMET CRUISING LEVEL|CODE TABLE|0|0|3|CODE TABLE|0|1 +010070|indicatedAircraftAltitude|long|INDICATED AIRCRAFT ALTITUDE|m|0|-400|16|m|0|5 +010071|verticalResolution|long|VERTICAL RESOLUTION|m|0|0|14|m|0|5 +010079|offNadirAngleOfTheSatelliteFromPlatformData|double|OFF-NADIR ANGLE OF THE SATELLITE FROM PLATFORM DATA|deg|4|0|16|deg|4|5 +010080|viewingZenithAngle|double|VIEWING ZENITH ANGLE|deg|2|-9000|15|deg|2|5 +010081|cogAltitudeAboveReferenceEllipsoid|double|ALTITUDE OF COG ABOVE REFERENCE ELLIPSOID|m|3|0|31|m|3|10 +010082|instantaneousAltitudeRate|double|INSTANTANEOUS ALTITUDE RATE|m/s|3|-65536|17|m/s|3|6 +010083|squaredOffNadirAngleOfSatelliteFromPlatformData|double|SQUARED OFF-NADIR ANGLE OF THE SATELLITE FROM PLATFORM DATA|deg2|2|0|16|deg2|2|5 +010084|squaredOffNadirAngleOfSatelliteFromWaveformData|double|SQUARED OFF-NADIR ANGLE OF THE SATELLITE FROM WAVEFORM DATA|deg2|2|0|16|deg2|2|5 +010085|meanSeaSurfaceHeight|double|MEAN SEA-SURFACE HEIGHT|m|3|-131072|18|m|3|6 +010086|geoidHeight|double|GEOID'S HEIGHT|m|3|-131072|18|m|3|6 +010087|oceanDepthOrLandElevation|double|OCEAN DEPTH/LAND ELEVATION|m|1|-131072|18|m|1|6 +010088|totalGeocentricOceanTideHeightSolution1|double|TOTAL GEOCENTRIC OCEAN TIDE HEIGHT (SOLUTION 1)|m|3|-32768|16|m|3|5 +010089|totalGeocentricOceanTideHeightSolution2|double|TOTAL GEOCENTRIC OCEAN TIDE HEIGHT (SOLUTION 2)|m|3|-32768|16|m|3|5 +010090|longPeriodTideHeight|double|LONG PERIOD TIDE HEIGHT|m|3|-32768|16|m|3|5 +010091|tidalLoadingHeight|double|TIDAL LOADING HEIGHT|m|3|-32768|16|m|3|5 +010092|solidEarthTideHeight|double|SOLID EARTH TIDE HEIGHT|m|3|-32768|16|m|3|5 +010093|geocentricPoleTideHeight|double|GEOCENTRIC POLE TIDE HEIGHT|m|3|-32768|16|m|3|5 +010095|heightOfAtmosphere|long|HEIGHT OF ATMOSPHERE USED|m|0|0|16|m|0|5 +010096|meanDynamicTopography|double|MEAN DYNAMIC TOPOGRAPHY|m|3|-131072|18|m|3|6 +010097|meanSeaSurfaceHeightFromAltimeterOnly|double|MEAN SEA-SURFACE HEIGHT FROM ALTIMETER ONLY|m|3|-131072|18|m|3|6 +010098|loadingTideHeightGeocentricOceanTideSolution1|double|LOADING TIDE HEIGHT GEOCENTRIC OCEAN TIDE SOLUTION 1|m|4|-2000|12|m|4|4 +010099|loadingTideHeightGeocentricOceanTideSolution2|double|LOADING TIDE HEIGHT GEOCENTRIC OCEAN TIDE SOLUTION 2|m|4|-2000|12|m|4|4 +010100|nonEquilibriumLongPeriodTideHeight|double|NON-EQUILIBRIUM LONG PERIOD TIDE HEIGHT|m|4|-2000|12|m|4|4 +010101|squaredOffNadirAngleOfSatelliteFromWaveformData|double|SQUARED OFF-NADIR ANGLE OF THE SATELLITE FROM WAVEFORM DATA|deg2|2|-32768|16|deg2|2|5 +010102|seaSurfaceHeightAnomaly|double|SEA-SURFACE HEIGHT ANOMALY|m|3|-32768|16|m|3|5 +010103|meanDynamicTopographyAccuracy|double|MEAN DYNAMIC TOPOGRAPHY ACCURACY|m|3|-131072|18|m|3|6 +011001|windDirection|long|WIND DIRECTION|deg|0|0|9|deg|0|3 +011002|windSpeed|double|WIND SPEED|m/s|1|0|12|m/s|1|4 +011003|u|double|U-COMPONENT|m/s|1|-4096|13|m/s|1|4 +011004|v|double|V-COMPONENT|m/s|1|-4096|13|m/s|1|4 +011005|w|double|W-COMPONENT|Pa/s|1|-512|10|Pa/s|1|4 +011006|w|double|W-COMPONENT|m/s|2|-4096|13|m/s|2|4 +011007|relativeWindDirectionInDegreesOffBow|long|RELATIVE WIND DIRECTION (IN DEGREES OFF BOW)|deg|0|0|9|deg|0|3 +011008|relativeWindSpeed|double|RELATIVE WIND SPEED|m/s|1|0|12|m/s|1|4 +011010|windDirectionAssociatedWithWindSpeedWhichFollows|long|WIND DIRECTION ASSOCIATED WITH WIND SPEED WHICH FOLLOWS|deg|0|0|9|deg|0|3 +011011|windDirectionAt10M|long|WIND DIRECTION AT 10 M|deg|0|0|9|deg|0|3 +011012|windSpeedAt10M|double|WIND SPEED AT 10 M|m/s|1|0|12|m/s|1|4 +011013|windDirectionAt5M|long|WIND DIRECTION AT 5 M|deg|0|0|9|deg|0|3 +011014|windSpeedAt5M|double|WIND SPEED AT 5 M|m/s|1|0|12|m/s|1|4 +011016|extremeCounterclockwiseWindDirectionOfAVariableWind|long|EXTREME COUNTERCLOCKWISE WIND DIRECTION OF A VARIABLE WIND|deg|0|0|9|deg|0|3 +011017|extremeClockwiseWindDirectionOfAVariableWind|long|EXTREME CLOCKWISE WIND DIRECTION OF A VARIABLE WIND|deg|0|0|9|deg|0|3 +011019|steadinessOfWind|long|STEADINESS OF WIND|%|0|0|7|%|0|3 +011021|relativeVorticity|double|RELATIVE VORTICITY|/s|9|-65536|17|/s|9|6 +011022|divergence|double|DIVERGENCE|/s|9|-65536|17|/s|9|6 +011023|velocityPotential|long|VELOCITY POTENTIAL|m2/s|-2|-65536|17|m2/s|-2|6 +011030|extendedDegreeOfTurbulence|table|EXTENDED DEGREE OF TURBULENCE|CODE TABLE|0|0|6|CODE TABLE|0|2 +011031|degreeOfTurbulence|table|DEGREE OF TURBULENCE|CODE TABLE|0|0|4|CODE TABLE|0|2 +011032|heightOfBaseOfTurbulence|long|HEIGHT OF BASE OF TURBULENCE|m|-1|-40|16|m|-1|5 +011033|heightOfTopOfTurbulence|long|HEIGHT OF TOP OF TURBULENCE|m|-1|-40|16|m|-1|5 +011034|verticalGustVelocity|double|VERTICAL GUST VELOCITY|m/s|1|-1024|11|m/s|1|4 +011035|verticalGustAcceleration|double|VERTICAL GUST ACCELERATION|m s-2|2|-8192|14|m s-2|2|5 +011036|maximumDerivedEquivalentVerticalGustSpeed|double|MAXIMUM DERIVED EQUIVALENT VERTICAL GUST SPEED|m/s|1|0|10|m/s|1|4 +011037|turbulenceIndex|table|TURBULENCE INDEX|CODE TABLE|0|0|6|CODE TABLE|0|2 +011038|timeOfOccurrenceOfPeakEddyDissipationRate|table|TIME OF OCCURRENCE OF PEAK EDDY DISSIPATION RATE|CODE TABLE|0|0|5|CODE TABLE|0|2 +011039|extendedTimeOfOccurrenceOfPeakEddyDissipationRate|table|EXTENDED TIME OF OCCURRENCE OF PEAK EDDY DISSIPATION RATE|CODE TABLE|0|0|6|CODE TABLE|0|2 +011040|maximumWindSpeedMeanWind|double|MAXIMUM WIND SPEED (MEAN WIND)|m/s|1|0|12|m/s|1|4 +011041|maximumWindGustSpeed|double|MAXIMUM WIND GUST SPEED|m/s|1|0|12|m/s|1|4 +011042|maximumWindSpeed10MinuteMeanWind|double|MAXIMUM WIND SPEED (10-MINUTE MEAN WIND)|m/s|1|0|12|m/s|1|4 +011043|maximumWindGustDirection|long|MAXIMUM WIND GUST DIRECTION|deg|0|0|9|deg|0|3 +011044|meanWindDirectionForSurfaceTo1500M|long|MEAN WIND DIRECTION FOR SURFACE - 1 500 M (5 000 FEET)|deg|0|0|9|deg|0|3 +011045|meanWindSpeedForSurfaceTo1500M|double|MEAN WIND SPEED FOR SURFACE - 1 500 M (5 000 FEET)|m/s|1|0|12|m/s|1|4 +011046|maximumInstantaneousWindSpeed|double|MAXIMUM INSTANTANEOUS WIND SPEED|m/s|1|0|12|m/s|1|4 +011047|maximumInstantaneousWindSpeedOver10Minutes|double|MAXIMUM INSTANTANEOUS WIND SPEED OVER 10 MINUTES|m/s|1|0|12|m/s|1|4 +011049|windDirectionStandardDeviation|long|STANDARD DEVIATION OF WIND DIRECTION|deg|0|0|9|deg|0|3 +011050|standardDeviationOfHorizontalWindSpeed|double|STANDARD DEVIATION OF HORIZONTAL WIND SPEED|m/s|1|0|12|m/s|1|4 +011051|standardDeviationOfVerticalWindSpeed|double|STANDARD DEVIATION OF VERTICAL WIND SPEED|m/s|1|0|8|m/s|1|3 +011052|formalUncertaintyInWindSpeed|double|FORMAL UNCERTAINTY IN WIND SPEED|m/s|2|0|13|m/s|2|5 +011053|formalUncertaintyInWindDirection|double|FORMAL UNCERTAINTY IN WIND DIRECTION|deg|2|0|15|deg|2|5 +011054|meanWindDirectionFor1500To3000M|long|MEAN WIND DIRECTION FOR 1 500 - 3 000 M|deg|0|0|9|deg|0|3 +011055|meanWindSpeedFor1500To3000M|double|MEAN WIND SPEED FOR 1 500 - 3 000 M|m/s|1|0|12|m/s|1|4 +011061|absoluteWindShearIn1KmLayerBelow|double|ABSOLUTE WIND SHEAR IN 1 KM LAYER BELOW|m/s|1|0|12|m/s|1|4 +011062|absoluteWindShearIn1KmLayerAbove|double|ABSOLUTE WIND SHEAR IN 1 KM LAYER ABOVE|m/s|1|0|12|m/s|1|4 +011070|designatorOfRunwayAffectedByWindShearIncludingAll|string|DESIGNATOR OF THE RUNWAY AFFECTED BY WIND SHEAR (INCLUDING ALL)|CCITT IA5|0|0|32|Character|0|4 +011071|turbulentVerticalMomentumFlux|double|TURBULENT VERTICAL MOMENTUM FLUX|m2 s-2|3|-128|14|m2 s-2|3|5 +011072|turbulentVerticalBuoyancyFlux|double|TURBULENT VERTICAL BUOYANCY FLUX|K m s-1|3|-128|11|K m s-1|3|4 +011073|turbulentKineticEnergy|double|TURBULENT KINETIC ENERGY|m2 s-2|2|-1024|13|m2 s-2|2|4 +011074|dissipationEnergy|double|DISSIPATION ENERGY|m2 s-2|2|-1024|10|m2 s-2|2|4 +011075|meanTurbulenceIntensityEddyDissipationRate|double|MEAN TURBULENCE INTENSITY (EDDY DISSIPATION RATE)|m2/3 s-1|2|0|8|m2/3 s-1|2|3 +011076|peakTurbulenceIntensityEddyDissipationRate|double|PEAK TURBULENCE INTENSITY (EDDY DISSIPATION RATE)|m2/3 s-1|2|0|8|m2/3 s-1|2|3 +011077|reportingIntervalOrAveragingTimeForEddyDissipationRate|long|REPORTING INTERVAL OR AVERAGING TIME FOR EDDY DISSIPATION RATE|s|0|0|12|s|0|4 +011081|modelWindDirectionAt10M|double|MODEL WIND DIRECTION AT 10 M|deg|2|0|16|deg|2|5 +011082|modelWindSpeedAt10M|double|MODEL WIND SPEED AT 10 M|m/s|2|0|14|m/s|2|4 +011083|windSpeed|long|WIND SPEED|km/h|0|0|9|km/h|0|3 +011084|windSpeed|long|WIND SPEED|kt|0|0|8|kt|0|3 +011085|maximumWindGustSpeed|long|MAXIMUM WIND GUST SPEED|km/h|0|0|9|km/h|0|3 +011086|maximumWindGustSpeed|long|MAXIMUM WIND GUST SPEED|kt|0|0|8|kt|0|3 +011095|u|double|U-COMPONENT OF THE MODEL WIND VECTOR|m/s|1|-4096|13|m/s|1|4 +011096|v|double|V-COMPONENT OF THE MODEL WIND VECTOR|m/s|1|-4096|13|m/s|1|4 +011097|windSpeedFromAltimeter|double|WIND SPEED FROM ALTIMETER|m/s|2|0|12|m/s|2|4 +011098|windSpeedFromRadiometer|double|WIND SPEED FROM RADIOMETER|m/s|2|0|12|m/s|2|4 +011100|aircraftTrueAirspeed|double|AIRCRAFT TRUE AIRSPEED|m/s|1|0|12|m/s|1|4 +011101|aircraftGroundSpeedUComponent|double|AIRCRAFT GROUND SPEED U-COMPONENT|m/s|1|-4096|13|m/s|1|4 +011102|aircraftGroundSpeedVComponent|double|AIRCRAFT GROUND SPEED V-COMPONENT|m/s|1|-4096|13|m/s|1|4 +011103|aircraftGroundSpeedWComponent|double|AIRCRAFT GROUND SPEED W-COMPONENT|m/s|1|-512|10|m/s|1|3 +011104|aircraftTrueHeading|long|TRUE HEADING OF AIRCRAFT, SHIP OR OTHER MOBILE PLATFORM|deg|0|0|9|deg|0|3 +011105|edrAlgorithmVersion|long|EDR ALGORITHM VERSION|Numeric|0|0|6|Numeric|0|2 +011106|runningMinimumConfidence|long|RUNNING MINIMUM CONFIDENCE|Numeric|1|0|4|Numeric|1|2 +011107|maximumNumberBadInputs|long|MAXIMUM NUMBER BAD INPUTS|Numeric|0|0|5|Numeric|0|2 +011108|peakLocation|long|PEAK LOCATION|Numeric|1|0|4|Numeric|1|2 +011109|numberOfGoodEdr|long|NUMBER OF GOOD EDR|Numeric|0|0|4|Numeric|0|2 +011110|uncertaintyInUComponent|double|UNCERTAINTY IN U-COMPONENT|m/s|1|-4096|13|m/s|1|4 +011111|uncertaintyInVComponent|double|UNCERTAINTY IN V-COMPONENT|m/s|1|-4096|13|m/s|1|4 +011112|uncertaintyInWComponent|double|UNCERTAINTY IN W-COMPONENT|m/s|2|-4096|13|m/s|2|4 +011113|trackingCorrelationOfVector|long|TRACKING CORRELATION OF VECTOR|Numeric|3|-1000|12|Numeric|3|4 +012001|airTemperature|double|TEMPERATURE/AIR TEMPERATURE|K|1|0|12|C|1|3 +012002|wetBulbTemperature|double|WET-BULB TEMPERATURE|K|1|0|12|C|1|3 +012003|dewpointTemperature|double|DEWPOINT TEMPERATURE|K|1|0|12|C|1|3 +012004|airTemperatureAt2M|double|AIR TEMPERATURE AT 2 M|K|1|0|12|C|1|3 +012005|wetBulbTemperatureAt2M|double|WET-BULB TEMPERATURE AT 2 M|K|1|0|12|C|1|3 +012006|dewpointTemperatureAt2M|double|DEWPOINT TEMPERATURE AT 2 M|K|1|0|12|C|1|3 +012007|virtualTemperature|double|VIRTUAL TEMPERATURE|K|1|0|12|C|1|3 +012008|uncertaintyInVirtualTemperature|double|UNCERTAINTY IN VIRTUAL TEMPERATURE|K|1|0|12|C|1|4 +012011|maximumTemperatureAtHeightAndOverPeriodSpecified|double|MAXIMUM TEMPERATURE, AT HEIGHT AND OVER PERIOD SPECIFIED|K|1|0|12|C|1|3 +012012|minimumTemperatureAtHeightAndOverPeriodSpecified|double|MINIMUM TEMPERATURE, AT HEIGHT AND OVER PERIOD SPECIFIED|K|1|0|12|C|1|3 +012013|groundMinimumTemperaturePast12Hours|double|GROUND MINIMUM TEMPERATURE, PAST 12 HOURS|K|1|0|12|C|1|3 +012014|maximumTemperatureAt2MPast12Hours|double|MAXIMUM TEMPERATURE AT 2 M, PAST 12 HOURS|K|1|0|12|C|1|3 +012015|minimumTemperatureAt2MPast12Hours|double|MINIMUM TEMPERATURE AT 2 M, PAST 12 HOURS|K|1|0|12|C|1|3 +012016|maximumTemperatureAt2MPast24Hours|double|MAXIMUM TEMPERATURE AT 2 M, PAST 24 HOURS|K|1|0|12|C|1|3 +012017|minimumTemperatureAt2MPast24Hours|double|MINIMUM TEMPERATURE AT 2 M, PAST 24 HOURS|K|1|0|12|C|1|3 +012021|maximumTemperatureAt2M|double|MAXIMUM TEMPERATURE AT 2 M|K|2|0|16|C|2|4 +012022|minimumTemperatureAt2M|double|MINIMUM TEMPERATURE AT 2 M|K|2|0|16|C|2|4 +012023|temperature|long|TEMPERATURE|C|0|-99|8|C|0|2 +012024|dewpointTemperature|long|DEWPOINT TEMPERATURE|C|0|-99|8|C|0|2 +012030|soilTemperature|double|SOIL TEMPERATURE|K|1|0|12|C|1|3 +012049|temperatureChangeOverSpecifiedPeriod|long|TEMPERATURE CHANGE OVER SPECIFIED PERIOD|K|0|-30|6|C|0|2 +012051|standardDeviationTemperature|double|STANDARD DEVIATION TEMPERATURE|K|1|0|10|C|1|3 +012052|highestDailyMeanTemperature|double|HIGHEST DAILY MEAN TEMPERATURE|K|1|0|12|C|1|3 +012053|lowestDailyMeanTemperature|double|LOWEST DAILY MEAN TEMPERATURE|K|1|0|12|C|1|3 +012060|awsEnclosureInternalTemperature|double|AWS ENCLOSURE INTERNAL TEMPERATURE|K|1|0|12|C|1|3 +012061|skinTemperature|double|SKIN TEMPERATURE|K|1|0|12|C|1|3 +012062|equivalentBlackBodyTemperature|double|EQUIVALENT BLACK BODY TEMPERATURE|K|1|0|12|C|1|3 +012063|brightnessTemperature|double|BRIGHTNESS TEMPERATURE|K|1|0|12|C|1|3 +012064|instrumentTemperature|double|INSTRUMENT TEMPERATURE|K|1|0|12|K|1|4 +012065|standardDeviationBrightnessTemperature|double|STANDARD DEVIATION BRIGHTNESS TEMPERATURE|K|1|0|12|K|1|4 +012066|antennaTemperature|double|ANTENNA TEMPERATURE|K|2|0|16|C|2|5 +012070|warmLoadTemperature|double|WARM LOAD TEMPERATURE|K|2|0|16|K|2|5 +012071|coldestClusterTemperature|double|COLDEST CLUSTER TEMPERATURE|K|1|0|12|K|1|4 +012072|radiance|double|RADIANCE|W m-2 sr-1|6|0|31|W m-2 sr-1|6|9 +012075|spectralRadiance|long|SPECTRAL RADIANCE|W m-3 sr-1|-3|0|16|W m-3 sr-1|-3|5 +012076|radiance|double|RADIANCE|W m-2 sr-1|3|0|16|W m-2 sr-1|3|5 +012080|brightnessTemperatureRealPart|double|BRIGHTNESS TEMPERATURE REAL PART|K|2|-10000|16|K|2|5 +012081|brightnessTemperatureImaginaryPart|double|BRIGHTNESS TEMPERATURE IMAGINARY PART|K|2|-10000|16|K|2|5 +012082|pixelRadiometricAccuracy|double|PIXEL RADIOMETRIC ACCURACY|K|2|0|12|K|2|4 +012101|airTemperature|double|TEMPERATURE/AIR TEMPERATURE|K|2|0|16|C|2|4 +012102|wetBulbTemperature|double|WET-BULB TEMPERATURE|K|2|0|16|C|2|4 +012103|dewpointTemperature|double|DEWPOINT TEMPERATURE|K|2|0|16|C|2|4 +012104|airTemperatureAt2M|double|AIR TEMPERATURE AT 2 M|K|2|0|16|C|2|4 +012105|webBulbTemperatureAt2M|double|WEB-BULB TEMPERATURE AT 2 M|K|2|0|16|C|2|4 +012106|dewpointTemperatureAt2M|double|DEWPOINT TEMPERATURE AT 2 M|K|2|0|16|C|2|4 +012107|virtualTemperature|double|VIRTUAL TEMPERATURE|K|2|0|16|C|2|4 +012111|maximumTemperatureAtHeightAndOverPeriodSpecified|double|MAXIMUM TEMPERATURE, AT HEIGHT AND OVER PERIOD SPECIFIED|K|2|0|16|C|2|4 +012112|minimumTemperatureAtHeightAndOverPeriodSpecified|double|MINIMUM TEMPERATURE, AT HEIGHT AND OVER PERIOD SPECIFIED|K|2|0|16|C|2|4 +012113|groundMinimumTemperaturePast12Hours|double|GROUND MINIMUM TEMPERATURE, PAST 12 HOURS|K|2|0|16|C|2|4 +012114|maximumTemperatureAt2MPast12Hours|double|MAXIMUM TEMPERATURE AT 2 M, PAST 12 HOURS|K|2|0|16|C|2|4 +012115|minimumTemperatureAt2MPast12Hours|double|MINIMUM TEMPERATURE AT 2 M, PAST 12 HOURS|K|2|0|16|C|2|4 +012116|maximumTemperatureAt2MPast24Hours|double|MAXIMUM TEMPERATURE AT 2 M, PAST 24 HOURS|K|2|0|16|C|2|4 +012117|minimumTemperatureAt2MPast24Hours|double|MINIMUM TEMPERATURE AT 2 M, PAST 24 HOURS|K|2|0|16|C|2|4 +012118|maximumTemperatureAtHeightSpecifiedPast24Hours|double|MAXIMUM TEMPERATURE AT HEIGHT SPECIFIED, PAST 24 HOURS|K|2|0|16|C|2|4 +012119|minimumTemperatureAtHeightSpecifiedPast24Hours|double|MINIMUM TEMPERATURE AT HEIGHT SPECIFIED, PAST 24 HOURS|K|2|0|16|C|2|4 +012120|groundTemperature|double|GROUND TEMPERATURE|K|2|0|16|C|2|4 +012121|groundMinimumTemperature|double|GROUND MINIMUM TEMPERATURE|K|2|0|16|C|2|4 +012122|groundMinimumTemperatureOfPrecedingNight|double|GROUND MINIMUM TEMPERATURE OF THE PRECEDING NIGHT|K|2|0|16|C|2|4 +012128|roadSurfaceTemperature|double|ROAD SURFACE TEMPERATURE|K|2|0|16|C|2|5 +012129|roadSubSurfaceTemperature|double|ROAD SUBSURFACE TEMPERATURE|K|2|0|16|C|2|5 +012130|soilTemperature|double|SOIL TEMPERATURE|K|2|0|16|C|2|4 +012131|snowTemperature|double|SNOW TEMPERATURE|K|2|0|16|C|2|4 +012132|iceSurfaceTemperature|double|ICE SURFACE TEMPERATURE|K|2|0|16|C|2|4 +012151|dailyMeanTemperatureStandardDeviation|double|STANDARD DEVIATION OF DAILY MEAN TEMPERATURE|K|2|0|12|C|2|4 +012152|highestDailyMeanTemperature|double|HIGHEST DAILY MEAN TEMPERATURE|K|2|0|16|C|2|4 +012153|lowestDailyMeanTemperature|double|LOWEST DAILY MEAN TEMPERATURE|K|2|0|16|C|2|4 +012158|noiseEquivalentDeltaTemperatureWhileViewingColdTarget|double|NOISE-EQUIVALENT DELTA TEMPERATURE WHILE VIEWING COLD TARGET|K|2|0|12|C|2|4 +012159|noiseEquivalentDeltaTemperatureWhileViewingWarmTarget|double|NOISE-EQUIVALENT DELTA TEMPERATURE WHILE VIEWING WARM TARGET|K|2|0|12|C|2|4 +012161|skinTemperature|double|SKIN TEMPERATURE|K|2|0|16|C|2|4 +012162|equivalentBlackBodyTemperature|double|EQUIVALENT BLACK BODY TEMPERATURE|K|2|0|16|C|2|4 +012163|brightnessTemperature|double|BRIGHTNESS TEMPERATURE|K|2|0|16|C|2|4 +012164|instrumentTemperature|double|INSTRUMENT TEMPERATURE|K|2|0|16|K|2|5 +012165|directSunBrightnessTemperature|long|DIRECT SUN BRIGHTNESS TEMPERATURE|K|0|0|23|K|0|7 +012166|snapshotAccuracy|double|SNAPSHOT ACCURACY|K|1|-4000|13|K|1|4 +012167|radiometricAccuracyPurePolarization|double|RADIOMETRIC ACCURACY (PURE POLARIZATION)|K|1|0|9|K|1|3 +012168|radiometricAccuracyCrossPolarization|double|RADIOMETRIC ACCURACY (CROSS POLARIZATION)|K|1|0|9|K|1|3 +012171|coldestClusterTemperature|double|COLDEST CLUSTER TEMPERATURE|K|2|0|16|K|2|5 +012180|averaged12MicronBtForAllClearPixelsAtNadir|double|AVERAGED 12 MICRON BT FOR ALL CLEAR PIXELS AT NADIR|K|2|0|16|K|2|5 +012181|averaged11MicronBtForAllClearPixelsAtNadir|double|AVERAGED 11 MICRON BT FOR ALL CLEAR PIXELS AT NADIR|K|2|0|16|K|2|5 +012182|averaged37MicronBtForAllClearPixelsAtNadir|double|AVERAGED 3.7 MICRON BT FOR ALL CLEAR PIXELS AT NADIR|K|2|0|16|K|2|5 +012183|averaged12MicronBtForAllClearPixelsForwardView|double|AVERAGED 12 MICRON BT FOR ALL CLEAR PIXELS, FORWARD VIEW|K|2|0|16|K|2|5 +012184|averaged11MicronBtForAllClearPixelsForwardView|double|AVERAGED 11 MICRON BT FOR ALL CLEAR PIXELS, FORWARD VIEW|K|2|0|16|K|2|5 +012185|averaged37MicronBtForAllClearPixelsForwardView|double|AVERAGED 3.7 MICRON BT FOR ALL CLEAR PIXELS, FORWARD VIEW|K|2|0|16|K|2|5 +012186|meanNadirSeaSurfaceTemperature|double|MEAN NADIR SEA-SURFACE TEMPERATURE|K|2|0|16|K|2|5 +012187|meanDualViewSeaSurfaceTemperature|double|MEAN DUAL VIEW SEA-SURFACE TEMPERATURE|K|2|0|16|K|2|5 +012188|interpolated238GhzBrightnessTFromMwr|double|INTERPOLATED 23.8 GHZ BRIGHTNESS T FROM MWR|K|2|0|16|K|2|5 +012189|interpolated365GhzBrightnessTFromMwr|double|INTERPOLATED 36.5 GHZ BRIGHTNESS T FROM MWR|K|2|0|16|K|2|5 +013001|specificHumidity|double|SPECIFIC HUMIDITY|kg/kg|5|0|14|kg/kg|5|5 +013002|mixingRatio|double|MIXING RATIO|kg/kg|5|0|14|kg/kg|5|5 +013003|relativeHumidity|long|RELATIVE HUMIDITY|%|0|0|7|%|0|3 +013004|vapourPressure|long|VAPOUR PRESSURE|Pa|-1|0|10|Pa|-1|4 +013005|vapourDensity|double|VAPOUR DENSITY|kg m-3|3|0|7|kg m-3|3|3 +013006|mixingHeights|long|MIXING HEIGHTS|m|-1|-40|16|m|-1|5 +013007|minimumRelativeHumidity|long|MINIMUM RELATIVE HUMIDITY|%|0|0|7|%|0|3 +013008|maximumRelativeHumidity|long|MAXIMUM RELATIVE HUMIDITY|%|0|0|7|%|0|3 +013009|relativeHumidity|double|RELATIVE HUMIDITY|%|1|-1000|12|%|1|4 +013011|totalPrecipitationOrTotalWaterEquivalent|double|TOTAL PRECIPITATION/TOTAL WATER EQUIVALENT|kg m-2|1|-1|14|kg m-2|1|5 +013012|depthOfFreshSnow|double|DEPTH OF FRESH SNOW|m|2|-2|12|m|2|4 +013013|totalSnowDepth|double|TOTAL SNOW DEPTH|m|2|-2|16|m|2|5 +013014|rainfallOrWaterEquivalentOfSnowAveragedRate|double|RAINFALL/WATER EQUIVALENT OF SNOW (AVERAGED RATE)|kg m-2 s-1|4|0|12|kg m-2 s-1|4|4 +013015|snowfallAveragedRate|double|SNOWFALL (AVERAGED RATE)|m/s|7|0|12|m/s|7|4 +013016|precipitableWater|long|PRECIPITABLE WATER|kg m-2|0|0|7|kg m-2|0|3 +013019|totalPrecipitationPast1Hour|double|TOTAL PRECIPITATION PAST 1 HOUR|kg m-2|1|-1|14|kg m-2|1|4 +013020|totalPrecipitationPast3Hours|double|TOTAL PRECIPITATION PAST 3 HOURS|kg m-2|1|-1|14|kg m-2|1|5 +013021|totalPrecipitationPast6Hours|double|TOTAL PRECIPITATION PAST 6 HOURS|kg m-2|1|-1|14|kg m-2|1|5 +013022|totalPrecipitationPast12Hours|double|TOTAL PRECIPITATION PAST 12 HOURS|kg m-2|1|-1|14|kg m-2|1|5 +013023|totalPrecipitationPast24Hours|double|TOTAL PRECIPITATION PAST 24 HOURS|kg m-2|1|-1|14|kg m-2|1|5 +013031|evapotranspiration|long|EVAPOTRANSPIRATION|kg m-2|0|0|7|kg m-2|0|3 +013032|evaporation|double|EVAPORATION/EVAPOTRANSPIRATION|kg m-2|1|0|8|kg m-2|1|3 +013033|evaporation|double|EVAPORATION/EVAPOTRANSPIRATION|kg m-2|1|0|10|kg m-2|1|4 +013038|superadiabaticIndicator|table|SUPERADIABATIC INDICATOR|CODE TABLE|0|0|2|CODE TABLE|0|1 +013039|terrainTypeIceOrSnow|table|TERRAIN TYPE (ICE/SNOW)|CODE TABLE|0|0|3|CODE TABLE|0|1 +013040|surfaceFlag|table|SURFACE FLAG|CODE TABLE|0|0|4|CODE TABLE|0|2 +013041|pasquillGiffordStabilityCategory|table|PASQUILL-GIFFORD STABILITY CATEGORY|CODE TABLE|0|0|4|CODE TABLE|0|2 +013042|parcelLiftedIndexTo500Hpa|long|PARCEL LIFTED INDEX (TO 500 HPA)|K|0|-20|6|K|0|2 +013043|bestLiftedIndexTo500Hpa|long|BEST LIFTED INDEX (TO 500 HPA)|K|0|-20|6|K|0|2 +013044|kIndex|long|K INDEX|K|0|-30|8|K|0|3 +013045|koIndex|long|KO INDEX|K|0|-30|8|K|0|3 +013046|maximumBuoyancy|long|MAXIMUM BUOYANCY|K|0|-30|8|K|0|3 +013047|modifiedShowalterStabilityIndex|long|MODIFIED SHOWALTER STABILITY INDEX|K|0|-60|6|C|0|2 +013048|waterFraction|double|WATER FRACTION|%|1|0|10|%|1|4 +013051|frequencyGroupPrecipitation|table|FREQUENCY GROUP, PRECIPITATION|CODE TABLE|0|0|4|CODE TABLE|0|2 +013052|highestDailyAmountOfPrecipitation|double|HIGHEST DAILY AMOUNT OF PRECIPITATION|kg m-2|1|-1|14|kg m-2|1|5 +013055|intensityOfPrecipitation|double|INTENSITY OF PRECIPITATION|kg m-2 s-1|4|0|8|mm/h|1|4 +013056|characterAndIntensityOfPrecipitation|table|CHARACTER AND INTENSITY OF PRECIPITATION|CODE TABLE|0|0|4|CODE TABLE|0|2 +013057|timeOfBeginningOrEndOfPrecipitation|table|TIME OF BEGINNING OR END OF PRECIPITATION|CODE TABLE|0|0|4|CODE TABLE|0|2 +013058|sizeOfPrecipitatingElement|double|SIZE OF PRECIPITATING ELEMENT|m|4|0|7|mm|1|3 +013059|numberOfFlashesThunderstorm|long|NUMBER OF FLASHES (THUNDERSTORM)|Numeric|0|0|7|Numeric|0|3 +013060|totalAccumulatedPrecipitation|double|TOTAL ACCUMULATED PRECIPITATION|kg m-2|1|-1|17|kg m-2|1|5 +013071|upstreamWaterLevel|double|UPSTREAM WATER LEVEL|m|2|0|14|m|2|4 +013072|downstreamWaterLevel|double|DOWNSTREAM WATER LEVEL|m|2|0|14|m|2|4 +013073|maximumWaterLevel|double|MAXIMUM WATER LEVEL|m|2|0|14|m|2|4 +013074|groundWaterLevel|double|GROUND WATER LEVEL|m|2|0|18|m|2|6 +013080|waterPh|double|WATER PH|pH unit|1|0|10|pH unit|1|3 +013081|waterConductivity|double|WATER CONDUCTIVITY|S/m|3|0|14|S/m|3|4 +013082|waterTemperature|double|WATER TEMPERATURE|K|1|0|12|K|1|4 +013083|dissolvedOxygen|double|DISSOLVED OXYGEN|kg m-3|6|0|15|kg m-3|6|5 +013084|turbidity|long|TURBIDITY|lm|0|0|14|lm|0|4 +013085|oxidationReductionPotential|double|OXIDATION REDUCTION POTENTIAL (ORP)|V|3|0|14|V|3|4 +013090|radiometerWaterVapourContent|double|RADIOMETER WATER VAPOUR CONTENT|kg m-2|1|0|10|kg m-2|1|4 +013091|radiometerLiquidContent|double|RADIOMETER LIQUID CONTENT|kg m-2|2|0|8|kg m-2|2|3 +013093|cloudOpticalThickness|long|CLOUD OPTICAL THICKNESS|Numeric|0|0|8|Numeric|0|3 +013095|totalColumnWaterVapour|double|TOTAL COLUMN WATER VAPOUR|kg m-2|4|0|19|kg m-2|4|6 +013096|mwrWaterVapourContent|double|MWR WATER VAPOUR CONTENT|kg m-2|2|0|14|kg m-2|2|5 +013097|mwrLiquidWaterContent|double|MWR LIQUID WATER CONTENT|kg m-2|2|0|14|kg m-2|2|5 +013098|integratedWaterVapourDensity|double|INTEGRATED WATER VAPOUR DENSITY|kg m-2|8|0|30|kg m-2|8|10 +013099|log10OfIntegratedCloudParticleDensity|double|LOG10 OF INTEGRATED CLOUD PARTICLE DENSITY|log (m-2)|1|0|7|log (m-2)|1|3 +013100|log10OfIntegratedCloudParticleArea|double|LOG10 OF INTEGRATED CLOUD PARTICLE AREA|log (m2 m-2)|1|-70|7|log (m2 m-2)|1|2 +013101|log10OfIntegratedCloudParticleVolume|double|LOG10 OF INTEGRATED CLOUD PARTICLE VOLUME|log (m3 m-2)|1|-140|7|log (m3 m-2)|1|3 +013109|iceOrLiquidWaterPath|double|ICE/LIQUID WATER PATH|kg m-2|3|0|10|kg m-2|3|4 +013110|massMixingRatio|long|MASS MIXING RATIO|%|0|0|7|%|0|3 +013111|soilMoisture|long|SOIL MOISTURE|g/kg|0|0|10|g/kg|0|4 +013112|objectWetnessDuration|long|OBJECT WETNESS DURATION|s|0|0|17|s|0|5 +013114|rateOfIceAccretion|double|RATE OF ICE ACCRETION|kg m-2 h-1|1|0|11|kg m-2 h-1|1|4 +013115|iceThickness|double|ICE THICKNESS|m|2|0|19|m|2|6 +013116|waterFilmThickness|double|WATER FILM THICKNESS|m|4|0|10|m|3|2 +013117|snowDensityLiquidWaterContent|long|SNOW DENSITY (LIQUID WATER CONTENT)|kg m-3|0|0|10|kg m-3|0|3 +013118|freshSnowDepth|double|DEPTH OF FRESH SNOW (HIGH ACCURACY)|m|3|-2|14|m|3|5 +013155|precipitationIntensityHighAccuracy|double|INTENSITY OF PRECIPITATION (HIGH ACCURACY)|kg m-2 s-1|5|-1|16|mm/h|2|5 +013160|radiometerLiquidContent|double|RADIOMETER LIQUID CONTENT|kg m-2|2|-350|10|kg m-2|2|3 +013162|cloudLiquidWater|double|CLOUD LIQUID WATER|kg m-2|2|0|8|kg m-2|2|3 +013163|snowWaterEquivalent|long|SNOW WATER EQUIVALENT|kg m-2|0|0|16|kg m-2|0|5 +013164|seaIceFreeboard|double|SEA ICE FREEBOARD|m|3|-131072|18|m|3|6 +014001|longWaveRadiationIntegratedOver24Hours|long|LONG-WAVE RADIATION, INTEGRATED OVER 24 HOURS|J m-2|-3|-65536|17|J m-2|-3|5 +014002|longWaveRadiationIntegratedOverPeriodSpecified|long|LONG-WAVE RADIATION, INTEGRATED OVER PERIOD SPECIFIED|J m-2|-3|-65536|17|J m-2|-3|5 +014003|shortWaveRadiationIntegratedOver24Hours|long|SHORT-WAVE RADIATION, INTEGRATED OVER 24 HOURS|J m-2|-3|-65536|17|J m-2|-3|5 +014004|shortWaveRadiationIntegratedOverPeriodSpecified|long|SHORT-WAVE RADIATION, INTEGRATED OVER PERIOD SPECIFIED|J m-2|-3|-65536|17|J m-2|-3|5 +014011|netLongWaveRadiationIntegratedOver24Hours|long|NET LONG-WAVE RADIATION, INTEGRATED OVER 24 HOURS|J m-2|-3|-65536|17|J m-2|-3|5 +014012|netLongWaveRadiationIntegratedOverPeriodSpecified|long|NET LONG-WAVE RADIATION, INTEGRATED OVER PERIOD SPECIFIED|J m-2|-3|-65536|17|J m-2|-3|5 +014013|netShortWaveRadiation24Hours|long|NET SHORT-WAVE RADIATION, INTEGRATED OVER 24 HOURS|J m-2|-3|-65536|17|J m-2|-3|5 +014014|netShortWaveRadiationIntegratedOverPeriodSpecified|long|NET SHORT-WAVE RADIATION, INTEGRATED OVER PERIOD SPECIFIED|J m-2|-3|-65536|17|J m-2|-3|5 +014015|netRadiationIntegratedOver24Hours|long|NET RADIATION, INTEGRATED OVER 24 HOURS|J m-2|-4|-16384|15|J m-2|-4|5 +014016|netRadiationIntegratedOverPeriodSpecified|long|NET RADIATION, INTEGRATED OVER PERIOD SPECIFIED|J m-2|-4|-16384|15|J m-2|-4|5 +014017|instantaneousLongWaveRadiation|long|INSTANTANEOUS LONG-WAVE RADIATION|W m-2|0|-512|10|W m-2|0|4 +014018|instantaneousShortWaveRadiation|long|INSTANTANEOUS SHORT-WAVE RADIATION|W m-2|0|-2048|12|W m-2|0|4 +014019|surfaceAlbedo|long|SURFACE ALBEDO|%|0|0|7|%|0|3 +014020|globalSolarRadiation24Hours|long|GLOBAL SOLAR RADIATION, INTEGRATED OVER 24 HOURS|J m-2|-4|0|15|J m-2|-4|5 +014021|globalSolarRadiationIntegratedOverPeriodSpecified|long|GLOBAL SOLAR RADIATION, INTEGRATED OVER PERIOD SPECIFIED|J m-2|-4|0|15|J m-2|-4|5 +014022|diffuseSolarRadiationIntegratedOver24Hours|long|DIFFUSE SOLAR RADIATION, INTEGRATED OVER 24 HOURS|J m-2|-4|0|15|J m-2|-4|5 +014023|diffuseSolarRadiationIntegratedOverPeriodSpecified|long|DIFFUSE SOLAR RADIATION, INTEGRATED OVER PERIOD SPECIFIED|J m-2|-4|0|15|J m-2|-4|5 +014024|directSolarRadiationIntegratedOver24Hours|long|DIRECT SOLAR RADIATION, INTEGRATED OVER 24 HOURS|J m-2|-4|0|15|J m-2|-4|5 +014025|directSolarRadiationIntegratedOverPeriodSpecified|long|DIRECT SOLAR RADIATION, INTEGRATED OVER PERIOD SPECIFIED|J m-2|-4|0|15|J m-2|-4|5 +014026|cloudTopAlbedo|long|ALBEDO AT THE TOP OF CLOUDS|%|0|0|7|%|0|3 +014027|albedo|long|ALBEDO|%|0|0|7|%|0|3 +014028|globalSolarRadiationIntegratedOverPeriodSpecified|long|GLOBAL SOLAR RADIATION (HIGH ACCURACY), INTEGRATED OVER PERIOD SPECIFIED|J m-2|-2|0|20|J m-2|-2|6 +014029|diffuseSolarRadiationIntegratedOverPeriodSpecified|long|DIFFUSE SOLAR RADIATION (HIGH ACCURACY), INTEGRATED OVER PERIOD SPECIFIED|J m-2|-2|0|20|J m-2|-2|6 +014030|directSolarRadiationIntegratedOverPeriodSpecified|long|DIRECT SOLAR RADIATION (HIGH ACCURACY), INTEGRATED OVER PERIOD SPECIFIED|J m-2|-2|0|20|J m-2|-2|6 +014031|totalSunshine|long|TOTAL SUNSHINE|min|0|0|11|min|0|4 +014032|totalSunshine|long|TOTAL SUNSHINE|h|0|0|10|h|0|4 +014033|totalSunshine|long|TOTAL SUNSHINE|%|0|0|9|%|0|3 +014034|sunshineOverPeriodSpecified|long|SUNSHINE OVER PERIOD SPECIFIED|min|0|0|11|min|0|4 +014035|solarRadiationFlux|double|SOLAR RADIATION FLUX|W m-2|1|0|14|W m-2|1|5 +014042|bidirectionalReflectance|long|BIDIRECTIONAL REFLECTANCE|%|0|0|7|%|0|3 +014043|channelRadiance|double|CHANNEL RADIANCE|W m-2 sr-1 um-1|4|0|23|W m-2 sr-1 um-1|4|7 +014044|channelRadiance|double|CHANNEL RADIANCE|W m-2 sr-1 cm|7|-100000|22|W m-2 sr-1 cm|7|7 +014045|channelRadiance|long|CHANNEL RADIANCE|W m-2 sr-1 cm|0|0|11|W m-2 sr-1 cm|0|4 +014046|scaledRadiance|long|SCALED RADIANCE|W m-2 sr-1 m|0|-5000|16|W m-2 sr-1 m|0|5 +014047|scaledMeanAvhrrRadiance|long|SCALED MEAN AVHRR RADIANCE|W m-2 sr-1 m|0|0|31|W m-2 sr-1 m|0|10 +014048|scaledStandardDeviationAvhrrRadiance|long|SCALED STANDARD DEVIATION AVHRR RADIANCE|W m-2 sr-1 m|0|0|31|W m-2 sr-1 m|0|10 +014049|noiseEquivalentDeltaRadiance|double|NOISE EQUIVALENT DELTA RADIANCE|W m-2 sr-1 cm|7|0|22|W m-2 sr-1 cm|0|0 +014050|emissivity|double|EMISSIVITY|%|1|0|10|%|1|4 +014051|directSolarRadiationIntegratedOverLastHour|long|DIRECT SOLAR RADIATION INTEGRATED OVER LAST HOUR|J m-2|-3|0|14|J m-2|-3|4 +014052|globalUpwardSolarRadiationIntegratedOverPeriodSpecified|long|GLOBAL UPWARD SOLAR RADIATION, INTEGRATED OVER PERIOD SPECIFIED|J m-2|-2|-1048574|20|J m-2|-2|7 +014053|netRadiationIntegratedOverPeriodSpecified|long|NET RADIATION (HIGH ACCURACY), INTEGRATED OVER PERIOD SPECIFIED|J m-2|-2|-1048574|21|J m-2|-2|7 +014054|photosyntheticallyActiveRadiationIntegratedOverPeriodSpecified|long|PHOTOSYNTHETICALLY ACTIVE RADIATION, INTEGRATED OVER PERIOD SPECIFIED|J m-2|-3|0|16|J m-2|-3|5 +014055|solarActivityIndex|long|SOLAR ACTIVITY INDEX|Numeric|0|-32768|16|Numeric|0|5 +014056|backgroundLuminance|long|BACKGROUND LUMINANCE|cd m-2|0|0|18|cd m-2|0|6 +014057|soilHeatFlux|long|SOIL HEAT FLUX|J m-2|-2|-1048574|21|J m-2|-2|7 +014058|correctedCrossPoleBackscatter|double|CORRECTED CROSS-POLE BACKSCATTER|dB|2|-5000|13|dB|2|5 +014072|globalUvIrradiation|long|GLOBAL UV IRRADIATION|J m-2|0|-4000000|23|J m-2|0|7 +015001|totalOzone|long|TOTAL OZONE|DU|0|0|10|DU|0|4 +015002|airMassSlantPathAt22Km|long|AIR MASS (SLANT PATH AT 22 KM)|Numeric|2|0|10|Numeric|2|3 +015003|measuredOzonePartialPressureSounding|double|MEASURED OZONE PARTIAL PRESSURE (SOUNDING)|Pa|4|0|9|nbar|0|3 +015004|ozoneSoundingCorrectionFactor|long|OZONE SOUNDING CORRECTION FACTOR (CF)|Numeric|3|0|11|Numeric|3|4 +015005|ozoneP|long|OZONE P|DU|0|0|10|DU|0|3 +015006|log10OfNumberDensityOfAtmosphere|double|LOG10 OF NUMBER DENSITY OF ATMOSPHERE|log (m-3)|5|1800000|20|log (m-3)|5|7 +015008|significandOfVolumetricMixingRatio|long|SIGNIFICAND OF VOLUMETRIC MIXING RATIO|Numeric|0|0|10|Numeric|0|4 +015009|log10OfNumberDensityOfOzone|double|LOG10 OF NUMBER DENSITY OF OZONE|log (m-3)|5|1200000|20|log (m-3)|5|7 +015011|log10IntegratedElectronDensity|double|LOG10 OF INTEGRATED ELECTRON DENSITY|log (m-2)|3|14000|13|log (m-2)|3|4 +015012|totalElectronCountPerSquareMetre|long|TOTAL ELECTRON COUNT PER SQUARE METRE|m-2|-16|0|6|m-2|-16|2 +015015|maxImageSpectralComponentBeforeNormalization|long|MAXIMUM IMAGE SPECTRAL COMPONENT BEFORE NORMALIZATION|Numeric|0|0|31|Numeric|0|10 +015020|integratedOzoneDensity|double|INTEGRATED OZONE DENSITY|kg m-2|8|0|21|kg m-2|8|7 +015021|integratedMassDensity|double|INTEGRATED MASS DENSITY|kg m-2|11|0|31|kg m-2|11|10 +015022|extendedIntegratedMassDensity|double|EXTENDED INTEGRATED MASS DENSITY|kg m-2|1|-100000000|31|kg m-2|1|10 +015024|opticalDepth|long|OPTICAL DEPTH|Numeric|4|0|24|Numeric|4|8 +015025|pollutantType|table|TYPE OF POLLUTANT|CODE TABLE|0|0|4|CODE TABLE|0|2 +015026|moleFractionOfPollutant|double|CONCENTRATION OF POLLUTANT (MOL MOL-1)|mol/mol|9|0|9|mol/mol|9|3 +015027|massConcentrationOfPollutant|double|CONCENTRATION OF POLLUTANT (KG M-3)|kg m-3|9|0|10|kg m-3|9|4 +015028|moleFractionOfAtmosphericConstituentOrPollutantInDryAir|double|MOLE FRACTION OF ATMOSPHERIC CONSTITUENT/POLLUTANT IN DRY AIR|0/00|5|0|16|0/00|5|5 +015029|extinctionCoefficient|double|EXTINCTION COEFFICIENT|/m|9|0|30|/m|9|10 +015030|aerosolContaminationIndex|long|AEROSOL CONTAMINATION INDEX|Numeric|2|-1000|12|Numeric|2|4 +015031|atmosphericPathDelayInSatelliteSignal|double|ATMOSPHERIC PATH DELAY IN SATELLITE SIGNAL|m|4|10000|15|m|4|5 +015032|estimatedErrorInAtmosphericPathDelay|double|ESTIMATED ERROR IN ATMOSPHERIC PATH DELAY|m|4|0|10|m|4|4 +015033|differenceInPathDelaysForLimbViewsAtExtremesOfScan|double|DIFFERENCE IN PATH DELAYS FOR LIMB VIEWS AT EXTREMES OF SCAN|m|5|-10000|15|m|5|5 +015034|estimatedErrorInPathDelayDifference|double|ESTIMATED ERROR IN PATH DELAY DIFFERENCE|m|5|0|14|m|5|5 +015035|componentOfZenithPathDelayDueToWaterVapour|double|COMPONENT OF ZENITH PATH DELAY DUE TO WATER VAPOUR|m|4|0|14|m|4|5 +015036|atmosphericRefractivity|double|ATMOSPHERIC REFRACTIVITY|N units|3|0|19|N units|3|6 +015037|bendingAngle|double|BENDING ANGLE|rad|8|-100000|23|rad|8|7 +015038|pathDelayDueToNeutralAtmosphere|double|PATH DELAY DUE TO NEUTRAL ATMOSPHERE|m|4|0|20|m|4|11 +015039|estimatedErrorInNeutralAtmospherePathDelay|double|ESTIMATED ERROR IN NEUTRAL ATMOSPHERE PATH DELAY|m|4|0|14|m|4|9 +015041|sulphurDioxideIndex|long|SULPHUR DIOXIDE INDEX|Numeric|2|-1200|14|Numeric|2|4 +015042|reflectance|double|REFLECTANCE|%|2|0|14|%|2|5 +015045|sulphurDioxide|double|SULPHUR DIOXIDE|DU|2|-2000|15|DU|2|5 +015046|volcanoContaminationIndex|long|VOLCANO CONTAMINATION INDEX|Numeric|2|-1000|11|Numeric|2|4 +015049|aerosolAngstromWavelengthExponent|long|AEROSOL ANGSTROM WAVELENGTH EXPONENT|Numeric|3|-2000|14|Numeric|3|5 +015051|meteorologicalOpticalRange|long|METEOROLOGICAL OPTICAL RANGE|m|0|0|18|m|0|6 +015052|log10OfNumberDensityOfAerosolParticlesWithDiameterGreaterThan5Nm|double|LOG10 OF NUMBER DENSITY OF AEROSOL PARTICLES WITH DIAMETER GREATER THAN 5 NM|log (m-3)|1|60|6|log (m-3)|1|3 +015053|log10OfNumberDensityOfAerosolParticlesWithDiameterGreaterThan14Nm|double|LOG10 OF NUMBER DENSITY OF AEROSOL PARTICLES WITH DIAMETER GREATER THAN 14 NM|log (m-3)|2|600|9|log (m-3)|2|4 +015054|log10OfNumberDensityOfAerosolParticlesWithDiameterBetween0p25And2p5|double|LOG10 OF NUMBER DENSITY OF AEROSOL PARTICLES WITH DIAMETER BETWEEN 0.25 AND 2.5 uM|log (m-3)|2|550|9|log (m-3)|2|4 +015055|nonVolatileAerosolRatio|long|NON VOLATILE AEROSOL RATIO|Numeric|2|0|7|Numeric|2|3 +015062|aerosolOpticalThickness|long|AEROSOL OPTICAL THICKNESS|Numeric|3|-1000|14|Numeric|3|5 +015063|attenuatedBackscatter|double|ATTENUATED BACKSCATTER|m-1 sr-1|8|0|20|m-1 sr-1|8|7 +015064|uncertaintyInAttenuatedBackscatter|double|UNCERTAINTY IN ATTENUATED BACKSCATTER|m-1 sr-1|8|0|20|m-1 sr-1|8|7 +015065|particleBackscatterCoefficient|double|PARTICLE BACKSCATTER COEFFICIENT|m-1 sr-1|8|0|20|m-1 sr-1|8|7 +015066|uncertaintyInParticleBackscatterCoefficient|double|UNCERTAINTY IN PARTICLE BACKSCATTER COEFFICIENT|m-1 sr-1|8|0|20|m-1 sr-1|8|7 +015067|particleExtinctionCoefficient|double|PARTICLE EXTINCTION COEFFICIENT|/m|8|0|20|/m|8|7 +015068|uncertaintyInParticleExtinctionCoefficient|double|UNCERTAINTY IN PARTICLE EXTINCTION COEFFICIENT|/m|8|0|20|/m|8|7 +015069|particleLidarRatio|double|PARTICLE LIDAR RATIO|sr|2|0|14|sr|2|5 +015070|uncertaintyInLidarRatio|double|UNCERTAINTY IN LIDAR RATIO|sr|2|0|14|sr|2|5 +015071|particleDepolarizationRatio|double|PARTICLE DEPOLARIZATION RATIO|%|2|0|14|%|2|5 +015072|uncertaintyInDepolarizationRatio|double|UNCERTAINTY IN DEPOLARIZATION RATIO|%|2|0|14|%|2|5 +015073|attenuatedBackscatter1|double|ATTENUATED BACKSCATTER|m-1 sr-1|8|-524288|20|m-1 sr-1|8|7 +015074|particleBackscatterCoefficient1|double|PARTICLE BACKSCATTER COEFFICIENT|m-1 sr-1|8|-524288|20|m-1 sr-1|8|7 +015075|particleExtinctionCoefficient1|double|PARTICLE EXTINCTION COEFFICIENT|m|8|-524288|20|/m|8|7 +015076|particleLidarRatio1|double|PARTICLE LIDAR RATIO|sr|1|-2048|13|sr|1|5 +015077|uncertaintyInLidarRatio1|double|UNCERTAINTY IN LIDAR RATIO|sr|1|0|12|sr|1|5 +015078|particleDepolarizationRatio1|double|PARTICLE DEPOLARIZATION RATIO|%|2|-8192|15|%|2|5 +015079|zenithPathDelayDueToNeutralAtmosphere|double|ZENITH PATH DELAY DUE TO NEUTRAL ATMOSPHERE|m|4|0|15|m|4|9 +015080|estimatedErrorInNeutralAtmosphereZenithPathDelay|double|ESTIMATED ERROR IN NEUTRAL ATMOSPHERE ZENITH PATH DELAY|m|4|0|12|m|4|8 +015081|wetPathDelayDueToNeutralAtmosphere|double|WET PATH DELAY DUE TO NEUTRAL ATMOSPHERE|m|4|0|18|m|4|10 +015082|pathIntegratedWaterVapour|double|PATH INTEGRATED WATER VAPOUR|kg m-2|1|0|16|kg m-2|1|10 +015083|gnssDerivedNeutralAtmosphereGradient|double|GNSS DERIVED NEUTRAL ATMOSPHERE GRADIENT|m|5|-8192|14|m|5|9 +015084|gnssLeastSquaresResidual|double|GNSS LEAST SQUARES RESIDUAL|m|4|0|14|m|4|9 +015085|gnssMultiPathDelay|double|GNSS MULTI-PATH DELAY|m|4|0|14|m|4|9 +015086|gnssHydrostaticMappingFunction|long|GNSS HYDROSTATIC MAPPING FUNCTION|Numeric|3|0|16|Numeric|3|10 +015087|gnssWetMappingFunction|long|GNSS WET MAPPING FUNCTION|Numeric|3|0|16|Numeric|3|10 +015088|gnssGradientMappingFunction|long|GNSS GRADIENT MAPPING FUNCTION|Numeric|3|0|16|Numeric|3|10 +015089|zenithPathDelayDueToNeutralHydrostaticAtmosphere|double|ZENITH PATH DELAY DUE TO NEUTRAL HYDROSTATIC ATMOSPHERE|m|4|0|15|m|4|9 +015090|pathDelayDueToNeutralHydrostaticAtmosphere|double|PATH DELAY DUE TO NEUTRAL HYDROSTATIC ATMOSPHERE|m|4|0|20|m|4|11 +019001|synopticFeatureType|table|TYPE OF SYNOPTIC FEATURE|CODE TABLE|0|0|6|CODE TABLE|0|2 +019002|effectiveRadiusOfFeature|long|EFFECTIVE RADIUS OF FEATURE|m|-2|0|12|m|-2|4 +019003|windSpeedThreshold|long|WIND SPEED THRESHOLD|m/s|0|0|8|m/s|0|3 +019004|effectiveRadiusWithRespectToWindSpeedsAboveThreshold|long|EFFECTIVE RADIUS WITH RESPECT TO WIND SPEEDS ABOVE THRESHOLD|m|-2|0|12|m|-2|4 +019005|featureDirectionOfMotion|long|DIRECTION OF MOTION OF FEATURE|deg|0|0|9|deg|0|3 +019006|speedOfMotionOfFeature|double|SPEED OF MOTION OF FEATURE|m/s|2|0|14|m/s|2|5 +019007|effectiveRadiusOfFeature|long|EFFECTIVE RADIUS OF FEATURE|m|-3|0|12|m|-3|4 +019008|verticalExtentOfCirculation|table|VERTICAL EXTENT OF CIRCULATION|CODE TABLE|0|0|3|CODE TABLE|0|1 +019009|effectiveRadiusWithRespectToWindSpeedsAboveThresholdLargeStorms|long|EFFECTIVE RADIUS WITH RESPECT TO WIND SPEEDS ABOVE THRESHOLD (LARGE STORMS)|m|-3|0|12|m|-3|4 +019010|methodForTrackingCentreOfSynopticFeature|table|METHOD FOR TRACKING THE CENTRE OF SYNOPTIC FEATURE|CODE TABLE|0|0|4|CODE TABLE|0|2 +019100|timeIntervalToCalculateMovementOfTropicalCyclone|table|TIME INTERVAL TO CALCULATE THE MOVEMENT OF THE TROPICAL CYCLONE|CODE TABLE|0|0|4|CODE TABLE|0|2 +019101|accuracyOfPositionOfCentreOfTropicalCyclone|table|ACCURACY OF THE POSITION OF THE CENTRE OF THE TROPICAL CYCLONE|CODE TABLE|0|0|4|CODE TABLE|0|2 +019102|shapeAndDefinitionOfEyeOfTropicalCyclone|table|SHAPE AND DEFINITION OF THE EYE OF THE TROPICAL CYCLONE|CODE TABLE|0|0|3|CODE TABLE|0|1 +019103|diameterOfMajorAxisOfEyeOfTropicalCyclone|table|DIAMETER OF MAJOR AXIS OF THE EYE OF THE TROPICAL CYCLONE|CODE TABLE|0|0|4|CODE TABLE|0|2 +019104|changeInCharacterOfEyeDuring30Minutes|table|CHANGE IN CHARACTER OF THE EYE DURING THE 30 MINUTES|CODE TABLE|0|0|4|CODE TABLE|0|2 +019105|distanceBetweenEndOfSpiralBandAndCentre|table|DISTANCE BETWEEN THE END OF SPIRAL BAND AND THE CENTRE|CODE TABLE|0|0|4|CODE TABLE|0|2 +019106|identificationNumberOfTropicalCyclone|long|IDENTIFICATION NUMBER OF TROPICAL CYCLONE|Numeric|0|0|7|Numeric|0|3 +019107|timeIntervalOverWhichMovementOfTropicalCycloneHasBeenCalculated|table|TIME INTERVAL OVER WHICH THE MOVEMENT OF THE TROPICAL CYCLONE HAS BEEN CALCULATED|CODE TABLE|0|0|4|CODE TABLE|0|2 +019108|accuracyOfGeographicalPositionOfTropicalCyclone|table|ACCURACY OF GEOGRAPHICAL POSITION OF THE TROPICAL CYCLONE|CODE TABLE|0|0|3|CODE TABLE|0|1 +019109|meanDiameterOfOvercastCloudOfTropicalCyclone|table|MEAN DIAMETER OF THE OVERCAST CLOUD OF THE TROPICAL CYCLONE|CODE TABLE|0|0|4|CODE TABLE|0|2 +019110|apparent24HourChangeInIntensityOfTropicalCyclone|table|APPARENT 24-HOUR CHANGE IN INTENSITY OF THE TROPICAL CYCLONE|CODE TABLE|0|0|4|CODE TABLE|0|2 +019111|currentIntensityNumberOfTropicalCyclone|long|CURRENT INTENSITY (CI) NUMBER OF THE TROPICAL CYCLONE|Numeric|1|0|7|Numeric|1|3 +019112|dataTropicalNumberOfTropicalCyclone|long|DATA TROPICAL (DT) NUMBER OF THE TROPICAL CYCLONE|Numeric|1|0|7|Numeric|1|3 +019113|cloudPatternTypeOfDtNumber|table|CLOUD PATTERN TYPE OF THE DT-NUMBER|CODE TABLE|0|0|4|CODE TABLE|0|2 +019114|modelExpectedTropicalNumberOfTropicalCyclone|long|MODEL EXPECTED TROPICAL (MET) NUMBER OF THE TROPICAL CYCLONE|Numeric|1|0|7|Numeric|1|3 +019115|trendOfPast24HourChangeDevelopedWeakened|long|TREND OF THE PAST 24-HOUR CHANGE (+: DEVELOPED, -: WEAKENED)|Numeric|1|-30|6|Numeric|1|2 +019116|patternTropicalNumberOfTropicalCyclone|long|PATTERN TROPICAL (PT) NUMBER OF THE TROPICAL CYCLONE|Numeric|1|0|7|Numeric|1|3 +019117|cloudPictureTypeOfPtNumber|table|CLOUD PICTURE TYPE OF THE PT-NUMBER|CODE TABLE|0|0|3|CODE TABLE|0|1 +019118|finalTropicalNumberOfTropicalCyclone|long|FINAL TROPICAL (T) NUMBER OF THE TROPICAL CYCLONE|Numeric|1|0|7|Numeric|1|3 +019119|finalTNumberType|table|TYPE OF THE FINAL T-NUMBER|CODE TABLE|0|0|3|CODE TABLE|0|1 +019150|typhoonInternationalCommonNumberTyphoonCommittee|string|TYPHOON INTERNATIONAL COMMON NUMBER (TYPHOON COMMITTEE)|CCITT IA5|0|0|32|Character|0|4 +020001|horizontalVisibility|long|HORIZONTAL VISIBILITY|m|-1|0|13|m|-1|4 +020002|verticalVisibility|long|VERTICAL VISIBILITY|m|-1|0|7|m|-1|3 +020003|presentWeather|table|PRESENT WEATHER|CODE TABLE|0|0|9|CODE TABLE|0|3 +020004|pastWeather1|table|PAST WEATHER (1)|CODE TABLE|0|0|5|CODE TABLE|0|2 +020005|pastWeather2|table|PAST WEATHER (2)|CODE TABLE|0|0|5|CODE TABLE|0|2 +020006|flightRules|table|FLIGHT RULES|CODE TABLE|0|0|3|CODE TABLE|0|1 +020008|cloudDistributionForAviation|table|CLOUD DISTRIBUTION FOR AVIATION|CODE TABLE|0|0|5|CODE TABLE|0|2 +020009|generalWeatherIndicatorTafOrMetar|table|GENERAL WEATHER INDICATOR (TAF/METAR)|CODE TABLE|0|0|4|CODE TABLE|0|2 +020010|cloudCoverTotal|long|CLOUD COVER (TOTAL)|%|0|0|7|%|0|3 +020011|cloudAmount|table|CLOUD AMOUNT|CODE TABLE|0|0|4|CODE TABLE|0|2 +020012|cloudType|table|CLOUD TYPE|CODE TABLE|0|0|6|CODE TABLE|0|2 +020013|heightOfBaseOfCloud|long|HEIGHT OF BASE OF CLOUD|m|-1|-40|11|m|-1|4 +020014|heightOfTopOfCloud|long|HEIGHT OF TOP OF CLOUD|m|-1|-40|11|m|-1|4 +020015|pressureAtBaseOfCloud|long|PRESSURE AT BASE OF CLOUD|Pa|-1|0|14|Pa|-1|5 +020016|pressureAtTopOfCloud|long|PRESSURE AT TOP OF CLOUD|Pa|-1|0|14|Pa|-1|5 +020017|cloudTopDescription|table|CLOUD TOP DESCRIPTION|CODE TABLE|0|0|4|CODE TABLE|0|2 +020018|tendencyOfRunwayVisualRange|table|TENDENCY OF RUNWAY VISUAL RANGE|CODE TABLE|0|0|2|CODE TABLE|0|1 +020019|significantWeather|string|SIGNIFICANT PRESENT OR FORECAST WEATHER|CCITT IA5|0|0|72|Character|0|9 +020020|significantRecentWeatherPhenomena|string|SIGNIFICANT RECENT WEATHER PHENOMENA|CCITT IA5|0|0|32|Character|0|4 +020021|precipitationType|flag|TYPE OF PRECIPITATION|FLAG TABLE|0|0|30|FLAG TABLE|0|10 +020022|characterOfPrecipitation|table|CHARACTER OF PRECIPITATION|CODE TABLE|0|0|4|CODE TABLE|0|2 +020023|otherWeatherPhenomena|flag|OTHER WEATHER PHENOMENA|FLAG TABLE|0|0|18|FLAG TABLE|0|6 +020024|intensityOfPhenomena|table|INTENSITY OF PHENOMENA|CODE TABLE|0|0|3|CODE TABLE|0|1 +020025|obscuration|flag|OBSCURATION|FLAG TABLE|0|0|21|FLAG TABLE|0|7 +020026|characterOfObscuration|table|CHARACTER OF OBSCURATION|CODE TABLE|0|0|4|CODE TABLE|0|2 +020027|phenomenaOccurrence|flag|PHENOMENA OCCURRENCE|FLAG TABLE|0|0|9|FLAG TABLE|0|3 +020028|expectedChangeInIntensity|table|EXPECTED CHANGE IN INTENSITY|CODE TABLE|0|0|3|CODE TABLE|0|1 +020029|rainFlag|table|RAIN FLAG|CODE TABLE|0|0|2|CODE TABLE|0|1 +020031|iceDepositThickness|double|ICE DEPOSIT (THICKNESS)|m|2|0|7|m|2|3 +020032|rateOfIceAccretionEstimated|table|RATE OF ICE ACCRETION (ESTIMATED)|CODE TABLE|0|0|3|CODE TABLE|0|1 +020033|causeOfIceAccretion|flag|CAUSE OF ICE ACCRETION|FLAG TABLE|0|0|4|FLAG TABLE|0|2 +020034|seaIceConcentration|table|SEA ICE CONCENTRATION|CODE TABLE|0|0|5|CODE TABLE|0|2 +020035|amountAndTypeOfIce|table|AMOUNT AND TYPE OF ICE|CODE TABLE|0|0|4|CODE TABLE|0|2 +020036|iceSituation|table|ICE SITUATION|CODE TABLE|0|0|5|CODE TABLE|0|2 +020037|iceDevelopment|table|ICE DEVELOPMENT|CODE TABLE|0|0|5|CODE TABLE|0|2 +020038|iceEdgeBearing|long|BEARING OF ICE EDGE|deg|0|0|12|deg|0|3 +020039|iceDistance|long|ICE DISTANCE|m|-1|0|13|m|-1|4 +020040|evolutionOfDriftSnow|table|EVOLUTION OF DRIFT SNOW|CODE TABLE|0|0|4|CODE TABLE|0|2 +020041|airframeIcing|table|AIRFRAME ICING|CODE TABLE|0|0|4|CODE TABLE|0|2 +020042|airframeIcingPresent|table|AIRFRAME ICING PRESENT|CODE TABLE|0|0|2|CODE TABLE|0|1 +020043|peakLiquidWaterContent|double|PEAK LIQUID WATER CONTENT|kg m-3|4|0|7|kg m-3|4|2 +020044|averageLiquidWaterContent|double|AVERAGE LIQUID WATER CONTENT|kg m-3|4|0|7|kg m-3|4|2 +020045|supercooledLargeDropletConditions|table|SUPERCOOLED LARGE DROPLET (SLD) CONDITIONS|CODE TABLE|0|0|2|CODE TABLE|0|1 +020048|evolutionOfFeature|table|EVOLUTION OF FEATURE|CODE TABLE|0|0|4|CODE TABLE|0|2 +020050|cloudIndex|table|CLOUD INDEX|CODE TABLE|0|0|8|CODE TABLE|0|3 +020051|amountOfLowClouds|long|AMOUNT OF LOW CLOUDS|%|0|0|7|%|0|3 +020052|amountOfMiddleClouds|long|AMOUNT OF MIDDLE CLOUDS|%|0|0|7|%|0|3 +020053|amountOfHighClouds|long|AMOUNT OF HIGH CLOUDS|%|0|0|7|%|0|3 +020054|trueDirectionFromWhichAPhenomenonOrCloudsAreMovingOrInWhichTheyAreObserved|long|TRUE DIRECTION FROM WHICH A PHENOMENON OR CLOUDS ARE MOVING OR IN WHICH THEY ARE OBSERVED|deg|0|0|9|deg|0|3 +020055|stateOfSkyInTropics|table|STATE OF SKY IN THE TROPICS|CODE TABLE|0|0|4|CODE TABLE|0|2 +020056|cloudPhase|table|CLOUD PHASE|CODE TABLE|0|0|3|CODE TABLE|0|1 +020058|visibilitySeawardsFromACoastalStation|long|VISIBILITY SEAWARDS FROM A COASTAL STATION|m|-1|0|13|m|-1|4 +020059|minimumHorizontalVisibility|long|MINIMUM HORIZONTAL VISIBILITY|m|-1|0|9|m|-1|3 +020060|prevailingHorizontalVisibility|long|PREVAILING HORIZONTAL VISIBILITY|m|-1|0|10|m|-1|4 +020061|runwayVisualRangeRvr|long|RUNWAY VISUAL RANGE (RVR)|m|0|0|12|m|0|4 +020062|stateOfGround|table|STATE OF THE GROUND (WITH OR WITHOUT SNOW)|CODE TABLE|0|0|5|CODE TABLE|0|2 +020063|specialPhenomena|table|SPECIAL PHENOMENA|CODE TABLE|0|0|10|CODE TABLE|0|4 +020065|snowCover|long|SNOW COVER|%|0|0|7|%|0|3 +020066|maximumDiameterOfHailstones|double|MAXIMUM DIAMETER OF HAILSTONES|m|3|0|8|m|3|3 +020067|diameterOfDeposit|double|DIAMETER OF DEPOSIT|m|3|0|9|m|3|3 +020070|minimumNumberOfAtmospherics|long|MINIMUM NUMBER OF ATMOSPHERICS|Numeric|0|0|7|Numeric|0|3 +020071|accuracyOfFixAndRateOfAtmospherics|table|ACCURACY OF FIX AND RATE OF ATMOSPHERICS|CODE TABLE|0|0|4|CODE TABLE|0|2 +020081|cloudAmountInSegment|long|CLOUD AMOUNT IN SEGMENT|%|0|0|7|%|0|3 +020082|amountSegmentCloudFree|long|AMOUNT SEGMENT CLOUD FREE|%|0|0|7|%|0|3 +020083|amountOfSegmentCoveredByScene|long|AMOUNT OF SEGMENT COVERED BY SCENE|%|0|0|7|%|0|3 +020085|generalConditionOfRunway|table|GENERAL CONDITION OF RUNWAY|CODE TABLE|0|0|4|CODE TABLE|0|1 +020086|runwayDeposits|table|RUNWAY DEPOSITS|CODE TABLE|0|0|4|CODE TABLE|0|1 +020087|runwayContamination|table|RUNWAY CONTAMINATION|CODE TABLE|0|0|4|CODE TABLE|0|1 +020088|depthOfRunwayDeposits|double|DEPTH OF RUNWAY DEPOSITS|m|3|0|12|m|0|4 +020089|runwayFrictionCoefficient|table|RUNWAY FRICTION COEFFICIENT|CODE TABLE|0|0|7|CODE TABLE|0|2 +020090|specialClouds|table|SPECIAL CLOUDS|CODE TABLE|0|0|4|CODE TABLE|0|2 +020091|verticalVisibility|long|VERTICAL VISIBILITY|ft|-2|0|10|ft|-2|3 +020092|heightOfBaseOfCloud|long|HEIGHT OF BASE OF CLOUD|ft|-2|0|10|ft|-2|3 +020093|heightOfInversion|long|HEIGHT OF INVERSION|m|-1|0|8|m|-1|3 +020095|iceProbability|long|ICE PROBABILITY|Numeric|3|0|10|Numeric|3|4 +020096|iceAgeAParameter|double|ICE AGE (A PARAMETER)|dB|2|-4096|13|dB|2|4 +020101|locustAcridianName|table|LOCUST (ACRIDIAN) NAME|CODE TABLE|0|0|4|CODE TABLE|0|2 +020102|locustMaturityColour|table|LOCUST (MATURITY) COLOUR|CODE TABLE|0|0|4|CODE TABLE|0|2 +020103|stageOfDevelopmentOfLocusts|table|STAGE OF DEVELOPMENT OF LOCUSTS|CODE TABLE|0|0|4|CODE TABLE|0|2 +020104|organizationStateOfSwarm|table|ORGANIZATION STATE OF SWARM OR BAND OF LOCUSTS|CODE TABLE|0|0|4|CODE TABLE|0|2 +020105|sizeOfSwarmOrBandOfLocustsAndDurationOfPassageOfSwarm|table|SIZE OF SWARM OR BAND OF LOCUSTS AND DURATION OF PASSAGE OF SWARM|CODE TABLE|0|0|4|CODE TABLE|0|2 +020106|locustPopulationDensity|table|LOCUST POPULATION DENSITY|CODE TABLE|0|0|4|CODE TABLE|0|2 +020107|directionOfMovementsOfLocustSwarm|table|DIRECTION OF MOVEMENTS OF LOCUST SWARM|CODE TABLE|0|0|4|CODE TABLE|0|2 +020108|extentOfVegetation|table|EXTENT OF VEGETATION|CODE TABLE|0|0|4|CODE TABLE|0|2 +020111|xAxisErrorEllipseMajorComponent|long|X-AXIS ERROR ELLIPSE MAJOR COMPONENT|m|-1|0|17|m|-1|6 +020112|yAxisErrorEllipseMinorComponent|long|Y-AXIS ERROR ELLIPSE MINOR COMPONENT|m|-1|0|17|m|-1|6 +020113|zAxisErrorEllipseComponent|long|Z-AXIS ERROR ELLIPSE COMPONENT|m|-1|0|17|m|-1|6 +020114|angleOfXAxisInErrorEllipse|double|ANGLE OF X-AXIS IN ERROR ELLIPSE|deg|2|-18000|16|deg|2|5 +020115|angleOfZAxisInErrorEllipse|double|ANGLE OF Z-AXIS IN ERROR ELLIPSE|deg|2|-18000|16|deg|2|5 +020116|emissionHeightOfCloudStroke|long|EMISSION HEIGHT OF CLOUD STROKE|m|0|0|16|m|0|5 +020117|amplitudeOfLightningStrike|long|AMPLITUDE OF LIGHTNING STRIKE|A|-1|-32000|16|A|-1|5 +020118|lightningDetectionError|long|LIGHTNING DETECTION ERROR|m|0|0|19|m|0|6 +020119|lightningDischargePolarity|table|LIGHTNING DISCHARGE POLARITY|CODE TABLE|0|0|2|CODE TABLE|0|1 +020121|thresholdValueForPolarityDecision|double|THRESHOLD VALUE FOR POLARITY DECISION|V|3|0|16|V|3|5 +020122|thresholdValueForPolarityDecision|long|THRESHOLD VALUE FOR POLARITY DECISION|A|0|0|16|A|0|5 +020123|minimumDirectionThreshold|double|MINIMUM THRESHOLD FOR DETECTION|V/m|3|0|16|V/m|3|5 +020124|lightningStrokeOrFlash|table|LIGHTNING STROKE OR FLASH|CODE TABLE|0|0|2|CODE TABLE|0|1 +020126|lightningRateOfDischarge|long|LIGHTNING RATE OF DISCHARGE|/h|0|0|23|/h|0|7 +020127|lightningDistanceFromStation|long|LIGHTNING - DISTANCE FROM STATION|m|-3|0|8|m|-3|3 +020128|lightningDirectionFromStation|double|LIGHTNING - DIRECTION FROM STATION|deg|1|0|12|deg|1|4 +020129|lightningDensityStrokeFlashOrEvent|double|LIGHTNING DENSITY (STROKE, FLASH OR EVENT)|m-2|6|0|10|m-2|6|4 +020130|cloudHydrometeorConcentration|long|CLOUD HYDROMETEOR CONCENTRATION|Numeric|0|0|10|Numeric|0|3 +020131|effectiveRadiusOfCloudHydrometeors|double|EFFECTIVE RADIUS OF CLOUD HYDROMETEORS|m|5|0|6|m|5|2 +020132|cloudLiquidWaterContent|double|CLOUD LIQUID WATER CONTENT|kg m-3|5|0|11|kg m-3|5|4 +020133|hydrometeorRadius|double|HYDROMETEOR RADIUS|m|5|0|6|m|5|2 +020135|iceMassOnARod|double|ICE MASS (ON A ROD)|kg/m|1|0|10|kg/m|1|3 +020136|supplementaryCloudType|table|SUPPLEMENTARY CLOUD TYPE|CODE TABLE|0|0|9|CODE TABLE|0|3 +020137|evolutionOfClouds|table|EVOLUTION OF CLOUDS|CODE TABLE|0|0|4|CODE TABLE|0|2 +020138|roadSurfaceCondition|table|ROAD SURFACE CONDITION|CODE TABLE|0|0|4|CODE TABLE|0|2 +021001|horizontalReflectivity|long|HORIZONTAL REFLECTIVITY|dB|0|-64|7|dB|0|3 +021002|verticalReflectivity|long|VERTICAL REFLECTIVITY|dB|0|-64|7|dB|0|3 +021003|differentialReflectivity|double|DIFFERENTIAL REFLECTIVITY|dB|1|-5|7|dB|1|3 +021004|differentialReflectivity|double|DIFFERENTIAL REFLECTIVITY|dB|2|-800|11|dB|2|4 +021005|linearDepolarizationRatio|long|LINEAR DEPOLARIZATION RATIO|dB|0|-65|6|dB|0|2 +021006|circularDepolarizationRatio|long|CIRCULAR DEPOLARIZATION RATIO|dB|0|-65|6|dB|0|2 +021007|radarReflectivityFactor|double|RADAR REFLECTIVITY FACTOR|dB|2|-9000|15|dB|0|0 +021008|uncertaintyInRadarReflectivityFactor|double|UNCERTAINTY IN RADAR REFLECTIVITY FACTOR|dB|2|0|13|dB|0|0 +021009|verticalDopplerVelocity|double|VERTICAL DOPPLER VELOCITY|m/s|2|-10000|15|m/s|0|0 +021010|uncertaintyInVerticalDopplerVelocity|double|UNCERTAINTY IN VERTICAL DOPPLER VELOCITY|m/s|2|-10000|15|m/s|0|0 +021011|dopplerMeanVelocityXDirection|long|DOPPLER MEAN VELOCITY IN X-DIRECTION|m/s|0|-128|8|m/s|0|3 +021012|dopplerMeanVelocityYDirection|long|DOPPLER MEAN VELOCITY IN Y-DIRECTION|m/s|0|-128|8|m/s|0|3 +021013|dopplerMeanVelocityZDirection|long|DOPPLER MEAN VELOCITY IN Z-DIRECTION|m/s|0|-128|8|m/s|0|3 +021014|dopplerMeanVelocityRadial|double|DOPPLER MEAN VELOCITY (RADIAL)|m/s|1|-4096|13|m/s|1|4 +021017|dopplerVelocitySpectralWidth|double|DOPPLER VELOCITY SPECTRAL WIDTH|m/s|1|0|8|m/s|1|3 +021018|extendedNyquistVelocity|double|EXTENDED NYQUIST VELOCITY|m/s|1|0|10|m/s|1|4 +021019|highNyquistVelocity|double|HIGH NYQUIST VELOCITY|m/s|1|0|10|m/s|1|3 +021021|echoTops|long|ECHO TOPS|m|-3|0|4|m|-3|2 +021022|rangeBinOffset|double|RANGE BIN OFFSET|m|1|0|14|m|1|5 +021023|rangeBinSize|long|RANGE BIN SIZE|m|0|0|14|m|0|5 +021024|azimuthOffset|double|AZIMUTH OFFSET|deg|1|0|12|deg|1|4 +021025|azimuthalResolution|double|AZIMUTHAL RESOLUTION|deg|1|0|8|deg|1|3 +021026|ascatSigma0Usability|table|ASCAT SIGMA-0 USABILITY|CODE TABLE|0|0|3|CODE TABLE|0|1 +021027|landContributionRatio|long|LAND CONTRIBUTION RATIO|Numeric|4|0|14|Numeric|4|5 +021028|differentialPhase|double|DIFFERENTIAL PHASE|deg|1|0|12|deg|1|4 +021029|crossPolarizationCorrelationCoefficient|long|CROSS-POLARIZATION CORRELATION COEFFICIENT|Numeric|2|-100|8|Numeric|2|3 +021030|signalToNoiseRatio|long|SIGNAL TO NOISE RATIO|dB|0|-32|8|dB|0|3 +021031|verticallyIntegratedLiquidWaterContent|long|VERTICALLY INTEGRATED LIQUID-WATER CONTENT|kg m-2|0|0|7|kg m-2|0|3 +021036|radarRainfallIntensity|double|RADAR RAINFALL INTENSITY|m/s|7|0|12|m/s|7|4 +021041|brightBandHeight|long|BRIGHT-BAND HEIGHT|m|-2|0|8|m|-2|3 +021051|signalPowerAbove1Mw|long|SIGNAL POWER ABOVE 1 MW|dB|0|-256|8|dB|0|3 +021062|backscatter|double|BACKSCATTER|dB|2|-5000|13|dB|2|4 +021063|radiometricResolutionNoiseValue|double|RADIOMETRIC RESOLUTION (NOISE VALUE)|%|1|0|10|%|1|4 +021064|clutterNoiseEstimate|long|CLUTTER NOISE ESTIMATE|Numeric|0|0|8|Numeric|0|3 +021065|missingPacketCounter|long|MISSING PACKET COUNTER|Numeric|0|-127|8|Numeric|0|3 +021066|waveScatterometerProductConfidenceData|flag|WAVE SCATTEROMETER PRODUCT CONFIDENCE DATA|FLAG TABLE|0|0|12|FLAG TABLE|0|4 +021067|windProductConfidenceData|flag|WIND PRODUCT CONFIDENCE DATA|FLAG TABLE|0|0|13|FLAG TABLE|0|5 +021068|radarAltimeterProductConfidenceData|flag|RADAR ALTIMETER PRODUCT CONFIDENCE DATA|FLAG TABLE|0|0|8|FLAG TABLE|0|3 +021069|sstProductConfidenceData|flag|SST PRODUCT CONFIDENCE DATA|FLAG TABLE|0|0|10|FLAG TABLE|0|4 +021070|sstProductConfidenceDataSadist2|flag|SST PRODUCT CONFIDENCE DATA (SADIST-2)|FLAG TABLE|0|0|23|FLAG TABLE|0|6 +021071|peakiness|long|PEAKINESS|Numeric|0|0|16|Numeric|0|5 +021072|satelliteAltimeterCalibrationStatus|flag|SATELLITE ALTIMETER CALIBRATION STATUS|FLAG TABLE|0|0|4|FLAG TABLE|0|2 +021073|satelliteAltimeterInstrumentMode|flag|SATELLITE ALTIMETER INSTRUMENT MODE|FLAG TABLE|0|0|9|FLAG TABLE|0|3 +021075|imageSpectrumIntensity|long|IMAGE SPECTRUM INTENSITY|Numeric|0|0|8|Numeric|0|3 +021076|representationOfIntensities|table|REPRESENTATION OF INTENSITIES|CODE TABLE|0|0|3|CODE TABLE|0|1 +021077|altitudeCorrectionIonosphere|double|ALTITUDE CORRECTION (IONOSPHERE)|m|3|0|14|m|3|5 +021078|altitudeCorrectionDryTroposphere|double|ALTITUDE CORRECTION (DRY TROPOSPHERE)|m|3|0|9|m|3|3 +021079|altitudeCorrectionWetTroposphere|double|ALTITUDE CORRECTION (WET TROPOSPHERE)|m|3|2000|10|m|3|4 +021080|altitudeCorrectionCalibrationConstant|double|ALTITUDE CORRECTION (CALIBRATION CONSTANT)|m|3|0|11|m|3|4 +021081|openLoopCorrectionHeightTimeLoop|double|OPEN LOOP CORRECTION (HEIGHT-TIME LOOP)|m|3|0|10|m|3|4 +021082|openLoopCorrectionAutoGainControl|double|OPEN LOOP CORRECTION (AUTO GAIN CONTROL)|dB|3|-3000|14|dB|3|5 +021083|warmTargetCalibration|long|WARM TARGET CALIBRATION|Numeric|0|0|16|Numeric|0|5 +021084|coldTargetCalibration|long|COLD TARGET CALIBRATION|Numeric|0|0|16|Numeric|0|5 +021085|atsrSeaSurfaceTemperatureAcrossTrackBandNumber|long|ATSR SEA-SURFACE TEMPERATURE ACROSS-TRACK BAND NUMBER|Numeric|0|0|4|Numeric|0|2 +021086|numberOfPixelsInNadirOnlyAverage|long|NUMBER OF PIXELS IN NADIR ONLY, AVERAGE|Numeric|0|0|9|Numeric|0|3 +021087|numberOfPixelsInDualViewAverage|long|NUMBER OF PIXELS IN DUAL VIEW, AVERAGE|Numeric|0|0|9|Numeric|0|3 +021088|wetBackscatter|double|WET BACKSCATTER|dB|2|-5000|13|dB|2|4 +021091|radarSignalDopplerSpectrum0thMoment|long|RADAR SIGNAL DOPPLER SPECTRUM 0TH MOMENT|dB|0|-100|8|dB|0|3 +021092|rassSignalDopplerSpectrum0thMomentReferringToRassSignal|long|RASS SIGNAL DOPPLER SPECTRUM 0TH MOMENT, REFERRING TO RASS SIGNAL|dB|0|-100|8|dB|0|3 +021093|kuBandPeakiness|long|KU BAND PEAKINESS|Numeric|3|0|16|Numeric|3|5 +021094|sBandPeakiness|long|S BAND PEAKINESS|Numeric|3|0|16|Numeric|3|5 +021095|kpCoefficientA|long|KP COEFFICIENT A|Numeric|6|0|20|Numeric|6|7 +021096|kpCoefficientB|long|KP COEFFICIENT B|Numeric|6|0|20|Numeric|6|7 +021097|kpCoefficientC|long|KP COEFFICIENT C|Numeric|6|0|20|Numeric|6|7 +021101|numberOfVectorAmbiguities|long|NUMBER OF VECTOR AMBIGUITIES|Numeric|0|0|3|Numeric|0|1 +021102|indexOfSelectedWindVector|long|INDEX OF SELECTED WIND VECTOR|Numeric|0|0|3|Numeric|0|1 +021103|totalNumberOfSigma0Measurements|long|TOTAL NUMBER OF SIGMA-0 MEASUREMENTS|Numeric|0|0|5|Numeric|0|2 +021104|likelihoodComputedForSolution|long|LIKELIHOOD COMPUTED FOR SOLUTION|Numeric|3|-30000|15|Numeric|3|5 +021105|normalizedRadarCrossSection|double|NORMALIZED RADAR CROSS-SECTION|dB|2|-10000|14|dB|2|5 +021106|kpVarianceCoefficientAlpha|long|KP VARIANCE COEFFICIENT (ALPHA)|Numeric|3|0|14|Numeric|3|5 +021107|kpVarianceCoefficientBeta|long|KP VARIANCE COEFFICIENT (BETA)|Numeric|8|0|16|Numeric|8|5 +021109|seawindsWindVectorCellQuality|flag|SEAWINDS WIND VECTOR CELL QUALITY|FLAG TABLE|0|0|17|FLAG TABLE|0|6 +021110|numberOfInnerBeamSigma0ForwardOfSatellite|long|NUMBER OF INNER-BEAM SIGMA-0 (FORWARD OF SATELLITE)|Numeric|0|0|6|Numeric|0|2 +021111|numberOfOuterBeamSigma0ForwardOfSatellite|long|NUMBER OF OUTER-BEAM SIGMA-0 (FORWARD OF SATELLITE)|Numeric|0|0|6|Numeric|0|2 +021112|numberOfInnerBeamSigma0AftOfSatellite|long|NUMBER OF INNER-BEAM SIGMA-0 (AFT OF SATELLITE)|Numeric|0|0|6|Numeric|0|2 +021113|numberOfOuterBeamSigma0AftOfSatellite|long|NUMBER OF OUTER-BEAM SIGMA-0 (AFT OF SATELLITE)|Numeric|0|0|6|Numeric|0|2 +021114|kpVarianceCoefficientGamma|double|KP VARIANCE COEFFICIENT (GAMMA)|dB|3|-140000|18|dB|3|6 +021115|seawindsSigma0Quality|flag|SEAWINDS SIGMA-0 QUALITY|FLAG TABLE|0|0|17|FLAG TABLE|0|6 +021116|seawindsSigma0Mode|flag|SEAWINDS SIGMA-0 MODE|FLAG TABLE|0|0|17|FLAG TABLE|0|6 +021117|sigma0VarianceQualityControl|long|SIGMA-0 VARIANCE QUALITY CONTROL|Numeric|2|0|16|Numeric|2|5 +021118|attenuationCorrectionOnSigma0|double|ATTENUATION CORRECTION ON SIGMA-0|dB|2|-10000|14|dB|2|5 +021119|windScatterometerGeophysicalModelFunction|table|WIND SCATTEROMETER GEOPHYSICAL MODEL FUNCTION|CODE TABLE|0|0|6|CODE TABLE|0|2 +021120|probabilityOfRain|long|PROBABILITY OF RAIN|Numeric|3|0|10|Numeric|3|4 +021121|seawindsNofRainIndex|long|SEAWINDS NOF RAIN INDEX|Numeric|0|0|8|Numeric|0|3 +021122|attenuationCorrectionOnSigma0FromTb|double|ATTENUATION CORRECTION ON SIGMA-0 (FROM TB)|dB|2|-10000|14|dB|2|5 +021123|seawindsNormalizedRadarCrossSection|double|SEAWINDS NORMALIZED RADAR CROSS-SECTION|dB|2|-30000|15|dB|2|5 +021128|numberOfValidPointsPerSecondUsedToDerivePreviousParameters|long|NUMBER OF VALID POINTS PER SECOND USED TO DERIVE PREVIOUS PARAMETERS|Numeric|0|0|8|Numeric|0|3 +021130|spectrumTotalEnergy|long|SPECTRUM TOTAL ENERGY|Numeric|6|0|28|Numeric|6|9 +021131|spectrumMaxEnergy|long|SPECTRUM MAX ENERGY|Numeric|6|0|28|Numeric|6|9 +021132|directionOfSpectrumMaxOnHigherResolutionGrid|double|DIRECTION OF SPECTRUM MAX ON HIGHER RESOLUTION GRID|deg|3|0|19|deg|3|6 +021133|wavelengthOfSpectrumMaxOnHigherResolutionGrid|double|WAVELENGTH OF SPECTRUM MAX ON HIGHER RESOLUTION GRID|m|3|0|29|m|3|9 +021134|rangeResolutionOfCressCovarianceSpectrum|double|RANGE RESOLUTION OF CRESS COVARIANCE SPECTRUM|rad/m|3|0|19|rad/m|3|6 +021135|realPartOfCrossSpectraPolarGridNumberOfBins|long|REAL PART OF CROSS SPECTRA POLAR GRID NUMBER OF BINS|Numeric|3|-524288|20|Numeric|3|7 +021136|imaginaryPartOfCrossSpectraPolarGridNumberOfBins|long|IMAGINARY PART OF CROSS SPECTRA POLAR GRID NUMBER OF BINS|Numeric|3|-524288|20|Numeric|3|7 +021137|kuBandCorrectedOceanBackscatterCoefficient|double|KU BAND CORRECTED OCEAN BACKSCATTER COEFFICIENT|dB|2|-32768|16|dB|2|5 +021138|stdKuBandCorrectedOceanBackscatterCoefficient|double|STD KU BAND CORRECTED OCEAN BACKSCATTER COEFFICIENT|dB|2|-32768|16|dB|2|5 +021139|kuBandNetInstrumentalCorrectionForAgc|double|KU BAND NET INSTRUMENTAL CORRECTION FOR AGC|dB|2|-2048|12|dB|2|4 +021140|sBandCorrectedOceanBackscatterCoefficient|double|S BAND CORRECTED OCEAN BACKSCATTER COEFFICIENT|dB|2|-32768|16|dB|2|5 +021141|stdSBandCorrectedOceanBackscatterCoefficient|double|STD S BAND CORRECTED OCEAN BACKSCATTER COEFFICIENT|dB|2|-32768|16|dB|2|5 +021142|sBandNetInstrumentalCorrectionForAgc|double|S BAND NET INSTRUMENTAL CORRECTION FOR AGC|dB|2|-1024|11|dB|2|4 +021143|kuBandRainAttenuation|double|KU BAND RAIN ATTENUATION|dB|2|-1073741824|31|dB|2|10 +021144|altimeterRainFlag|flag|ALTIMETER RAIN FLAG|FLAG TABLE|0|0|2|FLAG TABLE|0|1 +021145|kuBandAutomaticGainControl|double|KU BAND AUTOMATIC GAIN CONTROL|dB|2|0|13|dB|2|4 +021146|rmsKuBandAutomaticGainControl|double|RMS KU BAND AUTOMATIC GAIN CONTROL|dB|2|0|8|dB|2|3 +021147|numberOfValidPointsForKuBandAutomaticGainControl|long|NUMBER OF VALID POINTS FOR KU BAND AUTOMATIC GAIN CONTROL|Numeric|0|0|5|Numeric|0|2 +021148|trailingEdgeVariationFlag|flag|TRAILING EDGE VARIATION FLAG|FLAG TABLE|0|0|9|FLAG TABLE|0|3 +021150|beamCollocation|table|BEAM CO-LOCATION|CODE TABLE|0|0|2|CODE TABLE|0|1 +021151|estimatedErrorInSigma0At40DegreesIncidenceAngle|double|ESTIMATED ERROR IN SIGMA-0 AT 40 DEGREES INCIDENCE ANGLE|dB|2|0|9|dB|2|3 +021152|slopeAt40DegreesIncidenceAngle|double|SLOPE AT 40 DEGREES INCIDENCE ANGLE|dB/deg|2|-80|7|dB/deg|2|2 +021153|estimatedErrorInSlopeAt40DegreesIncidenceAngle|double|ESTIMATED ERROR IN SLOPE AT 40 DEGREES INCIDENCE ANGLE|dB/deg|2|-40|6|dB/deg|2|2 +021154|soilMoistureSensitivity|double|SOIL MOISTURE SENSITIVITY|dB|2|0|12|dB|2|4 +021155|windVectorCellQuality|flag|WIND VECTOR CELL QUALITY|FLAG TABLE|0|0|24|FLAG TABLE|0|8 +021156|backscatterDistance|long|BACKSCATTER DISTANCE|Numeric|1|-4096|13|Numeric|1|4 +021157|lossPerUnitLengthOfAtmosphere|double|LOSS PER UNIT LENGTH OF ATMOSPHERE USED|dB/m|10|0|22|dB/m|10|7 +021158|ascatKpEstimateQuality|table|ASCAT KP ESTIMATE QUALITY|CODE TABLE|0|0|2|CODE TABLE|0|1 +021159|ascatSigma0Usability|table|ASCAT SIGMA-0 USABILITY|CODE TABLE|0|0|2|CODE TABLE|0|1 +021160|ascatUseOfSyntheticData|long|ASCAT USE OF SYNTHETIC DATA|Numeric|3|0|10|Numeric|3|4 +021161|ascatSyntheticDataQuantity|long|ASCAT SYNTHETIC DATA QUANTITY|Numeric|3|0|10|Numeric|3|4 +021162|ascatSatelliteOrbitAndAttitudeQuality|long|ASCAT SATELLITE ORBIT AND ATTITUDE QUALITY|Numeric|3|0|10|Numeric|3|4 +021163|ascatSolarArrayReflectionContamination|long|ASCAT SOLAR ARRAY REFLECTION CONTAMINATION|Numeric|3|0|10|Numeric|3|4 +021164|ascatTelemetryPresenceAndQuality|long|ASCAT TELEMETRY PRESENCE AND QUALITY|Numeric|3|0|10|Numeric|3|4 +021165|ascatExtrapolatedReferenceFunctionPresence|long|ASCAT EXTRAPOLATED REFERENCE FUNCTION PRESENCE|Numeric|3|0|10|Numeric|3|4 +021166|landFraction|long|LAND FRACTION|Numeric|3|0|10|Numeric|3|4 +021169|icePresenceIndicator|table|ICE PRESENCE INDICATOR|CODE TABLE|0|0|2|CODE TABLE|0|1 +021170|cBandCorrectedOceanBackscatterCoefficient|double|C BAND CORRECTED OCEAN BACKSCATTER COEFFICIENT|dB|2|-32768|16|dB|2|5 +021171|rmsCBandCorrectedOceanBackscatterCoefficient|double|RMS C BAND CORRECTED OCEAN BACKSCATTER COEFFICIENT|dB|2|-32768|16|dB|2|5 +021172|cBandNetInstrumentalCorrectionForAgc|double|C BAND NET INSTRUMENTAL CORRECTION FOR AGC|dB|2|-2048|12|dB|2|4 +021173|cBandAutomaticGainControl|double|C BAND AUTOMATIC GAIN CONTROL|dB|2|0|13|dB|2|4 +021174|rmsCBandAutomaticGainControl|double|RMS C BAND AUTOMATIC GAIN CONTROL|dB|2|0|9|dB|2|3 +021175|numberOfValidPointsForCBandAutomaticGainControl|long|NUMBER OF VALID POINTS FOR C BAND AUTOMATIC GAIN CONTROL|Numeric|0|0|10|Numeric|0|4 +021176|highFrequencyVariabilityCorrection|double|HIGH FREQUENCY VARIABILITY CORRECTION|m|3|0|16|m|3|5 +021177|correctedOcogBackscatterCoefficient|double|CORRECTED OCOG BACKSCATTER COEFFICIENT|dB|2|0|16|dB|2|5 +021178|stdOf20HzOcogBackscatterCoefficient|double|STD OF 20 HZ OCOG BACKSCATTER COEFFICIENT|dB|2|0|16|dB|2|5 +021179|numberOf20HzValidPointsForOcogBackscatterCoefficient|long|NUMBER OF 20 HZ VALID POINTS FOR OCOG BACKSCATTER COEFFICIENT|Numeric|0|0|16|Numeric|0|5 +021180|numberOf20HzValidPointsForOceanBackscatterCoefficient|long|NUMBER OF 20 HZ VALID POINTS FOR OCEAN BACKSCATTER COEFFICIENT|Numeric|0|0|8|Numeric|0|3 +021181|20HzOceanBackscatterCoefficient|double|20 HZ OCEAN BACKSCATTER COEFFICIENT|dB|2|0|16|dB|2|5 +021182|20HzKuBandPeakiness|long|20 HZ KU BAND PEAKINESS|Numeric|3|0|16|Numeric|3|5 +021183|specificBandCorrectedOceanBackscatterCoefficient|double|SPECIFIC BAND CORRECTED OCEAN BACKSCATTER COEFFICIENT|dB|2|-32768|16|dB|2|5 +021184|stdSpecificBandCorrectedOceanBackscatterCoefficient|double|STD SPECIFIC BAND CORRECTED OCEAN BACKSCATTER COEFFICIENT|dB|2|-32768|16|dB|2|5 +021185|specificBandNetInstrumentalCorrectionForAgc|double|SPECIFIC BAND NET INSTRUMENTAL CORRECTION FOR AGC|dB|2|-2048|12|dB|2|4 +021186|specificBandAutomaticGainControl|double|SPECIFIC BAND AUTOMATIC GAIN CONTROL|dB|2|0|13|dB|2|4 +021187|rmsSpecificBandAutomaticGainControl|double|RMS SPECIFIC BAND AUTOMATIC GAIN CONTROL|dB|2|0|8|dB|2|3 +021188|numberOfValidPointsForSpecificBandAutomaticGainControl|long|NUMBER OF VALID POINTS FOR SPECIFIC BAND AUTOMATIC GAIN CONTROL|Numeric|0|0|7|Numeric|0|3 +021189|correctedOcogBackscatterCoefficientNegativeReference|double|CORRECTED OCOG BACKSCATTER COEFFICIENT (NEGATIVE REFERENCE)|dB|2|-32768|16|dB|2|6 +022001|wavesDirection|long|DIRECTION OF WAVES|deg|0|0|9|deg|0|3 +022002|windWavesDirection|long|DIRECTION OF WIND WAVES|deg|0|0|9|deg|0|3 +022003|swellWavesDirection|long|DIRECTION OF SWELL WAVES|deg|0|0|9|deg|0|3 +022004|currentDirection|long|DIRECTION OF CURRENT|deg|0|0|9|deg|0|3 +022005|seaSurfaceCurrentDirection|long|DIRECTION OF SEA-SURFACE CURRENT|deg|0|0|9|deg|0|3 +022011|periodOfWaves|long|PERIOD OF WAVES|s|0|0|6|s|0|2 +022012|periodOfWindWaves|long|PERIOD OF WIND WAVES|s|0|0|6|s|0|2 +022013|periodOfSwellWaves|long|PERIOD OF SWELL WAVES|s|0|0|6|s|0|2 +022021|heightOfWaves|double|HEIGHT OF WAVES|m|1|0|10|m|1|4 +022022|heightOfWindWaves|double|HEIGHT OF WIND WAVES|m|1|0|10|m|1|4 +022023|heightOfSwellWaves|double|HEIGHT OF SWELL WAVES|m|1|0|10|m|1|4 +022025|standardDeviationWaveHeight|double|STANDARD DEVIATION WAVE HEIGHT|m|2|0|10|m|2|4 +022026|standardDeviationOfSignificantWaveHeight|double|STANDARD DEVIATION OF SIGNIFICANT WAVE HEIGHT|m|2|0|10|m|2|4 +022031|speedOfCurrent|double|SPEED OF CURRENT|m/s|2|0|13|m/s|2|4 +022032|speedOfSeaSurfaceCurrent|double|SPEED OF SEA-SURFACE CURRENT|m/s|2|0|13|m/s|2|4 +022035|tidalElevationWithRespectToLocalChartDatum|double|TIDAL ELEVATION WITH RESPECT TO LOCAL CHART DATUM|m|2|0|14|m|2|4 +022036|meteorologicalResidualTidalElevationSurgeOrOffset|double|METEOROLOGICAL RESIDUAL TIDAL ELEVATION (SURGE OR OFFSET)|m|2|0|14|m|2|4 +022037|tidalElevationWithRespectToNationalLandDatum|double|TIDAL ELEVATION WITH RESPECT TO NATIONAL LAND DATUM|m|3|-10000|15|m|3|5 +022038|tidalElevationWithRespectToLocalChartDatum|double|TIDAL ELEVATION WITH RESPECT TO LOCAL CHART DATUM|m|3|-10000|15|m|3|5 +022039|meteorologicalResidualTidalElevationSurgeOrOffset|double|METEOROLOGICAL RESIDUAL TIDAL ELEVATION (SURGE OR OFFSET)|m|3|-5000|13|m|3|4 +022040|meteorologicalResidualTidalElevationSurgeOrOffset|double|METEOROLOGICAL RESIDUAL TIDAL ELEVATION (SURGE OR OFFSET)|m|3|-5000|14|m|3|5 +022041|seaSurfaceTemperature15DayRunningMean|double|SEA-SURFACE TEMPERATURE (15-DAY RUNNING MEAN)|K|1|0|12|K|1|4 +022042|oceanographicWaterTemperature|double|SEA/WATER TEMPERATURE|K|1|0|12|K|1|4 +022043|oceanographicWaterTemperature|double|SEA/WATER TEMPERATURE|K|2|0|15|K|2|5 +022044|soundVelocity|double|SOUND VELOCITY|m/s|1|0|14|m/s|1|5 +022045|oceanographicWaterTemperature|double|SEA/WATER TEMPERATURE|K|3|0|19|K|3|6 +022046|seaIceFraction|long|SEA ICE FRACTION|Numeric|2|0|7|Numeric|2|3 +022049|seaSurfaceTemperature|double|SEA-SURFACE TEMPERATURE|K|2|0|15|K|2|5 +022050|standardDeviationSeaSurfaceTemperature|double|STANDARD DEVIATION SEA-SURFACE TEMPERATURE|K|2|0|8|K|2|3 +022055|floatCycleNumber|long|FLOAT CYCLE NUMBER|Numeric|0|0|10|Numeric|0|3 +022056|directionOfProfile|table|DIRECTION OF PROFILE|CODE TABLE|0|0|2|CODE TABLE|0|1 +022059|seaSurfaceSalinity|double|SEA-SURFACE SALINITY|0/00|2|0|14|0/00|2|5 +022060|lagrangianDrifterDrogueStatus|table|LAGRANGIAN DRIFTER DROGUE STATUS|CODE TABLE|0|0|3|CODE TABLE|0|1 +022061|seaState|table|STATE OF THE SEA|CODE TABLE|0|0|4|CODE TABLE|0|2 +022062|salinity|double|SALINITY|0/00|2|0|14|0/00|2|5 +022063|totalWaterDepth|long|TOTAL WATER DEPTH|m|0|0|14|m|0|5 +022064|salinity|double|SALINITY|0/00|3|0|17|0/00|3|6 +022065|oceanographicWaterPressure|long|WATER PRESSURE|Pa|-3|0|17|Pa|-3|6 +022066|oceanographicWaterConductivity|double|WATER CONDUCTIVITY|S/m|6|0|26|S/m|6|8 +022067|instrumentTypeForWaterTemperatureOrSalinityProfileMeasurement|table|INSTRUMENT TYPE FOR WATER TEMPERATURE/SALINITY PROFILE MEASUREMENT|CODE TABLE|0|0|10|CODE TABLE|0|4 +022068|waterTemperatureProfileRecorderTypes|table|WATER TEMPERATURE PROFILE RECORDER TYPES|CODE TABLE|0|0|7|CODE TABLE|0|3 +022069|spectralWaveDensity|double|SPECTRAL WAVE DENSITY|m2/Hz|3|0|22|m2/Hz|3|7 +022070|significantWaveHeight|double|SIGNIFICANT WAVE HEIGHT|m|2|0|13|m|2|4 +022071|spectralPeakWavePeriod|double|SPECTRAL PEAK WAVE PERIOD|s|1|0|9|s|1|3 +022072|spectralPeakWaveLength|long|SPECTRAL PEAK WAVELENGTH|m|0|0|13|m|0|4 +022073|maximumWaveHeight|double|MAXIMUM WAVE HEIGHT|m|2|0|13|m|2|4 +022074|averageWavePeriod|double|AVERAGE WAVE PERIOD|s|1|0|9|s|1|3 +022075|averageWaveLength|long|AVERAGE WAVELENGTH|m|0|0|13|m|0|4 +022076|directionFromWhichDominantWavesAreComing|long|DIRECTION FROM WHICH DOMINANT WAVES ARE COMING|deg|0|0|9|deg|0|3 +022077|directionalSpreadOfDominantWave|long|DIRECTIONAL SPREAD OF DOMINANT WAVE|deg|0|0|9|deg|0|3 +022078|durationOfWaveRecord|long|DURATION OF WAVE RECORD|s|0|0|12|s|0|4 +022079|lengthOfWaveRecord|long|LENGTH OF WAVE RECORD|m|0|0|16|m|0|5 +022080|wavebandCentralFrequency|double|WAVEBAND CENTRAL FREQUENCY|Hz|3|0|10|Hz|3|4 +022081|wavebandCentralWaveNumber|double|WAVEBAND CENTRAL WAVE NUMBER|/m|5|0|13|/m|5|4 +022082|maximumNonDirectionalSpectralWaveDensity|double|MAXIMUM NON-DIRECTIONAL SPECTRAL WAVE DENSITY|m2 s|2|0|20|m2 s|2|7 +022083|maximumNonDirectionalSpectralWaveNumber|double|MAXIMUM NON-DIRECTIONAL SPECTRAL WAVE NUMBER|m3|2|0|20|m3|2|7 +022084|bandContainingMaximumNonDirectionalSpectralWaveDensity|long|BAND CONTAINING MAXIMUM NON-DIRECTIONAL SPECTRAL WAVE DENSITY|Numeric|0|0|7|Numeric|0|3 +022085|spectralWaveDensityRatio|long|SPECTRAL WAVE DENSITY RATIO|Numeric|0|0|7|Numeric|0|3 +022086|meanDirectionFromWhichWavesAreComing|long|MEAN DIRECTION FROM WHICH WAVES ARE COMING|deg|0|0|9|deg|0|3 +022087|principalDirectionFromWhichWavesAreComing|long|PRINCIPAL DIRECTION FROM WHICH WAVES ARE COMING|deg|0|0|9|deg|0|3 +022088|firstNormalizedPolarCoordinateFromFourierCoefficients|long|FIRST NORMALIZED POLAR COORDINATE FROM FOURIER COEFFICIENTS|Numeric|2|0|7|Numeric|2|3 +022089|secondNormalizedPolarCoordinateFromFourierCoefficients|long|SECOND NORMALIZED POLAR COORDINATE FROM FOURIER COEFFICIENTS|Numeric|2|0|7|Numeric|2|3 +022090|nonDirectionalSpectralEstimateByWaveFrequency|double|NON-DIRECTIONAL SPECTRAL ESTIMATE BY WAVE FREQUENCY|m2 s|2|0|20|m2 s|2|7 +022091|nonDirectionalSpectralEstimateByWaveNumber|double|NON-DIRECTIONAL SPECTRAL ESTIMATE BY WAVE NUMBER|m3|2|0|20|m3|2|7 +022092|directionalSpectralEstimateByWaveFrequency|double|DIRECTIONAL SPECTRAL ESTIMATE BY WAVE FREQUENCY|m2 rad-1 s|2|0|20|m2 rad-1 s|2|7 +022093|directionalSpectralEstimateByWaveNumber|double|DIRECTIONAL SPECTRAL ESTIMATE BY WAVE NUMBER|m4|2|0|20|m4|2|7 +022094|totalNumberOfWaveBands|long|TOTAL NUMBER OF WAVE BANDS|Numeric|0|0|7|Numeric|0|3 +022095|directionalSpreadOfIndividualWaves|long|DIRECTIONAL SPREAD OF INDIVIDUAL WAVES|deg|0|0|8|deg|0|3 +022096|spectralBandWidth|double|SPECTRAL BAND WIDTH|/s|3|0|4|/s|3|2 +022097|meanWavelength731MOfImageSpectrumAtLowWaveNumbers|long|MEAN WAVELENGTH > 731 M OF IMAGE SPECTRUM AT LOW WAVE NUMBERS|m|0|0|14|m|0|5 +022098|wavelengthSpreadWavelength731MAtLowWaveNumbers|long|WAVELENGTH SPREAD (WAVELENGTH > 731 M) AT LOW WAVE NUMBERS|m|0|0|14|m|0|5 +022099|meanDirectionAtLowWaveNumbersWavelength731M|long|MEAN DIRECTION AT LOW WAVE NUMBERS (WAVELENGTH > 731 M)|deg|0|0|9|deg|0|3 +022100|directionSpreadAtLowWaveNumbersWavelength731M|long|DIRECTION SPREAD AT LOW WAVE NUMBERS (WAVELENGTH > 731 M)|deg|0|0|9|deg|0|3 +022101|totalEnergyWavelength731mAtLowWaveNumbers|long|TOTAL ENERGY (WAVELENGTH > 731M) AT LOW WAVE NUMBERS|Numeric|0|0|31|Numeric|0|10 +022102|scaledMaximumNonDirectionalSpectralWaveDensityByFrequency|long|SCALED MAXIMUM NON-DIRECTIONAL SPECTRAL WAVE DENSITY BY FREQUENCY|m2 s|0|0|14|m2 s|0|5 +022103|scaledMaximumNonDirectionalSpectralWaveDensityByWavenumber|long|SCALED MAXIMUM NON-DIRECTIONAL SPECTRAL WAVE DENSITY BY WAVE NUMBER|m3|0|0|14|m3|0|5 +022104|scaledNonDirectionalSpectralWaveDensityByFrequency|long|SCALED NON-DIRECTIONAL SPECTRAL WAVE DENSITY BY FREQUENCY|m2 s|0|0|14|m2 s|0|5 +022105|scaledNonDirectionalSpectralWaveDensityByWavenumber|long|SCALED NON-DIRECTIONAL SPECTRAL WAVE DENSITY BY WAVE NUMBER|m3|0|0|14|m3|0|5 +022106|scaledDirectionalSpectralWaveDensityByFrequency|long|SCALED DIRECTIONAL SPECTRAL WAVE DENSITY BY FREQUENCY|m2 rad-1 s|0|0|14|m2 rad-1 s|0|5 +022107|scaledDirectionalSpectralWaveDensityByWavenumber|long|SCALED DIRECTIONAL SPECTRAL WAVE DENSITY BY WAVE NUMBER|m4|0|0|14|m4|0|5 +022108|spectralWaveDensityRatio|long|SPECTRAL WAVE DENSITY RATIO|%|0|0|7|%|0|3 +022120|tideStationAutomatedWaterLevelCheck|table|TIDE STATION AUTOMATED WATER LEVEL CHECK|CODE TABLE|0|0|5|CODE TABLE|0|2 +022121|tideStationManualWaterLevelCheck|table|TIDE STATION MANUAL WATER LEVEL CHECK|CODE TABLE|0|0|5|CODE TABLE|0|2 +022122|automatedMeteorologicalDataCheck|table|TIDE STATION AUTOMATED METEOROLOGICAL DATA CHECK|CODE TABLE|0|0|5|CODE TABLE|0|2 +022123|tideStationManualMeteorologicalDataCheck|table|TIDE STATION MANUAL METEOROLOGICAL DATA CHECK|CODE TABLE|0|0|5|CODE TABLE|0|2 +022130|numberOfValidPointsForSpecificBand|long|NUMBER OF VALID POINTS FOR SPECIFIC BAND|Numeric|0|0|10|Numeric|0|4 +022131|rmsSpecificBandSignificantWaveHeight|double|RMS SPECIFIC BAND SIGNIFICANT WAVE HEIGHT|m|3|0|16|m|3|5 +022132|numberOfValidPointsForSpecificBandSignificantWaveHeight|long|NUMBER OF VALID POINTS FOR SPECIFIC BAND SIGNIFICANT WAVE HEIGHT|Numeric|0|0|10|Numeric|0|4 +022133|specificBandNetInstrumentCorrectionForSignificantWaveHeight|double|SPECIFIC BAND NET INSTRUMENT CORRECTION FOR SIGNIFICANT WAVE HEIGHT|m|3|-1000|11|m|3|4 +022134|numberOfValidPointsForSpecificBandBackscatter|long|NUMBER OF VALID POINTS FOR SPECIFIC BAND BACKSCATTER|Numeric|0|0|10|Numeric|0|4 +022141|seaSurfaceTemperature15DayRunningMean|double|SEA-SURFACE TEMPERATURE (15-DAY RUNNING MEAN)|K|2|0|15|K|2|5 +022142|squareOfSignificantWaveHeight|double|SQUARE OF SIGNIFICANT WAVE HEIGHT|m2|3|-33554432|26|m2|3|8 +022143|stdOf20HzSwhSquared|double|STD OF 20 HZ SWH SQUARED|m2|3|-8388608|24|m2|3|8 +022144|numberOf20HzValidPointsForSwhSquared|long|NUMBER OF 20 HZ VALID POINTS FOR SWH SQUARED|Numeric|0|0|9|Numeric|0|3 +022145|stdOf20HzOceanRange|double|STD OF 20 HZ OCEAN RANGE|m|3|-33554432|31|m|3|10 +022146|ocogRange|double|OCOG RANGE|m|3|0|31|m|3|10 +022147|stdOf20HzOcogRange|double|STD OF 20 HZ OCOG RANGE|m|3|-8388608|31|m|3|10 +022148|numberOf20HzValidPointsForOceanRange|long|NUMBER OF 20 HZ VALID POINTS FOR OCEAN RANGE|Numeric|0|0|9|Numeric|0|3 +022149|20HzSignificantWaveHeightSquared|double|20 HZ SIGNIFICANT WAVE HEIGHT SQUARED|m2|3|-33554432|26|m2|3|8 +022150|numberOf18HzValidPointsForKuBand|long|NUMBER OF 18 HZ VALID POINTS FOR KU BAND|Numeric|0|0|10|Numeric|0|4 +022151|kuBandOceanRange|double|KU BAND OCEAN RANGE|m|3|0|31|m|3|10 +022152|stdOf18HzKuBandOceanRange|double|STD OF 18 HZ KU BAND OCEAN RANGE|m|3|0|16|m|3|5 +022153|numberOf18HzValidPointsForSBand|long|NUMBER OF 18 HZ VALID POINTS FOR S BAND|Numeric|0|0|10|Numeric|0|4 +022154|sBandOceanRange|double|S BAND OCEAN RANGE|m|3|0|31|m|3|10 +022155|stdOf18HzSBandOceanRange|double|STD OF 18 HZ S BAND OCEAN RANGE|m|3|0|16|m|3|5 +022156|kuBandSignificantWaveHeight|double|KU BAND SIGNIFICANT WAVE HEIGHT|m|3|0|16|m|3|5 +022157|stdOf18HzKuBandOceanRange|double|STD OF 18 HZ KU BAND OCEAN RANGE|m|3|0|16|m|3|5 +022158|sBandSignificantWaveHeight|double|S BAND SIGNIFICANT WAVE HEIGHT|m|3|0|16|m|3|5 +022159|stdOf18HzSBandSignificantWaveHeight|double|STD OF 18 HZ S BAND SIGNIFICANT WAVE HEIGHT|m|3|0|16|m|3|5 +022160|normalizedInverseWaveAge|long|NORMALIZED INVERSE WAVE AGE|Numeric|6|0|21|Numeric|6|7 +022161|waveSpectra|double|WAVE SPECTRA|m4|4|0|27|m4|4|9 +022162|rmsOf20HzKuBandOceanRange|double|RMS OF 20 HZ KU BAND OCEAN RANGE|m|3|0|16|m|3|5 +022163|numberOf20HzValidPointsForKuBand|long|NUMBER OF 20 HZ VALID POINTS FOR KU BAND|Numeric|0|0|10|Numeric|0|4 +022164|rms20HzKuBandSignificantWaveHeight|double|RMS 20 HZ KU BAND SIGNIFICANT WAVE HEIGHT|m|3|0|16|m|3|5 +022165|numberOf20HzValidPointsForKuBandSignificantWaveHeight|long|NUMBER OF 20 HZ VALID POINTS FOR KU BAND SIGNIFICANT WAVE HEIGHT|Numeric|0|0|10|Numeric|0|4 +022166|kuBandNetInstrumentalCorrectionForSignificantWaveHeight|double|KU BAND NET INSTRUMENTAL CORRECTION FOR SIGNIFICANT WAVE HEIGHT|m|3|-1000|11|m|3|4 +022167|numberOfValidPointsForKuBandBackscatter|long|NUMBER OF VALID POINTS FOR KU BAND BACKSCATTER|Numeric|0|0|10|Numeric|0|4 +022168|cBandOceanRange|double|C BAND OCEAN RANGE|m|3|0|31|m|3|10 +022169|rmsOfCBandOceanRange|double|RMS OF C BAND OCEAN RANGE|m|3|0|16|m|3|5 +022170|numberOf20HzValidPointsForCBand|long|NUMBER OF 20 HZ VALID POINTS FOR C BAND|Numeric|0|0|10|Numeric|0|4 +022171|cBandSignificantWaveHeight|double|C BAND SIGNIFICANT WAVE HEIGHT|m|3|0|16|m|3|5 +022172|rms20HzCBandSignificantWaveHeight|double|RMS 20 HZ C BAND SIGNIFICANT WAVE HEIGHT|m|3|0|16|m|3|5 +022173|numberOf20HzValidPointsForCBandSignificantWaveHeight|long|NUMBER OF 20 HZ VALID POINTS FOR C BAND SIGNIFICANT WAVE HEIGHT|Numeric|0|0|10|Numeric|0|4 +022174|cBandNetInstrumentalCorrectionForSignificantWaveHeight|double|C BAND NET INSTRUMENTAL CORRECTION FOR SIGNIFICANT WAVE HEIGHT|m|3|-1000|11|m|3|4 +022175|numberOfValidPointsForCBandBackscatter|long|NUMBER OF VALID POINTS FOR C BAND BACKSCATTER|Numeric|0|0|10|Numeric|0|4 +022177|heightOfXbtOrXctdLauncher|long|HEIGHT OF XBT/XCTD LAUNCHER|m|0|0|6|m|0|3 +022178|xbtOrXctdLauncherType|table|XBT/XCTD LAUNCHER TYPE|CODE TABLE|0|0|8|CODE TABLE|0|3 +022179|specificBandSignificantWaveHeightNegativeReference|double|SPECIFIC BAND SIGNIFICANT WAVE HEIGHT (NEGATIVE REFERENCE)|m|3|-500|16|m|3|6 +022182|waterColumnHeight|double|WATER COLUMN HEIGHT|m|3|0|23|m|3|7 +022184|waterColumnHeightDeviationFromReferenceValue|double|WATER COLUMN HEIGHT DEVIATION FROM THE REFERENCE VALUE|m|3|-2000|12|m|3|4 +022185|bprTransmissionCount|long|BPR TRANSMISSION COUNT|Numeric|0|0|10|Numeric|0|3 +022186|directionFromWhichWavesAreComing|long|DIRECTION FROM WHICH WAVES ARE COMING|deg|0|0|9|deg|0|3 +022187|directionalSpreadOfWaves|long|DIRECTIONAL SPREAD OF WAVE|deg|0|0|9|deg|0|3 +022188|oceanographicDissolvedOxygen|double|DISSOLVED OXYGEN|umol/kg|3|0|19|umol/kg|3|6 +022189|specificBandOceanRange|double|SPECIFIC BAND OCEAN RANGE|m|3|0|31|m|3|10 +022190|specificBandSignificantWaveHeight|double|SPECIFIC BAND SIGNIFICANT WAVE HEIGHT|m|3|0|16|m|3|5 +022191|rmsOfSpecificBandOceanRange|double|RMS OF SPECIFIC BAND OCEAN RANGE|m|4|0|16|m|4|5 +023001|accidentEarlyNotificationArticleApplicable|table|ACCIDENT EARLY NOTIFICATION - ARTICLE APPLICABLE|CODE TABLE|0|0|3|CODE TABLE|0|1 +023002|facilityInvolvedInIncident|table|ACTIVITY OR FACILITY INVOLVED IN INCIDENT|CODE TABLE|0|0|5|CODE TABLE|0|2 +023003|releaseType|table|TYPE OF RELEASE|CODE TABLE|0|0|3|CODE TABLE|0|1 +023004|countermeasuresTakenNearBorder|table|COUNTERMEASURES TAKEN NEAR BORDER|CODE TABLE|0|0|3|CODE TABLE|0|1 +023005|causeOfIncident|table|CAUSE OF INCIDENT|CODE TABLE|0|0|2|CODE TABLE|0|1 +023006|incidentSituation|table|INCIDENT SITUATION|CODE TABLE|0|0|3|CODE TABLE|0|1 +023007|characteristicsOfRelease|table|CHARACTERISTICS OF RELEASE|CODE TABLE|0|0|3|CODE TABLE|0|1 +023008|stateOfCurrentRelease|table|STATE OF CURRENT RELEASE|CODE TABLE|0|0|2|CODE TABLE|0|1 +023009|stateOfExpectedRelease|table|STATE OF EXPECTED RELEASE|CODE TABLE|0|0|2|CODE TABLE|0|1 +023016|possibilityOfSignificantChemicalToxicHealthEffect|table|POSSIBILITY OF SIGNIFICANT CHEMICAL TOXIC HEALTH EFFECT|CODE TABLE|0|0|2|CODE TABLE|0|1 +023017|flowDischargeOfMajorRecipient|double|FLOW DISCHARGE OF MAJOR RECIPIENT|m3/s|6|0|20|m3/s|6|7 +023018|releaseBehaviourOverTime|table|RELEASE BEHAVIOUR OVER TIME|CODE TABLE|0|0|3|CODE TABLE|0|1 +023019|actualReleaseHeight|long|ACTUAL RELEASE HEIGHT|m|0|-15000|17|m|0|6 +023021|effectiveReleaseHeight|long|EFFECTIVE RELEASE HEIGHT|m|0|-15000|17|m|0|6 +023022|distanceOfReleasePointOrSiteOfIncident|long|DISTANCE OF RELEASE POINT OR SITE OF INCIDENT|m|0|0|24|m|0|8 +023023|mainTransportSpeedInAtmosphere|double|MAIN TRANSPORT SPEED IN THE ATMOSPHERE|m/s|1|0|12|m/s|1|4 +023024|mainTransportSpeedInWater|double|MAIN TRANSPORT SPEED IN WATER|m/s|2|0|13|m/s|2|4 +023025|mainTransportSpeedInGroundWater|double|MAIN TRANSPORT SPEED IN GROUND WATER|m/s|2|0|13|m/s|2|4 +023027|mainTransportDirectionInTheAtmosphere|long|MAIN TRANSPORT DIRECTION IN THE ATMOSPHERE|deg|0|0|9|deg|0|3 +023028|mainTransportDirectionInWater|long|MAIN TRANSPORT DIRECTION IN WATER|deg|0|0|9|deg|0|3 +023029|mainTransportDirectionInGroundWater|long|MAIN TRANSPORT DIRECTION IN GROUND WATER|deg|0|0|9|deg|0|3 +023031|possibilityPlume|table|POSSIBILITY THAT PLUME WILL ENCOUNTER PRECIPITATION IN STATE IN WHICH INCIDENT OCCURRED|CODE TABLE|0|0|2|CODE TABLE|0|1 +023032|plumeWillEncounterChangeInWindDirectionAndOrOrSpeedFlag|table|PLUME WILL ENCOUNTER CHANGE IN WIND DIRECTION AND/OR SPEED FLAG|CODE TABLE|0|0|2|CODE TABLE|0|1 +023040|flowDischargeRiver|double|FLOW DISCHARGE - RIVER|m3/s|1|0|22|m3/s|1|7 +023041|flowDischargeWell|double|FLOW DISCHARGE - WELL|m3/s|3|0|16|m3/s|3|5 +024001|estimateOfAmountOfRadioactivityReleasedUpToSpecifiedTime|long|ESTIMATE OF AMOUNT OF RADIOACTIVITY RELEASED UP TO SPECIFIED TIME|Bq|-11|0|28|Bq|-11|9 +024002|estimatedMaximumPotentialRelease|long|ESTIMATED MAXIMUM POTENTIAL RELEASE|Bq|-11|0|28|Bq|-11|9 +024003|compositionOfRelease|table|COMPOSITION OF RELEASE|CODE TABLE|0|0|5|CODE TABLE|0|2 +024004|elementName|string|ELEMENT NAME|CCITT IA5|0|0|16|Character|0|2 +024005|isotopeMass|long|ISOTOPE MASS|Numeric|0|0|9|Numeric|0|3 +024011|dose|double|DOSE|mSv|2|0|32|mSv|2|10 +024012|trajectoryDoseDefinedLocationAndExpectedTimeOfArrival|double|TRAJECTORY DOSE (DEFINED LOCATION AND EXPECTED TIME OF ARRIVAL)|mSv|2|0|32|mSv|2|10 +024013|gammaDoseInAirAlongMainTransportPathDefinedLocationAndTimePeriod|double|GAMMA DOSE IN AIR ALONG THE MAIN TRANSPORT PATH (DEFINED LOCATION AND TIME PERIOD)|mSv|2|0|32|mSv|2|10 +024014|gammaRadiationDoseRate|double|GAMMA RADIATION DOSE RATE|nSv/h|1|0|14|nSv/h|1|4 +024021|airConcentrationOfNamedIsotopeTypeIncludingGrossBeta|double|AIR CONCENTRATION (OF NAMED ISOTOPE TYPE INCLUDING GROSS BETA)|Bq m-3|2|0|32|Bq m-3|2|10 +024022|concentrationInPrecipitationOfNamedIsotopeType|double|CONCENTRATION IN PRECIPITATION (OF NAMED ISOTOPE TYPE)|Bq/l|2|0|32|Bq/l|2|10 +024023|pulseRateOfBetaRadiation|double|PULSE RATE OF BETA RADIATION|/s|1|0|14|/s|1|4 +024024|pulseRateOfGammaRadiation|double|PULSE RATE OF GAMMA RADIATION|/s|1|0|14|/s|1|4 +025001|rangeGateLength|long|RANGE-GATE LENGTH|m|-1|0|6|m|-1|2 +025002|numberOfGatesAveraged|long|NUMBER OF GATES AVERAGED|Numeric|0|0|4|Numeric|0|2 +025003|numberOfIntegratedPulses|long|NUMBER OF INTEGRATED PULSES|Numeric|0|0|8|Numeric|0|3 +025004|echoProcessing|table|ECHO PROCESSING|CODE TABLE|0|0|2|CODE TABLE|0|1 +025005|echoIntegration|table|ECHO INTEGRATION|CODE TABLE|0|0|2|CODE TABLE|0|1 +025006|zToRConversion|table|Z TO R CONVERSION|CODE TABLE|0|0|3|CODE TABLE|0|1 +025007|zToRConversionFactor|long|Z TO R CONVERSION FACTOR|Numeric|0|0|12|Numeric|0|4 +025008|zToRConversionExponent|long|Z TO R CONVERSION EXPONENT|Numeric|2|0|9|Numeric|2|3 +025009|calibrationMethod|flag|CALIBRATION METHOD|FLAG TABLE|0|0|4|FLAG TABLE|0|2 +025010|clutterTreatment|table|CLUTTER TREATMENT|CODE TABLE|0|0|4|CODE TABLE|0|2 +025011|groundOccultationCorrectionScreening|table|GROUND OCCULTATION CORRECTION (SCREENING)|CODE TABLE|0|0|2|CODE TABLE|0|1 +025012|rangeAttenuationCorrection|table|RANGE ATTENUATION CORRECTION|CODE TABLE|0|0|2|CODE TABLE|0|1 +025013|brightBandCorrection|flag|BRIGHT-BAND CORRECTION|FLAG TABLE|0|0|2|FLAG TABLE|0|1 +025014|azimuthClutterCutOff|long|AZIMUTH CLUTTER CUT-OFF|Numeric|0|0|12|Numeric|0|4 +025015|radomeAttenuationCorrection|flag|RADOME ATTENUATION CORRECTION|FLAG TABLE|0|0|2|FLAG TABLE|0|1 +025016|clearAirAttenuationCorrection|double|CLEAR-AIR ATTENUATION CORRECTION|dB/m|5|0|6|dB/m|5|2 +025017|precipitationAttenuationCorrection|flag|PRECIPITATION ATTENUATION CORRECTION|FLAG TABLE|0|0|2|FLAG TABLE|0|1 +025018|aToZLawForAttenuationFactor|long|A TO Z LAW FOR ATTENUATION FACTOR|Numeric|7|0|6|Numeric|7|2 +025019|aToZLawForAttenuationExponent|long|A TO Z LAW FOR ATTENUATION EXPONENT|Numeric|2|0|7|Numeric|2|3 +025020|meanSpeedEstimation|table|MEAN SPEED ESTIMATION|CODE TABLE|0|0|2|CODE TABLE|0|1 +025021|windComputationEnhancement|flag|WIND COMPUTATION ENHANCEMENT|FLAG TABLE|0|0|8|FLAG TABLE|0|3 +025022|ghrsstRejectionFlag|flag|GHRSST REJECTION FLAG|FLAG TABLE|0|0|9|FLAG TABLE|0|3 +025023|ghrsstConfidenceFlag|flag|GHRSST CONFIDENCE FLAG|FLAG TABLE|0|0|9|FLAG TABLE|0|3 +025024|ghrsstDataQuality|table|GHRSST DATA QUALITY|CODE TABLE|0|0|4|CODE TABLE|0|2 +025025|batteryVoltage|double|BATTERY VOLTAGE|V|1|0|9|V|1|3 +025026|batteryVoltageLargeRange|double|BATTERY VOLTAGE (LARGE RANGE)|V|1|0|12|V|1|4 +025028|operatorOrManufacturerDefinedParameter|long|OPERATOR OR MANUFACTURER DEFINED PARAMETER|Numeric|1|-16384|15|Numeric|1|5 +025029|calibrationMethod|flag|CALIBRATION METHOD|FLAG TABLE|0|0|6|FLAG TABLE|0|2 +025030|runningMeanSeaSurfaceTemperatureUsage|table|RUNNING MEAN SEA-SURFACE TEMPERATURE USAGE|CODE TABLE|0|0|2|CODE TABLE|0|1 +025031|nwpGeneratedVerticalProfileThinningMethod|table|NWP-GENERATED VERTICAL PROFILE THINNING METHOD|CODE TABLE|0|0|3|CODE TABLE|0|1 +025032|windProfilerModeInformation|table|WIND PROFILER MODE INFORMATION|CODE TABLE|0|0|2|CODE TABLE|0|1 +025033|windProfilerSubmodeInformation|table|WIND PROFILER SUBMODE INFORMATION|CODE TABLE|0|0|2|CODE TABLE|0|1 +025034|windProfilerQualityControlTestResults|flag|WIND PROFILER QUALITY CONTROL TEST RESULTS|FLAG TABLE|0|0|4|FLAG TABLE|0|2 +025035|decisionMethodForPolarity|table|DECISION METHOD FOR POLARITY|CODE TABLE|0|0|3|CODE TABLE|0|1 +025036|atmosphericsLocationMethod|table|ATMOSPHERICS LOCATION METHOD|CODE TABLE|0|0|4|CODE TABLE|0|2 +025037|sstBias|double|SST BIAS|K|2|-127|8|K|2|3 +025038|differenceBetweenSstAndAnalysis|double|DIFFERENCE BETWEEN SST AND ANALYSIS|K|1|-127|8|K|1|3 +025040|co2WindProductDerivation|table|CO2 WIND PRODUCT DERIVATION|CODE TABLE|0|0|4|CODE TABLE|0|2 +025041|movingPlatformDirectionReportingMethod|table|MOVING PLATFORM DIRECTION REPORTING METHOD|CODE TABLE|0|0|2|CODE TABLE|0|1 +025042|movingPlatformSpeedReportingMethod|table|MOVING PLATFORM SPEED REPORTING METHOD|CODE TABLE|0|0|2|CODE TABLE|0|1 +025043|waveSamplingIntervalTime|double|WAVE SAMPLING INTERVAL (TIME)|s|4|0|15|s|4|5 +025044|waveSamplingIntervalSpace|double|WAVE SAMPLING INTERVAL (SPACE)|m|2|0|14|m|2|5 +025045|hirsChannelCombination|flag|HIRS CHANNEL COMBINATION|FLAG TABLE|0|0|21|FLAG TABLE|0|7 +025046|msuChannelCombination|flag|MSU CHANNEL COMBINATION|FLAG TABLE|0|0|5|FLAG TABLE|0|2 +025047|ssuChannelCombination|flag|SSU CHANNEL COMBINATION|FLAG TABLE|0|0|4|FLAG TABLE|0|2 +025048|amsuAChannelCombination|flag|AMSU-A CHANNEL COMBINATION|FLAG TABLE|0|0|16|FLAG TABLE|0|6 +025049|amsuBChannelCombination|flag|AMSU-B CHANNEL COMBINATION|FLAG TABLE|0|0|6|FLAG TABLE|0|2 +025050|principalComponentScore|long|PRINCIPAL COMPONENT SCORE|Numeric|4|-131072|18|Numeric|4|6 +025051|avhrrChannelCombination|flag|AVHRR CHANNEL COMBINATION|FLAG TABLE|0|0|7|FLAG TABLE|0|3 +025052|log10OfPrincipalComponentsNormalizedFitToData|long|LOG10 OF PRINCIPAL COMPONENTS NORMALIZED FIT TO DATA|Numeric|4|0|15|Numeric|4|5 +025053|observationQuality|flag|OBSERVATION QUALITY|FLAG TABLE|0|0|12|FLAG TABLE|0|4 +025054|ssmisSubframeIdNumber|long|SSMIS SUBFRAME ID NUMBER|Numeric|0|0|5|Numeric|0|2 +025055|multiplexerHousekeeping|double|MULTIPLEXER HOUSEKEEPING|K|2|0|16|K|2|5 +025056|normalizedErrorEstimateInBackscatterMeasurementKp|long|NORMALIZED ERROR ESTIMATE IN BACKSCATTER MEASUREMENT (KP)|Numeric|4|0|14|Numeric|4|5 +025060|softwareIdentification|long|SOFTWARE IDENTIFICATION|Numeric|0|0|14|Numeric|0|5 +025061|softwareVersionNumber|string|SOFTWARE IDENTIFICATION AND VERSION NUMBER|CCITT IA5|0|0|96|Character|0|12 +025062|databaseIdentification|long|DATABASE IDENTIFICATION|Numeric|0|0|14|Numeric|0|5 +025063|SystemIdentifier|table|CENTRAL PROCESSOR OR SYSTEM IDENTIFIER|CODE TABLE|0|0|8|CODE TABLE|0|3 +025065|orientationCorrectionAzimuth|double|ORIENTATION CORRECTION (AZIMUTH)|deg|2|-1000|11|deg|2|4 +025066|orientationCorrectionElevation|double|ORIENTATION CORRECTION (ELEVATION)|deg|2|-1000|11|deg|2|4 +025067|radiosondeReleasePointPressureCorrection|long|RADIOSONDE RELEASE POINT PRESSURE CORRECTION|Pa|0|-8000|14|Pa|0|4 +025068|numberOfArchiveRecomputes|long|NUMBER OF ARCHIVE RECOMPUTES|Numeric|0|0|7|Numeric|0|3 +025069|flightLevelPressureCorrections|flag|FLIGHT LEVEL PRESSURE CORRECTIONS|FLAG TABLE|0|0|8|FLAG TABLE|0|3 +025070|majorFrameCount|long|MAJOR FRAME COUNT|Numeric|0|0|4|Numeric|0|2 +025071|frameCount|long|FRAME COUNT|Numeric|0|0|5|Numeric|0|2 +025075|satelliteAntennaCorrectionsVersionNumber|long|SATELLITE ANTENNA CORRECTIONS VERSION NUMBER|Numeric|0|0|5|Numeric|0|2 +025076|log10OfTemperatureRadianceCentralWaveNumberForAtovs|double|LOG10 OF (TEMPERATURE-RADIANCE CENTRAL WAVE NUMBER) FOR ATOVS|log (m-1)|8|0|30|log (m-1)|8|10 +025077|bandwidthCorrectionCoefficient1|long|BANDWIDTH CORRECTION COEFFICIENT 1|Numeric|5|-100000|18|Numeric|5|7 +025078|bandwidthCorrectionCoefficient2|long|BANDWIDTH CORRECTION COEFFICIENT 2|Numeric|5|0|17|Numeric|5|6 +025079|albedoRadianceSolarFilteredIrradianceForAtovs|double|ALBEDO-RADIANCE SOLAR FILTERED IRRADIANCE FOR ATOVS|W m-2|4|0|24|W m-2|4|8 +025080|albedoRadianceEquivalentFilterWidthForAtovs|double|ALBEDO-RADIANCE EQUIVALENT FILTER WIDTH FOR ATOVS|m|10|0|14|m|10|5 +025081|incidenceAngle|double|INCIDENCE ANGLE|deg|3|0|17|deg|3|6 +025082|azimuthAngle|double|AZIMUTH ANGLE|deg|3|0|19|deg|3|6 +025083|faradayRotationalAngle|double|FARADAY ROTATIONAL ANGLE|deg|3|0|19|deg|3|6 +025084|geometricRotationalAngle|double|GEOMETRIC ROTATIONAL ANGLE|deg|5|0|26|deg|5|8 +025085|fractionOfClearPixelsInHirsFov|long|FRACTION OF CLEAR PIXELS IN HIRS FOV|Numeric|0|0|7|Numeric|0|3 +025086|depthCorrectionIndicator|table|DEPTH CORRECTION INDICATOR|CODE TABLE|0|0|2|CODE TABLE|0|1 +025090|orbitStateFlag|table|ORBIT STATE FLAG|CODE TABLE|0|0|4|CODE TABLE|0|2 +025091|structureConstantOfRefractionIndexCn2|double|STRUCTURE CONSTANT OF THE REFRACTION INDEX (CN2)|dB|3|-18192|13|dB|3|5 +025092|acousticPropagationVelocity|double|ACOUSTIC PROPAGATION VELOCITY|m/s|2|28000|14|m/s|2|5 +025093|rassComputationCorrection|flag|RASS COMPUTATION CORRECTION|FLAG TABLE|0|0|8|FLAG TABLE|0|3 +025095|altimeterStateFlag|flag|ALTIMETER STATE FLAG|FLAG TABLE|0|0|2|FLAG TABLE|0|1 +025096|radiometerStateFlag|flag|RADIOMETER STATE FLAG|FLAG TABLE|0|0|5|FLAG TABLE|0|2 +025097|threeDimensionalErrorEstimateOfNavigatorOrbit|table|THREE-DIMENSIONAL ERROR ESTIMATE OF THE NAVIGATOR ORBIT|CODE TABLE|0|0|4|CODE TABLE|0|2 +025098|altimeterDataQualityFlag|flag|ALTIMETER DATA QUALITY FLAG|FLAG TABLE|0|0|9|FLAG TABLE|0|3 +025099|altimeterCorrectionQualityFlag|flag|ALTIMETER CORRECTION QUALITY FLAG|FLAG TABLE|0|0|9|FLAG TABLE|0|3 +025100|xbtOrXctdFallRateEquationCoefficientA|long|XBT/XCTD FALL RATE EQUATION COEFFICIENT A|Numeric|5|0|20|Numeric|5|6 +025101|xbtOrXctdFallRateEquationCoefficientB|long|XBT/XCTD FALL RATE EQUATION COEFFICIENT B|Numeric|5|-500000|21|Numeric|5|6 +025102|numberOfMissingLinesExcludingDataGaps|long|NUMBER OF MISSING LINES EXCLUDING DATA GAPS|Numeric|0|0|8|Numeric|0|3 +025103|numberOfDirectionalBins|long|NUMBER OF DIRECTIONAL BINS|Numeric|0|0|8|Numeric|0|3 +025104|numberOfWavelengthBins|long|NUMBER OF WAVELENGTH BINS|Numeric|0|0|8|Numeric|0|3 +025105|firstDirectionalBin|double|FIRST DIRECTIONAL BIN|deg|3|0|19|deg|3|6 +025106|directionalBinStep|double|DIRECTIONAL BIN STEP|deg|3|0|19|deg|3|6 +025107|firstWavelengthBin|double|FIRST WAVELENGTH BIN|m|3|0|29|m|3|9 +025108|lastWavelengthBin|double|LAST WAVELENGTH BIN|m|3|0|29|m|3|9 +025110|imageProcessingSummary|flag|IMAGE PROCESSING SUMMARY|FLAG TABLE|0|0|10|FLAG TABLE|0|4 +025111|numberOfInputDataGaps|long|NUMBER OF INPUT DATA GAPS|Numeric|0|0|8|Numeric|0|3 +025112|bandSpecificAltimeterDataQualityFlag|flag|BAND SPECIFIC ALTIMETER DATA QUALITY FLAG|FLAG TABLE|0|0|9|FLAG TABLE|0|3 +025113|bandSpecificAltimeterCorrectionQualityFlag|flag|BAND SPECIFIC ALTIMETER CORRECTION QUALITY FLAG|FLAG TABLE|0|0|9|FLAG TABLE|0|3 +025120|ra2L2ProcessingFlag|table|RA2-L2-PROCESSING FLAG|CODE TABLE|0|0|2|CODE TABLE|0|1 +025121|ra2L2ProcessingQuality|long|RA2-L2-PROCESSING QUALITY|%|0|0|7|%|0|3 +025122|hardwareConfigurationForRf|table|HARDWARE CONFIGURATION FOR RF|CODE TABLE|0|0|2|CODE TABLE|0|1 +025123|hardwareConfigurationForHpa|table|HARDWARE CONFIGURATION FOR HPA|CODE TABLE|0|0|2|CODE TABLE|0|1 +025124|mwrL2ProcessingFlag|table|MWR-L2-PROCESSING FLAG|CODE TABLE|0|0|2|CODE TABLE|0|1 +025125|mwrL2ProcessingQuality|long|MWR-L2-PROCESSING QUALITY|%|0|0|7|%|0|3 +025126|modelDryTroposphericCorrection|double|MODEL DRY TROPOSPHERIC CORRECTION|m|3|-32768|16|m|3|5 +025127|invertedBarometerCorrection|double|INVERTED BAROMETER CORRECTION|m|3|-32768|16|m|3|5 +025128|modelWetTroposphericCorrection|double|MODEL WET TROPOSPHERIC CORRECTION|m|3|-32768|16|m|3|5 +025129|mwrDerivedWetTroposphericCorrection|double|MWR DERIVED WET TROPOSPHERIC CORRECTION|m|3|-32768|16|m|3|5 +025130|ra2IonosphericCorrectionOnKuBand|double|RA2 IONOSPHERIC CORRECTION ON KU BAND|m|3|-32768|16|m|3|5 +025131|ionosphericCorrectionFromDorisOnKuBand|double|IONOSPHERIC CORRECTION FROM DORIS ON KU BAND|m|3|-32768|16|m|3|5 +025132|ionosphericCorrectionFromModelOnKuBand|double|IONOSPHERIC CORRECTION FROM MODEL ON KU BAND|m|3|-32768|16|m|3|5 +025133|seaStateBiasCorrectionOnKuBand|double|SEA STATE BIAS CORRECTION ON KU BAND|m|3|-32768|16|m|3|5 +025134|ra2IonosphericCorrectionOnSBand|double|RA2 IONOSPHERIC CORRECTION ON S BAND|m|3|-32768|16|m|3|5 +025135|ionosphericCorrectionFromDorisOnSBand|double|IONOSPHERIC CORRECTION FROM DORIS ON S BAND|m|3|-32768|16|m|3|5 +025136|ionosphericCorrectionFromModelOnSBand|double|IONOSPHERIC CORRECTION FROM MODEL ON S BAND|m|3|-32768|16|m|3|5 +025137|seaStateBiasCorrectionOnSBand|double|SEA STATE BIAS CORRECTION ON S BAND|m|3|-32768|16|m|3|5 +025138|averageSignalToNoiseRatio|long|AVERAGE SIGNAL-TO-NOISE RATIO|Numeric|0|-2048|12|Numeric|0|4 +025139|processingLevel|long|PROCESSING LEVEL|Numeric|0|0|5|Numeric|0|4 +025140|startChannel|long|START CHANNEL|Numeric|0|0|14|Numeric|0|5 +025141|endChannel|long|END CHANNEL|Numeric|0|0|14|Numeric|0|5 +025142|channelScaleFactor|long|CHANNEL SCALE FACTOR|Numeric|0|0|6|Numeric|0|2 +025143|linearCoefficient|long|LINEAR COEFFICIENT|Numeric|6|-5000000|24|Numeric|6|8 +025148|coefficientOfVariation|long|COEFFICIENT OF VARIATION|Numeric|2|-10000|15|Numeric|2|5 +025149|optimalEstimationCost|long|OPTIMAL ESTIMATION COST|Numeric|0|0|8|Numeric|0|3 +025150|methodOfTropicalCycloneIntensityAnalysisUsingSatelliteData|table|METHOD OF TROPICAL CYCLONE INTENSITY ANALYSIS USING SATELLITE DATA|CODE TABLE|0|0|4|CODE TABLE|0|2 +025160|kuBandNetInstrumentalCorrection|double|KU BAND NET INSTRUMENTAL CORRECTION|m|4|-120000|18|m|4|6 +025161|cBandNetInstrumentalCorrection|double|C BAND NET INSTRUMENTAL CORRECTION|m|4|-120000|18|m|4|6 +025162|seaStateBiasCorrectionOnCBand|double|SEA STATE BIAS CORRECTION ON C BAND|m|4|-6000|13|m|4|4 +025163|altimeterIonosphericCorrectionOnKuBand|double|ALTIMETER IONOSPHERIC CORRECTION ON KU BAND|m|3|-32768|16|m|3|5 +025164|radiometerWetTroposphericCorrection|double|RADIOMETER WET TROPOSPHERIC CORRECTION|m|4|-5000|13|m|4|4 +025165|ionosphericCorrectionFromModelOnSpecificBand|double|IONOSPHERIC CORRECTION FROM MODEL ON SPECIFIC BAND|m|4|-32768|16|m|4|5 +025166|seaStateBiasCorrectionOnSpecificBand|double|SEA STATE BIAS CORRECTION ON SPECIFIC BAND|m|4|-32768|16|m|4|5 +025167|specificBandNetInstrumentalCorrection|double|SPECIFIC BAND NET INSTRUMENTAL CORRECTION|m|4|-120000|18|m|4|6 +025170|samplingIntervalTime|long|SAMPLING INTERVAL (TIME)|s|0|0|10|s|0|4 +025171|sampleAveragingPeriod|long|SAMPLE AVERAGING PERIOD|s|0|0|10|s|0|4 +025172|numberOfSamples|long|NUMBER OF SAMPLES|Numeric|0|0|10|Numeric|0|4 +025174|smosInformationFlag|flag|SMOS INFORMATION FLAG|FLAG TABLE|0|0|14|FLAG TABLE|0|5 +025175|modifiedResidual|long|MODIFIED RESIDUAL|Numeric|2|0|13|Numeric|2|4 +025180|lrmPercent|double|LRM PER CENT|%|2|0|16|%|2|5 +025181|l2ProcessingFlag|table|L2 PROCESSING FLAG|CODE TABLE|0|0|2|CODE TABLE|0|1 +025182|l1ProcessingFlag|table|L1 PROCESSING FLAG|CODE TABLE|0|0|2|CODE TABLE|0|1 +025183|l1ProcessingQuality|double|L1 PROCESSING QUALITY|%|2|0|14|%|2|5 +025184|l2ProductStatus|table|L2 PRODUCT STATUS|CODE TABLE|0|0|2|CODE TABLE|0|1 +025185|encryptionMethod|table|ENCRYPTION METHOD|CODE TABLE|0|0|8|CODE TABLE|0|3 +025186|encryptionKeyVersion|string|ENCRYPTION KEY VERSION|CCITT IA5|0|0|96|Character|0|12 +025187|confidenceFlag|table|CONFIDENCE FLAG|CODE TABLE|0|0|4|CODE TABLE|0|2 +025188|methodForReducingPressureToSeaLevel|table|METHOD FOR REDUCING PRESSURE TO SEA LEVEL|CODE TABLE|0|0|5|CODE TABLE|0|2 +025189|rangeCutOffWavelength|long|RANGE CUT-OFF WAVELENGTH|m|0|1|9|m|0|3 +025190|altimeterEchoProcessingMode|table|ALTIMETER ECHO PROCESSING MODE|CODE TABLE|0|0|8|CODE TABLE|0|3 +025191|altimeterTrackingMode|table|ALTIMETER TRACKING MODE|CODE TABLE|0|0|8|CODE TABLE|0|3 +026001|principalTimeOfDailyReadingInUtcOfMaximumTemperature|double|PRINCIPAL TIME OF DAILY READING IN UTC OF MAXIMUM TEMPERATURE|h|1|0|12|h|1|3 +026002|principalTimeOfDailyReadingInUtcOfMinimumTemperature|double|PRINCIPAL TIME OF DAILY READING IN UTC OF MINIMUM TEMPERATURE|h|1|0|12|h|1|3 +026003|timeDifference|long|TIME DIFFERENCE|min|0|-1440|12|min|0|4 +026010|hoursIncluded|flag|HOURS INCLUDED|FLAG TABLE|0|0|26|FLAG TABLE|0|9 +026020|durationOfPrecipitation|long|DURATION OF PRECIPITATION|min|0|0|11|min|0|4 +026021|nonCoordinateYear|long|YEAR|a|0|0|12|a|0|4 +026022|nonCoordinateMonth|long|MONTH|mon|0|0|4|mon|0|2 +026023|nonCoordinateDay|long|DAY|d|0|0|6|d|0|2 +026030|measurementIntegrationTime|double|MEASUREMENT INTEGRATION TIME|s|2|0|8|s|2|3 +027001|nonCoordinateLatitude|double|LATITUDE (HIGH ACCURACY)|deg|5|-9000000|25|deg|5|7 +027002|nonCoordinateLatitude|double|LATITUDE (COARSE ACCURACY)|deg|2|-9000|15|deg|2|4 +027003|alternateLatitude|double|ALTERNATE LATITUDE (COARSE ACCURACY)|deg|2|-9000|15|deg|2|4 +027004|alternateLatitude|double|ALTERNATE LATITUDE (HIGH ACCURACY)|deg|5|-9000000|25|deg|5|7 +027010|footprintAxis1|long|FOOTPRINT AXIS 1|m|-1|0|14|m|-1|5 +027020|satelliteLocationCounter|long|SATELLITE LOCATION COUNTER|Numeric|0|0|16|Numeric|0|5 +027021|satelliteSublocationDimension|long|SATELLITE SUBLOCATION DIMENSION|Numeric|0|0|16|Numeric|0|5 +027031|DistanceFromEarthCentreInDirectionOf0DegreesLongitude|double|IN DIRECTION OF 0 DEGREES LONGITUDE, DISTANCE FROM THE EARTH'S CENTRE|m|2|-1073741824|31|m|2|10 +027079|horizontalWidthOfSampledVolume|long|HORIZONTAL WIDTH OF SAMPLED VOLUME|m|0|0|18|m|0|6 +027080|viewingAzimuthAngle|double|VIEWING AZIMUTH ANGLE|deg|2|0|16|deg|0|5 +028001|nonCoordinateLongitude|double|LONGITUDE (HIGH ACCURACY)|deg|5|-18000000|26|deg|5|8 +028002|nonCoordinateLongitude|double|LONGITUDE (COARSE ACCURACY)|deg|2|-18000|16|deg|2|5 +028003|alternateLongitude|double|ALTERNATE LONGITUDE (COARSE ACCURACY)|deg|2|-18000|16|deg|2|5 +028004|alternateLongitude|double|ALTERNATE LONGITUDE (HIGH ACCURACY)|deg|5|-18000000|26|deg|5|8 +028010|footprintAxis2|long|FOOTPRINT AXIS 2|m|-1|0|14|m|-1|5 +028031|DistanceFromEarthCentreInDirection90DegreesEast|double|IN DIRECTION 90 DEGREES EAST, DISTANCE FROM THE EARTH'S CENTRE|m|2|-1073741824|31|m|2|10 +029001|projectionType|table|PROJECTION TYPE|CODE TABLE|0|0|3|CODE TABLE|0|1 +029002|coordinateGridType|table|COORDINATE GRID TYPE|CODE TABLE|0|0|3|CODE TABLE|0|1 +029014|optionalListOfParametersForAnExternalMapProjectionLibrary|string|OPTIONAL LIST OF PARAMETERS FOR AN EXTERNAL MAP PROJECTION LIBRARY|CCITT IA5|0|0|504|Character|0|63 +030001|pixelValue4Bits|long|PIXEL VALUE (4 BITS)|Numeric|0|0|4|Numeric|0|2 +030002|pixelValue8Bits|long|PIXEL VALUE (8 BITS)|Numeric|0|0|8|Numeric|0|3 +030004|pixelValue16Bits|long|PIXEL VALUE (16 BITS)|Numeric|0|0|16|Numeric|0|5 +030010|numberOfGridPoints|long|NUMBER OF GRID POINTS|Numeric|0|0|13|Numeric|0|4 +030021|numberOfPixelsPerRow|long|NUMBER OF PIXELS PER ROW|Numeric|0|0|12|Numeric|0|4 +030022|numberOfPixelsPerColumn|long|NUMBER OF PIXELS PER COLUMN|Numeric|0|0|12|Numeric|0|4 +030031|pictureType|table|PICTURE TYPE|CODE TABLE|0|0|4|CODE TABLE|0|2 +030032|combinationWithOtherData|flag|COMBINATION WITH OTHER DATA|FLAG TABLE|0|0|16|FLAG TABLE|0|6 +030033|numberOfBinsAlongRadial|long|NUMBER OF BINS ALONG THE RADIAL|Numeric|0|0|12|Numeric|0|4 +030034|numberOfAzimuths|long|NUMBER OF AZIMUTHS|Numeric|0|0|12|Numeric|0|4 +031000|shortDelayedDescriptorReplicationFactor|long|SHORT DELAYED DESCRIPTOR REPLICATION FACTOR|Numeric|0|0|1|NA|0|0 +031001|delayedDescriptorReplicationFactor|long|DELAYED DESCRIPTOR REPLICATION FACTOR|Numeric|0|0|8|NA|0|0 +031002|extendedDelayedDescriptorReplicationFactor|long|EXTENDED DELAYED DESCRIPTOR REPLICATION FACTOR|Numeric|0|0|16|NA|0|0 +031011|delayedDescriptorAndDataRepetitionFactor|long|DELAYED DESCRIPTOR AND DATA REPETITION FACTOR|Numeric|0|0|8|NA|0|0 +031012|extendedDelayedDescriptorAndDataRepetitionFactor|long|EXTENDED DELAYED DESCRIPTOR AND DATA REPETITION FACTOR|Numeric|0|0|16|NA|0|0 +031021|associatedFieldSignificance|table|ASSOCIATED FIELD SIGNIFICANCE|CODE TABLE|0|0|6|NA|0|0 +031031|dataPresentIndicator|flag|DATA PRESENT INDICATOR|FLAG TABLE|0|0|1|NA|0|0 +033002|qualityInformation|table|QUALITY INFORMATION|CODE TABLE|0|0|2|CODE TABLE|0|1 +033003|qualityInformation|table|QUALITY INFORMATION|CODE TABLE|0|0|3|CODE TABLE|0|1 +033005|qualityInformationAwsData|flag|QUALITY INFORMATION (AWS DATA)|FLAG TABLE|0|0|30|FLAG TABLE|0|10 +033006|internalMeasurementStatusInformationAws|table|INTERNAL MEASUREMENT STATUS INFORMATION (AWS)|CODE TABLE|0|0|3|CODE TABLE|0|1 +033007|percentConfidence|long|PER CENT CONFIDENCE|%|0|0|7|%|0|3 +033015|dataQualityCheckIndicator|table|DATA QUALITY-CHECK INDICATOR|CODE TABLE|0|0|6|CODE TABLE|0|2 +033020|qualityControlIndicationOfFollowingValue|table|QUALITY CONTROL INDICATION OF FOLLOWING VALUE|CODE TABLE|0|0|3|CODE TABLE|0|1 +033021|qualityOfFollowingValue|table|QUALITY OF FOLLOWING VALUE|CODE TABLE|0|0|2|CODE TABLE|0|1 +033022|qualityOfBuoySatelliteTransmission|table|QUALITY OF BUOY SATELLITE TRANSMISSION|CODE TABLE|0|0|2|CODE TABLE|0|1 +033023|qualityOfBuoyLocation|table|QUALITY OF BUOY LOCATION|CODE TABLE|0|0|2|CODE TABLE|0|1 +033024|stationElevationQualityMarkForMobileStations|table|STATION ELEVATION QUALITY MARK (FOR MOBILE STATIONS)|CODE TABLE|0|0|4|CODE TABLE|0|2 +033025|acarsInterpolatedValuesIndicator|table|ACARS INTERPOLATED VALUES INDICATOR|CODE TABLE|0|0|3|CODE TABLE|0|1 +033026|moistureQuality|table|MOISTURE QUALITY|CODE TABLE|0|0|6|CODE TABLE|0|2 +033027|locationQualityClassRangeOfRadiusOf66Confidence|table|LOCATION QUALITY CLASS (RANGE OF RADIUS OF 66 % CONFIDENCE)|CODE TABLE|0|0|3|CODE TABLE|0|1 +033028|snapshotOverallQuality|table|SNAPSHOT OVERALL QUALITY|CODE TABLE|0|0|3|CODE TABLE|0|1 +033030|scanLineStatusFlagsForAtovs|flag|SCAN LINE STATUS FLAGS FOR ATOVS|FLAG TABLE|0|0|24|FLAG TABLE|0|8 +033031|scanLineQualityFlagsForAtovs|flag|SCAN LINE QUALITY FLAGS FOR ATOVS|FLAG TABLE|0|0|24|FLAG TABLE|0|8 +033032|channelQualityFlagsForAtovs|flag|CHANNEL QUALITY FLAGS FOR ATOVS|FLAG TABLE|0|0|24|FLAG TABLE|0|8 +033033|fieldOfViewQualityFlagsForAtovs|flag|FIELD OF VIEW QUALITY FLAGS FOR ATOVS|FLAG TABLE|0|0|24|FLAG TABLE|0|8 +033035|qualityControl|table|MANUAL/AUTOMATIC QUALITY CONTROL|CODE TABLE|0|0|4|CODE TABLE|0|2 +033036|nominalConfidenceThreshold|long|NOMINAL CONFIDENCE THRESHOLD|%|0|0|7|%|0|3 +033037|windCorrelationError|flag|WIND CORRELATION ERROR|FLAG TABLE|0|0|20|FLAG TABLE|0|7 +033038|qualityFlagsForGroundBasedGnssData|flag|QUALITY FLAGS FOR GROUND-BASED GNSS DATA|FLAG TABLE|0|0|10|FLAG TABLE|0|4 +033039|radioOccultationDataQualityFlags|flag|QUALITY FLAGS FOR RADIO OCCULTATION DATA|FLAG TABLE|0|0|16|FLAG TABLE|0|6 +033040|confidenceInterval|long|CONFIDENCE INTERVAL|%|0|0|7|%|0|3 +033041|attributeOfFollowingValue|table|ATTRIBUTE OF FOLLOWING VALUE|CODE TABLE|0|0|2|CODE TABLE|0|1 +033042|typeOfLimitRepresentedByFollowingValue|table|TYPE OF LIMIT REPRESENTED BY FOLLOWING VALUE|CODE TABLE|0|0|3|CODE TABLE|0|1 +033043|astConfidence|flag|AST CONFIDENCE|FLAG TABLE|0|0|8|FLAG TABLE|0|3 +033044|asarQualityInformation|flag|ASAR QUALITY INFORMATION|FLAG TABLE|0|0|15|FLAG TABLE|0|5 +033045|probabilityOfFollowingEvent|long|PROBABILITY OF FOLLOWING EVENT|%|0|0|7|%|0|3 +033046|conditionalProbability|long|CONDITIONAL PROBABILITY OF FOLLOWING EVENT WITH RESPECT TO SPECIFIED CONDITIONING EVENT|%|0|0|7|%|0|3 +033047|measurementConfidenceData|flag|MEASUREMENT CONFIDENCE DATA|FLAG TABLE|0|0|31|FLAG TABLE|0|11 +033048|confidenceMeasureOfSarInversion|table|CONFIDENCE MEASURE OF SAR INVERSION|CODE TABLE|0|0|2|CODE TABLE|0|1 +033049|confidenceMeasureOfWindRetrieval|table|CONFIDENCE MEASURE OF WIND RETRIEVAL|CODE TABLE|0|0|2|CODE TABLE|0|1 +033050|globalGtsppQualityFlag|table|GLOBAL GTSPP QUALITY FLAG|CODE TABLE|0|0|4|CODE TABLE|0|2 +033052|sBandOceanRetrackingQuality|flag|S BAND OCEAN RETRACKING QUALITY|FLAG TABLE|0|0|21|FLAG TABLE|0|7 +033053|kuBandOceanRetrackingQuality|flag|KU BAND OCEAN RETRACKING QUALITY|FLAG TABLE|0|0|21|FLAG TABLE|0|7 +033055|windVectorQualityFlag|flag|WIND VECTOR QUALITY FLAG|FLAG TABLE|0|0|24|FLAG TABLE|0|8 +033056|sigma0QualityFlag|flag|SIGMA-0 QUALITY FLAG|FLAG TABLE|0|0|24|FLAG TABLE|0|8 +033060|gqisFlagQual|table|GQISFLAGQUAL - INDIVIDUAL IASI-SYSTEM QUALITY FLAG|CODE TABLE|0|0|2|CODE TABLE|0|1 +033061|gqisQualIndex|long|GQISQUALINDEX - INDICATOR FOR INSTRUMENT NOISE PERFORMANCE (CONTRIBUTIONS FROM SPECTRAL AND RADIOMETRIC CALIBRATION)|%|0|0|7|%|0|3 +033062|gqisQualIndexLoc|long|GQISQUALINDEXLOC - INDICATOR FOR GEOMETRIC QUALITY INDEX|%|0|0|7|%|0|3 +033063|gqisQualIndexRad|long|GQISQUALINDEXRAD - INDICATOR FOR INSTRUMENT NOISE PERFORMANCE (CONTRIBUTIONS FROM RADIOMETRIC CALIBRATION)|%|0|0|7|%|0|3 +033064|gqisQualIndexSpect|long|GQISQUALINDEXSPECT - INDICATOR FOR INSTRUMENT NOISE PERFORMANCE (CONTRIBUTIONS FROM SPECTRAL CALIBRATION)|%|0|0|7|%|0|3 +033065|gqisSysTecQual|long|GQISSYSTECSONDQUAL - OUTPUT OF SYSTEM TEC (TECHNICAL EXPERTISE CENTRE) QUALITY FUNCTION|Numeric|0|0|24|Numeric|0|8 +033066|amvQualityFlag|flag|AMV QUALITY FLAG|FLAG TABLE|0|0|24|FLAG TABLE|0|8 +033070|totalOzoneQuality|table|TOTAL OZONE QUALITY|CODE TABLE|0|0|4|CODE TABLE|0|2 +033071|profileOzoneQuality|table|PROFILE OZONE QUALITY|CODE TABLE|0|0|4|CODE TABLE|0|2 +033072|ozoneError|table|OZONE ERROR|CODE TABLE|0|0|5|CODE TABLE|0|2 +033075|scanLevelDataValidityQualityFlags|flag|SCAN-LEVEL QUALITY FLAGS|FLAG TABLE|0|0|13|FLAG TABLE|0|5 +033076|calibrationQualityFlags|flag|CALIBRATION QUALITY FLAGS|FLAG TABLE|0|0|9|FLAG TABLE|0|3 +033077|fieldOfViewQualityFlags|flag|FIELD-OF-VIEW QUALITY FLAGS|FLAG TABLE|0|0|19|FLAG TABLE|0|7 +033078|geolocationQuality|table|GEOLOCATION QUALITY|CODE TABLE|0|0|4|CODE TABLE|0|2 +033079|granuleLevelQualityFlags|flag|GRANULE LEVEL QUALITY FLAGS|FLAG TABLE|0|0|16|FLAG TABLE|0|6 +033080|scanLevelQualityFlags|flag|SCAN LEVEL QUALITY FLAGS|FLAG TABLE|0|0|20|FLAG TABLE|0|7 +033081|channelDataQualityFlags|flag|CHANNEL DATA QUALITY FLAGS|FLAG TABLE|0|0|12|FLAG TABLE|0|4 +033082|geolocationQualityFlags|flag|GEOLOCATION QUALITY FLAGS|FLAG TABLE|0|0|16|FLAG TABLE|0|6 +033083|radianceDataQualityFlags|flag|RADIANCE DATA QUALITY FLAGS|FLAG TABLE|0|0|16|FLAG TABLE|0|6 +033084|pixelLevelQualityFlags|flag|PIXEL LEVEL QUALITY FLAGS|FLAG TABLE|0|0|16|FLAG TABLE|0|6 +033085|aerosolOpticalThicknessQualityFlags|flag|AEROSOL OPTICAL THICKNESS QUALITY FLAGS|FLAG TABLE|0|0|18|FLAG TABLE|0|6 +033086|qualityOfPixelLevelRetrieval|table|QUALITY OF PIXEL LEVEL RETRIEVAL|CODE TABLE|0|0|3|CODE TABLE|0|1 +033087|extentOfSatelliteWithinSouthAtlanticAnomalyBasedOnClimatologicalData|table|EXTENT OF SATELLITE WITHIN SOUTH ATLANTIC ANOMALY (BASED ON CLIMATOLOGICAL DATA)|CODE TABLE|0|0|4|CODE TABLE|0|1 +033088|ozoneTotalColumnQualityFlag|flag|OZONE TOTAL COLUMN QUALITY FLAG|FLAG TABLE|0|0|18|FLAG TABLE|0|6 +033089|noiseEquivalentDeltaTemperatureNedtQualityIndicatorsForWarmTargetCalibration|double|NOISE EQUIVALENT DELTA TEMPERATURE (NEDT) QUALITY INDICATORS FOR WARM TARGET CALIBRATION|K|2|0|12|K|2|4 +033090|nedtQualityIndicatorsForColdTargetCalibration|double|NEDT QUALITY INDICATORS FOR COLD TARGET CALIBRATION|K|2|0|12|K|2|4 +033091|nedtQualityIndicatorsForOverallCalibration|double|NEDT QUALITY INDICATORS FOR OVERALL CALIBRATION|K|2|0|12|K|2|4 +033092|bandSpecificOceanQualityFlag|flag|BAND SPECIFIC OCEAN QUALITY FLAG|FLAG TABLE|0|0|9|FLAG TABLE|0|3 +033093|extendedQualityFlagsForGroundBasedGnssData|flag|EXTENDED QUALITY FLAGS FOR GROUND-BASED GNSS DATA|FLAG TABLE|0|0|31|FLAG TABLE|0|31 +033094|calibrationQualityControlFlags|flag|CALIBRATION QUALITY CONTROL FLAGS|FLAG TABLE|0|0|24|FLAG TABLE|0|24 +033095|mwiTemperaturesFlag|flag|MWI TEMPERATURES FLAG|FLAG TABLE|0|0|8|FLAG TABLE|0|3 +033096|mwiCalibrationFlag|flag|MWI CALIBRATION FLAG|FLAG TABLE|0|0|16|FLAG TABLE|0|6 +033097|mwiScanQualityFlag|flag|MWI SCAN QUALITY FLAG|FLAG TABLE|0|0|16|FLAG TABLE|0|6 +033098|mwiDataQualityFlag|flag|MWI DATA QUALITY FLAG|FLAG TABLE|0|0|9|FLAG TABLE|0|3 +033099|mwiNavigationStatusFlag|flag|MWI NAVIGATION STATUS FLAG|FLAG TABLE|0|0|16|FLAG TABLE|0|6 +033100|iciTemperaturesFlag|flag|ICI TEMPERATURES FLAG|FLAG TABLE|0|0|8|FLAG TABLE|0|3 +033101|iciCalibrationFlag|flag|ICI CALIBRATION FLAG|FLAG TABLE|0|0|16|FLAG TABLE|0|6 +033102|iciScanQualityFlag|flag|ICI SCAN QUALITY FLAG|FLAG TABLE|0|0|16|FLAG TABLE|0|6 +033103|iciDataQualityFlag|flag|ICI DATA QUALITY FLAG|FLAG TABLE|0|0|9|FLAG TABLE|0|3 +033104|iciNavigationStatusFlag|flag|ICI NAVIGATION STATUS FLAG|FLAG TABLE|0|0|16|FLAG TABLE|0|6 +033105|iciProcessingFlags|flag|ICI PROCESSING FLAGS|FLAG TABLE|0|0|16|FLAG TABLE|0|6 +033106|mwiProcessingFlags|flag|MWI PROCESSING FLAGS|FLAG TABLE|0|0|16|FLAG TABLE|0|6 +033107|mwsScanLineProcessingFlags|flag|MWS SCAN LINE PROCESSING FLAGS|FLAG TABLE|0|0|16|FLAG TABLE|0|6 +033108|mwsNavigationStatusFlags|flag|MWS NAVIGATION STATUS FLAGS|FLAG TABLE|0|0|16|FLAG TABLE|0|6 +033109|mwsOverallQualityFlags|flag|MWS OVERALL QUALITY FLAGS|FLAG TABLE|0|0|16|FLAG TABLE|0|6 +033110|mwsChannelProcessingFlags|flag|MWS CHANNEL PROCESSING FLAGS|FLAG TABLE|0|0|9|FLAG TABLE|0|3 +033111|scaQualityFlags|flag|SCA QUALITY FLAGS|FLAG TABLE|0|0|32|FLAG TABLE|0|11 +033112|faradayRotationAngleOneWay|double|FARADAY ROTATION ANGLE (ONE WAY)|deg|2|-18000|16|deg|2|6 +033113|iasiNgGeneralQualityFlags|flag|IASI-NG GENERAL QUALITY FLAGS|FLAG TABLE|0|0|16|FLAG TABLE|0|6 +033114|outOfBoundsCheck|flag|OUT OF BOUNDS CHECK|FLAG TABLE|0|0|17|FLAG TABLE|0|6 +033115|aerosolOpticalDepthQualityInformation|table|AEROSOL OPTICAL DEPTH QUALITY INFORMATION|CODE TABLE|0|0|5|CODE TABLE|0|2 +035000|fmAndRegionalCodeNumber|table|FM AND REGIONAL CODE NUMBER|CODE TABLE|0|0|10|CODE TABLE|0|3 +035001|timeFrameForMonitoring|table|TIME FRAME FOR MONITORING|CODE TABLE|0|0|3|CODE TABLE|0|1 +035011|numberOfReportsActuallyReceived|long|NUMBER OF REPORTS ACTUALLY RECEIVED|Numeric|0|0|14|Numeric|0|4 +035021|bulletinBeingMonitoredTtaaii|string|BULLETIN BEING MONITORED (TTAAII)|CCITT IA5|0|0|48|Character|0|6 +035022|bulletinBeingMonitoredYygggg|string|BULLETIN BEING MONITORED (YYGGGG)|CCITT IA5|0|0|48|Character|0|6 +035023|bulletinBeingMonitoredCccc|string|BULLETIN BEING MONITORED (CCCC)|CCITT IA5|0|0|32|Character|0|4 +035024|bulletinBeingMonitoredBbb|string|BULLETIN BEING MONITORED (BBB)|CCITT IA5|0|0|24|Character|0|3 +035030|discrepanciesInAvailabilityOfExpectedData|table|DISCREPANCIES IN THE AVAILABILITY OF EXPECTED DATA|CODE TABLE|0|0|4|CODE TABLE|0|1 +035031|qualifierOnMonitoringResults|table|QUALIFIER ON MONITORING RESULTS|CODE TABLE|0|0|7|CODE TABLE|0|2 +035032|causeOfMissingData|table|CAUSE OF MISSING DATA|CODE TABLE|0|0|4|CODE TABLE|0|1 +035033|observationAndCollectionDeficiencies|table|OBSERVATION AND COLLECTION DEFICIENCIES|CODE TABLE|0|0|7|CODE TABLE|0|2 +035034|statisticalTrendsForAvailabilityOfDataDuringSurveyPeriods|table|STATISTICAL TRENDS FOR AVAILABILITY OF DATA (DURING THE SURVEY PERIOD(S))|CODE TABLE|0|0|3|CODE TABLE|0|1 +035035|reasonForTermination|table|REASON FOR TERMINATION|CODE TABLE|0|0|5|CODE TABLE|0|2 +040001|surfaceSoilMoisture|double|SURFACE SOIL MOISTURE (MS)|%|1|0|10|%|1|4 +040002|estimatedErrorInSurfaceSoilMoisture|double|ESTIMATED ERROR IN SURFACE SOIL MOISTURE|%|1|0|10|%|1|4 +040003|meanSurfaceSoilMoisture|long|MEAN SURFACE SOIL MOISTURE|Numeric|3|0|10|Numeric|3|4 +040004|rainFallDetection|long|RAIN FALL DETECTION|Numeric|3|0|10|Numeric|3|4 +040005|soilMoistureCorrectionFlag|flag|SOIL MOISTURE CORRECTION FLAG|FLAG TABLE|0|0|8|FLAG TABLE|0|3 +040006|soilMoistureProcessingFlag|flag|SOIL MOISTURE PROCESSING FLAG|FLAG TABLE|0|0|16|FLAG TABLE|0|6 +040007|soilMoistureQuality|double|SOIL MOISTURE QUALITY|%|1|0|10|%|1|4 +040008|frozenLandSurfaceFraction|double|FROZEN LAND SURFACE FRACTION|%|1|0|10|%|1|4 +040009|inundationAndWetlandFraction|double|INUNDATION AND WETLAND FRACTION|%|1|0|10|%|1|4 +040010|topographicComplexity|double|TOPOGRAPHIC COMPLEXITY|%|1|0|10|%|1|4 +040011|interpolationFlag|flag|INTERPOLATION FLAG|FLAG TABLE|0|0|8|FLAG TABLE|0|3 +040012|radiometerDataQualityFlag|flag|RADIOMETER DATA QUALITY FLAG|FLAG TABLE|0|0|8|FLAG TABLE|0|3 +040013|radiometerBrightnessTemperatureInterpretationFlag|table|RADIOMETER BRIGHTNESS TEMPERATURE INTERPRETATION FLAG|CODE TABLE|0|0|3|CODE TABLE|0|1 +040014|highFrequencyFluctuationsOfSeaSurfaceTopographyCorrection|double|HIGH-FREQUENCY FLUCTUATIONS OF THE SEA-SURFACE TOPOGRAPHY CORRECTION|m|4|-3000|13|m|4|4 +040015|normalizedDifferentialVegetationIndex|long|NORMALIZED DIFFERENTIAL VEGETATION INDEX (NDVI)|Numeric|2|-100|8|Numeric|2|3 +040016|residualRmsInBand|long|RESIDUAL RMS IN BAND|Numeric|3|0|14|Numeric|3|5 +040017|nonNormalizedPrincipalComponentScore|long|NON-NORMALIZED PRINCIPAL COMPONENT SCORE|Numeric|0|-1073741824|31|Numeric|0|10 +040018|averageOfImagerMeasurements|double|GIACAVGIMAGIIS - AVERAGE OF IMAGER MEASUREMENTS|W m-2 sr-1 m|6|0|24|W m-2 sr-1 m|6|8 +040019|giacvarimagiisVarianceOfImagerMeasurements|double|GIACVARIMAGIIS - VARIANCE OF IMAGER MEASUREMENTS|W m-2 sr-1 m|6|0|24|W m-2 sr-1 m|6|8 +040020|gqisFlagQualDetailed|flag|GQISFLAGQUALDETAILED - QUALITY FLAG FOR THE SYSTEM|FLAG TABLE|0|0|17|FLAG TABLE|0|6 +040021|fractionOfWeightedAvhrrPixelInIasiFovCoveredWithSnowOrIce|long|FRACTION OF WEIGHTED AVHRR PIXEL IN IASI FOV COVERED WITH SNOW/ICE|%|0|0|7|%|0|3 +040022|numberOfMissingBadOrFailedAvhrrPixels|long|NUMBER OF MISSING, BAD OR FAILED AVHRR PIXELS|Numeric|0|0|7|Numeric|0|3 +040023|auxiliaryAltimeterStateFlags|flag|AUXILIARY ALTIMETER STATE FLAGS|FLAG TABLE|0|0|5|FLAG TABLE|0|2 +040024|meteorologicalMapAvailability|table|METEOROLOGICAL MAP AVAILABILITY|CODE TABLE|0|0|3|CODE TABLE|0|1 +040025|interpolationFlagForMeanDiurnalTide|table|INTERPOLATION FLAG FOR MEAN DIURNAL TIDE|CODE TABLE|0|0|2|CODE TABLE|0|1 +040026|scoreQuantizationFactor|long|SCORE QUANTIZATION FACTOR|Numeric|2|0|16|Numeric|2|5 +040027|sunGlintAngle|double|SUN GLINT ANGLE|deg|2|-18000|16|deg|2|5 +040028|gmiQualityFlag|table|GMI QUALITY FLAG|CODE TABLE|0|0|4|CODE TABLE|0|2 +040029|horizontalObservationIntegrationLength|long|HORIZONTAL OBSERVATION INTEGRATION LENGTH|m|0|0|26|m|0|8 +040030|horizontalLineOfSightWind|double|HORIZONTAL LINE OF SIGHT WIND|m/s|2|-32767|16|m/s|2|5 +040031|errorEstimateOfHorizontalLineOfSightWind|double|ERROR ESTIMATE OF HORIZONTAL LINE OF SIGHT WIND|m/s|2|0|15|m/s|2|5 +040032|derivativeWindToPressure|double|DERIVATIVE WIND TO PRESSURE|m s-1 Pa-1|3|-100000|18|m s-1 Pa-1|3|6 +040033|derivativeWindToTemperature|double|DERIVATIVE WIND TO TEMPERATURE|m s-1 K-1|3|-100000|18|m s-1 K-1|3|6 +040034|derivativeWindToBackscatterRatio|double|DERIVATIVE WIND TO BACKSCATTER RATIO|m/s|3|-200000|19|m/s|3|6 +040035|satelliteRange|long|SATELLITE RANGE|m|0|380000|18|m|0|6 +040036|lidarL2bClassificationType|table|LIDAR L2B CLASSIFICATION TYPE|CODE TABLE|0|0|4|CODE TABLE|0|2 +040037|backscatterRatio|long|BACKSCATTER RATIO|Numeric|3|500|20|Numeric|3|7 +040038|cloudParticleSize|double|CLOUD PARTICLE SIZE|m|7|0|28|m|7|6 +040039|singleLookComplexImageIntensity|long|SINGLE LOOK COMPLEX IMAGE INTENSITY|Numeric|0|-25|5|Numeric|0|3 +040040|singleLookComplexImageSkewness|long|SINGLE LOOK COMPLEX IMAGE SKEWNESS|Numeric|2|1|13|Numeric|0|4 +040041|singleLookComplexImageKurtosis|long|SINGLE LOOK COMPLEX IMAGE KURTOSIS|Numeric|2|1|13|Numeric|0|4 +040042|singleLookComplexImageVariance|long|SINGLE LOOK COMPLEX IMAGE VARIANCE|Numeric|2|1|13|Numeric|0|4 +040043|satelliteManoeuvreIndicator|table|SATELLITE MANOEUVRE INDICATOR|CODE TABLE|0|0|3|CODE TABLE|0|1 +040044|dustIndex|long|DUST INDEX|Numeric|1|0|8|Numeric|1|3 +040045|cloudFormationAndHeightAssignment|flag|CLOUD FORMATION AND HEIGHT ASSIGNMENT|FLAG TABLE|0|0|5|FLAG TABLE|0|2 +040046|cloudinessSummary|table|CLOUDINESS SUMMARY|CODE TABLE|0|0|3|CODE TABLE|0|1 +040047|validationFlagForIasiOrIasiNgLevel1Product|table|VALIDATION FLAG FOR IASI OR IASI-NG LEVEL 1 PRODUCT|CODE TABLE|0|0|3|CODE TABLE|0|1 +040048|validationFlagOfAmsuALevel1DataFlow|table|VALIDATION FLAG OF AMSU-A LEVEL 1 DATA FLOW|CODE TABLE|0|0|3|CODE TABLE|0|1 +040049|cloudTestsExecutedAndResults|flag|CLOUD TESTS EXECUTED AND RESULTS|FLAG TABLE|0|0|16|FLAG TABLE|0|5 +040050|retrievalInitialisation|flag|RETRIEVAL INITIALISATION|FLAG TABLE|0|0|8|FLAG TABLE|0|3 +040051|convergenceOfTheIterativeRetrieval|table|CONVERGENCE OF THE ITERATIVE RETRIEVAL|CODE TABLE|0|0|3|CODE TABLE|0|1 +040052|indicationOfSuperAdiabaticAndSuperSaturationInFinalRetrieval|flag|INDICATION OF SUPER-ADIABATIC AND SUPER-SATURATION IN FINAL RETRIEVAL|FLAG TABLE|0|0|8|FLAG TABLE|0|3 +040053|numberOfIterationsUsedForRetrieval|long|NUMBER OF ITERATIONS USED FOR RETRIEVAL|Numeric|0|0|8|Numeric|0|3 +040054|potentialProcessingAndInputsErrors|flag|POTENTIAL PROCESSING AND INPUTS ERRORS|FLAG TABLE|0|0|13|FLAG TABLE|0|4 +040055|diagnosticsOnTheRetrieval|flag|DIAGNOSTICS ON THE RETRIEVAL|FLAG TABLE|0|0|21|FLAG TABLE|0|7 +040056|generalRetrievalQuality|table|GENERAL RETRIEVAL QUALITY|CODE TABLE|0|0|3|CODE TABLE|0|1 +040057|iasiLevel2RetrievalFlags|flag|IASI LEVEL 2 RETRIEVAL FLAGS|FLAG TABLE|0|0|31|FLAG TABLE|0|10 +040058|numberOfVectorsDescribingTheCharacterizationMatrices|long|NUMBER OF VECTORS DESCRIBING THE CHARACTERIZATION MATRICES|Numeric|0|0|8|Numeric|0|3 +040059|numberOfLayersActuallyRetrieved|long|NUMBER OF LAYERS ACTUALLY RETRIEVED|Numeric|0|0|8|Numeric|0|3 +040060|numberOfProfilesRetrievedInScanline|long|NUMBER OF PROFILES RETRIEVED IN SCANLINE|Numeric|0|0|8|Numeric|0|3 +040061|airPartialColumnsOnEachRetrievedLayer|double|AIR PARTIAL COLUMNS ON EACH RETRIEVED LAYER|mol cm-2|3|0|16|mol cm-2|3|5 +040062|aPrioriPartialColumnsOnEachRetrievedLayer|double|A-PRIORI PARTIAL COLUMNS ON EACH RETRIEVED LAYER|mol cm-2|10|0|16|mol cm-2|10|5 +040063|scalingVectorMultiplyingTheAPrioriVectorInOrderToDefineTheRetrievedVector|long|SCALING VECTOR MULTIPLYING THE A PRIORI VECTOR IN ORDER TO DEFINE THE RETRIEVED VECTOR|Numeric|5|0|26|Numeric|5|8 +040064|mainEigenvaluesOfTheSensitivityMatrix|long|MAIN EIGENVALUES OF THE SENSITIVITY MATRIX|Numeric|6|0|31|Numeric|6|10 +040065|mainEigenvectorsOfTheSensitivityMatrix|long|MAIN EIGENVECTORS OF THE SENSITIVITY MATRIX|Numeric|6|-1000000000|31|Numeric|6|10 +040066|qualityIndicatorForAtmosphericWaterVapour|long|QUALITY INDICATOR FOR ATMOSPHERIC WATER VAPOUR|Numeric|1|0|8|Numeric|1|3 +040067|qualityIndicatorForAtmosphericTemperature|long|QUALITY INDICATOR FOR ATMOSPHERIC TEMPERATURE|Numeric|1|0|8|Numeric|1|3 +040068|generalRetrievalQualityFlagForSo2|table|GENERAL RETRIEVAL QUALITY FLAG FOR SO2|CODE TABLE|0|0|4|CODE TABLE|0|2 +040069|pwlrEstimatedRetrievalErrorForSurfaceAirTemperature|double|PWLR ESTIMATED RETRIEVAL ERROR FOR SURFACE AIR TEMPERATURE|K|4|-1000000|21|K|4|7 +040070|pwlrEstimatedRetrievalErrorOfSurfaceDewpoint|double|PWLR ESTIMATED RETRIEVAL ERROR OF SURFACE DEWPOINT|K|4|-1000000|21|K|4|7 +040071|retrievalErrorCovarianceMatrixForOzoneInPrincipalComponentDomain|long|RETRIEVAL ERROR COVARIANCE MATRIX FOR OZONE IN PRINCIPAL COMPONENT DOMAIN|Numeric|4|-1000000|21|Numeric|4|7 +040072|pwlrEstimatedRetrievalQualityIndicatorOfAtmosphericOzone|long|PWLR ESTIMATED RETRIEVAL QUALITY INDICATOR OF ATMOSPHERIC OZONE|Numeric|1|0|8|Numeric|1|3 +040073|pwlrEstimatedRetrievalErrorOfSurfaceSkinTemperature|double|PWLR ESTIMATED RETRIEVAL ERROR OF SURFACE SKIN TEMPERATURE|K|1|0|8|K|1|3 +040074|generalInterferometryQualityFlags|flag|GENERAL INTERFEROMETRY QUALITY FLAGS|FLAG TABLE|0|0|16|NA|0|0 +041001|pco2|double|PCO2|Pa|3|0|18|Pa|3|6 +041002|fluorescence|double|FLUORESCENCE|kg l-1|12|0|16|kg l-1|12|5 +041003|dissolvedNitrates|double|DISSOLVED NITRATES|umol/kg|3|0|17|umol/kg|3|5 +041005|turbidity|double|TURBIDITY|NTU|2|0|12|NTU|2|4 +042001|dominantSwellWaveDirectionOfSpectralPartition|long|DOMINANT SWELL WAVE DIRECTION OF SPECTRAL PARTITION|deg|0|0|9|deg|0|3 +042002|significantSwellWaveHeightOfSpectralPartition|double|SIGNIFICANT SWELL WAVE HEIGHT OF SPECTRAL PARTITION|m|1|0|9|m|1|3 +042003|dominantSwellWavelengthOfSpectralPartition|double|DOMINANT SWELL WAVELENGTH OF SPECTRAL PARTITION|m|2|100|17|m|2|6 +042004|confidenceOfInversionForEachPartitionOfSwellWaveSpectra|table|CONFIDENCE OF INVERSION FOR EACH PARTITION OF SWELL WAVE SPECTRA|CODE TABLE|0|0|4|CODE TABLE|0|2 +042005|ambiguityRemovalFactorForSwellWavePartition|long|AMBIGUITY REMOVAL FACTOR FOR SWELL WAVE PARTITION|Numeric|5|-100000|18|Numeric|5|6 +042006|waveAge|long|WAVE AGE|Numeric|2|1|8|Numeric|2|3 +042007|shortestOceanWavelengthOnSpectralResolution|double|SHORTEST OCEAN WAVELENGTH ON SPECTRAL RESOLUTION|m|2|0|16|m|2|5 +042008|nonlinearInverseSpectralWidth|double|NONLINEAR INVERSE SPECTRAL WIDTH|m|2|0|16|m|2|5 +042009|binPartitionReference|long|BIN PARTITION REFERENCE|Numeric|0|0|8|Numeric|0|3 +042010|partitionNumber|long|PARTITION NUMBER|Numeric|0|1|4|Numeric|0|2 +042011|a1CoefficientOfTheDirectionalFourierSeries|long|A1 COEFFICIENT OF THE DIRECTIONAL FOURIER SERIES|Numeric|4|-20000|15|Numeric|4|6 +042012|b1CoefficientOfTheDirectionalFourierSeries|long|B1 COEFFICIENT OF THE DIRECTIONAL FOURIER SERIES|Numeric|4|-20000|15|Numeric|4|6 +042013|a2CoefficientOfTheDirectionalFourierSeries|long|A2 COEFFICIENT OF THE DIRECTIONAL FOURIER SERIES|Numeric|4|-20000|15|Numeric|4|6 +042014|b2CoefficientOfTheDirectionalFourierSeries|long|B2 COEFFICIENT OF THE DIRECTIONAL FOURIER SERIES|Numeric|4|-20000|15|Numeric|4|6 +042015|checkFactorK|long|CHECK FACTOR K|Numeric|2|0|12|Numeric|2|4 +042016|seaWaterPotentialDensityReferencedToSeaSurface|double|SEA WATER POTENTIAL DENSITY REFERENCED TO SEA SURFACE|kg m-3|5|-10000000|24|kg m-3|5|9 diff --git a/definitions/bufr/tables/0/wmo/40/sequence.def b/definitions/bufr/tables/0/wmo/40/sequence.def new file mode 100644 index 000000000..53d16f2b8 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/sequence.def @@ -0,0 +1,1236 @@ +"300002" = [ 000002, 000003 ] +"300003" = [ 000010, 000011, 000012 ] +"300004" = [ 300003, 000013, 000014, 000015, 000016, 000017, 000018, 000019, 000020 ] +"300010" = [ 300003, 101000, 031001, 000030 ] +"300015" = [ 000030, 102000, 031002, 000024, 000025 ] +"300016" = [ 000030, 102000, 031001, 000026, 000027 ] +"301001" = [ 001001, 001002 ] +"301002" = [ 001003, 001004, 001005 ] +"301003" = [ 001011, 001012, 001013 ] +"301004" = [ 001001, 001002, 001015, 002001 ] +"301005" = [ 001035, 001034 ] +"301011" = [ 004001, 004002, 004003 ] +"301012" = [ 004004, 004005 ] +"301013" = [ 004004, 004005, 004006 ] +"301014" = [ 102002, 301011, 301012 ] +"301018" = [ 001114, 025185, 025186 ] +"301021" = [ 005001, 006001 ] +"301022" = [ 005001, 006001, 007001 ] +"301023" = [ 005002, 006002 ] +"301024" = [ 005002, 006002, 007001 ] +"301025" = [ 301023, 004003, 301012 ] +"301026" = [ 301021, 004003, 004003, 004004, 004004, 004005, 004005 ] +"301027" = [ 008007, 101000, 031001, 301028, 008007 ] +"301028" = [ 008040, 033042, 007010, 101000, 031002, 301023, 019007, 008040 ] +"301029" = [ 001018, 002001, 301011 ] +"301030" = [ 001018, 002001, 301011, 301024 ] +"301031" = [ 301001, 002001, 301011, 301012, 301022 ] +"301032" = [ 301001, 002001, 301011, 301012, 301024 ] +"301033" = [ 001005, 002001, 301011, 301012, 301021 ] +"301034" = [ 001005, 002001, 301011, 301012, 301023 ] +"301035" = [ 001005, 001012, 001013, 002001, 301011, 301012, 301023 ] +"301036" = [ 301003, 002001, 301011, 301012, 301023 ] +"301037" = [ 301001, 002011, 002012, 301011, 301012, 301022 ] +"301038" = [ 301001, 002011, 002012, 301011, 301012, 301024 ] +"301039" = [ 301003, 002011, 002012, 301011, 301012, 301023 ] +"301040" = [ 301003, 002011, 002012, 301011, 301012, 301024 ] +"301041" = [ 001007, 002021, 002022, 301011, 301012 ] +"301042" = [ 301041, 301021 ] +"301043" = [ 001007, 002023, 301011, 301013, 301021 ] +"301044" = [ 001007, 002024, 301011, 301013, 301021 ] +"301045" = [ 301011, 301012, 201138, 202131, 004006, 201000, 202000, 304030, 304031 ] +"301046" = [ 001007, 001012, 002048, 021119, 025060, 202124, 002026, 002027, 202000, 005040 + ] +"301047" = [ 001007, 025060, 001033, 001034, 001012, 301045, 002021, 301011, 301012, 201138, + 202131, 004006, 201000, 202000, 301023 ] +"301048" = [ 002104, 002121, 002113, 002026, 002027, 002111, 002140, 202127, 001013, 202126, + 007001, 202000, 025010, 021064 ] +"301049" = [ 002111, 002112, 021062, 021063, 021065 ] +"301051" = [ 001006, 002061, 301011, 301012, 301021, 008004 ] +"301055" = [ 001005, 002001, 301011, 301012, 301021, 001012, 001014 ] +"301056" = [ 001087, 001011, 001015, 002008, 002001, 301011, 301012, 301021, 007030, 007031 + ] +"301058" = [ 301011, 301012, 201152, 202135, 004006, 202000, 201000, 301021, 020111, 020112, + 020113, 020114, 020115, 020116, 020117, 020118, 020119, 025035, 020121, 020122, + 020123, 020124, 025175, 020023, 025063, 202136, 201136, 002121, 201000, 202000, + 025061, 002184, 002189, 025036, 101000, 031002, 301059 ] +"301059" = [ 301021, 007030, 007032 ] +"301062" = [ 101000, 031001, 301001 ] +"301065" = [ 001006, 001008, 002001, 002002, 002005, 002062, 002070, 002065 ] +"301066" = [ 301011, 301013, 301023, 007004, 002064, 008004 ] +"301070" = [ 002143, 002142, 002144 ] +"301071" = [ 001007, 001031, 002020, 002028, 002029 ] +"301072" = [ 301071, 301011, 301013, 301021 ] +"301074" = [ 002143, 002142, 002145, 002146 ] +"301075" = [ 301001, 001015, 301024, 008021, 301011, 301012 ] +"301076" = [ 002011, 002143, 002142 ] +"301089" = [ 001101, 001102 ] +"301090" = [ 301004, 301011, 301012, 301021, 007030, 007031 ] +"301091" = [ 002180, 002181, 002182, 002183, 002184, 002179, 002186, 002187, 002188, 002189 + ] +"301092" = [ 001011, 001003, 002001, 301011, 301012, 301021, 007030, 007031, 033024 ] +"301093" = [ 301036, 007030, 007031 ] +"301110" = [ 301001, 001011, 002011, 002014, 002003 ] +"301111" = [ 301001, 001011, 002011, 002013, 002014, 002003 ] +"301112" = [ 001006, 002011, 002013, 002014, 002003 ] +"301113" = [ 008021, 301011, 301013 ] +"301114" = [ 301021, 007030, 007031, 007007, 033024 ] +"301120" = [ 301001, 001094, 002011, 301121 ] +"301121" = [ 008041, 301122, 301021, 007031, 007007 ] +"301122" = [ 301011, 301012, 201135, 202130, 004006, 202000, 201000 ] +"301123" = [ 102002, 008041, 001062, 301001, 001094, 002011, 001018, 001095, 025061, 025068, + 001082, 001083, 001081, 002067, 002066, 002014, 025067, 025065, 025066, 002095, + 002096, 002097, 002016, 002083, 002080, 002081, 001093, 002084, 002085, 002086, + 002082, 008041, 301011 ] +"301125" = [ 001033, 001034, 025060, 001007, 002019, 001012 ] +"301126" = [ 001087, 001015, 002149, 301011, 301012, 301021 ] +"301128" = [ 001081, 001082, 001083, 001095, 002015, 002016, 002017, 002066, 002067, 002080, + 002081, 002082, 002083, 002084, 002085, 002086, 002095, 002096, 002097, 002103, + 002191, 025061, 035035 ] +"301129" = [ 001007, 001031, 002019, 002020 ] +"301130" = [ 301011, 301012, 202131, 201138, 004006, 201000, 202000 ] +"301131" = [ 301021, 007024, 005021, 007025, 005022 ] +"301132" = [ 301150, 301001, 301021, 007030, 008021, 301011, 301012, 002006, 001079, 001085 + ] +"301150" = [ 001125, 001126, 001127, 001128 ] +"302001" = [ 010004, 010051, 010061, 010063 ] +"302002" = [ 010004, 007004, 010003, 010061, 010063 ] +"302003" = [ 011011, 011012, 012004, 012006, 013003, 020001, 020003, 020004, 020005 ] +"302004" = [ 020010, 008002, 020011, 020013, 020012, 020012, 020012 ] +"302005" = [ 008002, 020011, 020012, 020013 ] +"302006" = [ 010004, 010051, 010062, 010063 ] +"302011" = [ 302001, 302003, 302004 ] +"302012" = [ 302002, 302003, 302004 ] +"302013" = [ 302006, 302003, 101000, 031001, 302005 ] +"302021" = [ 022001, 022011, 022021 ] +"302022" = [ 022002, 022012, 022022 ] +"302023" = [ 022003, 022013, 022023 ] +"302024" = [ 302022, 101002, 302023 ] +"302031" = [ 302001, 010062, 007004, 010009 ] +"302032" = [ 007032, 012101, 012103, 013003 ] +"302033" = [ 007032, 020001 ] +"302034" = [ 007032, 013023 ] +"302035" = [ 302032, 302033, 302034, 007032, 302004, 101000, 031001, 302005 ] +"302036" = [ 105000, 031001, 008002, 020011, 020012, 020014, 020017 ] +"302037" = [ 020062, 013013, 012113 ] +"302038" = [ 020003, 004024, 020004, 020005 ] +"302039" = [ 004024, 014031 ] +"302040" = [ 007032, 102002, 004024, 013011 ] +"302041" = [ 007032, 004024, 004024, 012111, 004024, 004024, 012112 ] +"302042" = [ 007032, 002002, 008021, 004025, 011001, 011002, 008021, 103002, 004025, 011043, + 011041 ] +"302043" = [ 302038, 101002, 302039, 302040, 302041, 302042, 007032 ] +"302044" = [ 004024, 002004, 013033 ] +"302045" = [ 004024, 014002, 014004, 014016, 014028, 014029, 014030 ] +"302046" = [ 004024, 004024, 012049 ] +"302047" = [ 102003, 008002, 020054 ] +"302048" = [ 005021, 007021, 020012, 005021, 007021 ] +"302049" = [ 008002, 020011, 020013, 020012, 020012, 020012, 008002 ] +"302050" = [ 008041, 005021, 007005, 202130, 006021, 202000, 008041, 201131, 202129, 002115, + 010004, 002115, 013003, 202000, 201000, 002115, 011001, 011002, 002115, 102002, + 012101, 004024, 002115, 012103, 012102, 101003, 020012, 020011, 020013, 101002, + 020003 ] +"302051" = [ 010004, 010051, 007004, 010003, 012004, 012051, 012016, 012017, 013004, 102004, + 008051, 008020 ] +"302052" = [ 007032, 007033, 012101, 002039, 012102, 012103, 013003 ] +"302053" = [ 007032, 007033, 020001 ] +"302054" = [ 302052, 302053, 007033, 302034, 007032, 302004, 101000, 031001, 302005 ] +"302055" = [ 020031, 020032, 020033, 020034, 020035, 020036, 020037, 020038 ] +"302056" = [ 002038, 007063, 022043, 007063 ] +"302057" = [ 302056, 302021, 302024 ] +"302058" = [ 007032, 007033, 004024, 004024, 012111, 004024, 004024, 012112 ] +"302059" = [ 007032, 007033, 002002, 008021, 004025, 011001, 011002, 008021, 103002, 004025, + 011043, 011041 ] +"302060" = [ 302038, 302040, 302058, 302059 ] +"302062" = [ 025188, 302001, 302093, 101000, 031000, 302053, 007032, 007033, 101000, 031000, + 302004, 101000, 031001, 302005, 008002, 101000, 031000, 302055, 101000, 031000, + 302056, 101000, 031000, 302021, 101000, 031000, 302024 ] +"302063" = [ 302038, 101000, 031000, 302040, 101000, 031000, 302034, 007032, 101000, 031000, + 302058, 101000, 031000, 302064 ] +"302064" = [ 007032, 007033, 002002, 008021, 004025, 011001, 011002, 008021, 103000, 031001, + 004025, 011043, 011041 ] +"302066" = [ 020023, 020024, 020027, 020054, 020023, 020027, 020054, 020025, 020026, 020027, + 020040, 020066, 020027, 020021, 020067, 020027 ] +"302067" = [ 001023, 004025, 002177, 101000, 031001, 020003, 103000, 031001, 005021, 020001, + 005021, 101000, 031000, 302056, 103000, 031000, 033041, 020058, 022061, 101000, + 031000, 302022, 101000, 031001, 302023, 104000, 031001, 020054, 020137, 020012, + 020090, 103000, 031001, 020054, 020137, 020136, 004025, 013012, 004025, 011042, + 104000, 031001, 008021, 004025, 011042, 008021, 115000, 031001, 008021, 004015, + 008021, 004025, 011001, 011002, 008021, 004015, 008021, 004025, 011001, 011002, + 008021, 004025, 004015, 103000, 031001, 004025, 004025, 020003, 110000, 031001, + 004025, 004025, 005021, 005021, 020054, 020024, 020025, 020026, 020027, 020063 + ] +"302069" = [ 007032, 007033, 033041, 020001 ] +"302070" = [ 007032, 007033, 011001, 011002, 011043, 011041, 011016, 011017 ] +"302071" = [ 007032, 007033, 008021, 004025, 011001, 011002, 008021, 103002, 004025, 011043, + 011041, 004025, 011016, 011017 ] +"302072" = [ 007032, 007033, 012101, 012103, 013003 ] +"302073" = [ 020010, 105004, 008002, 020011, 020012, 033041, 020013 ] +"302074" = [ 020003, 004025, 020004, 020005 ] +"302075" = [ 008021, 004025, 013055, 013058, 008021 ] +"302076" = [ 020021, 020022, 026020, 020023, 020024, 020025, 020026 ] +"302077" = [ 007032, 007033, 004025, 012111, 012112, 007032, 004025, 012112 ] +"302078" = [ 002176, 020062, 002177, 013013 ] +"302079" = [ 007032, 002175, 002178, 004025, 013011 ] +"302080" = [ 002185, 004025, 013033 ] +"302081" = [ 004025, 014031 ] +"302082" = [ 004025, 014002, 014004, 014016, 014028, 014029, 014030 ] +"302083" = [ 004025, 008023, 010004, 011001, 011002, 012101, 013003, 008023 ] +"302084" = [ 302031, 302072, 103000, 031000, 101005, 307063, 007061, 101000, 031000, 302069, + 007032, 007033, 105000, 031000, 020031, 020032, 002038, 022043, 302021, 101000, + 031000, 302078, 012113, 101000, 031000, 302004, 105000, 031001, 008002, 020011, + 020012, 033041, 020013, 302036, 101000, 031000, 302047, 008002, 101000, 031000, + 302048 ] +"302085" = [ 105000, 031000, 020003, 103002, 004024, 020004, 020005, 101000, 031000, 302175, + 102000, 031000, 004025, 302076, 102000, 031000, 004025, 013059, 007032, 007033, + 008021, 004025, 011001, 011002, 008021, 103003, 004025, 011043, 011041, 004025, + 011016, 011017, 302077, 007033, 302041, 106000, 031000, 007032, 002175, 002178, + 102005, 004024, 013011, 007032, 103000, 031000, 002185, 101002, 302044, 102000, + 031000, 101002, 302039, 102000, 031000, 101002, 302045, 101000, 031000, 302046, + 101000, 031000, 302083 ] +"302089" = [ 020101, 020102, 020103, 020104, 020105, 020106, 020107, 020108 ] +"302090" = [ 002038, 007063, 022045 ] +"302091" = [ 020001, 004024, 013011 ] +"302092" = [ 011104, 001012, 001013, 010038, 010039, 011007, 011008 ] +"302093" = [ 007032, 007033, 303099, 012101, 103000, 031000, 007032, 007033, 303099, 002039, + 002097, 003024, 003021, 012102, 012103, 013003, 007032, 007033, 303099, 002039, + 002097, 003021, 003024 ] +"302175" = [ 008021, 004025, 013155, 013058, 008021 ] +"303001" = [ 007003, 011001, 011002 ] +"303002" = [ 007004, 011001, 011002 ] +"303003" = [ 007004, 010003, 012001, 012003 ] +"303004" = [ 007004, 010003, 012001, 012003, 011001, 011002 ] +"303011" = [ 007003, 008001, 011001, 011002 ] +"303012" = [ 007004, 008001, 011001, 011002 ] +"303013" = [ 007004, 008001, 010003, 012001, 013003, 011001, 011002 ] +"303014" = [ 007004, 008001, 010003, 012001, 012003, 011001, 011002 ] +"303021" = [ 007004, 007004, 204007, 031021 ] +"303022" = [ 303021, 010003, 204000 ] +"303023" = [ 303021, 012001, 204000 ] +"303024" = [ 303021, 013016, 204000 ] +"303025" = [ 002025, 204007, 031021, 012063, 204000 ] +"303026" = [ 007004, 008003, 204007, 031021, 012001, 204000 ] +"303027" = [ 007004, 204007, 031021, 010003, 204000 ] +"303031" = [ 007004, 008003, 007021, 007022, 008012, 012061 ] +"303032" = [ 020011, 020016 ] +"303033" = [ 020010, 020016 ] +"303040" = [ 008041, 004025, 004026, 301021, 301122, 201131, 202129, 025069, 007004, 013003, + 202000, 201000, 002013, 012101, 010009, 102002, 008040, 035035 ] +"303041" = [ 002152, 002023, 007004, 011001, 011002, 002153, 002154, 012071 ] +"303050" = [ 004086, 008042, 007004, 005015, 006015, 011001, 011002 ] +"303051" = [ 004086, 008042, 007004, 005015, 006015, 011061, 011062 ] +"303052" = [ 004086, 008042, 007009, 005015, 006015, 011001, 011002 ] +"303053" = [ 004086, 008042, 007009, 005015, 006015, 011061, 011062 ] +"303054" = [ 004086, 008042, 007004, 010009, 005015, 006015, 012101, 012103, 011001, 011002 + ] +"303055" = [ 004086, 008042, 007009, 005015, 006015, 012101, 013009, 012103, 011001, 011002 + ] +"303056" = [ 004086, 008042, 207001, 007004, 010009, 207000, 005015, 006015, 012101, 012103, + 011001, 011002 ] +"303099" = [ 003005, 003006, 003007, 002096, 003022, 003003, 003020, 003004, 003023, 003008, + 003009 ] +"304001" = [ 008003, 010004, 012001, 011001, 011002 ] +"304002" = [ 008003, 010004, 011001, 011002 ] +"304003" = [ 008003, 012001 ] +"304004" = [ 008003, 010004, 020010, 012001 ] +"304005" = [ 002024, 007004, 007004, 013003 ] +"304006" = [ 014001, 014001, 014003 ] +"304011" = [ 002163, 002164, 008012, 007024, 002057, 008021, 004001, 004002, 004003, 004004, + 008021, 004024, 110004, 008021, 004004, 004005, 004006, 008021, 004004, 004005, + 004006, 011001, 011002, 103010, 002163, 007004, 012001 ] +"304030" = [ 027031, 028031, 010031 ] +"304031" = [ 001041, 001042, 001043 ] +"304032" = [ 002153, 002154, 020081, 020082, 020012 ] +"304033" = [ 002152, 002166, 002167, 002153, 002154, 012075, 012076, 012063 ] +"304034" = [ 102004, 027001, 028001, 007022, 005043, 020010, 020016, 033003, 010040 ] +"304035" = [ 002153, 002154, 012063, 008001, 012063, 008001, 012063, 008001, 008003, 012063, + 008003, 012063, 008003, 012063, 008003 ] +"304036" = [ 020082, 008012, 020082, 008012, 020081, 008003, 020081, 008003, 020081, 008003, + 020081, 008003 ] +"304037" = [ 002153, 002154, 012063, 008011, 012063, 008011, 012063, 008011, 008003, 012063, + 008003, 012063, 008003, 012063 ] +"304039" = [ 201136, 005042, 201000, 014046 ] +"304040" = [ 025140, 025141, 040026, 040016, 025062, 101000, 031002, 040017 ] +"305001" = [ 011001, 011002, 013060, 013071 ] +"305002" = [ 301012, 012001, 013003, 014051, 013060, 013072, 013080, 013081, 013082, 013083, + 013084 ] +"305003" = [ 301012, 004065, 101000, 031001, 305001 ] +"305004" = [ 301030, 305002, 305003 ] +"305006" = [ 013072, 013082, 013019, 012001, 013073, 013060 ] +"305007" = [ 301029, 301012, 004065, 101000, 031001, 305006 ] +"305008" = [ 305006, 012030 ] +"305009" = [ 301029, 301012, 004065, 101000, 031001, 305008 ] +"305010" = [ 305008, 002091, 002091 ] +"305011" = [ 301029, 301012, 004065, 101000, 031001, 305010 ] +"305016" = [ 014021, 007004, 013003, 011002, 011001, 011041, 011043 ] +"305017" = [ 013080, 013081, 013083, 013085, 013084 ] +"305018" = [ 301029, 301012, 004065, 103000, 031001, 305008, 305016, 305017 ] +"306001" = [ 002032, 102000, 031001, 007062, 022042 ] +"306002" = [ 002031, 022004, 022031 ] +"306003" = [ 002002, 011011, 011012, 012004 ] +"306004" = [ 002032, 002033, 103000, 031001, 007062, 022043, 022062 ] +"306005" = [ 002031, 103000, 031001, 007062, 022004, 022031 ] +"306006" = [ 306003, 306002, 022063 ] +"306007" = [ 001012, 001014, 306008, 004024, 027003, 028003 ] +"306008" = [ 002034, 002035, 002036 ] +"306011" = [ 301021, 001075, 002147, 301011, 301013 ] +"306012" = [ 002007, 008015, 008032, 306029 ] +"306013" = [ 306012, 301011, 301013, 022120, 022121, 004015, 004065, 102000, 031001, 022038, + 022040 ] +"306014" = [ 306012, 301011, 301013, 022120, 022121, 004015, 004065, 101000, 031001, 022038 + ] +"306016" = [ 301011, 301013, 010004, 010051, 302032, 007032, 002002, 008021, 004025, 011001, + 011002, 004025, 011043, 011041, 025026, 012060 ] +"306017" = [ 002032, 008034, 106000, 031002, 007065, 008080, 033050, 022045, 008080, 033050, + 008034 ] +"306018" = [ 002032, 008034, 109000, 031002, 007065, 008080, 033050, 022045, 008080, 033050, + 022064, 008080, 033050, 008034 ] +"306019" = [ 001075, 301011, 301012, 022042, 022120, 022121, 004015, 004065 ] +"306020" = [ 001075, 301011, 301012, 022042, 022120, 022121, 004075, 004065 ] +"306021" = [ 001075, 301011, 301012, 022122, 022123, 012001, 303002 ] +"306022" = [ 001075, 301011, 301012, 022038, 022039 ] +"306023" = [ 001015, 301023, 301011, 301012, 022038, 022039, 022120, 022121 ] +"306024" = [ 306020, 102006, 022038, 022039 ] +"306025" = [ 306019, 102006, 022038, 022039 ] +"306027" = [ 001005, 001052, 002047, 301011, 301013 ] +"306028" = [ 306027, 301011, 301013, 301021 ] +"306029" = [ 025170, 025171, 025172 ] +"306030" = [ 306027, 306029, 111000, 031001, 033002, 301011, 301013, 025025, 025025, 025026, + 022185, 004015, 004065, 101004, 022182 ] +"306031" = [ 306027, 306029, 001053, 033002, 301011, 301013, 301011, 301013, 022185, 022182, + 004016, 004066, 101000, 031001, 022184 ] +"306033" = [ 002033, 007063, 022064 ] +"306034" = [ 002031, 003010, 002040, 022005, 022032 ] +"306035" = [ 112000, 031002, 007062, 008080, 033050, 007065, 008080, 033050, 022043, 008080, + 033050, 022064, 008080, 033050 ] +"306036" = [ 112000, 031002, 007062, 008080, 033050, 007065, 008080, 033050, 022031, 008080, + 033050, 022004, 008080, 033050 ] +"306037" = [ 109000, 031002, 007062, 008080, 033050, 007065, 008080, 033050, 022188, 008080, + 033050 ] +"306038" = [ 010004, 010051, 007033, 012101, 012103, 013003, 007033, 008021, 004025, 011001, + 011002, 008021, 004025, 011041, 004025, 007033, 002005, 007063, 022049 ] +"306039" = [ 022078, 022070, 022073, 022074, 022071, 022076, 022077 ] +"306040" = [ 022078, 022082, 106000, 031001, 022080, 022069, 022086, 022087, 022088, 022089 + ] +"306041" = [ 002032, 102000, 031001, 007062, 022043 ] +"306042" = [ 002169, 007033, 008021, 004025, 011001, 011002 ] +"306043" = [ 041001, 008043, 015028, 008043, 013080, 041005, 041003, 022188, 041002, 106000, + 031000, 004024, 014002, 014002, 014012, 014004, 004024 ] +"307001" = [ 301031, 302011 ] +"307002" = [ 301032, 302011 ] +"307003" = [ 307001, 101000, 031001, 302005 ] +"307004" = [ 307002, 101000, 031001, 302005 ] +"307005" = [ 307001, 101004, 302005 ] +"307006" = [ 307002, 101004, 302005 ] +"307007" = [ 301031, 302012 ] +"307008" = [ 301032, 302012 ] +"307009" = [ 301031, 302013 ] +"307011" = [ 001063, 002001, 301011, 301012, 301024, 007006, 011001, 011016, 011017, 011002, + 011041, 007006, 012001, 012003, 010052, 020009 ] +"307012" = [ 103000, 031001, 008023, 005021, 020001 ] +"307013" = [ 106000, 031001, 001064, 008014, 020061, 008014, 020061, 020018 ] +"307014" = [ 101000, 031001, 020019 ] +"307015" = [ 101000, 031001, 302005, 020002 ] +"307016" = [ 101000, 031001, 020020 ] +"307017" = [ 101000, 031001, 011070 ] +"307018" = [ 008016, 102000, 031001, 008017, 301012, 104000, 031001, 007006, 011001, 011002, + 011041, 020009, 101000, 031001, 020001, 307014 ] +"307020" = [ 307011, 307014, 307016 ] +"307021" = [ 307011, 307012, 307013, 307014, 307015, 307016, 307017, 307018, 307015 ] +"307022" = [ 001015, 301011, 301012, 301022, 008021, 004025, 010004, 012001, 013003, 033038, + 008022, 106025, 002020, 001050, 005021, 007021, 015031, 015032, 008060, 015033, + 015034, 008060, 015033, 015034, 015035, 201131, 202129, 013016, 202000, 201000, + 015011 ] +"307024" = [ 301150, 001015, 001040, 008021, 301011, 301013, 301022, 010036, 025061, 010004, + 012001, 013003, 120000, 031000, 025060, 008021, 004025, 115000, 031001, 015079, + 015080, 008022, 033093, 015089, 015035, 102002, 008060, 015083, 201131, 202129, + 013016, 202000, 201000, 015011, 131000, 031000, 025060, 008021, 004025, 033093, + 125000, 031001, 002020, 001050, 001150, 202127, 304030, 202000, 005021, 007021, + 015038, 015039, 015090, 015081, 015082, 015079, 015089, 015035, 102002, 008060, + 015083, 015084, 015085, 015086, 015087, 015088, 015011 ] +"307030" = [ 015001, 015002 ] +"307031" = [ 008022, 008023, 015001, 008023, 015001, 008023, 015002 ] +"307041" = [ 301001, 001015, 301024, 301011, 301012, 301070, 307030 ] +"307042" = [ 301001, 001015, 301024, 301011, 301012, 008021, 004025, 301070, 307031 ] +"307043" = [ 301001, 001015, 301024, 301011, 301012, 301074, 307030 ] +"307044" = [ 301001, 001015, 301024, 301011, 301012, 008021, 004025, 301074, 307031 ] +"307045" = [ 001063, 008079, 002001, 301011, 301012, 301023, 007030, 007031, 007032, 011001, + 011016, 011017, 008054, 011083, 011084, 011002, 008054, 011085, 011086, 011041, + 008054, 007032, 012023, 012024, 007032, 010052, 020009 ] +"307046" = [ 020060, 102000, 031001, 005021, 020059 ] +"307047" = [ 105000, 031001, 008002, 020011, 020012, 020013, 020092, 020002, 020091 ] +"307048" = [ 008016, 102000, 031001, 008017, 301012, 112000, 031000, 007032, 011001, 008054, + 011083, 011084, 011002, 008054, 011085, 011086, 011041, 008054, 007032, 020009, + 101000, 031000, 020060, 307014, 307047 ] +"307049" = [ 102000, 031000, 022043, 022021 ] +"307050" = [ 101000, 031000, 020085, 102000, 031001, 001064, 020085, 105000, 031001, 001064, + 020086, 020087, 020088, 020089 ] +"307051" = [ 307045, 307046, 307013, 307014, 307047, 307016, 307017, 307049, 307050, 101000, + 031001, 307048 ] +"307052" = [ 001063, 008039, 301011, 301012, 008079, 008039, 301011, 301012, 008039, 301011, + 301012, 301023, 007030, 007031 ] +"307053" = [ 007032, 011001, 008054, 011083, 011084, 011002, 008054, 011085, 011086, 011041, + 008054, 007032, 020009, 020060, 307014, 307047 ] +"307054" = [ 007032, 008039, 004003, 004004, 008023, 012023, 008039, 004003, 004004, 008023, + 012023, 008023, 007032 ] +"307055" = [ 033045, 008016, 008039, 004003, 301012, 008039, 004003, 301012, 307053 ] +"307056" = [ 307052, 307053, 307054, 101000, 031001, 307055 ] +"307060" = [ 007061, 012030 ] +"307061" = [ 301031, 101005, 307060 ] +"307062" = [ 301032, 101005, 307060 ] +"307063" = [ 007061, 012130 ] +"307071" = [ 301090, 004074, 004023, 008023, 010004, 010051, 007004, 010009, 007032, 012101, + 002051, 004051, 012118, 004052, 012119, 013004, 008023, 012151, 007032, 102005, + 008050, 008020, 014032, 014033, 008050, 008020, 102018, 008052, 008022, 007032, + 008053, 004003, 012152, 008053, 004003, 012153, 008053, 004003, 008023, 012101, + 008053, 004003, 008023, 012101, 008023, 007032, 002002, 008053, 004003, 011046, + 008053, 004003, 004004, 004023, 007032, 013060, 013051, 004053, 008050, 008020, + 102006, 008052, 008022, 008053, 004003, 013052, 007032 ] +"307072" = [ 004001, 004001, 004002, 004003, 004004, 004074, 004022, 008023, 010004, 010051, + 007004, 010009, 007032, 012101, 002051, 004051, 012118, 004052, 012119, 013004, + 012151, 007032, 014032, 008023, 004001, 004001, 004002, 004003, 004004, 004022, + 007032, 008023, 013060, 004053, 008023, 102008, 008050, 008020 ] +"307073" = [ 307071, 307072 ] +"307074" = [ 301001, 004001, 004002, 301021, 007030, 007032, 112000, 031001, 004003, 004004, + 004024, 102003, 008023, 012101, 008023, 004004, 004024, 013060, 013012, 013013 + ] +"307075" = [ 301150, 301001, 301021, 007030, 008095, 008096, 008094, 301011, 004023, 301013, + 204008, 031021, 013060, 204000, 004023, 301013, 204008, 031021, 013012, 204000, + 004023, 301013, 204008, 031021, 013013, 204000, 007032, 107003, 004023, 301013, + 008023, 204008, 031021, 012101, 204000, 008023 ] +"307076" = [ 301090, 004074, 004023, 008023, 010004, 010051, 007004, 010009, 007032, 012101, + 002051, 004051, 012118, 004052, 012119, 013004, 008023, 012151, 007032, 102005, + 008050, 008020, 014032, 014033, 008050, 008020, 102018, 008052, 008022, 007032, + 008053, 004003, 012152, 008053, 004003, 012153, 008053, 004003, 008023, 012101, + 008053, 004003, 008023, 012101, 008023, 007032, 002002, 008053, 004003, 011046, + 008053, 004003, 004004, 004074, 004023, 007032, 013060, 013051, 004053, 008050, + 008020, 102006, 008052, 008022, 008053, 004003, 013052, 007032 ] +"307077" = [ 004001, 004001, 004002, 004003, 004004, 004074, 004022, 008023, 010004, 010051, + 007004, 010009, 007032, 012101, 002051, 004051, 012118, 004052, 012119, 013004, + 012151, 007032, 014032, 008023, 004001, 004001, 004002, 004003, 004004, 004074, + 004022, 007032, 008023, 013060, 004053, 008023, 102008, 008050, 008020 ] +"307078" = [ 307076, 307077 ] +"307079" = [ 301090, 302031, 302035, 302036, 101000, 031000, 302047, 008002, 101000, 031000, + 302048, 302037, 102000, 031000, 022061, 020058, 101000, 031000, 302056, 101000, + 031000, 302055, 302043, 302044, 101000, 031001, 302045, 101000, 031000, 302046 + ] +"307080" = [ 301090, 302031, 302035, 302036, 302047, 008002, 302048, 302037, 302043, 302044, + 101002, 302045, 302046 ] +"307081" = [ 301090, 302031, 302035, 302036, 302047, 008002, 302048, 302037, 012122, 013056, + 013057, 020101, 020102, 020103, 020104, 020105, 020106, 020107, 020108, 302043, + 302044, 101002, 302045, 302046 ] +"307082" = [ 301090, 302031, 302035, 302036, 302047, 008002, 302048, 302037, 012121, 012122, + 302043, 302044, 101002, 302045, 302046 ] +"307083" = [ 301090, 302031, 302035, 302036, 302047, 008002, 302048, 302037, 012122, 302043, + 302044, 101002, 302045, 302046 ] +"307084" = [ 301090, 302031, 302035, 302036, 302047, 008002, 302048, 302037, 020055, 101000, + 031001, 205001, 302043, 302044, 101002, 302045, 302046 ] +"307086" = [ 301090, 302031, 302035, 302036, 008002, 302037, 302066, 302043, 302044, 101002, + 302045 ] +"307087" = [ 301001, 002001, 301011, 301012, 301023, 007030, 007031, 302001, 010062, 007004, + 010009, 007032, 012101, 012103, 013003, 007032, 020001, 302004, 101000, 031001, + 302005 ] +"307088" = [ 020003, 004024, 020004, 020005, 004024, 002004, 013033, 102002, 004024, 014031, + 102002, 004024, 013011, 007032, 004024, 012111, 004024, 012112, 007032, 002002, + 008021, 004025, 011001, 011002, 008021 ] +"307089" = [ 307087, 307088 ] +"307090" = [ 301092, 302031, 302035, 302036, 302047, 008002, 302048, 302037, 302043, 302044, + 101002, 302045, 302046 ] +"307091" = [ 301089, 301090, 008010, 301091, 302001, 007004, 010009, 302072, 103000, 031000, + 101005, 307063, 007061, 101000, 031000, 302069, 007032, 007033, 105000, 031000, + 020031, 020032, 002038, 022043, 302021, 101000, 031000, 302078, 101000, 031000, + 302073, 101000, 031000, 302074, 101000, 031000, 302175, 102000, 031000, 004025, + 302076, 302071, 302077, 007033, 101000, 031000, 302079, 007032, 101000, 031000, + 302080, 101000, 031000, 302081, 101000, 031000, 302082, 102000, 031000, 004025, + 013059, 101000, 031000, 302083, 033005, 033006 ] +"307092" = [ 301150, 301001, 208040, 001019, 208000, 301011, 301012, 301021, 007030, 001023, + 108000, 031000, 007031, 204018, 031021, 010004, 010051, 007004, 010009, 204000, + 115000, 031001, 007032, 008010, 204018, 031021, 012101, 012103, 202129, 201132, + 013003, 201000, 202000, 013009, 204000, 007032, 008010, 107000, 031001, 007061, + 204018, 031021, 012130, 013111, 204000, 007061, 105000, 031000, 033041, 204018, + 031021, 020001, 204000, 113000, 031000, 204018, 031021, 020010, 204000, 107000, + 031001, 008002, 204018, 031021, 020011, 020013, 204000, 008002, 105000, 031000, + 204018, 031021, 020062, 013013, 204000, 105000, 031000, 004025, 204018, 031021, + 020003, 204000, 105000, 031000, 004025, 204018, 031021, 013011, 204000, 115000, + 031001, 007032, 008021, 004025, 204018, 031021, 011001, 011002, 204000, 008021, + 204018, 031021, 011043, 011041, 204000, 007032, 105000, 031000, 004025, 204018, + 031021, 014031, 204000, 110000, 031000, 004025, 204018, 031021, 014002, 014002, + 014004, 014028, 014029, 014030, 204000, 113000, 031000, 004025, 002071, 002072, + 204018, 031021, 014072, 204000, 002071, 002072, 204018, 031021, 014072, 204000 + ] +"307096" = [ 301090, 301089, 008010, 301091, 302084, 302085, 033005, 033006 ] +"307101" = [ 301089, 001019, 002001, 301011, 301012, 301021, 007030, 007032, 012101, 007032, + 002177, 020062, 013013 ] +"307102" = [ 301089, 001018, 001015, 001104, 001105, 001106, 003017, 003018, 003019, 301011, + 301012, 301021, 007030, 007032, 012101, 012103, 013003, 007032, 020001, 109000, + 031001, 003016, 012128, 102000, 031001, 007061, 012129, 007061, 013116, 020138, + 004025, 020024, 013055, 020021, 013011, 007032, 008021, 004025, 011001, 011002, + 008021, 004025, 011043, 011041, 033005 ] +"307103" = [ 301150, 307101, 013117, 003028, 013163 ] +"307182" = [ 301090, 302031, 302035, 302036, 302047, 008002, 302048, 302037, 012120, 012122, + 302043, 302044, 101002, 302045, 302046 ] +"308001" = [ 301033, 302011, 022042 ] +"308002" = [ 301034, 302011, 022042 ] +"308003" = [ 301035, 302011, 022042 ] +"308004" = [ 301036, 302011, 022042 ] +"308005" = [ 308004, 302024 ] +"308006" = [ 010004, 010061, 010063, 011001, 011002, 012004, 013003, 022042 ] +"308007" = [ 301055, 302011, 007062, 022042 ] +"308009" = [ 301093, 302001, 302054, 008002, 302055, 302057, 302060 ] +"308010" = [ 001011, 113000, 031001, 301011, 301012, 301021, 004080, 022049, 004080, 022059, + 004080, 022005, 002042, 022032, 002042, 004080 ] +"308011" = [ 001011, 002001, 301011, 301012, 301023, 007030, 007031, 004074, 004023, 008023, + 010051, 007032, 007033, 012101, 013004, 007032, 007033, 302056, 008023, 004003, + 004004, 004023, 007032, 013060, 013051, 004053, 007032 ] +"308012" = [ 004001, 004001, 004002, 004003, 004004, 004074, 004022, 008023, 010051, 007032, + 007033, 012101, 013004, 007032, 007033, 302056, 008023, 004001, 004001, 004002, + 004003, 004004, 004022, 007032, 008023, 013060, 004053, 008023 ] +"308013" = [ 308011, 308012 ] +"308014" = [ 101000, 031000, 301018, 003001, 301093, 208032, 001079, 208000, 302062, 302063, + 101000, 031000, 302092, 101000, 031000, 306033, 101000, 031000, 306034, 101000, + 031000, 306043 ] +"308015" = [ 001003, 001020, 001005, 001011, 001007, 001001, 001002, 002044, 002045, 301011, + 301012, 301021, 022063, 022076, 022077, 022094, 025043, 022078, 105002, 002046, + 022070, 022071, 022073, 022074, 127000, 031001, 002046, 008090, 022102, 008090, + 022084, 120000, 031001, 022080, 022108, 022086, 022087, 022088, 022089, 105000, + 031001, 008090, 022104, 008090, 022186, 022187, 105000, 031001, 008090, 022106, + 008090, 022186, 022187 ] +"308016" = [ 001003, 001020, 001005, 001011, 001007, 001001, 001002, 002044, 002045, 301011, + 301012, 301021, 022063, 022076, 022077, 022094, 025044, 022079, 105002, 002046, + 022070, 022072, 022073, 022075, 127000, 031001, 002046, 008090, 022103, 008090, + 022084, 120000, 031001, 022081, 022108, 022086, 022087, 022088, 022089, 105000, + 031001, 008090, 022105, 008090, 022186, 022187, 105000, 031001, 008090, 022107, + 008090, 022186, 022187 ] +"308017" = [ 301056, 302001, 302052, 101000, 031000, 302056, 302064, 302053, 101000, 031000, + 302004, 101000, 031000, 302005, 101000, 031000, 302038, 101000, 031000, 306039 + ] +"308018" = [ 301150, 301093, 302001, 302072, 101000, 031000, 302056, 101000, 031000, 302064 + ] +"308021" = [ 001011, 002001, 301011, 301012, 301023, 007030, 007031, 004074, 004023, 008023, + 010051, 007032, 007033, 012101, 013004, 007032, 007033, 302056, 008023, 004003, + 004004, 004074, 004023, 007032, 013060, 013051, 004053, 007032 ] +"308022" = [ 004001, 004001, 004002, 004003, 004004, 004074, 004022, 008023, 010051, 007032, + 007033, 012101, 013004, 007032, 007033, 302056, 008023, 004001, 004001, 004002, + 004003, 004004, 004074, 004022, 007032, 008023, 013060, 004053, 008023 ] +"308023" = [ 308021, 308022 ] +"309001" = [ 301037, 101000, 031001, 303011 ] +"309002" = [ 301038, 101000, 031001, 303011 ] +"309003" = [ 301037, 101000, 031001, 303012 ] +"309004" = [ 301038, 101000, 031001, 303012 ] +"309005" = [ 301037, 302004, 101000, 031001, 303013 ] +"309006" = [ 301038, 302004, 101000, 031001, 303013 ] +"309007" = [ 301037, 302004, 101000, 031001, 303014 ] +"309008" = [ 301038, 302004, 101000, 031001, 303014 ] +"309011" = [ 301039, 101000, 031001, 303011 ] +"309012" = [ 301039, 101000, 031001, 303012 ] +"309013" = [ 301039, 302004, 101000, 031001, 303013 ] +"309014" = [ 301039, 302004, 101000, 031001, 303014 ] +"309015" = [ 301040, 101000, 031001, 303011 ] +"309016" = [ 301040, 101000, 031001, 303012 ] +"309017" = [ 301040, 302004, 101000, 031001, 303013 ] +"309018" = [ 301040, 302004, 101000, 031001, 303014 ] +"309019" = [ 301031, 002003, 101000, 031001, 303011 ] +"309020" = [ 301031, 002003, 104000, 031001, 007003, 011003, 011004, 011005 ] +"309021" = [ 301001, 005001, 006001, 007030, 301014, 002003, 002121, 112000, 031001, 007007, + 301021, 011003, 011110, 011004, 011111, 033002, 011006, 011112, 033002, 010071, + 027079 ] +"309022" = [ 301001, 005001, 006001, 007030, 301014, 002003, 002121, 110000, 031001, 007007, + 301021, 012007, 012008, 033002, 011006, 011112, 033002, 010071, 027079 ] +"309023" = [ 301001, 005001, 006001, 007030, 301014, 002003, 302004, 302005, 114000, 031001, + 007007, 301021, 101000, 031001, 002121, 015063, 015064, 015065, 015066, 015067, + 015068, 015069, 015070, 015071, 015072, 033002, 010071, 027079 ] +"309024" = [ 301132, 201151, 202130, 002121, 202000, 201000, 008021, 004025, 109000, 031002, + 007007, 301021, 011003, 011004, 033002, 011006, 033002, 010071, 027079 ] +"309025" = [ 301132, 201151, 202130, 002121, 202000, 201000, 008021, 004025, 106000, 031002, + 007007, 301021, 012007, 033002, 010071, 027079 ] +"309026" = [ 301132, 302004, 302005, 008092, 008093, 008021, 004025, 201138, 202126, 002121, + 202000, 201000, 115000, 031002, 007007, 301021, 015073, 015064, 015074, 015066, + 015075, 015068, 015076, 015077, 015078, 015072, 033002, 010071, 027079 ] +"309027" = [ 301132, 008043, 025061, 302004, 302005, 008092, 008093, 008021, 004025, 118000, + 031001, 002090, 115000, 031002, 007007, 301021, 015073, 015064, 015074, 015066, + 015075, 015068, 015076, 015077, 015078, 015072, 033002, 010071, 027079 ] +"309030" = [ 015004, 015005, 104000, 031001, 004015, 008006, 007004, 015003 ] +"309031" = [ 015004, 015005, 104000, 031001, 004025, 008006, 007004, 015003 ] +"309040" = [ 301075, 301076, 309030 ] +"309041" = [ 307041, 301075, 301076, 309030 ] +"309042" = [ 307042, 301075, 301076, 309030 ] +"309043" = [ 307043, 301075, 301076, 309030 ] +"309044" = [ 307044, 301075, 301076, 309030 ] +"309045" = [ 301075, 301076, 309031 ] +"309046" = [ 307041, 301075, 301076, 309031 ] +"309047" = [ 307042, 301075, 301076, 309031 ] +"309048" = [ 307043, 301075, 301076, 309031 ] +"309049" = [ 307044, 301075, 301076, 309031 ] +"309050" = [ 301110, 301113, 301114, 101000, 031002, 303050, 101000, 031001, 303051 ] +"309051" = [ 301110, 301113, 301114, 101000, 031002, 303052, 101000, 031001, 303053 ] +"309052" = [ 301111, 301113, 301114, 302049, 022043, 101000, 031002, 303054, 101000, 031001, + 303051 ] +"309053" = [ 301112, 301113, 301114, 101000, 031002, 303054, 101000, 031001, 303051 ] +"309054" = [ 301001, 001011, 301011, 301012, 301021, 007030, 007031, 007007, 004023, 004059, + 115000, 031001, 008001, 008023, 007004, 010009, 012101, 012103, 008023, 011001, + 011002, 008023, 011019, 008050, 008020, 008050, 008020 ] +"309055" = [ 301111, 025061, 001081, 001082, 002067, 002095, 002096, 002097, 002081, 002082, + 002084, 002191, 301113, 301114, 010004, 302032, 007032, 002002, 011001, 011002, + 007032, 020003, 302049, 022043, 101000, 031002, 303055 ] +"309056" = [ 301150, 301111, 301128, 301113, 008091, 301021, 007007, 008091, 101000, 031002, + 303056, 101000, 031001, 303051 ] +"309057" = [ 301150, 301111, 301128, 301113, 301114, 302049, 022043, 101000, 031002, 303056, + 101000, 031001, 303051 ] +"309060" = [ 301123, 301121, 302050, 303040 ] +"309061" = [ 301120, 008041, 301122, 201131, 202129, 025069, 007004, 202000, 201000, 033007, + 033035, 033015, 013009, 033007, 033035, 033015, 002013, 012101, 033007, 033035, + 033015 ] +"309062" = [ 301120, 008041, 301122, 005001, 033035, 033015, 006001, 033035, 033015, 007007, + 033035, 033015, 011003, 033035, 033015, 011004, 033035, 033015, 033007 ] +"309063" = [ 301120, 008041, 301122, 005001, 033035, 033015, 006001, 033035, 033015, 007007, + 033035, 033015, 011003, 033035, 033015, 011004, 033035, 033015, 033007 ] +"309064" = [ 301120, 008041, 301122, 201131, 202129, 104002, 025069, 007004, 033035, 033015, + 013003, 033035, 033015, 202000, 201000, 104002, 002013, 012101, 033035, 033015, + 012103, 033035, 033015, 010009, 033035, 033015 ] +"309065" = [ 301120, 008041, 301122, 005001, 033035, 033015, 006001, 033035, 033015, 007007, + 033035, 033015, 011003, 033035, 033015, 011004, 033035, 033015 ] +"309066" = [ 301120, 008041, 301122, 008040, 201131, 202129, 025069, 007004, 013003, 202000, + 201000, 002013, 012101, 012103, 010009, 010007, 011002, 011001 ] +"309070" = [ 001035, 001032, 001015, 001063, 301001, 301011, 301012, 301021, 207001, 010001, + 207000, 008086, 007030, 025031, 008021, 004014, 010004, 010051, 010009, 020010, + 013095, 128000, 031002, 113000, 031000, 008086, 007004, 011001, 011002, 012101, + 012102, 012103, 010009, 103000, 031000, 011021, 011022, 011005, 104000, 031000, + 008086, 007006, 011001, 011002, 105000, 031000, 008086, 007006, 012101, 012102, + 012103 ] +"309071" = [ 301001, 002014, 002003, 301113, 301114, 301023, 007030, 007007, 103000, 031001, + 007009, 011001, 011002 ] +"310001" = [ 301042, 303031, 303032, 101026, 303025 ] +"310002" = [ 301042, 303031, 303032, 101009, 303023 ] +"310003" = [ 301042, 303031, 303032, 101006, 303023 ] +"310004" = [ 301042, 303031, 303032, 101003, 303024 ] +"310005" = [ 301042, 303031, 303033, 101000, 031001, 303025 ] +"310006" = [ 301042, 303031, 303033, 101000, 031001, 303023 ] +"310007" = [ 301042, 303031, 303033, 101000, 031001, 303024 ] +"310008" = [ 310011, 101019, 310012, 002150, 025079, 025080, 033032, 014045 ] +"310009" = [ 310011, 101015, 310012 ] +"310010" = [ 310011, 101005, 310012 ] +"310011" = [ 008070, 001033, 001034, 008070, 001033, 001034, 001007, 002048, 005040, 025075, + 201133, 005041, 201000, 005043, 025070, 033030, 033031, 004001, 004002, 004003, + 004004, 004005, 202131, 201138, 004006, 201000, 202000, 005001, 006001, 202126, + 007001, 202000, 007024, 005021, 007025, 005022, 033033, 002151, 012064, 002151, + 012064, 002151, 012064, 002151, 012064 ] +"310012" = [ 002150, 025076, 025077, 025078, 033032, 201132, 202129, 012063, 202000, 201000 + ] +"310013" = [ 001007, 005040, 004001, 004002, 004003, 004004, 004005, 004006, 005001, 006001, + 007025, 005043, 025085, 201131, 202129, 002150, 008023, 008072, 014027, 008072, + 014027, 002150, 008023, 008072, 014027, 008072, 014027, 002150, 008023, 008072, + 014027, 008072, 014027, 202000, 201000, 201132, 202129, 002150, 008023, 008072, + 012063, 008072, 012063, 002150, 008023, 008072, 012063, 008072, 012063, 008023, + 008072, 012063, 008072, 012063, 002150, 008023, 008072, 012063, 008072, 012063, + 202000, 201000 ] +"310014" = [ 301072, 303041, 304011 ] +"310015" = [ 301072, 007024, 010002, 303041, 101003, 304032, 002152, 002024, 007004, 007004, + 013003, 101003, 304033 ] +"310016" = [ 301072, 007024, 010002, 303041, 101012, 304032, 002152, 002024, 007004, 007004, + 013003, 101012, 304033 ] +"310018" = [ 001007, 005040, 004001, 004043, 004004, 004005, 004006, 207002, 026030, 207000, + 005002, 006002, 033072, 007025, 005022, 207002, 015001, 207000, 008003, 207001, + 010004, 207000, 008003, 008003, 033042, 207001, 007004, 207000, 207002, 015001, + 207000, 008003, 207002, 020081, 207000, 020065, 008029, 207004, 015030, 207000, + 008075 ] +"310019" = [ 001007, 002019, 301011, 301013, 301023, 007025, 008021, 007025, 008021, 007025, + 008021, 008029, 005040, 008075, 008003, 010004, 008003, 207002, 015001, 207000, + 033070, 015030, 207002, 020081, 207000, 008003, 033042, 007004, 207002, 015001, + 207000, 008003, 113021, 007004, 007004, 207002, 008021, 015005, 008021, 015005, + 033007, 207000, 008026, 101020, 025143, 008026, 008043, 109015, 007004, 008090, + 207006, 015008, 207000, 008090, 207002, 033007, 207000, 008043, 033071, 108008, + 202124, 201107, 002071, 201000, 202000, 207002, 020081, 207000 ] +"310020" = [ 310022, 301011, 301013, 301021, 304034, 310021 ] +"310021" = [ 108000, 031001, 201131, 202129, 007004, 007004, 202000, 201000, 015020, 010002 + ] +"310022" = [ 001007, 002019, 001033, 002172 ] +"310023" = [ 301072, 030021, 030022, 008012, 007024, 007025, 010002, 101012, 304032, 105002, + 002152, 002024, 007004, 007004, 013003, 101012, 304033 ] +"310024" = [ 301072, 030021, 030022, 008012, 007024, 007025, 010002, 101003, 304032, 105002, + 002152, 002024, 007004, 007004, 013003, 101003, 304033 ] +"310025" = [ 001007, 008021, 004001, 004002, 004003, 004004, 004005, 201138, 202131, 004006, + 202000, 201000, 201132, 005041, 201000, 201129, 005043, 201000, 005002, 006002, + 013040, 020029, 104024, 005042, 012163, 021083, 021084, 115003, 004001, 004002, + 004003, 201142, 202131, 004026, 202000, 201000, 005001, 006001, 201138, 202129, + 007001, 202000, 201000, 008021, 004001, 004002, 004003, 004004, 004005, 005040, + 101003, 012070, 025054, 101004, 025055, 008007, 104028, 005002, 006002, 002111, + 005021 ] +"310026" = [ 310022, 025060, 008021, 301011, 301012, 201138, 202131, 004006, 202000, 201000, + 033039, 033007, 304030, 304031, 002020, 001050, 202127, 304030, 202000, 304031, + 201133, 202131, 004016, 202000, 201000, 301021, 304030, 010035, 005021, 010036, + 113000, 031002, 301021, 005021, 108000, 031001, 002121, 007040, 015037, 008023, + 201125, 015037, 201000, 008023, 033007, 108000, 031002, 007007, 015036, 008023, + 201123, 015036, 201000, 008023, 033007, 116000, 031002, 007009, 010004, 012001, + 013001, 008023, 201120, 010004, 201000, 201122, 012001, 201000, 201123, 013001, + 201000, 008023, 033007, 008003, 007009, 010004, 008023, 201120, 010004, 201000, + 008023, 033007 ] +"310027" = [ 301071, 301011, 301013, 301021, 030021, 030022, 010002, 304036, 002152, 002167, + 101011, 304035 ] +"310028" = [ 301071, 301011, 301013, 301021, 030021, 030022, 010002, 304036, 002152, 002167, + 101011, 304037 ] +"310029" = [ 110000, 031001, 201138, 202130, 007004, 007004, 202000, 201000, 015020, 010002, + 012101, 013098 ] +"310030" = [ 310022, 301011, 301013, 301021, 304034, 310029 ] +"310050" = [ 310051, 310052, 101000, 031002, 310053, 101004, 310054, 020010, 310052, 101015, + 310053, 310052, 101005, 310053 ] +"310051" = [ 001007, 005040, 201133, 005041, 201000, 201132, 025070, 201000, 202126, 007001, + 202000, 007025, 005022, 102009, 002151, 012064 ] +"310052" = [ 002019, 301011, 301012, 202131, 201138, 004006, 201000, 202000, 301021, 007024, + 005021, 005043 ] +"310053" = [ 201134, 005042, 201000, 025076, 033032, 012163 ] +"310054" = [ 201134, 005042, 201000, 025076, 033032, 201131, 202129, 102002, 008023, 014027, + 008023, 202000, 201000 ] +"310055" = [ 310051, 310052, 102020, 025076, 025052, 101000, 031002, 025050 ] +"310060" = [ 001007, 001033, 002019, 002020, 301011, 301012, 207003, 004006, 207000, 304030, + 301021, 007024, 005021, 007025, 005022, 008075, 201133, 005041, 201000, 005045, + 005043, 005040, 010001, 201129, 007002, 201000, 202127, 201125, 021166, 201000, + 202000, 008012, 020010, 020014, 002165, 033075, 107003, 008076, 006029, 006029, + 025140, 025141, 033076, 033077, 008076, 033078, 033003, 104000, 031002, 201133, + 005042, 201000, 014044 ] +"310061" = [ 001007, 001033, 001034, 002019, 002020, 301011, 301012, 207003, 004006, 207000, + 005040, 005041, 005043, 033079, 033080, 033078, 301021, 201129, 007002, 201000, + 007024, 005021, 007025, 005022, 025075, 111000, 031002, 005042, 202131, 002153, + 002154, 202000, 002104, 012066, 012163, 012158, 012159, 033081 ] +"310062" = [ 001007, 001033, 001034, 002019, 002020, 301011, 301012, 207003, 004006, 207000, + 005040, 201133, 005041, 005043, 201000, 008076, 033082, 301021, 201129, 007002, + 201000, 007024, 005021, 007025, 005022, 008072, 008029, 105000, 031002, 005042, + 002155, 033083, 014043, 015042 ] +"310063" = [ 001007, 001033, 001034, 002019, 002020, 301011, 301012, 207003, 004006, 207000, + 005040, 201133, 005041, 005043, 201000, 033082, 301021, 201129, 007002, 201000, + 007024, 005021, 007025, 005022, 008075, 008013, 008072, 033084, 007062, 033086, + 022043, 007062, 007062, 033086, 022043 ] +"310064" = [ 001007, 001033, 001034, 002019, 002020, 301011, 301012, 207003, 004006, 207000, + 005040, 201133, 005041, 005043, 201000, 033082, 301021, 201129, 007002, 201000, + 007024, 005021, 007025, 005022, 008075, 008029, 008046, 033085, 033086, 015049, + 033086, 102011, 002155, 015062 ] +"310065" = [ 001007, 001033, 001034, 002019, 002020, 301011, 301012, 207003, 004006, 207000, + 005040, 033082, 301021, 201129, 007002, 201000, 007024, 005021, 007025, 005022, + 008075, 033071, 033070, 020021, 015045, 015046, 008065, 033087, 008003, 010004, + 008003, 207002, 015001, 207000, 105012, 010040, 010004, 207003, 015005, 207000, + 008046, 107019, 010040, 010004, 008090, 207006, 015008, 207000, 008090 ] +"310066" = [ 001007, 001033, 001034, 002019, 002020, 301011, 301012, 207003, 004006, 207000, + 005040, 033082, 301021, 201129, 007002, 201000, 007024, 005021, 007025, 005022, + 008075, 020081, 207004, 015030, 207000, 020065, 015041, 033086, 033087, 033088, + 008003, 207001, 007004, 207000, 008003, 207002, 015001, 207000, 008003, 033042, + 207001, 007004, 207000, 207002, 015001, 207000, 008003, 001032, 207002, 015001, + 207000 ] +"310067" = [ 001033, 001034, 025061, 025062, 001007, 002153, 001012, 201138, 002026, 002027, + 201000, 002028, 002029, 002161, 002164, 002023, 008012, 008013, 001124, 005001, + 006001, 004001, 004002, 004003, 004004, 004005, 004006, 004086, 011001, 011002, + 011003, 011004, 002162, 007004, 012001, 020014, 007024, 001023, 104000, 031001, + 002162, 007004, 012001, 020014, 113000, 031001, 004086, 002020, 001007, 002019, + 005042, 002153, 005040, 007024, 005021, 002162, 007004, 012001, 020014, 119000, + 031001, 004086, 004086, 005001, 006001, 011003, 011004, 011113, 025148, 103000, + 031001, 008023, 011003, 011004, 008023, 103000, 031001, 020111, 020112, 020114, + 001033, 008021, 011095, 011096, 007004, 008021, 011095, 011096, 007004, 008021, + 008086, 011095, 011096, 007004, 008086, 102004, 001032, 033007, 008092, 011003, + 011004, 007004, 008092, 033066, 020081, 020012, 020056, 117000, 031001, 008023, + 020016, 008092, 008003, 012001, 008003, 020016, 008092, 025149, 020016, 020014, + 013093, 013109, 040038, 008011, 014050, 008011, 008023 ] +"310068" = [ 008070, 001033, 001034, 001007, 002019, 012064, 005040, 201136, 005041, 201000, + 005043, 301011, 301012, 201138, 202131, 004006, 202000, 201000, 005001, 006001, + 202126, 007001, 202000, 010007, 007024, 005021, 007025, 005022, 013040, 012101, + 201131, 202129, 011011, 202000, 201000, 201130, 202129, 011012, 202000, 201000, + 020029, 020010, 020014, 013162, 014050 ] +"310069" = [ 005042, 201139, 002155, 201000, 025077, 025078, 033007, 201132, 202129, 012063, + 202000, 201000 ] +"310070" = [ 310068, 101013, 310069 ] +"310071" = [ 310068, 101015, 310069 ] +"310072" = [ 310068, 101026, 310069 ] +"310077" = [ 001033, 001034, 025061, 025062, 001007, 002153, 001012, 201138, 002026, 002027, + 201000, 002028, 002029, 002161, 002164, 002023, 008012, 008013, 001124, 005001, + 006001, 004001, 004002, 004003, 004004, 004005, 004006, 004086, 002162, 007004, + 011001, 011002, 011003, 011004, 012001, 020014, 007024, 001023, 104000, 031001, + 002162, 007004, 012001, 020014, 113000, 031001, 004086, 002020, 001007, 002019, + 005042, 002153, 005040, 007024, 005021, 002162, 007004, 012001, 020014, 119000, + 031001, 004086, 004086, 005001, 006001, 011003, 011004, 011113, 025148, 103000, + 031001, 008023, 011003, 011004, 008023, 103000, 031001, 020111, 020112, 020114, + 001033, 008021, 007004, 011095, 011096, 008021, 007004, 011095, 011096, 008021, + 008086, 007004, 011095, 011096, 008086, 102004, 001044, 033007, 008092, 007004, + 011003, 011004, 008092, 033066, 020081, 020012, 020056, 117000, 031001, 008023, + 020016, 008092, 008003, 012001, 008003, 020016, 008092, 025149, 020016, 020014, + 013093, 013109, 040038, 008011, 014050, 008011, 008023 ] +"310078" = [ 001007, 001016, 002019, 002020, 001033, 001034, 301011, 301013, 005040, 201132, + 005041, 201000, 005043, 033079, 033080, 033078, 007002, 102003, 008097, 012164, + 117000, 031001, 005001, 006001, 007024, 005021, 007025, 005022, 109000, 031001, + 005042, 002153, 002154, 002104, 012066, 012163, 012158, 012159, 033094 ] +"310080" = [ 001033, 001034, 001007, 002019, 005040, 025061, 201133, 005041, 201000, 301011, + 301012, 207003, 004006, 207000, 202126, 007001, 202000, 005063, 005064, 005066, + 005077, 006043, 006041, 006042, 008098, 012101, 008098, 012101, 008098, 012101, + 008098, 012101, 008098, 007074, 005076, 201124, 202127, 025084, 202000, 201000, + 033100, 033102, 033104, 033105, 113007, 005078, 005001, 006001, 007024, 005021, + 007025, 005022, 007073, 201132, 202129, 021166, 202000, 201000, 117003, 005042, + 202131, 002153, 002154, 202000, 025077, 025078, 033101, 033103, 002104, 201131, + 202136, 014045, 202000, 201000, 012158, 012159, 117002, 005042, 202131, 002153, + 002154, 202000, 025077, 025078, 033101, 033103, 002104, 201132, 202136, 014045, + 202000, 201000, 012158, 012159, 117003, 005042, 202131, 002153, 002154, 202000, + 025077, 025078, 033101, 033103, 002104, 201133, 202136, 014045, 202000, 201000, + 012158, 012159, 117003, 005042, 202131, 002153, 002154, 202000, 025077, 025078, + 033101, 033103, 002104, 201133, 202136, 014045, 202000, 201000, 012158, 012159, + 117002, 005042, 202131, 002153, 002154, 202000, 025077, 025078, 033101, 033103, + 002104, 201131, 202135, 014045, 202000, 201000, 012158, 012159 ] +"310081" = [ 001033, 001034, 001007, 002019, 005040, 025061, 201133, 005041, 201000, 301011, + 301012, 207003, 004006, 207000, 202126, 007001, 202000, 005063, 005064, 005066, + 005077, 006043, 006041, 006042, 008098, 012101, 008098, 012101, 008098, 012101, + 008098, 012101, 008098, 007074, 005076, 201124, 202127, 025084, 202000, 201000, + 033095, 033097, 033106, 033099, 113008, 005078, 005001, 006001, 007024, 005021, + 007025, 005022, 007073, 201132, 202129, 021166, 202000, 201000, 117002, 005042, + 202131, 002153, 002154, 202000, 025077, 025078, 033096, 033098, 002104, 201131, + 202138, 014045, 202000, 201000, 012158, 012159, 117002, 005042, 202131, 002153, + 002154, 202000, 025077, 025078, 033096, 033098, 002104, 201132, 202138, 014045, + 202000, 201000, 012158, 012159, 117002, 005042, 202131, 002153, 002154, 202000, + 025077, 025078, 033096, 033098, 002104, 201132, 202138, 014045, 202000, 201000, + 012158, 012159, 117008, 005042, 202131, 002153, 002154, 202000, 025077, 025078, + 033096, 033098, 002104, 201131, 202137, 014045, 202000, 201000, 012158, 012159, + 117002, 005042, 202131, 002153, 002154, 202000, 025077, 025078, 033096, 033098, + 002104, 201132, 202137, 014045, 202000, 201000, 012158, 012159, 117004, 005042, + 202131, 002153, 002154, 202000, 025077, 025078, 033096, 033098, 002104, 201133, + 202137, 014045, 202000, 201000, 012158, 012159, 117001, 005042, 202131, 002153, + 002154, 202000, 025077, 025078, 033096, 033098, 002104, 201131, 202136, 014045, + 202000, 201000, 012158, 012159, 117005, 005042, 202131, 002153, 002154, 202000, + 025077, 025078, 033096, 033098, 002104, 201131, 202136, 014045, 202000, 201000, + 012158, 012159 ] +"310082" = [ 008070, 001033, 001034, 001007, 002019, 005040, 025061, 201133, 005041, 201000, + 005043, 006042, 301011, 301012, 207003, 004006, 207000, 301021, 107002, 005080, + 201132, 202129, 021166, 202000, 201000, 007007, 202126, 007001, 202000, 007024, + 005021, 007025, 005022, 201124, 202127, 025084, 202000, 201000, 007073, 012070, + 012064, 008098, 012101, 008098, 033107, 033108, 033109, 118024, 005042, 104004, + 005079, 202130, 002154, 202000, 002104, 002153, 025077, 025078, 207002, 012063, + 207000, 207001, 033089, 033090, 207000, 033110 ] +"310083" = [ 001033, 001034, 025060, 001007, 002019, 127012, 005040, 201130, 006034, 201000, + 005034, 301021, 008012, 301011, 301012, 004007, 008085, 003030, 002104, 003030, + 002104, 003029, 008075, 202129, 201131, 002111, 201000, 202000, 005021, 021062, + 021026, 021027, 033111 ] +"310084" = [ 001033, 001034, 025060, 001007, 002019, 005040, 006034, 005034, 301021, 301011, + 301012, 004007, 014058, 033112, 117005, 008085, 008012, 003030, 002104, 003030, + 002104, 008075, 202129, 201131, 002111, 201000, 202000, 005021, 021062, 021026, + 021027, 025056 ] +"310085" = [ 001007, 301005, 002019, 002020, 004001, 004002, 004003, 004004, 004005, 202131, + 201138, 004006, 201000, 202000, 005001, 006001, 007024, 005021, 007025, 005022, + 005043, 005040, 201133, 005041, 201000, 202126, 007001, 202000, 033113, 105170, + 104100, 201137, 005042, 201000, 014046, 002019, 110007, 005060, 005061, 020083, + 106020, 005042, 008023, 014044, 008023, 014044, 008023, 008072, 020083, 008029, + 020083 ] +"310086" = [ 001007, 301005, 002019, 002020, 004001, 004002, 004003, 004004, 004005, 202131, + 201138, 004006, 201000, 202000, 005001, 006001, 007024, 005021, 007025, 005022, + 005043, 005040, 201133, 005041, 201000, 202126, 007001, 202000, 033113, 109004, + 025140, 201129, 025141, 201000, 040026, 040016, 101000, 031002, 040017, 002019, + 110007, 005060, 005061, 020083, 106020, 005042, 008023, 014044, 008023, 014044, + 008023, 008072, 020083, 008029, 020083 ] +"310191" = [ 001007, 001033, 001034, 002019, 002020, 301011, 301012, 207003, 004006, 207000, + 007024, 005021, 007025, 005022, 102002, 008076, 301021, 201131, 005041, 201000, + 005045, 201133, 005043, 201000, 202126, 201132, 007001, 201000, 202000, 025182, + 002165, 108002, 008076, 006029, 006029, 025140, 025141, 033076, 033077, 025187, + 008076, 105000, 031002, 201133, 005042, 201000, 014044, 014049 ] +"311001" = [ 301051, 007002, 012001, 011001, 011002, 011031, 011032, 011033, 020041 ] +"311002" = [ 301065, 301066, 311003, 311004 ] +"311003" = [ 010070, 011001, 011002, 012001, 013002 ] +"311004" = [ 101000, 031000, 011034, 101000, 031000, 011035, 101000, 031000, 011075, 101000, + 031000, 011076, 101000, 031000, 033025, 101000, 031000, 033026 ] +"311005" = [ 001008, 001023, 301021, 301011, 301013, 007010, 008009, 011001, 011002, 011031, + 011036, 012101, 033025 ] +"311006" = [ 007010, 011001, 011002, 002064, 012101, 012103 ] +"311007" = [ 007010, 301021, 011001, 011002, 002064, 012101, 012103 ] +"311008" = [ 001008, 301011, 301013, 301021, 008004, 101000, 031001, 311006 ] +"311009" = [ 001008, 301011, 301013, 301021, 008004, 101000, 031001, 311007 ] +"311010" = [ 001008, 001023, 001006, 001110, 001111, 001112, 204002, 031021, 301011, 301013, + 301021, 007010, 010053, 008009, 011001, 011002, 002064, 011100, 011101, 011102, + 011103, 011104, 012101, 002170, 201144, 202133, 013002, 202000, 201000, 201135, + 202130, 013003, 202000, 201000, 101000, 031000, 012103, 033026, 101000, 031000, + 020042, 103000, 031000, 020043, 020044, 020045, 101000, 031000, 033025, 103000, + 031001, 011075, 011076, 011039, 102000, 031000, 011037, 011077, 103000, 031000, + 011034, 011035, 011036, 204000, 119000, 031001, 301011, 301013, 301021, 007007, + 011105, 204007, 031021, 011076, 011075, 204000, 011106, 011107, 011108, 011109, + 012101, 011001, 201130, 011084, 201000 ] +"311011" = [ 001023, 008004, 301011, 301013, 005002, 006002, 007004, 011001, 011002, 012101, + 106000, 031001, 008046, 201139, 202126, 015026, 202000, 201000, 106000, 031001, + 008046, 201138, 202130, 015026, 202000, 201000, 015052, 015053, 015054, 015055, + 007004, 007004, 013099, 013100, 013101 ] +"311012" = [ 301150, 001008, 001111, 001112, 301011, 301013, 301021, 008004, 110000, 031002, + 301011, 301013, 311007, 201144, 202133, 013002, 202000, 201000, 013003, 033026 + ] +"312001" = [ 301043, 304001 ] +"312002" = [ 301043, 304002 ] +"312003" = [ 301042, 304003 ] +"312004" = [ 301042, 304004 ] +"312005" = [ 301042, 020014 ] +"312006" = [ 301044, 304005 ] +"312007" = [ 301042, 304006 ] +"312010" = [ 001007, 005040, 002021, 005041, 004001, 004043 ] +"312011" = [ 202131, 201149, 004006, 201000, 202126, 010002, 202000, 005043, 005053 ] +"312012" = [ 202129, 201132, 101019, 012063, 201000, 202000 ] +"312013" = [ 005042, 202129, 201135, 012063, 201000, 202000 ] +"312014" = [ 312010, 312011, 105056, 301023, 005042, 005052, 312012, 312013 ] +"312015" = [ 109011, 301023, 005042, 005052, 202129, 201132, 101004, 012063, 202000, 201000 + ] +"312016" = [ 312010, 312011, 312015 ] +"312017" = [ 109008, 301023, 005042, 005052, 202129, 201132, 101003, 012063, 202000, 201000 + ] +"312018" = [ 312010, 312011, 312017 ] +"312019" = [ 301047, 301048, 015015, 029002, 021076, 106012, 201129, 006030, 201000, 102012, + 005030, 021075, 021066 ] +"312020" = [ 301047, 301048, 015015, 029002, 021076, 104012, 006030, 102012, 005030, 021075, + 021066 ] +"312021" = [ 301047, 101003, 301049, 011012, 011011, 021067 ] +"312022" = [ 301047, 008022, 011012, 011050, 022070, 022026, 312041, 010050, 021068, 021071, + 021072, 021073, 312042, 021062, 015011 ] +"312023" = [ 301047, 103003, 008022, 012061, 022050, 021069, 021085 ] +"312024" = [ 312020, 008060, 008022, 008060, 008022, 025014, 022101, 022097, 022098, 022099, + 022100 ] +"312025" = [ 312019, 008060, 008022, 008060, 008022, 025014, 022101, 022097, 022098, 022099, + 022100 ] +"312026" = [ 301046, 301011, 301013, 301023, 312031, 101004, 312030, 021110, 301023, 321027, + 021111, 301023, 321027, 021112, 301023, 321027, 021113, 301023, 321027 ] +"312027" = [ 301047, 105009, 301023, 007021, 012061, 007021, 012061, 021085, 021070 ] +"312028" = [ 301046, 301011, 301013, 301023, 008025, 201136, 004006, 201000, 312031, 312032, + 101004, 312030, 101002, 312033, 021110, 301023, 321028, 021111, 301023, 321028, + 021112, 301023, 321028, 021113, 301023, 321028 ] +"312029" = [ 301046, 301011, 301013, 301023, 008025, 201136, 004006, 201000, 005034, 201129, + 006034, 201000, 033055, 011081, 011082, 021101, 021102, 021103, 312032, 101004, + 312030, 101002, 312033, 021110, 301023, 321028, 021111, 301023, 321028, 021112, + 301023, 321028, 021113, 301023, 321028 ] +"312030" = [ 201130, 202129, 011012, 202000, 201000, 011052, 201135, 202130, 011011, 202000, + 201000, 011053, 021104 ] +"312031" = [ 005034, 006034, 021109, 011081, 011082, 021101, 021102, 021103 ] +"312032" = [ 021120, 021121, 013055, 021122 ] +"312033" = [ 002104, 008022, 012063, 012065 ] +"312034" = [ 301046, 301011, 301013, 301023, 008025, 201136, 004006, 201000, 312031, 312032, + 101004, 312030, 101002, 312033, 103018, 021110, 301023, 321028 ] +"312035" = [ 001007, 001031, 002048, 202124, 002026, 002027, 202000, 005040, 004001, 004002, + 004003, 004004, 004005, 004006, 005002, 006002, 005034, 006031, 201129, 006034, + 201000, 005021, 002111, 012063, 021095, 021096, 021097, 021030, 021105, 033056 + ] +"312041" = [ 201141, 202130, 007001, 201000, 202000 ] +"312042" = [ 021077, 021078, 021079, 021080, 021081, 021082 ] +"312045" = [ 001007, 002019, 001096, 025061, 005040, 301011, 301013, 301021, 007002, 012180, + 012181, 012182, 012183, 012184, 012185, 002174, 021086, 012186, 021087, 012187, + 033043 ] +"312050" = [ 001007, 002019, 001096, 025061, 005040, 301011, 301013, 301021, 007025, 005022, + 010080, 027080, 008003, 007004, 013093, 008003, 201131, 202129, 007004, 007004, + 202000, 201000, 013095 ] +"312051" = [ 001007, 002019, 001096, 025061, 005040, 008075, 301011, 301013, 301021, 001012, + 201131, 001013, 201000, 010032, 010033, 010034, 007002, 008012, 025110, 025111, + 025102, 002104, 025103, 025104, 025105, 025106, 025107, 025108, 002111, 002121, + 002026, 002027, 021130, 021131, 021132, 021133, 021064, 025014, 021134, 107018, + 005030, 105024, 201130, 006030, 201000, 021135, 021136, 033044 ] +"312052" = [ 001007, 002019, 001096, 025061, 005040, 025120, 025121, 025124, 025125, 025122, + 025123, 301011, 301013, 301021, 007002, 002119, 033047, 010081, 010082, 010083, + 010084, 002116, 002117, 002118, 002156, 002157, 014055, 022150, 022151, 022152, + 022153, 022154, 022155, 022156, 022157, 022158, 022159, 021137, 021138, 021139, + 021140, 021141, 021142, 010085, 010086, 010087, 010088, 010089, 010090, 010091, + 010092, 010093, 011002, 025126, 025127, 025128, 025129, 025130, 025131, 025132, + 025133, 025134, 025135, 025136, 025137, 013096, 013097, 011095, 011096, 012188, + 012189, 002158, 002159, 033052, 033053, 021143, 021144 ] +"312053" = [ 001007, 002019, 001096, 025061, 005040, 008075, 301011, 301013, 301021, 001012, + 201131, 001013, 201000, 010032, 010033, 010034, 007002, 008012, 025110, 025111, + 025102, 002104, 025103, 025104, 025105, 025106, 025107, 025108, 011001, 011002, + 022160, 025138, 201130, 202129, 022021, 202000, 201000, 033048, 033049, 002026, + 002027, 021130, 021131, 021132, 021133, 025014, 106036, 005030, 104024, 201130, + 006030, 201000, 022161, 033044 ] +"312055" = [ 005033, 005040, 006034, 010095, 021157 ] +"312056" = [ 025060, 001032, 011082, 011081, 020095, 020096, 021155, 201133, 021101, 021102, + 201000 ] +"312057" = [ 201130, 202129, 011012, 202000, 201000, 201131, 202129, 011011, 202000, 201000, + 021156, 021104 ] +"312058" = [ 301125, 301011, 301013, 301021, 312055, 021150, 101003, 321030 ] +"312059" = [ 312056, 101000, 031001, 312057 ] +"312060" = [ 025060, 025062, 040001, 040002, 021062, 021151, 021152, 021153, 021154, 021062, + 021088, 040003, 040004, 040005, 040006, 040007, 020065, 040008, 040009, 040010 + ] +"312061" = [ 312058, 312060, 312059 ] +"312062" = [ 001007, 002019, 301011, 301013, 301021, 020065, 008023, 020065, 008023 ] +"312070" = [ 001007, 002019, 001144, 001124, 030010, 301011, 301013, 301021, 007012, 015012, + 012165, 012166, 012167, 012168, 027010, 028010, 002099, 013048, 025081, 025082, + 025083, 025084, 012080, 012081, 012082, 025174, 033028 ] +"312071" = [ 001007, 002019, 002139, 001096, 001040, 025061, 005040, 005044, 008075, 008077, + 004001, 004002, 004003, 004004, 004005, 004006, 005001, 006001, 010081, 022156, + 022142, 101020, 022149, 022143, 022144, 021137, 101020, 021181, 021138, 021180, + 021177, 021178, 021179, 010079, 010085, 010086, 010087, 010089, 010090, 010091, + 010092, 010093, 011097, 021093, 101020, 021182, 033053, 022151, 022145, 022148, + 022146, 022147, 025126, 025128, 025127, 021176, 025132, 025133, 025182, 025183, + 025180, 025184, 025181, 033080 ] +"313009" = [ 021001, 101000, 031001, 021001 ] +"313010" = [ 021036, 101000, 031001, 021036 ] +"313031" = [ 006002, 006012, 101000, 031002, 030001 ] +"313032" = [ 005002, 005012, 101000, 031002, 313031 ] +"313041" = [ 006002, 110000, 031001, 104000, 031001, 006012, 101000, 031012, 030001, 006012, + 101000, 031001, 030001 ] +"313042" = [ 005002, 005012, 101000, 031002, 313041 ] +"313043" = [ 006002, 005002, 005012, 112000, 031001, 110000, 031001, 104000, 031001, 006012, + 101000, 031011, 030001, 006012, 101000, 031001, 030001 ] +"315001" = [ 001011, 301011, 301012, 301023, 306001 ] +"315002" = [ 001011, 301011, 301012, 301023, 306004 ] +"315003" = [ 001087, 001085, 001086, 002036, 002148, 002149, 022055, 022056, 022067, 301011, + 301012, 301021, 008080, 033050, 109000, 031002, 007065, 008080, 033050, 022045, + 008080, 033050, 022064, 008080, 033050 ] +"315004" = [ 001079, 001011, 001103, 001087, 001019, 001080, 005036, 001036, 001013, 001012, + 301011, 301012, 301021, 007032, 007033, 002002, 011002, 011001, 007032, 007033, + 012101, 012103, 007032, 007033, 302021, 002031, 002030, 022005, 022032, 022063, + 008080, 033050, 022178, 022177, 022067, 008041, 026021, 026022, 026023, 022068, + 025061, 008041, 008080, 002171, 302090, 002171, 002032, 315005 ] +"315005" = [ 106000, 031002, 007063, 008080, 033050, 022043, 008080, 033050 ] +"315007" = [ 301003, 001019, 001103, 001087, 001036, 001115, 001080, 005036, 301011, 301012, + 301021, 001079, 001023, 022063, 101000, 031000, 302001, 101000, 031000, 302021, + 101000, 031000, 302052, 101000, 031000, 302059, 022067, 002171, 302090, 306033, + 306034, 002171, 022067, 002038, 022067, 022068, 002171, 002033, 002032, 022056, + 003011, 306035, 107000, 031000, 002032, 003010, 002031, 002040, 022056, 003011, + 306036, 104000, 031000, 002032, 003012, 003011, 306037 ] +"315008" = [ 301126, 306038, 101000, 031000, 302091, 101000, 031000, 302082, 101000, 031000, + 306039, 101000, 031000, 306040, 102000, 031000, 002005, 306041, 102000, 031000, + 002005, 306004, 101000, 031000, 306005 ] +"315009" = [ 001087, 001019, 002149, 008021, 301011, 301012, 301021, 208016, 001051, 208000, + 002148, 001012, 001014, 033022, 033023, 033027, 025026, 002034, 022060, 007070, + 002190, 008021, 301011, 301012, 002005, 022043, 002033, 022059, 008029, 013115, + 103000, 031000, 002005, 306004, 002005, 010004, 010051, 102000, 031000, 007033, + 012101, 101000, 031000, 306042, 101000, 031000, 306039 ] +"315010" = [ 112000, 031001, 201144, 202133, 022080, 022096, 022069, 202000, 201000, 042011, + 042012, 042013, 042014, 042015 ] +"315011" = [ 301150, 001087, 001036, 001085, 001086, 003001, 208032, 001079, 208000, 301011, + 301012, 301021, 001012, 001014, 011104, 103000, 031000, 007031, 306038, 012161, + 101000, 031000, 306034, 101000, 031000, 306039, 101000, 031000, 306033, 101000, + 031000, 306041, 101000, 031000, 306004, 101000, 031000, 306005, 105000, 031000, + 041001, 008043, 015028, 008043, 013080, 104000, 031000, 041005, 041003, 022188, + 041002, 101000, 031000, 306040, 104000, 031000, 008021, 004025, 014017, 014018 + ] +"315012" = [ 301150, 201129, 001087, 201000, 001019, 001036, 002148, 001085, 001086, 008021, + 301011, 301013, 301021, 011104, 002169, 011002, 011001, 002169, 022032, 022005, + 301011, 301013, 008021, 004025, 301021, 022031, 022004, 008021, 005068, 001079, + 126000, 031001, 022056, 123000, 031002, 301011, 301013, 301021, 008080, 033050, + 007062, 008080, 033050, 022065, 008080, 033050, 022045, 008080, 033050, 022066, + 008080, 033050, 022064, 008080, 033050, 042016, 008080, 033050 ] +"315013" = [ 301150, 001087, 208032, 001019, 208000, 003001, 022067, 001051, 002148, 112000, + 031001, 008021, 301011, 301012, 301021, 001012, 001014, 033022, 033023, 033027, + 007063, 022045, 008021, 107000, 031001, 301011, 301012, 301021, 001079, 001023, + 022056, 306035 ] +"315023" = [ 301150, 201129, 001087, 201000, 208032, 001019, 208000, 003001, 022067, 001051, + 002148, 112000, 031001, 008021, 301011, 301012, 301021, 001012, 001014, 033022, + 033023, 033027, 007063, 022045, 008021, 107000, 031001, 301011, 301012, 301021, + 001079, 001023, 022056, 306035 ] +"316001" = [ 301011, 004004, 301023, 001021, 002041, 019001, 010051, 019002, 019003, 019004 + ] +"316002" = [ 008021, 004001, 004002, 004003, 004004, 004005, 001033, 008021, 004001, 004002, + 004003, 004004, 004005, 007002, 007002 ] +"316003" = [ 110000, 031001, 008011, 008007, 104000, 031001, 005002, 006002, 010002, 011002, + 008007, 008011 ] +"316004" = [ 111000, 031001, 008011, 008007, 007002, 007002, 102000, 031001, 005002, 006002, + 011031, 008007, 008011 ] +"316005" = [ 108000, 031001, 008005, 008007, 005002, 006002, 001026, 019001, 008007, 008005 + ] +"316006" = [ 112000, 031001, 008011, 008007, 007002, 007002, 102000, 031001, 005002, 006002, + 020011, 020012, 008007, 008011 ] +"316007" = [ 110000, 031001, 008011, 008007, 104000, 031001, 005002, 006002, 019005, 019006, + 008007, 008011 ] +"316008" = [ 111000, 031001, 008001, 008007, 008023, 103000, 031001, 005002, 006002, 010002, + 008023, 008007, 008001 ] +"316009" = [ 111000, 031001, 008011, 008007, 007002, 007002, 102000, 031001, 005002, 006002, + 020041, 008007, 008011 ] +"316010" = [ 107000, 031001, 008011, 008007, 001022, 005002, 006002, 008007, 008011 ] +"316011" = [ 117000, 031001, 008011, 001022, 008007, 102000, 031001, 005002, 006002, 008021, + 004001, 004002, 004003, 004004, 004005, 020090, 008021, 008007, 008011 ] +"316020" = [ 001033, 001025, 001027, 301011, 301012 ] +"316021" = [ 301023, 002041, 019001, 019007, 019005, 019006, 019008, 008005, 010004, 008005, + 010004, 019007, 008005, 008021, 004075, 011040, 019007, 105004, 005021, 005021, + 102002, 019003, 019004 ] +"316022" = [ 001032, 002041, 019001, 019010, 118000, 031001, 008021, 004014, 008005, 301023, + 019005, 019006, 010004, 011041, 008021, 004075, 011040, 019008, 105004, 005021, + 005021, 102002, 019003, 019004 ] +"316026" = [ 316020, 316021 ] +"316027" = [ 316020, 316022 ] +"316030" = [ 301014, 001037, 010064, 008019, 001062, 008019, 001065, 008019, 001062, 008019 + ] +"316031" = [ 008021, 301011, 301012, 301027, 019005, 019006, 020028, 008021 ] +"316032" = [ 008021, 301011, 301012, 301027, 008021 ] +"316033" = [ 008021, 301011, 301012, 101000, 031001, 301027, 008021 ] +"316034" = [ 008079, 316030, 008011, 001022, 008007, 301023, 008007, 020090, 316031, 101000, + 031000, 316032, 101000, 031001, 316033, 008011, 008079 ] +"316035" = [ 008079, 316030, 008011, 020023, 020021, 020008, 316031, 008011, 008079 ] +"316036" = [ 008079, 316030, 008011, 001027, 316031, 101000, 031000, 316032, 101000, 031001, + 316033, 008011, 008079 ] +"316037" = [ 008079, 316030, 008011, 011031, 316031, 008011, 008079 ] +"316038" = [ 008079, 316030, 008011, 020041, 020021, 316031, 008011, 008079 ] +"316039" = [ 008079, 316030, 008011, 020024, 316031, 008011, 008079 ] +"316040" = [ 316030, 008079, 301014, 001037, 010064, 008079 ] +"316050" = [ 301001, 301011, 301012, 002160, 008005, 005002, 006002, 008005, 019100, 019005, + 019006, 019101, 019102, 019103, 019104, 019105 ] +"316052" = [ 301005, 301011, 301012, 001007, 025150, 122000, 031001, 001027, 019150, 019106, + 008005, 005002, 006002, 008005, 019107, 019005, 019006, 019108, 019109, 019110, + 019111, 019112, 019113, 019114, 019115, 019116, 019117, 019118, 019119 ] +"316060" = [ 301011, 301012, 005002, 006002, 019005, 019006, 005002, 006002, 005002, 006002, + 004074, 020048, 011041, 013055 ] +"316061" = [ 301011, 301012, 005002, 006002, 019005, 019006, 102000, 031001, 005002, 006002, + 102000, 031001, 005002, 006002, 004074, 020048, 011041, 013055 ] +"316071" = [ 301014, 101000, 031002, 316075, 101000, 031002, 316076 ] +"316072" = [ 301014, 101000, 031002, 316077, 101000, 031002, 316078, 101000, 031002, 316079 + ] +"316073" = [ 301014, 101000, 031002, 316080, 101000, 031002, 316081 ] +"316074" = [ 001039, 008021, 301014, 301027, 008021 ] +"316075" = [ 008079, 008041, 316074, 020006, 033042, 020013, 033042, 020001, 020025, 020026, + 008041, 008079 ] +"316076" = [ 008079, 008041, 316074, 020006, 020025, 020026, 008041, 008079 ] +"316077" = [ 008079, 008011, 316074, 011031, 008011, 008079 ] +"316078" = [ 008079, 008041, 316074, 033042, 011012, 008041, 008079 ] +"316079" = [ 008079, 008011, 316074, 020023, 020024, 008011, 008079 ] +"316080" = [ 008079, 008011, 316074, 020041, 008011, 008079 ] +"316081" = [ 008079, 008041, 316074, 008041, 008079 ] +"316082" = [ 001033, 001034, 001032, 001025, 001027, 001090, 001091, 001092, 301011, 301012, + 008005, 301023, 008005, 301023, 010051, 008005, 301023, 011012, 107003, 019003, + 105004, 005021, 005021, 201131, 019004, 201000, 116000, 031001, 008021, 004024, + 008005, 301023, 010051, 008005, 301023, 011012, 107003, 019003, 105004, 005021, + 005021, 201131, 019004, 201000 ] +"318001" = [ 301025, 024011 ] +"318003" = [ 301026, 024005, 024004, 024021 ] +"318004" = [ 301025, 004023, 013011, 024005, 024004, 024022 ] +"321001" = [ 002101, 002114, 002105, 002106, 002107, 002121 ] +"321003" = [ 021051, 021014, 021017, 021030 ] +"321004" = [ 301031, 002003, 101000, 031001, 321003 ] +"321005" = [ 025004, 002121, 002122, 002123, 002124, 002125, 002126, 002127, 002128, 002129, + 002130, 002131 ] +"321006" = [ 025001, 025002, 025003, 025005 ] +"321007" = [ 025009, 025010, 025011, 025012, 025013, 025015, 025016, 025017 ] +"321008" = [ 025006, 025007, 025008 ] +"321009" = [ 025018, 025019 ] +"321010" = [ 002101, 007002, 002102, 002103, 002104, 002105, 002106, 002107, 002108, 002109, + 002110, 002132, 002133 ] +"321011" = [ 030031, 030032, 029002 ] +"321012" = [ 101000, 031001, 002135 ] +"321021" = [ 002003, 002101, 201130, 002106, 201000, 201132, 202130, 002121, 202000, 201000, + 201133, 202129, 025001, 202000, 201000 ] +"321022" = [ 007007, 204001, 031021, 011001, 204000, 011002, 204001, 031021, 011006, 204000, + 021030 ] +"321023" = [ 007007, 021091, 021030, 202129, 021014, 201129, 021017, 202000, 201000 ] +"321024" = [ 007007, 204001, 031021, 012007, 011006, 204000, 021030 ] +"321025" = [ 007007, 021091, 021030, 202129, 021014, 201129, 021017, 202000, 201000, 021092, + 021030, 025092, 201129, 202129, 021017, 202000, 201000 ] +"321026" = [ 007007, 204001, 031021, 012007, 025091, 011071, 011072, 011073, 011074, 204000 + ] +"321027" = [ 021118, 202129, 201132, 002112, 201000, 201131, 002111, 201000, 202000, 002104, + 021105, 021106, 021107, 021114, 021115, 021116, 008018, 021117 ] +"321028" = [ 021118, 202129, 201132, 002112, 201000, 201131, 002111, 201000, 202000, 002104, + 021123, 021106, 021107, 021114, 021115, 021116, 008018, 021117 ] +"321030" = [ 008085, 202129, 201131, 002111, 201000, 202000, 002134, 021062, 021063, 021158, + 021159, 021160, 021161, 021162, 021163, 021164, 021165, 021166 ] +"321031" = [ 001007, 002019, 001033, 001034, 301011, 301013, 301021, 010033, 008043, 025139, + 002153, 106000, 031002, 007071, 021007, 021008, 021009, 021010, 033003 ] +"322001" = [ 310022, 301011, 301013, 301021, 005041, 005043, 027080, 005022, 013040, 020010, + 033085, 033115, 105002, 008099, 007024, 007025, 007075, 007076, 106000, 031001, + 002071, 008043, 015024, 008043, 015024, 015042, 224000, 236000, 101000, 031002, + 031031, 001033, 001032, 008023, 101000, 031002, 224255 ] +"322028" = [ 001007, 002019, 004001, 004002, 004003, 004004, 004005, 004006, 005001, 006001, + 027001, 028001, 027001, 028001, 027001, 028001, 027001, 028001, 010001, 014019, + 007025, 010080, 005023, 020010, 008003, 007004, 014026, 020014, 013093, 105000, + 031001, 007004, 007004, 008043, 008044, 015021 ] +"340001" = [ 001007, 001031, 002019, 002020, 004001, 004002, 004003, 004004, 004005, 202131, + 201138, 004006, 201000, 202000, 005001, 006001, 007024, 005021, 007025, 005022, + 005043, 005040, 201133, 005041, 201000, 201132, 025070, 201000, 202126, 007001, + 202000, 033060, 033061, 033062, 033063, 033064, 033065, 101010, 340002, 101087, + 340003, 002019, 025051, 101007, 340004 ] +"340002" = [ 025140, 025141, 025142 ] +"340003" = [ 104100, 201136, 005042, 201000, 014046 ] +"340004" = [ 005060, 005061, 025085, 105006, 005042, 025142, 014047, 025142, 014048 ] +"340005" = [ 001007, 002019, 001096, 025061, 005044, 005040, 001030, 004001, 004002, 004003, + 004004, 004005, 004007, 005001, 006001, 008029, 008074, 008077, 040011, 025097, + 025095, 025098, 025099, 021144, 025096, 040012, 040013, 021169, 022151, 022162, + 022163, 025160, 025133, 022156, 022164, 022165, 022166, 021137, 021138, 022167, + 021139, 021118, 021145, 021146, 021147, 022168, 022169, 022170, 025161, 025162, + 022171, 022172, 022173, 022174, 021170, 021171, 022175, 021172, 021118, 021173, + 021174, 021175, 002153, 012063, 002153, 012063, 002153, 012063, 013090, 013091, + 007002, 011097, 011098, 007002, 011095, 011096, 010096, 010081, 010082, 010083, + 010101, 025132, 025163, 025126, 025128, 025164, 010085, 010097, 010086, 010087, + 010092, 010088, 010089, 010098, 010099, 010090, 010100, 010093, 025127, 040014 + ] +"340007" = [ 001007, 001031, 002019, 002020, 004001, 004002, 004003, 004004, 004005, 202131, + 201138, 004006, 201000, 202000, 005001, 006001, 007024, 005021, 007025, 005022, + 005043, 005040, 201133, 005041, 201000, 201132, 025070, 201000, 202126, 007001, + 202000, 103003, 025140, 025141, 033060, 033061, 033062, 033063, 033064, 033065, + 040020, 101010, 340002, 101087, 340003, 002019, 025051, 101007, 340004, 020081, + 008029, 020083, 008029, 040018, 040019, 040021, 040022 ] +"340008" = [ 001007, 001031, 002019, 002020, 004001, 004002, 004003, 004004, 004005, 202131, + 201138, 004006, 201000, 202000, 005001, 006001, 007024, 005021, 007025, 005022, + 005043, 005040, 201133, 005041, 201000, 201132, 025070, 201000, 202126, 007001, + 202000, 103003, 025140, 025141, 033060, 033061, 033062, 033063, 033064, 033065, + 040020, 101010, 340002, 104000, 031002, 201136, 005042, 201000, 014046, 108003, + 025140, 025141, 040026, 040016, 025062, 101000, 031002, 040017, 002019, 025051, + 101007, 340004, 020081, 008029, 020083, 008029, 040018, 040019, 040021, 040022 + ] +"340009" = [ 001007, 001031, 002019, 002020, 301011, 301013, 005040, 201136, 005041, 201000, + 025071, 005001, 005001, 006001, 006001, 107064, 106032, 008012, 008013, 008065, + 008072, 013039, 040015 ] +"340010" = [ 001007, 002019, 001096, 025061, 005044, 005040, 001030, 004001, 004002, 004003, + 004004, 004005, 004007, 005001, 006001, 008029, 008074, 008077, 040011, 025097, + 025095, 025098, 025099, 021144, 025096, 040012, 040013, 021169, 040023, 040024, + 040025, 022151, 022162, 022163, 025160, 025133, 022156, 022164, 022165, 022166, + 021137, 021138, 022167, 021139, 021118, 021145, 021146, 021147, 022168, 022169, + 022170, 025161, 025162, 022171, 022172, 022173, 022174, 021170, 021171, 022175, + 021172, 021118, 021173, 021174, 021175, 002153, 012063, 002153, 012063, 002153, + 012063, 013090, 013091, 007002, 011097, 011098, 007002, 011095, 011096, 010096, + 010081, 010082, 010083, 010101, 025132, 025163, 025126, 025128, 025164, 010085, + 010097, 010086, 010087, 010092, 010088, 010089, 010098, 010099, 010090, 010100, + 010093, 025127, 040014, 010102 ] +"340011" = [ 001007, 002019, 001096, 025061, 005044, 005040, 001030, 004001, 004002, 004003, + 004004, 004005, 004007, 005001, 006001, 008029, 008077, 040011, 025097, 025112, + 025113, 021148, 021169, 040024, 040025, 002153, 022189, 022191, 022130, 025167, + 025166, 022190, 022131, 022132, 022133, 021183, 021184, 022134, 021185, 021118, + 021186, 021187, 021188, 002153, 012063, 002153, 012063, 013090, 013160, 007002, + 011097, 007002, 011095, 011096, 010096, 010081, 010082, 010083, 010101, 002153, + 025165, 025126, 025128, 025164, 010085, 010086, 010087, 010092, 010088, 010089, + 010098, 010099, 010090, 010100, 010093, 025127, 040014, 010102 ] +"340012" = [ 001007, 002019, 008091, 005001, 006001, 007002, 005063, 005064, 005066, 005041, + 005067, 301011, 301012, 004007, 008091, 005001, 006001, 107000, 031001, 005042, + 002153, 002104, 040028, 007024, 040027, 012063 ] +"340013" = [ 001007, 002019, 001033, 001034, 004001, 004002, 004003, 004004, 004005, 004007, + 005068, 005070, 005069, 040036, 008091, 005001, 006001, 004016, 008091, 005001, + 006001, 004016, 008091, 005001, 006001, 004016, 008091, 007071, 005021, 007021, + 040035, 008091, 007071, 005021, 007021, 040035, 008091, 007071, 005021, 007021, + 040035, 040029, 040030, 040031, 025187, 010004, 012001, 040037, 040032, 040033, + 040034 ] +"340015" = [ 001007, 002019, 301011, 301012, 004007, 201133, 005041, 201000, 201130, 005043, + 201000, 207001, 005002, 006002, 207000, 040027, 013040, 021120, 207003, 102003, + 002186, 013155, 207000, 033003 ] +"340016" = [ 301129, 301130, 301131, 202134, 007001, 202000, 101000, 031002, 340002, 101000, + 031002, 304039, 101000, 031002, 304040 ] +"340017" = [ 001007, 002019, 005044, 001096, 005040, 001040, 025061, 025182, 025183, 025181, + 025184, 301011, 301013, 004007, 301021, 005063, 005064, 005066, 010081, 010082, + 008075, 025090, 008029, 201137, 202129, 006021, 202000, 201000, 010087, 025096, + 040012, 008077, 104002, 002153, 012063, 012065, 040013, 007002, 011098, 013090, + 013091, 025164, 025095, 040023, 025113, 008074, 025190, 021144, 025191, 021143, + 013055, 021169, 010101, 015012, 007002, 011097, 040024, 007002, 025126, 025128, + 040011, 007002, 011095, 011096, 010088, 010089, 010090, 010092, 010093, 010098, + 010099, 010100, 025127, 040014, 010085, 010086, 010096, 010103, 010102, 022080, + 008076, 022189, 022191, 022130, 025165, 025166, 025167, 021183, 021184, 022134, + 021122, 022190, 022131, 022132, 022133, 021186, 021187, 021188, 021185, 025112, + 025113, 033092, 008076, 022189, 022191, 022130, 025165, 025166, 025167, 021183, + 021184, 022134, 021122, 022190, 022131, 022132, 022133, 021186, 021187, 021188, + 021185, 025112, 025113, 033092, 025190, 011097, 013090, 013091, 021143, 021184, + 025128, 025163, 025164, 010102, 022189, 022191, 022130, 025166, 021183, 021184, + 022134, 022190, 022131, 022132, 025112, 025113, 033092, 008049, 022080, 134021, + 301011, 301013, 004007, 301021, 010081, 010082, 008029, 201137, 202129, 006021, + 202000, 201000, 025191, 021071, 010085, 040011, 010102, 022189, 022146, 025165, + 025167, 021183, 022190, 022133, 021177, 021185, 013164, 202126, 022046, 202000, + 013117, 013013, 025112, 033092 ] +"340018" = [ 301129, 301130, 301131, 007072, 040074, 104000, 031002, 201136, 005042, 201000, + 014044 ] +"340019" = [ 340020, 340021, 340022, 340023 ] +"340020" = [ 001007, 002019, 005044, 001096, 005040, 001040, 025061, 025182, 025183, 025181, + 025184, 008075, 025090, 301011, 301013, 004007, 301021, 005063, 005064, 005066, + 010081, 010082 ] +"340021" = [ 040012, 008077, 104000, 031001, 002153, 012063, 012065, 040013, 007002, 011098 + ] +"340022" = [ 008029, 201137, 202129, 006021, 202000, 201000, 010087, 040024, 007002, 025126, + 025128, 040011, 007002, 011095, 011096, 010088, 010089, 010090, 010092, 010093, + 010098, 010099, 010100, 025127, 040014, 001030, 010085, 001030, 010085, 010086, + 010096, 010103, 021169, 013055, 025165 ] +"340023" = [ 025095, 040023, 008074, 340024, 340024, 340024, 340025 ] +"340024" = [ 022080, 008076, 025190, 010102, 022189, 022191, 022130, 025167, 025163, 015012, + 025164, 013090, 013091, 025166, 007002, 011097, 021183, 021184, 022134, 021122, + 021186, 021187, 021188, 201131, 021185, 201000, 022179, 022131, 022132, 022133, + 021144, 025191, 021143, 010101, 025112, 025113, 033092 ] +"340025" = [ 008049, 022080, 008076, 025190, 146021, 301011, 301013, 004007, 301021, 010081, + 010082, 008029, 201137, 202129, 006021, 202000, 201000, 025191, 021071, 001030, + 010085, 001030, 010085, 040011, 010088, 010089, 025164, 007002, 025126, 025128, + 010102, 022189, 025167, 025163, 021183, 201131, 021185, 201000, 022179, 022133, + 022146, 021189, 013163, 202126, 022046, 202000, 013117, 013013, 025112, 025113, + 033092 ] +"340026" = [ 001007, 002019, 001033, 001034, 301011, 301013, 301021, 010033, 008043, 025139, + 002155, 112000, 031002, 007071, 033003, 201136, 015074, 015066, 015075, 015068, + 201000, 015076, 015070, 015078, 015072, 107003, 005069, 104000, 031002, 201135, + 015073, 015064, 201000 ] From 41466085e949bd3cba89ebd0eb9babe7b428b4cd Mon Sep 17 00:00:00 2001 From: Marijana Crepulja Date: Wed, 24 May 2023 13:46:31 +0000 Subject: [PATCH 181/378] ECC-1599 BUFR: update masterTablesVersionNumberLatest --- definitions/bufr/boot.def | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/definitions/bufr/boot.def b/definitions/bufr/boot.def index ae67e8c32..8954a5d0a 100644 --- a/definitions/bufr/boot.def +++ b/definitions/bufr/boot.def @@ -13,7 +13,7 @@ transient setToMissingIfOutOfRange=0 : hidden; # This gets updated twice a year by WMO. # See https://community.wmo.int/activity-areas/wmo-codes/manual-codes/latest-version -constant masterTablesVersionNumberLatest = 39; +constant masterTablesVersionNumberLatest = 40; #negative value=not used transient inputDelayedDescriptorReplicationFactor={-1} : hidden; From 5f422ebdd3a676749f72da0125781711e5a5a14a Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 29 May 2023 12:48:56 +0000 Subject: [PATCH 182/378] ECC-1593: Add GRIB2 encodings to current GRIB1-only parameters from WMO FT2023-1 --- .../grib1/localConcepts/ecmf/units.def | 12 +- definitions/grib2/cfVarName.def | 124 ++++++++++++++++++ definitions/grib2/name.def | 124 ++++++++++++++++++ definitions/grib2/paramId.def | 124 ++++++++++++++++++ definitions/grib2/shortName.def | 124 ++++++++++++++++++ definitions/grib2/units.def | 124 ++++++++++++++++++ 6 files changed, 626 insertions(+), 6 deletions(-) diff --git a/definitions/grib1/localConcepts/ecmf/units.def b/definitions/grib1/localConcepts/ecmf/units.def index cfaaed975..6c8c796ec 100644 --- a/definitions/grib1/localConcepts/ecmf/units.def +++ b/definitions/grib1/localConcepts/ecmf/units.def @@ -3380,12 +3380,12 @@ indicatorOfParameter = 98 ; } #Ratio of wave angular and frequency width -'dimensionless' = { +'Numeric' = { table2Version = 140 ; indicatorOfParameter = 99 ; } #Number of events in freak waves statistics -'dimensionless' = { +'Numeric' = { table2Version = 140 ; indicatorOfParameter = 100 ; } @@ -3535,7 +3535,7 @@ indicatorOfParameter = 129 ; } #Wave Spectral Skewness -'dimensionless' = { +'Numeric' = { table2Version = 140 ; indicatorOfParameter = 207 ; } @@ -3555,12 +3555,12 @@ indicatorOfParameter = 210 ; } #Normalized energy flux into waves -'dimensionless' = { +'Numeric' = { table2Version = 140 ; indicatorOfParameter = 211 ; } #Normalized energy flux into ocean -'dimensionless' = { +'Numeric' = { table2Version = 140 ; indicatorOfParameter = 212 ; } @@ -3570,7 +3570,7 @@ indicatorOfParameter = 213 ; } #Normalized stress into ocean -'dimensionless' = { +'Numeric' = { table2Version = 140 ; indicatorOfParameter = 214 ; } diff --git a/definitions/grib2/cfVarName.def b/definitions/grib2/cfVarName.def index a762c7f50..ed7422b23 100644 --- a/definitions/grib2/cfVarName.def +++ b/definitions/grib2/cfVarName.def @@ -572,6 +572,92 @@ scaleFactorOfLowerLimit = 0 ; probabilityType = 0 ; } +#Wave induced mean sea level correction +'weta' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 87 ; + } +#Ratio of wave angular and frequency width +'wraf' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 80 ; + } +#Number of events in freak waves statistics +'wnslc' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 89 ; + } +#U-component of surface momentum flux into ocean +'utauo' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 90 ; + typeOfFirstFixedSurface = 1 ; + } +#V-component of surface momentum flux into ocean +'vtauo' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 91 ; + typeOfFirstFixedSurface = 1 ; + } +#Wave turbulent energy flux into ocean +'wphio' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 92 ; + } +#Wave energy flux magnitude +'wefxm' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 78 ; + } +#Wave energy flux mean direction +'wefxd' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 79 ; + } +#Wave Spectral Skewness +'wss' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 77 ; + } +#Free convective velocity over the oceans +'wstar' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 81 ; + } +#Air density over the oceans +'rhoao' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 82 ; + } +#Normalized energy flux into waves +'phiaw' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 83 ; + } +#Normalized energy flux into ocean +'phioc' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 85 ; + } +#Normalized stress into ocean +'tauoc' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 84 ; + } #Mean sea water temperature in the upper 300 m 'mswt300m' = { discipline = 10 ; @@ -2275,6 +2361,14 @@ scaledValueOfSecondFixedSurface = 10 ; scaleFactorOfSecondFixedSurface = 1 ; } +#Total column supercooled liquid water +'tcslw' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 167 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + } #Total column rain water 'tcrw' = { discipline = 0 ; @@ -2845,6 +2939,36 @@ typeOfSecondFixedSurface = 255 ; typeOfStatisticalProcessing = 1 ; } +#Mean surface photosynthetically active radiation flux, clear sky +'msparfcs' = { + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 60 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 0 ; + } +#Sunshine duration fraction +'sdf' = { + discipline = 0 ; + parameterCategory = 6 ; + parameterNumber = 51 ; + typeOfFirstFixedSurface = 1 ; + } +#Mean vertically integrated moisture divergence +'mvimd' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 165 ; + typeOfStatisticalProcessing = 0 ; + } +#Mean surface direct short-wave radiation flux, clear sky +'msdrswrfcs' = { + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 61 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 0 ; + } #Time integral of surface latent heat sublimation flux 'tislhsf' = { discipline = 0 ; diff --git a/definitions/grib2/name.def b/definitions/grib2/name.def index b1b3ad744..4909713b8 100644 --- a/definitions/grib2/name.def +++ b/definitions/grib2/name.def @@ -572,6 +572,92 @@ scaleFactorOfLowerLimit = 0 ; probabilityType = 0 ; } +#Wave induced mean sea level correction +'Wave induced mean sea level correction' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 87 ; + } +#Ratio of wave angular and frequency width +'Ratio of wave angular and frequency width' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 80 ; + } +#Number of events in freak waves statistics +'Number of events in freak waves statistics' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 89 ; + } +#U-component of surface momentum flux into ocean +'U-component of surface momentum flux into ocean' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 90 ; + typeOfFirstFixedSurface = 1 ; + } +#V-component of surface momentum flux into ocean +'V-component of surface momentum flux into ocean' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 91 ; + typeOfFirstFixedSurface = 1 ; + } +#Wave turbulent energy flux into ocean +'Wave turbulent energy flux into ocean' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 92 ; + } +#Wave energy flux magnitude +'Wave energy flux magnitude' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 78 ; + } +#Wave energy flux mean direction +'Wave energy flux mean direction' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 79 ; + } +#Wave Spectral Skewness +'Wave Spectral Skewness' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 77 ; + } +#Free convective velocity over the oceans +'Free convective velocity over the oceans' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 81 ; + } +#Air density over the oceans +'Air density over the oceans' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 82 ; + } +#Normalized energy flux into waves +'Normalized energy flux into waves' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 83 ; + } +#Normalized energy flux into ocean +'Normalized energy flux into ocean' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 85 ; + } +#Normalized stress into ocean +'Normalized stress into ocean' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 84 ; + } #Mean sea water temperature in the upper 300 m 'Mean sea water temperature in the upper 300 m' = { discipline = 10 ; @@ -2275,6 +2361,14 @@ scaledValueOfSecondFixedSurface = 10 ; scaleFactorOfSecondFixedSurface = 1 ; } +#Total column supercooled liquid water +'Total column supercooled liquid water' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 167 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + } #Total column rain water 'Total column rain water' = { discipline = 0 ; @@ -2845,6 +2939,36 @@ typeOfSecondFixedSurface = 255 ; typeOfStatisticalProcessing = 1 ; } +#Mean surface photosynthetically active radiation flux, clear sky +'Mean surface photosynthetically active radiation flux, clear sky' = { + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 60 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 0 ; + } +#Sunshine duration fraction +'Sunshine duration fraction' = { + discipline = 0 ; + parameterCategory = 6 ; + parameterNumber = 51 ; + typeOfFirstFixedSurface = 1 ; + } +#Mean vertically integrated moisture divergence +'Mean vertically integrated moisture divergence' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 165 ; + typeOfStatisticalProcessing = 0 ; + } +#Mean surface direct short-wave radiation flux, clear sky +'Mean surface direct short-wave radiation flux, clear sky' = { + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 61 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 0 ; + } #Time integral of surface latent heat sublimation flux 'Time integral of surface latent heat sublimation flux' = { discipline = 0 ; diff --git a/definitions/grib2/paramId.def b/definitions/grib2/paramId.def index 343322dca..8c1d40874 100644 --- a/definitions/grib2/paramId.def +++ b/definitions/grib2/paramId.def @@ -572,6 +572,92 @@ scaleFactorOfLowerLimit = 0 ; probabilityType = 0 ; } +#Wave induced mean sea level correction +'140098' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 87 ; + } +#Ratio of wave angular and frequency width +'140099' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 80 ; + } +#Number of events in freak waves statistics +'140100' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 89 ; + } +#U-component of surface momentum flux into ocean +'140103' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 90 ; + typeOfFirstFixedSurface = 1 ; + } +#V-component of surface momentum flux into ocean +'140104' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 91 ; + typeOfFirstFixedSurface = 1 ; + } +#Wave turbulent energy flux into ocean +'140105' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 92 ; + } +#Wave energy flux magnitude +'140112' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 78 ; + } +#Wave energy flux mean direction +'140113' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 79 ; + } +#Wave Spectral Skewness +'140207' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 77 ; + } +#Free convective velocity over the oceans +'140208' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 81 ; + } +#Air density over the oceans +'140209' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 82 ; + } +#Normalized energy flux into waves +'140211' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 83 ; + } +#Normalized energy flux into ocean +'140212' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 85 ; + } +#Normalized stress into ocean +'140214' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 84 ; + } #Mean sea water temperature in the upper 300 m '151127' = { discipline = 10 ; @@ -2275,6 +2361,14 @@ scaledValueOfSecondFixedSurface = 10 ; scaleFactorOfSecondFixedSurface = 1 ; } +#Total column supercooled liquid water +'228088' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 167 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + } #Total column rain water '228089' = { discipline = 0 ; @@ -2845,6 +2939,36 @@ typeOfSecondFixedSurface = 255 ; typeOfStatisticalProcessing = 1 ; } +#Mean surface photosynthetically active radiation flux, clear sky +'235022' = { + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 60 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 0 ; + } +#Sunshine duration fraction +'235044' = { + discipline = 0 ; + parameterCategory = 6 ; + parameterNumber = 51 ; + typeOfFirstFixedSurface = 1 ; + } +#Mean vertically integrated moisture divergence +'235054' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 165 ; + typeOfStatisticalProcessing = 0 ; + } +#Mean surface direct short-wave radiation flux, clear sky +'235059' = { + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 61 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 0 ; + } #Time integral of surface latent heat sublimation flux '235071' = { discipline = 0 ; diff --git a/definitions/grib2/shortName.def b/definitions/grib2/shortName.def index ccc13076d..b318da296 100644 --- a/definitions/grib2/shortName.def +++ b/definitions/grib2/shortName.def @@ -572,6 +572,92 @@ scaleFactorOfLowerLimit = 0 ; probabilityType = 0 ; } +#Wave induced mean sea level correction +'weta' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 87 ; + } +#Ratio of wave angular and frequency width +'wraf' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 80 ; + } +#Number of events in freak waves statistics +'wnslc' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 89 ; + } +#U-component of surface momentum flux into ocean +'utauo' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 90 ; + typeOfFirstFixedSurface = 1 ; + } +#V-component of surface momentum flux into ocean +'vtauo' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 91 ; + typeOfFirstFixedSurface = 1 ; + } +#Wave turbulent energy flux into ocean +'wphio' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 92 ; + } +#Wave energy flux magnitude +'wefxm' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 78 ; + } +#Wave energy flux mean direction +'wefxd' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 79 ; + } +#Wave Spectral Skewness +'wss' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 77 ; + } +#Free convective velocity over the oceans +'wstar' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 81 ; + } +#Air density over the oceans +'rhoao' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 82 ; + } +#Normalized energy flux into waves +'phiaw' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 83 ; + } +#Normalized energy flux into ocean +'phioc' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 85 ; + } +#Normalized stress into ocean +'tauoc' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 84 ; + } #Mean sea water temperature in the upper 300 m 'mswt300m' = { discipline = 10 ; @@ -2275,6 +2361,14 @@ scaledValueOfSecondFixedSurface = 10 ; scaleFactorOfSecondFixedSurface = 1 ; } +#Total column supercooled liquid water +'tcslw' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 167 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + } #Total column rain water 'tcrw' = { discipline = 0 ; @@ -2845,6 +2939,36 @@ typeOfSecondFixedSurface = 255 ; typeOfStatisticalProcessing = 1 ; } +#Mean surface photosynthetically active radiation flux, clear sky +'msparfcs' = { + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 60 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 0 ; + } +#Sunshine duration fraction +'sdf' = { + discipline = 0 ; + parameterCategory = 6 ; + parameterNumber = 51 ; + typeOfFirstFixedSurface = 1 ; + } +#Mean vertically integrated moisture divergence +'mvimd' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 165 ; + typeOfStatisticalProcessing = 0 ; + } +#Mean surface direct short-wave radiation flux, clear sky +'msdrswrfcs' = { + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 61 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 0 ; + } #Time integral of surface latent heat sublimation flux 'tislhsf' = { discipline = 0 ; diff --git a/definitions/grib2/units.def b/definitions/grib2/units.def index 0aeb9a81b..917caea8b 100644 --- a/definitions/grib2/units.def +++ b/definitions/grib2/units.def @@ -572,6 +572,92 @@ scaleFactorOfLowerLimit = 0 ; probabilityType = 0 ; } +#Wave induced mean sea level correction +'m' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 87 ; + } +#Ratio of wave angular and frequency width +'Numeric' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 80 ; + } +#Number of events in freak waves statistics +'Numeric' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 89 ; + } +#U-component of surface momentum flux into ocean +'N m**-2' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 90 ; + typeOfFirstFixedSurface = 1 ; + } +#V-component of surface momentum flux into ocean +'N m**-2' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 91 ; + typeOfFirstFixedSurface = 1 ; + } +#Wave turbulent energy flux into ocean +'W m**-2' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 92 ; + } +#Wave energy flux magnitude +'W m**-1' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 78 ; + } +#Wave energy flux mean direction +'Degree true' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 79 ; + } +#Wave Spectral Skewness +'Numeric' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 77 ; + } +#Free convective velocity over the oceans +'m s**-1' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 81 ; + } +#Air density over the oceans +'kg m**-3' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 82 ; + } +#Normalized energy flux into waves +'Numeric' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 83 ; + } +#Normalized energy flux into ocean +'Numeric' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 85 ; + } +#Normalized stress into ocean +'Numeric' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 84 ; + } #Mean sea water temperature in the upper 300 m 'K' = { discipline = 10 ; @@ -2275,6 +2361,14 @@ scaledValueOfSecondFixedSurface = 10 ; scaleFactorOfSecondFixedSurface = 1 ; } +#Total column supercooled liquid water +'kg m**-2' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 167 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + } #Total column rain water 'kg m**-2' = { discipline = 0 ; @@ -2845,6 +2939,36 @@ typeOfSecondFixedSurface = 255 ; typeOfStatisticalProcessing = 1 ; } +#Mean surface photosynthetically active radiation flux, clear sky +'W m**-2' = { + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 60 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 0 ; + } +#Sunshine duration fraction +'Proportion' = { + discipline = 0 ; + parameterCategory = 6 ; + parameterNumber = 51 ; + typeOfFirstFixedSurface = 1 ; + } +#Mean vertically integrated moisture divergence +'kg m**-2 s**-1' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 165 ; + typeOfStatisticalProcessing = 0 ; + } +#Mean surface direct short-wave radiation flux, clear sky +'W m**-2' = { + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 61 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 0 ; + } #Time integral of surface latent heat sublimation flux 'J m**-2' = { discipline = 0 ; From 83e9c8740e21d76bd5f8d61130c5c65c9ee3fc83 Mon Sep 17 00:00:00 2001 From: Eugen Betke Date: Tue, 30 May 2023 06:35:17 +0000 Subject: [PATCH 183/378] ECC-1602: CCSDS performance optimisation --- src/grib_accessor_class_data_ccsds_packing.cc | 101 ++++++++++++++---- 1 file changed, 82 insertions(+), 19 deletions(-) diff --git a/src/grib_accessor_class_data_ccsds_packing.cc b/src/grib_accessor_class_data_ccsds_packing.cc index 07f42539a..90f1a9fb4 100644 --- a/src/grib_accessor_class_data_ccsds_packing.cc +++ b/src/grib_accessor_class_data_ccsds_packing.cc @@ -234,7 +234,6 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) return err; if ((err = grib_get_long_internal(hand, self->decimal_scale_factor, &decimal_scale_factor)) != GRIB_SUCCESS) return err; - if ((err = grib_get_long_internal(hand, self->ccsds_flags, &ccsds_flags)) != GRIB_SUCCESS) return err; if ((err = grib_get_long_internal(hand, self->ccsds_block_size, &ccsds_block_size)) != GRIB_SUCCESS) @@ -242,6 +241,12 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) if ((err = grib_get_long_internal(hand, self->ccsds_rsi, &ccsds_rsi)) != GRIB_SUCCESS) return err; + ccsds_flags &= ~AEC_DATA_MSB; // reset MSB + ccsds_flags &= ~AEC_DATA_3BYTE; // reset 3BYTE + unsigned short endianess_test = 1; + if (reinterpret_cast(&endianess_test)[0] == 0) + ccsds_flags |= AEC_DATA_MSB; + // Special case if (*len == 0) { grib_buffer_replace(a, NULL, 0, 1, 1); @@ -355,32 +360,43 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) binary_scale_factor = grib_get_binary_scale_fact(max, reference_value, bits_per_value, &err); divisor = grib_power(-binary_scale_factor, 2); - bits8 = (bits_per_value + 7) / 8 * 8; - encoded = (unsigned char*)grib_context_buffer_malloc_clear(a->context, bits8 / 8 * n_vals); + size_t nbytes = (bits_per_value + 7) / 8; + if (nbytes == 3) + nbytes = 4; + + encoded = (unsigned char*)grib_context_buffer_malloc_clear(a->context, nbytes * n_vals); if (!encoded) { err = GRIB_OUT_OF_MEMORY; goto cleanup; } - buflen = 0; - p = encoded; - for (i = 0; i < n_vals; i++) { - long blen = bits8; - unsigned long unsigned_val = (unsigned long)((((val[i] * d) - reference_value) * divisor) + 0.5); - while (blen >= 8) { - blen -= 8; - *p = (unsigned_val >> blen); - p++; - buflen++; - } + switch (nbytes) { + case 1: + for (i = 0; i < n_vals; i++) { + encoded[i] = static_cast(((val[i] * d - reference_value) * divisor) + 0.5); + } + break; + case 2: + for (i = 0; i < n_vals; i++) { + reinterpret_cast(encoded)[i] = static_cast(((val[i] * d - reference_value) * divisor) + 0.5); + } + break; + case 4: + for (i = 0; i < n_vals; i++) { + reinterpret_cast(encoded)[i] = static_cast(((val[i] * d - reference_value) * divisor) + 0.5); + } + break; + default: + err = GRIB_NOT_IMPLEMENTED; + goto cleanup; } - // buflen = n_vals*(bits_per_value/8); + grib_context_log(a->context, GRIB_LOG_DEBUG,"data_ccsds_packing pack_double: packing %s, %d values", a->name, n_vals); // ECC-1431: GRIB2: CCSDS encoding failure AEC_STREAM_ERROR - buflen += buflen / 20 + 256; + buflen = (nbytes * n_vals) * 67 / 64 + 256; buf = (unsigned char*)grib_context_buffer_malloc_clear(a->context, buflen); if (!buf) { @@ -415,7 +431,8 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) strm.next_out = buf; strm.avail_out = buflen; strm.next_in = encoded; - strm.avail_in = bits8 / 8 * n_vals; + strm.avail_in = nbytes * n_vals; + // This does not support spherical harmonics, and treats 24 differently than: // see http://cdo.sourcearchive.com/documentation/1.5.1.dfsg.1-1/cgribexlib_8c_source.html @@ -476,6 +493,7 @@ static int unpack(grib_accessor* a, T* val, size_t* len) long ccsds_flags; long ccsds_block_size; long ccsds_rsi; + size_t nbytes; self->dirty = 0; @@ -501,6 +519,12 @@ static int unpack(grib_accessor* a, T* val, size_t* len) if ((err = grib_get_long_internal(hand, self->ccsds_rsi, &ccsds_rsi)) != GRIB_SUCCESS) return err; + ccsds_flags &= ~AEC_DATA_MSB; // reset MSB + ccsds_flags &= ~AEC_DATA_3BYTE; // reset 3BYTE + unsigned short endianess_test = 1; + if (reinterpret_cast(&endianess_test)[0] == 0) + ccsds_flags |= AEC_DATA_MSB; + // TODO(masn): This should be called upstream if (*len < n_vals) return GRIB_ARRAY_TOO_SMALL; @@ -528,8 +552,13 @@ static int unpack(grib_accessor* a, T* val, size_t* len) strm.next_in = buf; strm.avail_in = buflen; + nbytes = (bits_per_value + 7) / 8; + if (nbytes == 3) + nbytes = 4; + bits8 = ((bits_per_value + 7) / 8) * 8; - size = n_vals * ((bits_per_value + 7) / 8); + //size = n_vals * ((bits_per_value + 7) / 8); + size = n_vals * nbytes; decoded = (unsigned char*)grib_context_buffer_malloc_clear(a->context, size); if (!decoded) { err = GRIB_OUT_OF_MEMORY; @@ -551,7 +580,41 @@ static int unpack(grib_accessor* a, T* val, size_t* len) // ECC-1427: Performance improvement //grib_decode_float_array(decoded, &pos, bits8 , reference_value, bscale, dscale, n_vals, val); - grib_decode_array(decoded, &pos, bits8 , reference_value, bscale, dscale, n_vals, val); + //grib_decode_array(decoded, &pos, bits8 , reference_value, bscale, dscale, n_vals, val); + + + + switch (nbytes) { + case 1: + { + unsigned char *tmp_i8 = reinterpret_cast(decoded); + for (i = 0; i < n_vals; i++) { + val[i] = ((tmp_i8[i] * bscale) + reference_value) * dscale; + } + } + break; + case 2: + { + unsigned short *tmp_i16 = reinterpret_cast(decoded); + for (i = 0; i < n_vals; i++) { + val[i] = ((tmp_i16[i] * bscale) + reference_value) * dscale; + } + } + break; + case 4: + { + unsigned int *tmp_i32 = reinterpret_cast(decoded); + for (i = 0; i < n_vals; i++) { + val[i] = ((tmp_i32[i] * bscale) + reference_value) * dscale; + } + } + break; + default: + err = GRIB_NOT_IMPLEMENTED; + goto cleanup; + } + + *len = n_vals; cleanup: From e16e4ae5db2e1ad0f1dc24a1766764103a393bc6 Mon Sep 17 00:00:00 2001 From: Eugen Betke Date: Tue, 30 May 2023 12:24:23 +0000 Subject: [PATCH 184/378] ECC-1602: Fix reinterpret_cast<>() --- src/grib_accessor_class_data_ccsds_packing.cc | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/grib_accessor_class_data_ccsds_packing.cc b/src/grib_accessor_class_data_ccsds_packing.cc index 90f1a9fb4..96edecf74 100644 --- a/src/grib_accessor_class_data_ccsds_packing.cc +++ b/src/grib_accessor_class_data_ccsds_packing.cc @@ -384,7 +384,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) break; case 4: for (i = 0; i < n_vals; i++) { - reinterpret_cast(encoded)[i] = static_cast(((val[i] * d - reference_value) * divisor) + 0.5); + reinterpret_cast(encoded)[i] = static_cast(((val[i] * d - reference_value) * divisor) + 0.5); } break; default: @@ -589,7 +589,7 @@ static int unpack(grib_accessor* a, T* val, size_t* len) { unsigned char *tmp_i8 = reinterpret_cast(decoded); for (i = 0; i < n_vals; i++) { - val[i] = ((tmp_i8[i] * bscale) + reference_value) * dscale; + val[i] = (tmp_i8[i] * bscale + reference_value) * dscale; } } break; @@ -597,7 +597,7 @@ static int unpack(grib_accessor* a, T* val, size_t* len) { unsigned short *tmp_i16 = reinterpret_cast(decoded); for (i = 0; i < n_vals; i++) { - val[i] = ((tmp_i16[i] * bscale) + reference_value) * dscale; + val[i] = (tmp_i16[i] * bscale + reference_value) * dscale; } } break; @@ -605,7 +605,7 @@ static int unpack(grib_accessor* a, T* val, size_t* len) { unsigned int *tmp_i32 = reinterpret_cast(decoded); for (i = 0; i < n_vals; i++) { - val[i] = ((tmp_i32[i] * bscale) + reference_value) * dscale; + val[i] = (tmp_i32[i] * bscale + reference_value) * dscale; } } break; From 33ae8831925b527813d399f14c4914948154a7df Mon Sep 17 00:00:00 2001 From: Eugen Betke Date: Tue, 30 May 2023 12:35:13 +0000 Subject: [PATCH 185/378] ECC-1602: Refactoring: endianess_test -> is_little_endian --- src/grib_accessor_class_data_ccsds_packing.cc | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/grib_accessor_class_data_ccsds_packing.cc b/src/grib_accessor_class_data_ccsds_packing.cc index 96edecf74..acc5577f1 100644 --- a/src/grib_accessor_class_data_ccsds_packing.cc +++ b/src/grib_accessor_class_data_ccsds_packing.cc @@ -241,10 +241,10 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) if ((err = grib_get_long_internal(hand, self->ccsds_rsi, &ccsds_rsi)) != GRIB_SUCCESS) return err; - ccsds_flags &= ~AEC_DATA_MSB; // reset MSB - ccsds_flags &= ~AEC_DATA_3BYTE; // reset 3BYTE - unsigned short endianess_test = 1; - if (reinterpret_cast(&endianess_test)[0] == 0) + ccsds_flags &= ~AEC_DATA_MSB; // enable little-endian + ccsds_flags &= ~AEC_DATA_3BYTE; // disable support for 3-bytes per value + unsigned short is_little_endian = 1; + if (reinterpret_cast(&is_little_endian)[0] == 0) ccsds_flags |= AEC_DATA_MSB; // Special case @@ -519,10 +519,10 @@ static int unpack(grib_accessor* a, T* val, size_t* len) if ((err = grib_get_long_internal(hand, self->ccsds_rsi, &ccsds_rsi)) != GRIB_SUCCESS) return err; - ccsds_flags &= ~AEC_DATA_MSB; // reset MSB - ccsds_flags &= ~AEC_DATA_3BYTE; // reset 3BYTE - unsigned short endianess_test = 1; - if (reinterpret_cast(&endianess_test)[0] == 0) + ccsds_flags &= ~AEC_DATA_MSB; // enable little-endian + ccsds_flags &= ~AEC_DATA_3BYTE; // disable support for 3-bytes per value + unsigned short is_little_endian = 1; + if (reinterpret_cast(&is_little_endian)[0] == 0) ccsds_flags |= AEC_DATA_MSB; // TODO(masn): This should be called upstream From b812622c4783aadc093b528cab490b028119e913 Mon Sep 17 00:00:00 2001 From: Eugen Betke Date: Tue, 30 May 2023 12:52:35 +0000 Subject: [PATCH 186/378] ECC-1602: Comments --- src/grib_accessor_class_data_ccsds_packing.cc | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/grib_accessor_class_data_ccsds_packing.cc b/src/grib_accessor_class_data_ccsds_packing.cc index acc5577f1..a71d1b67d 100644 --- a/src/grib_accessor_class_data_ccsds_packing.cc +++ b/src/grib_accessor_class_data_ccsds_packing.cc @@ -241,6 +241,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) if ((err = grib_get_long_internal(hand, self->ccsds_rsi, &ccsds_rsi)) != GRIB_SUCCESS) return err; + // ECC-1602: Performance improvement ccsds_flags &= ~AEC_DATA_MSB; // enable little-endian ccsds_flags &= ~AEC_DATA_3BYTE; // disable support for 3-bytes per value unsigned short is_little_endian = 1; @@ -371,6 +372,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) goto cleanup; } + // ECC-1602: Performance improvement switch (nbytes) { case 1: for (i = 0; i < n_vals; i++) { @@ -519,6 +521,7 @@ static int unpack(grib_accessor* a, T* val, size_t* len) if ((err = grib_get_long_internal(hand, self->ccsds_rsi, &ccsds_rsi)) != GRIB_SUCCESS) return err; + // ECC-1602: Performance improvement ccsds_flags &= ~AEC_DATA_MSB; // enable little-endian ccsds_flags &= ~AEC_DATA_3BYTE; // disable support for 3-bytes per value unsigned short is_little_endian = 1; @@ -578,12 +581,11 @@ static int unpack(grib_accessor* a, T* val, size_t* len) pos = 0; - // ECC-1427: Performance improvement + // ECC-1427: Performance improvement (replaced by switch statement below) //grib_decode_float_array(decoded, &pos, bits8 , reference_value, bscale, dscale, n_vals, val); //grib_decode_array(decoded, &pos, bits8 , reference_value, bscale, dscale, n_vals, val); - - + // ECC-1602: Performance improvement switch (nbytes) { case 1: { From 1db8debcc2f610d5025156aebcd80fa54c6a2319 Mon Sep 17 00:00:00 2001 From: Eugen Betke Date: Tue, 30 May 2023 13:16:26 +0000 Subject: [PATCH 187/378] ECC-1602: Refactoring: Clean-up switch statement --- src/grib_accessor_class_data_ccsds_packing.cc | 25 ++++++------------- 1 file changed, 7 insertions(+), 18 deletions(-) diff --git a/src/grib_accessor_class_data_ccsds_packing.cc b/src/grib_accessor_class_data_ccsds_packing.cc index a71d1b67d..0c219ff79 100644 --- a/src/grib_accessor_class_data_ccsds_packing.cc +++ b/src/grib_accessor_class_data_ccsds_packing.cc @@ -581,34 +581,24 @@ static int unpack(grib_accessor* a, T* val, size_t* len) pos = 0; - // ECC-1427: Performance improvement (replaced by switch statement below) - //grib_decode_float_array(decoded, &pos, bits8 , reference_value, bscale, dscale, n_vals, val); + // ECC-1427: Performance improvement (replaced by ECC-1602) //grib_decode_array(decoded, &pos, bits8 , reference_value, bscale, dscale, n_vals, val); // ECC-1602: Performance improvement switch (nbytes) { case 1: - { - unsigned char *tmp_i8 = reinterpret_cast(decoded); - for (i = 0; i < n_vals; i++) { - val[i] = (tmp_i8[i] * bscale + reference_value) * dscale; - } + for (i = 0; i < n_vals; i++) { + val[i] = (reinterpret_cast(decoded)[i] * bscale + reference_value) * dscale; } break; case 2: - { - unsigned short *tmp_i16 = reinterpret_cast(decoded); - for (i = 0; i < n_vals; i++) { - val[i] = (tmp_i16[i] * bscale + reference_value) * dscale; - } + for (i = 0; i < n_vals; i++) { + val[i] = (reinterpret_cast(decoded)[i] * bscale + reference_value) * dscale; } break; case 4: - { - unsigned int *tmp_i32 = reinterpret_cast(decoded); - for (i = 0; i < n_vals; i++) { - val[i] = (tmp_i32[i] * bscale + reference_value) * dscale; - } + for (i = 0; i < n_vals; i++) { + val[i] = (reinterpret_cast(decoded)[i] * bscale + reference_value) * dscale; } break; default: @@ -616,7 +606,6 @@ static int unpack(grib_accessor* a, T* val, size_t* len) goto cleanup; } - *len = n_vals; cleanup: From 55880bbc0c9e5ee682484b21fd5c769396aeebd9 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 30 May 2023 13:34:39 +0000 Subject: [PATCH 188/378] ECC-1592: Add correct GRIB2 definitions to discipline 192 definitions from WMO FT2023-1 (part 1) --- .../localConcepts/ecmf/cfVarName.legacy.def | 192 ++++++++++++++++++ .../grib2/localConcepts/ecmf/name.legacy.def | 192 ++++++++++++++++++ .../localConcepts/ecmf/paramId.legacy.def | 192 ++++++++++++++++++ .../localConcepts/ecmf/shortName.legacy.def | 192 ++++++++++++++++++ .../grib2/localConcepts/ecmf/units.legacy.def | 192 ++++++++++++++++++ 5 files changed, 960 insertions(+) diff --git a/definitions/grib2/localConcepts/ecmf/cfVarName.legacy.def b/definitions/grib2/localConcepts/ecmf/cfVarName.legacy.def index 487627209..677236c39 100644 --- a/definitions/grib2/localConcepts/ecmf/cfVarName.legacy.def +++ b/definitions/grib2/localConcepts/ecmf/cfVarName.legacy.def @@ -751,3 +751,195 @@ parameterCategory = 210 ; parameterNumber = 191 ; } +#Vertically integrated moisture divergence +'vimd' = { + discipline = 192 ; + parameterCategory = 128 ; + parameterNumber = 213 ; +} +#Vertically integrated moisture divergence flux +'viwvd' = { + discipline = 192 ; + parameterCategory = 162 ; + parameterNumber = 84 ; +} +#Forecast logarithm of surface roughness for heat +'flsr' = { + discipline = 192 ; + parameterCategory = 128 ; + parameterNumber = 245 ; +} +#U-component of neutral wind +'u10n' = { + discipline = 192 ; + parameterCategory = 228 ; + parameterNumber = 131 ; +} +#V-component of neutral wind +'v10n' = { + discipline = 192 ; + parameterCategory = 228 ; + parameterNumber = 132 ; +} +#Magnitude of turbulent surface stress +'magss' = { + discipline = 192 ; + parameterCategory = 128 ; + parameterNumber = 48 ; +} +#Vertical integral of mass of atmosphere +'vima' = { + discipline = 192 ; + parameterCategory = 162 ; + parameterNumber = 53 ; +} +#Height of zero-degree wet-bulb temperature +'hwbt0' = { + discipline = 192 ; + parameterCategory = 228 ; + parameterNumber = 47 ; +} +#Height of one-degree wet-bulb temperature +'hwbt1' = { + discipline = 192 ; + parameterCategory = 228 ; + parameterNumber = 48 ; +} +#Surface photosynthetically active radiation, clear sky +'parcs' = { + discipline = 192 ; + parameterCategory = 128 ; + parameterNumber = 20 ; +} +#Surface direct short-wave radiation, clear sky +'cdir' = { + discipline = 192 ; + parameterCategory = 228 ; + parameterNumber = 22 ; +} +#Duct base height +'dctb' = { + discipline = 192 ; + parameterCategory = 228 ; + parameterNumber = 17 ; +} +#Trapping layer base height +'tplb' = { + discipline = 192 ; + parameterCategory = 228 ; + parameterNumber = 18 ; +} +#Trapping layer top height +'tplt' = { + discipline = 192 ; + parameterCategory = 228 ; + parameterNumber = 19 ; +} +#Mean vertical gradient of refractivity inside trapping layer +'dndza' = { + discipline = 192 ; + parameterCategory = 228 ; + parameterNumber = 16 ; +} +#Minimum vertical gradient of refractivity inside trapping layer +'dndzn' = { + discipline = 192 ; + parameterCategory = 228 ; + parameterNumber = 15 ; +} +#Vertical integral of eastward heat flux +'vithee' = { + discipline = 192 ; + parameterCategory = 162 ; + parameterNumber = 69 ; +} +#Vertical integral of northward heat flux +'vithen' = { + discipline = 192 ; + parameterCategory = 162 ; + parameterNumber = 70 ; +} +#Vertical integral of potential+internal+latent energy +'vipile' = { + discipline = 192 ; + parameterCategory = 162 ; + parameterNumber = 62 ; +} +#Skin reservoir content +'src' = { + discipline = 192 ; + parameterCategory = 128 ; + parameterNumber = 198 ; +} +#Skin reservoir content +'srcrea' = { + discipline = 192 ; + parameterCategory = 160 ; + parameterNumber = 198 ; +} +#Sub-surface runoff +'ssro' = { + discipline = 192 ; + parameterCategory = 128 ; + parameterNumber = 9 ; +} +#Low vegetation cover +'cvl' = { + discipline = 192 ; + parameterCategory = 128 ; + parameterNumber = 27 ; +} +#High vegetation cover +'cvh' = { + discipline = 192 ; + parameterCategory = 128 ; + parameterNumber = 28 ; +} +#Leaf area index, low vegetation +'lai_lv' = { + discipline = 192 ; + parameterCategory = 128 ; + parameterNumber = 66 ; +} +#Leaf area index, high vegetation +'lai_hv' = { + discipline = 192 ; + parameterCategory = 128 ; + parameterNumber = 67 ; +} +#Type of low vegetation +'tvl' = { + discipline = 192 ; + parameterCategory = 128 ; + parameterNumber = 29 ; +} +#Type of high vegetation +'tvh' = { + discipline = 192 ; + parameterCategory = 128 ; + parameterNumber = 30 ; +} +#Mean direction of total swell +'mdts' = { + discipline = 192 ; + parameterCategory = 140 ; + parameterNumber = 238 ; +} +#Mean direction of wind waves +'mdww' = { + discipline = 192 ; + parameterCategory = 140 ; + parameterNumber = 235 ; +} +#Charnock +'chnk' = { + discipline = 192 ; + parameterCategory = 128 ; + parameterNumber = 148 ; +} +#2D wave spectra (single) +'d2fd' = { + discipline = 192 ; + parameterCategory = 140 ; + parameterNumber = 251 ; +} diff --git a/definitions/grib2/localConcepts/ecmf/name.legacy.def b/definitions/grib2/localConcepts/ecmf/name.legacy.def index 0dc749da9..daf52a772 100644 --- a/definitions/grib2/localConcepts/ecmf/name.legacy.def +++ b/definitions/grib2/localConcepts/ecmf/name.legacy.def @@ -751,3 +751,195 @@ parameterCategory = 210 ; parameterNumber = 191 ; } +#Vertically integrated moisture divergence +'Vertically integrated moisture divergence' = { + discipline = 192 ; + parameterCategory = 128 ; + parameterNumber = 213 ; +} +#Vertically integrated moisture divergence flux +'Vertically integrated moisture divergence flux' = { + discipline = 192 ; + parameterCategory = 162 ; + parameterNumber = 84 ; +} +#Forecast logarithm of surface roughness for heat +'Forecast logarithm of surface roughness for heat' = { + discipline = 192 ; + parameterCategory = 128 ; + parameterNumber = 245 ; +} +#U-component of neutral wind +'U-component of neutral wind' = { + discipline = 192 ; + parameterCategory = 228 ; + parameterNumber = 131 ; +} +#V-component of neutral wind +'V-component of neutral wind' = { + discipline = 192 ; + parameterCategory = 228 ; + parameterNumber = 132 ; +} +#Magnitude of turbulent surface stress +'Magnitude of turbulent surface stress' = { + discipline = 192 ; + parameterCategory = 128 ; + parameterNumber = 48 ; +} +#Vertical integral of mass of atmosphere +'Vertical integral of mass of atmosphere' = { + discipline = 192 ; + parameterCategory = 162 ; + parameterNumber = 53 ; +} +#Height of zero-degree wet-bulb temperature +'Height of zero-degree wet-bulb temperature' = { + discipline = 192 ; + parameterCategory = 228 ; + parameterNumber = 47 ; +} +#Height of one-degree wet-bulb temperature +'Height of one-degree wet-bulb temperature' = { + discipline = 192 ; + parameterCategory = 228 ; + parameterNumber = 48 ; +} +#Surface photosynthetically active radiation, clear sky +'Surface photosynthetically active radiation, clear sky' = { + discipline = 192 ; + parameterCategory = 128 ; + parameterNumber = 20 ; +} +#Surface direct short-wave radiation, clear sky +'Surface direct short-wave radiation, clear sky' = { + discipline = 192 ; + parameterCategory = 228 ; + parameterNumber = 22 ; +} +#Duct base height +'Duct base height' = { + discipline = 192 ; + parameterCategory = 228 ; + parameterNumber = 17 ; +} +#Trapping layer base height +'Trapping layer base height' = { + discipline = 192 ; + parameterCategory = 228 ; + parameterNumber = 18 ; +} +#Trapping layer top height +'Trapping layer top height' = { + discipline = 192 ; + parameterCategory = 228 ; + parameterNumber = 19 ; +} +#Mean vertical gradient of refractivity inside trapping layer +'Mean vertical gradient of refractivity inside trapping layer' = { + discipline = 192 ; + parameterCategory = 228 ; + parameterNumber = 16 ; +} +#Minimum vertical gradient of refractivity inside trapping layer +'Minimum vertical gradient of refractivity inside trapping layer' = { + discipline = 192 ; + parameterCategory = 228 ; + parameterNumber = 15 ; +} +#Vertical integral of eastward heat flux +'Vertical integral of eastward heat flux' = { + discipline = 192 ; + parameterCategory = 162 ; + parameterNumber = 69 ; +} +#Vertical integral of northward heat flux +'Vertical integral of northward heat flux' = { + discipline = 192 ; + parameterCategory = 162 ; + parameterNumber = 70 ; +} +#Vertical integral of potential+internal+latent energy +'Vertical integral of potential+internal+latent energy' = { + discipline = 192 ; + parameterCategory = 162 ; + parameterNumber = 62 ; +} +#Skin reservoir content +'Skin reservoir content' = { + discipline = 192 ; + parameterCategory = 128 ; + parameterNumber = 198 ; +} +#Skin reservoir content +'Skin reservoir content' = { + discipline = 192 ; + parameterCategory = 160 ; + parameterNumber = 198 ; +} +#Sub-surface runoff +'Sub-surface runoff' = { + discipline = 192 ; + parameterCategory = 128 ; + parameterNumber = 9 ; +} +#Low vegetation cover +'Low vegetation cover' = { + discipline = 192 ; + parameterCategory = 128 ; + parameterNumber = 27 ; +} +#High vegetation cover +'High vegetation cover' = { + discipline = 192 ; + parameterCategory = 128 ; + parameterNumber = 28 ; +} +#Leaf area index, low vegetation +'Leaf area index, low vegetation' = { + discipline = 192 ; + parameterCategory = 128 ; + parameterNumber = 66 ; +} +#Leaf area index, high vegetation +'Leaf area index, high vegetation' = { + discipline = 192 ; + parameterCategory = 128 ; + parameterNumber = 67 ; +} +#Type of low vegetation +'Type of low vegetation' = { + discipline = 192 ; + parameterCategory = 128 ; + parameterNumber = 29 ; +} +#Type of high vegetation +'Type of high vegetation' = { + discipline = 192 ; + parameterCategory = 128 ; + parameterNumber = 30 ; +} +#Mean direction of total swell +'Mean direction of total swell' = { + discipline = 192 ; + parameterCategory = 140 ; + parameterNumber = 238 ; +} +#Mean direction of wind waves +'Mean direction of wind waves' = { + discipline = 192 ; + parameterCategory = 140 ; + parameterNumber = 235 ; +} +#Charnock +'Charnock' = { + discipline = 192 ; + parameterCategory = 128 ; + parameterNumber = 148 ; +} +#2D wave spectra (single) +'2D wave spectra (single)' = { + discipline = 192 ; + parameterCategory = 140 ; + parameterNumber = 251 ; +} diff --git a/definitions/grib2/localConcepts/ecmf/paramId.legacy.def b/definitions/grib2/localConcepts/ecmf/paramId.legacy.def index 513bad918..b57783ca3 100644 --- a/definitions/grib2/localConcepts/ecmf/paramId.legacy.def +++ b/definitions/grib2/localConcepts/ecmf/paramId.legacy.def @@ -751,3 +751,195 @@ parameterCategory = 210 ; parameterNumber = 191 ; } +#Vertically integrated moisture divergence +'213' = { + discipline = 192 ; + parameterCategory = 128 ; + parameterNumber = 213 ; +} +#Vertically integrated moisture divergence flux +'162084' = { + discipline = 192 ; + parameterCategory = 162 ; + parameterNumber = 84 ; +} +#Forecast logarithm of surface roughness for heat +'245' = { + discipline = 192 ; + parameterCategory = 128 ; + parameterNumber = 245 ; +} +#U-component of neutral wind +'228131' = { + discipline = 192 ; + parameterCategory = 228 ; + parameterNumber = 131 ; +} +#V-component of neutral wind +'228132' = { + discipline = 192 ; + parameterCategory = 228 ; + parameterNumber = 132 ; +} +#Magnitude of turbulent surface stress +'48' = { + discipline = 192 ; + parameterCategory = 128 ; + parameterNumber = 48 ; +} +#Vertical integral of mass of atmosphere +'162053' = { + discipline = 192 ; + parameterCategory = 162 ; + parameterNumber = 53 ; +} +#Height of zero-degree wet-bulb temperature +'228047' = { + discipline = 192 ; + parameterCategory = 228 ; + parameterNumber = 47 ; +} +#Height of one-degree wet-bulb temperature +'228048' = { + discipline = 192 ; + parameterCategory = 228 ; + parameterNumber = 48 ; +} +#Surface photosynthetically active radiation, clear sky +'20' = { + discipline = 192 ; + parameterCategory = 128 ; + parameterNumber = 20 ; +} +#Surface direct short-wave radiation, clear sky +'228022' = { + discipline = 192 ; + parameterCategory = 228 ; + parameterNumber = 22 ; +} +#Duct base height +'228017' = { + discipline = 192 ; + parameterCategory = 228 ; + parameterNumber = 17 ; +} +#Trapping layer base height +'228018' = { + discipline = 192 ; + parameterCategory = 228 ; + parameterNumber = 18 ; +} +#Trapping layer top height +'228019' = { + discipline = 192 ; + parameterCategory = 228 ; + parameterNumber = 19 ; +} +#Mean vertical gradient of refractivity inside trapping layer +'228016' = { + discipline = 192 ; + parameterCategory = 228 ; + parameterNumber = 16 ; +} +#Minimum vertical gradient of refractivity inside trapping layer +'228015' = { + discipline = 192 ; + parameterCategory = 228 ; + parameterNumber = 15 ; +} +#Vertical integral of eastward heat flux +'162069' = { + discipline = 192 ; + parameterCategory = 162 ; + parameterNumber = 69 ; +} +#Vertical integral of northward heat flux +'162070' = { + discipline = 192 ; + parameterCategory = 162 ; + parameterNumber = 70 ; +} +#Vertical integral of potential+internal+latent energy +'162062' = { + discipline = 192 ; + parameterCategory = 162 ; + parameterNumber = 62 ; +} +#Skin reservoir content +'198' = { + discipline = 192 ; + parameterCategory = 128 ; + parameterNumber = 198 ; +} +#Skin reservoir content +'160198' = { + discipline = 192 ; + parameterCategory = 160 ; + parameterNumber = 198 ; +} +#Sub-surface runoff +'9' = { + discipline = 192 ; + parameterCategory = 128 ; + parameterNumber = 9 ; +} +#Low vegetation cover +'27' = { + discipline = 192 ; + parameterCategory = 128 ; + parameterNumber = 27 ; +} +#High vegetation cover +'28' = { + discipline = 192 ; + parameterCategory = 128 ; + parameterNumber = 28 ; +} +#Leaf area index, low vegetation +'66' = { + discipline = 192 ; + parameterCategory = 128 ; + parameterNumber = 66 ; +} +#Leaf area index, high vegetation +'67' = { + discipline = 192 ; + parameterCategory = 128 ; + parameterNumber = 67 ; +} +#Type of low vegetation +'29' = { + discipline = 192 ; + parameterCategory = 128 ; + parameterNumber = 29 ; +} +#Type of high vegetation +'30' = { + discipline = 192 ; + parameterCategory = 128 ; + parameterNumber = 30 ; +} +#Mean direction of total swell +'140238' = { + discipline = 192 ; + parameterCategory = 140 ; + parameterNumber = 238 ; +} +#Mean direction of wind waves +'140235' = { + discipline = 192 ; + parameterCategory = 140 ; + parameterNumber = 235 ; +} +#Charnock +'148' = { + discipline = 192 ; + parameterCategory = 128 ; + parameterNumber = 148 ; +} +#2D wave spectra (single) +'140251' = { + discipline = 192 ; + parameterCategory = 140 ; + parameterNumber = 251 ; +} diff --git a/definitions/grib2/localConcepts/ecmf/shortName.legacy.def b/definitions/grib2/localConcepts/ecmf/shortName.legacy.def index 3844ea59e..a61f8b23e 100644 --- a/definitions/grib2/localConcepts/ecmf/shortName.legacy.def +++ b/definitions/grib2/localConcepts/ecmf/shortName.legacy.def @@ -751,3 +751,195 @@ parameterCategory = 210 ; parameterNumber = 191 ; } +#Vertically integrated moisture divergence +'vimd' = { + discipline = 192 ; + parameterCategory = 128 ; + parameterNumber = 213 ; +} +#Vertically integrated moisture divergence flux +'viwvd' = { + discipline = 192 ; + parameterCategory = 162 ; + parameterNumber = 84 ; +} +#Forecast logarithm of surface roughness for heat +'flsr' = { + discipline = 192 ; + parameterCategory = 128 ; + parameterNumber = 245 ; +} +#U-component of neutral wind +'u10n' = { + discipline = 192 ; + parameterCategory = 228 ; + parameterNumber = 131 ; +} +#V-component of neutral wind +'v10n' = { + discipline = 192 ; + parameterCategory = 228 ; + parameterNumber = 132 ; +} +#Magnitude of turbulent surface stress +'magss' = { + discipline = 192 ; + parameterCategory = 128 ; + parameterNumber = 48 ; +} +#Vertical integral of mass of atmosphere +'vima' = { + discipline = 192 ; + parameterCategory = 162 ; + parameterNumber = 53 ; +} +#Height of zero-degree wet-bulb temperature +'hwbt0' = { + discipline = 192 ; + parameterCategory = 228 ; + parameterNumber = 47 ; +} +#Height of one-degree wet-bulb temperature +'hwbt1' = { + discipline = 192 ; + parameterCategory = 228 ; + parameterNumber = 48 ; +} +#Surface photosynthetically active radiation, clear sky +'parcs' = { + discipline = 192 ; + parameterCategory = 128 ; + parameterNumber = 20 ; +} +#Surface direct short-wave radiation, clear sky +'cdir' = { + discipline = 192 ; + parameterCategory = 228 ; + parameterNumber = 22 ; +} +#Duct base height +'dctb' = { + discipline = 192 ; + parameterCategory = 228 ; + parameterNumber = 17 ; +} +#Trapping layer base height +'tplb' = { + discipline = 192 ; + parameterCategory = 228 ; + parameterNumber = 18 ; +} +#Trapping layer top height +'tplt' = { + discipline = 192 ; + parameterCategory = 228 ; + parameterNumber = 19 ; +} +#Mean vertical gradient of refractivity inside trapping layer +'dndza' = { + discipline = 192 ; + parameterCategory = 228 ; + parameterNumber = 16 ; +} +#Minimum vertical gradient of refractivity inside trapping layer +'dndzn' = { + discipline = 192 ; + parameterCategory = 228 ; + parameterNumber = 15 ; +} +#Vertical integral of eastward heat flux +'vithee' = { + discipline = 192 ; + parameterCategory = 162 ; + parameterNumber = 69 ; +} +#Vertical integral of northward heat flux +'vithen' = { + discipline = 192 ; + parameterCategory = 162 ; + parameterNumber = 70 ; +} +#Vertical integral of potential+internal+latent energy +'vipile' = { + discipline = 192 ; + parameterCategory = 162 ; + parameterNumber = 62 ; +} +#Skin reservoir content +'src' = { + discipline = 192 ; + parameterCategory = 128 ; + parameterNumber = 198 ; +} +#Skin reservoir content +'srcrea' = { + discipline = 192 ; + parameterCategory = 160 ; + parameterNumber = 198 ; +} +#Sub-surface runoff +'ssro' = { + discipline = 192 ; + parameterCategory = 128 ; + parameterNumber = 9 ; +} +#Low vegetation cover +'cvl' = { + discipline = 192 ; + parameterCategory = 128 ; + parameterNumber = 27 ; +} +#High vegetation cover +'cvh' = { + discipline = 192 ; + parameterCategory = 128 ; + parameterNumber = 28 ; +} +#Leaf area index, low vegetation +'lai_lv' = { + discipline = 192 ; + parameterCategory = 128 ; + parameterNumber = 66 ; +} +#Leaf area index, high vegetation +'lai_hv' = { + discipline = 192 ; + parameterCategory = 128 ; + parameterNumber = 67 ; +} +#Type of low vegetation +'tvl' = { + discipline = 192 ; + parameterCategory = 128 ; + parameterNumber = 29 ; +} +#Type of high vegetation +'tvh' = { + discipline = 192 ; + parameterCategory = 128 ; + parameterNumber = 30 ; +} +#Mean direction of total swell +'mdts' = { + discipline = 192 ; + parameterCategory = 140 ; + parameterNumber = 238 ; +} +#Mean direction of wind waves +'mdww' = { + discipline = 192 ; + parameterCategory = 140 ; + parameterNumber = 235 ; +} +#Charnock +'chnk' = { + discipline = 192 ; + parameterCategory = 128 ; + parameterNumber = 148 ; +} +#2D wave spectra (single) +'2dfd' = { + discipline = 192 ; + parameterCategory = 140 ; + parameterNumber = 251 ; +} diff --git a/definitions/grib2/localConcepts/ecmf/units.legacy.def b/definitions/grib2/localConcepts/ecmf/units.legacy.def index 3c9754d03..c10d16a51 100644 --- a/definitions/grib2/localConcepts/ecmf/units.legacy.def +++ b/definitions/grib2/localConcepts/ecmf/units.legacy.def @@ -751,3 +751,195 @@ parameterCategory = 210 ; parameterNumber = 191 ; } +#Vertically integrated moisture divergence +'kg m**-2' = { + discipline = 192 ; + parameterCategory = 128 ; + parameterNumber = 213 ; +} +#Vertically integrated moisture divergence flux +'kg m**-2 s**-1' = { + discipline = 192 ; + parameterCategory = 162 ; + parameterNumber = 84 ; +} +#Forecast logarithm of surface roughness for heat +'Numeric' = { + discipline = 192 ; + parameterCategory = 128 ; + parameterNumber = 245 ; +} +#U-component of neutral wind +'m s**-1' = { + discipline = 192 ; + parameterCategory = 228 ; + parameterNumber = 131 ; +} +#V-component of neutral wind +'m s**-1' = { + discipline = 192 ; + parameterCategory = 228 ; + parameterNumber = 132 ; +} +#Magnitude of turbulent surface stress +'N m**-2 s' = { + discipline = 192 ; + parameterCategory = 128 ; + parameterNumber = 48 ; +} +#Vertical integral of mass of atmosphere +'kg m**-2' = { + discipline = 192 ; + parameterCategory = 162 ; + parameterNumber = 53 ; +} +#Height of zero-degree wet-bulb temperature +'m' = { + discipline = 192 ; + parameterCategory = 228 ; + parameterNumber = 47 ; +} +#Height of one-degree wet-bulb temperature +'m' = { + discipline = 192 ; + parameterCategory = 228 ; + parameterNumber = 48 ; +} +#Surface photosynthetically active radiation, clear sky +'J m**-2' = { + discipline = 192 ; + parameterCategory = 128 ; + parameterNumber = 20 ; +} +#Surface direct short-wave radiation, clear sky +'J m**-2' = { + discipline = 192 ; + parameterCategory = 228 ; + parameterNumber = 22 ; +} +#Duct base height +'m' = { + discipline = 192 ; + parameterCategory = 228 ; + parameterNumber = 17 ; +} +#Trapping layer base height +'m' = { + discipline = 192 ; + parameterCategory = 228 ; + parameterNumber = 18 ; +} +#Trapping layer top height +'m' = { + discipline = 192 ; + parameterCategory = 228 ; + parameterNumber = 19 ; +} +#Mean vertical gradient of refractivity inside trapping layer +'m**-1' = { + discipline = 192 ; + parameterCategory = 228 ; + parameterNumber = 16 ; +} +#Minimum vertical gradient of refractivity inside trapping layer +'m**-1' = { + discipline = 192 ; + parameterCategory = 228 ; + parameterNumber = 15 ; +} +#Vertical integral of eastward heat flux +'W m**-1' = { + discipline = 192 ; + parameterCategory = 162 ; + parameterNumber = 69 ; +} +#Vertical integral of northward heat flux +'W m**-1' = { + discipline = 192 ; + parameterCategory = 162 ; + parameterNumber = 70 ; +} +#Vertical integral of potential+internal+latent energy +'J m**-2' = { + discipline = 192 ; + parameterCategory = 162 ; + parameterNumber = 62 ; +} +#Skin reservoir content +'m of water equivalent' = { + discipline = 192 ; + parameterCategory = 128 ; + parameterNumber = 198 ; +} +#Skin reservoir content +'kg m**-2' = { + discipline = 192 ; + parameterCategory = 160 ; + parameterNumber = 198 ; +} +#Sub-surface runoff +'m' = { + discipline = 192 ; + parameterCategory = 128 ; + parameterNumber = 9 ; +} +#Low vegetation cover +'(0 - 1)' = { + discipline = 192 ; + parameterCategory = 128 ; + parameterNumber = 27 ; +} +#High vegetation cover +'(0 - 1)' = { + discipline = 192 ; + parameterCategory = 128 ; + parameterNumber = 28 ; +} +#Leaf area index, low vegetation +'m**2 m**-2' = { + discipline = 192 ; + parameterCategory = 128 ; + parameterNumber = 66 ; +} +#Leaf area index, high vegetation +'m**2 m**-2' = { + discipline = 192 ; + parameterCategory = 128 ; + parameterNumber = 67 ; +} +#Type of low vegetation +'(code table 4.234)' = { + discipline = 192 ; + parameterCategory = 128 ; + parameterNumber = 29 ; +} +#Type of high vegetation +'(code table 4.234)' = { + discipline = 192 ; + parameterCategory = 128 ; + parameterNumber = 30 ; +} +#Mean direction of total swell +'degrees' = { + discipline = 192 ; + parameterCategory = 140 ; + parameterNumber = 238 ; +} +#Mean direction of wind waves +'degrees' = { + discipline = 192 ; + parameterCategory = 140 ; + parameterNumber = 235 ; +} +#Charnock +'Numeric' = { + discipline = 192 ; + parameterCategory = 128 ; + parameterNumber = 148 ; +} +#2D wave spectra (single) +'m**2 s radian**-1' = { + discipline = 192 ; + parameterCategory = 140 ; + parameterNumber = 251 ; +} From 24f24c6124afab3f4a0a4eddadfdbbd95f3f6a74 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 30 May 2023 14:07:56 +0000 Subject: [PATCH 189/378] ECC-1592: Add correct GRIB2 definitions to discipline 192 definitions from WMO FT2023-1 (part 2) --- .../grib1/localConcepts/ecmf/cfVarName.def | 46 ++-- definitions/grib1/localConcepts/ecmf/name.def | 20 +- .../grib1/localConcepts/ecmf/paramId.def | 10 +- .../grib1/localConcepts/ecmf/shortName.def | 10 +- .../grib1/localConcepts/ecmf/units.def | 20 +- definitions/grib2/cfVarName.def | 196 +++++++++++++++++ .../grib2/localConcepts/ecmf/cfVarName.def | 200 ++---------------- definitions/grib2/localConcepts/ecmf/name.def | 196 +---------------- .../grib2/localConcepts/ecmf/paramId.def | 196 +---------------- .../grib2/localConcepts/ecmf/shortName.def | 196 +---------------- .../grib2/localConcepts/ecmf/units.def | 196 +---------------- definitions/grib2/name.def | 196 +++++++++++++++++ definitions/grib2/paramId.def | 196 +++++++++++++++++ definitions/grib2/shortName.def | 196 +++++++++++++++++ definitions/grib2/units.def | 196 +++++++++++++++++ 15 files changed, 1085 insertions(+), 985 deletions(-) diff --git a/definitions/grib1/localConcepts/ecmf/cfVarName.def b/definitions/grib1/localConcepts/ecmf/cfVarName.def index 617c35d56..588a47504 100644 --- a/definitions/grib1/localConcepts/ecmf/cfVarName.def +++ b/definitions/grib1/localConcepts/ecmf/cfVarName.def @@ -149,7 +149,7 @@ table2Version = 128 ; indicatorOfParameter = 19 ; } -#Clear sky surface photosynthetically active radiation +#Surface photosynthetically active radiation, clear sky 'parcs' = { table2Version = 128 ; indicatorOfParameter = 20 ; @@ -9884,7 +9884,7 @@ table2Version = 228 ; indicatorOfParameter = 21 ; } -#Clear-sky direct solar radiation at surface +#Surface direct short-wave radiation, clear sky 'cdir' = { table2Version = 228 ; indicatorOfParameter = 22 ; @@ -13740,92 +13740,92 @@ indicatorOfParameter = 66 ; } #Vertical integral of eastward kinetic energy flux -'p67.162' = { +'vikee' = { table2Version = 162 ; indicatorOfParameter = 67 ; } #Vertical integral of northward kinetic energy flux -'p68.162' = { +'viken' = { table2Version = 162 ; indicatorOfParameter = 68 ; } #Vertical integral of eastward heat flux -'p69.162' = { +'vithee' = { table2Version = 162 ; indicatorOfParameter = 69 ; } #Vertical integral of northward heat flux -'p70.162' = { +'vithen' = { table2Version = 162 ; indicatorOfParameter = 70 ; } #Vertical integral of eastward water vapour flux -'p71.162' = { +'viwve' = { table2Version = 162 ; indicatorOfParameter = 71 ; } #Vertical integral of northward water vapour flux -'p72.162' = { +'viwvn' = { table2Version = 162 ; indicatorOfParameter = 72 ; } #Vertical integral of eastward geopotential flux -'p73.162' = { +'vige' = { table2Version = 162 ; indicatorOfParameter = 73 ; } #Vertical integral of northward geopotential flux -'p74.162' = { +'vign' = { table2Version = 162 ; indicatorOfParameter = 74 ; } #Vertical integral of eastward total energy flux -'p75.162' = { +'vitoee' = { table2Version = 162 ; indicatorOfParameter = 75 ; } #Vertical integral of northward total energy flux -'p76.162' = { +'vitoen' = { table2Version = 162 ; indicatorOfParameter = 76 ; } #Vertical integral of eastward ozone flux -'p77.162' = { +'vioze' = { table2Version = 162 ; indicatorOfParameter = 77 ; } #Vertical integral of northward ozone flux -'p78.162' = { +'viozn' = { table2Version = 162 ; indicatorOfParameter = 78 ; } #Vertical integral of divergence of mass flux -'p81.162' = { +'vimad' = { table2Version = 162 ; indicatorOfParameter = 81 ; } #Vertical integral of divergence of kinetic energy flux -'p82.162' = { +'viked' = { table2Version = 162 ; indicatorOfParameter = 82 ; } #Vertical integral of divergence of thermal energy flux -'p83.162' = { +'vithed' = { table2Version = 162 ; indicatorOfParameter = 83 ; } -#Vertical integral of divergence of moisture flux -'p84.162' = { +#Vertically integrated moisture divergence flux +'viwvd' = { table2Version = 162 ; indicatorOfParameter = 84 ; } #Vertical integral of divergence of geopotential flux -'p85.162' = { +'vigd' = { table2Version = 162 ; indicatorOfParameter = 85 ; } #Vertical integral of divergence of total energy flux -'p86.162' = { +'vitoed' = { table2Version = 162 ; indicatorOfParameter = 86 ; } @@ -17594,12 +17594,12 @@ table2Version = 228 ; indicatorOfParameter = 39 ; } -#Neutral wind at 10 m u-component +#U-component of neutral wind 'u10n' = { table2Version = 228 ; indicatorOfParameter = 131 ; } -#Neutral wind at 10 m v-component +#V-component of neutral wind 'v10n' = { table2Version = 228 ; indicatorOfParameter = 132 ; diff --git a/definitions/grib1/localConcepts/ecmf/name.def b/definitions/grib1/localConcepts/ecmf/name.def index 771f63345..25b3e6ccb 100644 --- a/definitions/grib1/localConcepts/ecmf/name.def +++ b/definitions/grib1/localConcepts/ecmf/name.def @@ -149,8 +149,8 @@ table2Version = 128 ; indicatorOfParameter = 19 ; } -#Clear sky surface photosynthetically active radiation -'Clear sky surface photosynthetically active radiation' = { +#Surface photosynthetically active radiation, clear sky +'Surface photosynthetically active radiation, clear sky' = { table2Version = 128 ; indicatorOfParameter = 20 ; } @@ -9884,8 +9884,8 @@ table2Version = 228 ; indicatorOfParameter = 21 ; } -#Clear-sky direct solar radiation at surface -'Clear-sky direct solar radiation at surface' = { +#Surface direct short-wave radiation, clear sky +'Surface direct short-wave radiation, clear sky' = { table2Version = 228 ; indicatorOfParameter = 22 ; } @@ -13814,8 +13814,8 @@ table2Version = 162 ; indicatorOfParameter = 83 ; } -#Vertical integral of divergence of moisture flux -'Vertical integral of divergence of moisture flux' = { +#Vertically integrated moisture divergence flux +'Vertically integrated moisture divergence flux' = { table2Version = 162 ; indicatorOfParameter = 84 ; } @@ -17594,13 +17594,13 @@ table2Version = 228 ; indicatorOfParameter = 39 ; } -#Neutral wind at 10 m u-component -'Neutral wind at 10 m u-component' = { +#U-component of neutral wind +'U-component of neutral wind' = { table2Version = 228 ; indicatorOfParameter = 131 ; } -#Neutral wind at 10 m v-component -'Neutral wind at 10 m v-component' = { +#V-component of neutral wind +'V-component of neutral wind' = { table2Version = 228 ; indicatorOfParameter = 132 ; } diff --git a/definitions/grib1/localConcepts/ecmf/paramId.def b/definitions/grib1/localConcepts/ecmf/paramId.def index b5916f199..8d107d368 100644 --- a/definitions/grib1/localConcepts/ecmf/paramId.def +++ b/definitions/grib1/localConcepts/ecmf/paramId.def @@ -149,7 +149,7 @@ table2Version = 128 ; indicatorOfParameter = 19 ; } -#Clear sky surface photosynthetically active radiation +#Surface photosynthetically active radiation, clear sky '20' = { table2Version = 128 ; indicatorOfParameter = 20 ; @@ -9884,7 +9884,7 @@ table2Version = 228 ; indicatorOfParameter = 21 ; } -#Clear-sky direct solar radiation at surface +#Surface direct short-wave radiation, clear sky '228022' = { table2Version = 228 ; indicatorOfParameter = 22 ; @@ -13814,7 +13814,7 @@ table2Version = 162 ; indicatorOfParameter = 83 ; } -#Vertical integral of divergence of moisture flux +#Vertically integrated moisture divergence flux '162084' = { table2Version = 162 ; indicatorOfParameter = 84 ; @@ -17594,12 +17594,12 @@ table2Version = 228 ; indicatorOfParameter = 39 ; } -#Neutral wind at 10 m u-component +#U-component of neutral wind '228131' = { table2Version = 228 ; indicatorOfParameter = 131 ; } -#Neutral wind at 10 m v-component +#V-component of neutral wind '228132' = { table2Version = 228 ; indicatorOfParameter = 132 ; diff --git a/definitions/grib1/localConcepts/ecmf/shortName.def b/definitions/grib1/localConcepts/ecmf/shortName.def index c8638fe00..239e632b7 100644 --- a/definitions/grib1/localConcepts/ecmf/shortName.def +++ b/definitions/grib1/localConcepts/ecmf/shortName.def @@ -149,7 +149,7 @@ table2Version = 128 ; indicatorOfParameter = 19 ; } -#Clear sky surface photosynthetically active radiation +#Surface photosynthetically active radiation, clear sky 'parcs' = { table2Version = 128 ; indicatorOfParameter = 20 ; @@ -9884,7 +9884,7 @@ table2Version = 228 ; indicatorOfParameter = 21 ; } -#Clear-sky direct solar radiation at surface +#Surface direct short-wave radiation, clear sky 'cdir' = { table2Version = 228 ; indicatorOfParameter = 22 ; @@ -13814,7 +13814,7 @@ table2Version = 162 ; indicatorOfParameter = 83 ; } -#Vertical integral of divergence of moisture flux +#Vertically integrated moisture divergence flux 'viwvd' = { table2Version = 162 ; indicatorOfParameter = 84 ; @@ -17594,12 +17594,12 @@ table2Version = 228 ; indicatorOfParameter = 39 ; } -#Neutral wind at 10 m u-component +#U-component of neutral wind 'u10n' = { table2Version = 228 ; indicatorOfParameter = 131 ; } -#Neutral wind at 10 m v-component +#V-component of neutral wind 'v10n' = { table2Version = 228 ; indicatorOfParameter = 132 ; diff --git a/definitions/grib1/localConcepts/ecmf/units.def b/definitions/grib1/localConcepts/ecmf/units.def index 6c8c796ec..5b0ac16ad 100644 --- a/definitions/grib1/localConcepts/ecmf/units.def +++ b/definitions/grib1/localConcepts/ecmf/units.def @@ -149,7 +149,7 @@ table2Version = 128 ; indicatorOfParameter = 19 ; } -#Clear sky surface photosynthetically active radiation +#Surface photosynthetically active radiation, clear sky 'J m**-2' = { table2Version = 128 ; indicatorOfParameter = 20 ; @@ -195,12 +195,12 @@ indicatorOfParameter = 28 ; } #Type of low vegetation -'~' = { +'(code table 4.234)' = { table2Version = 128 ; indicatorOfParameter = 29 ; } #Type of high vegetation -'~' = { +'(code table 4.234)' = { table2Version = 128 ; indicatorOfParameter = 30 ; } @@ -1050,7 +1050,7 @@ indicatorOfParameter = 147 ; } #Charnock -'~' = { +'Numeric' = { table2Version = 128 ; indicatorOfParameter = 148 ; } @@ -2005,12 +2005,12 @@ indicatorOfParameter = 244 ; } #Forecast logarithm of surface roughness for heat -'~' = { +'Numeric' = { table2Version = 128 ; indicatorOfParameter = 245 ; } #Forecast logarithm of surface roughness for heat -'~' = { +'Numeric' = { table2Version = 160 ; indicatorOfParameter = 245 ; } @@ -9884,7 +9884,7 @@ table2Version = 228 ; indicatorOfParameter = 21 ; } -#Clear-sky direct solar radiation at surface +#Surface direct short-wave radiation, clear sky 'J m**-2' = { table2Version = 228 ; indicatorOfParameter = 22 ; @@ -13814,7 +13814,7 @@ table2Version = 162 ; indicatorOfParameter = 83 ; } -#Vertical integral of divergence of moisture flux +#Vertically integrated moisture divergence flux 'kg m**-2 s**-1' = { table2Version = 162 ; indicatorOfParameter = 84 ; @@ -17594,12 +17594,12 @@ table2Version = 228 ; indicatorOfParameter = 39 ; } -#Neutral wind at 10 m u-component +#U-component of neutral wind 'm s**-1' = { table2Version = 228 ; indicatorOfParameter = 131 ; } -#Neutral wind at 10 m v-component +#V-component of neutral wind 'm s**-1' = { table2Version = 228 ; indicatorOfParameter = 132 ; diff --git a/definitions/grib2/cfVarName.def b/definitions/grib2/cfVarName.def index ed7422b23..59b60da8b 100644 --- a/definitions/grib2/cfVarName.def +++ b/definitions/grib2/cfVarName.def @@ -113,6 +113,14 @@ parameterCategory = 2 ; parameterNumber = 1 ; } +#Surface photosynthetically active radiation, clear sky +'parcs' = { + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 60 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; + } #Unbalanced component of temperature 'uctp' = { discipline = 0 ; @@ -131,6 +139,30 @@ parameterCategory = 2 ; parameterNumber = 45 ; } +#Low vegetation cover +'cvl' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 53 ; + } +#High vegetation cover +'cvh' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 54 ; + } +#Type of low vegetation +'tvl' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 57 ; + } +#Type of high vegetation +'tvh' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 58 ; + } #Sea ice area fraction 'siconc' = { discipline = 10 ; @@ -166,6 +198,14 @@ typeOfSecondFixedSurface = 255 ; typeOfStatisticalProcessing = 1 ; } +#Magnitude of turbulent surface stress +'magss' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 58 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; + } #Large-scale precipitation fraction 'lspf' = { discipline = 0 ; @@ -190,6 +230,18 @@ typeOfFirstFixedSurface = 1 ; typeOfStatisticalProcessing = 1 ; } +#Leaf area index, low vegetation +'lai_lv' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 55 ; + } +#Leaf area index, high vegetation +'lai_hv' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 56 ; + } #Standard deviation of filtered subgrid orography (climatological) 'sdfor' = { discipline = 0 ; @@ -246,6 +298,12 @@ parameterNumber = 20 ; typeOfStatisticalProcessing = 1 ; } +#Charnock +'chnk' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 76 ; + } #Boundary layer height 'blh' = { discipline = 0 ; @@ -369,6 +427,13 @@ typeOfFirstFixedSurface = 8 ; typeOfStatisticalProcessing = 1 ; } +#Vertically integrated moisture divergence +'vimd' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 165 ; + typeOfStatisticalProcessing = 1 ; + } #Instantaneous eastward turbulent surface stress 'iews' = { discipline = 0 ; @@ -418,6 +483,13 @@ parameterNumber = 1 ; typeOfFirstFixedSurface = 1 ; } +#Forecast logarithm of surface roughness for heat +'flsr' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 54 ; + typeOfFirstFixedSurface = 1 ; + } #Specific cloud liquid water content 'clwc' = { discipline = 0 ; @@ -2132,6 +2204,14 @@ scaledValueOfFirstFixedSurface = 26315 ; scaleFactorOfFirstFixedSurface = 2 ; } +#Surface direct short-wave radiation, clear sky +'cdir' = { + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 61 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; + } #0 degrees C isothermal level (atm) 'deg0l' = { discipline = 0 ; @@ -2237,6 +2317,18 @@ parameterCategory = 6 ; parameterNumber = 27 ; } +#Height of zero-degree wet-bulb temperature +'hwbt0' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 44 ; + } +#Height of one-degree wet-bulb temperature +'hwbt1' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 45 ; + } #Instantaneous total lightning flash density 'litoti' = { discipline = 0 ; @@ -6443,12 +6535,30 @@ parameterCategory = 0 ; parameterNumber = 5 ; } +#Mean direction of wind waves +'mdww' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 75 ; + } #Mean period of wind waves 'mpww' = { discipline = 10 ; parameterCategory = 0 ; parameterNumber = 6 ; } +#Mean direction of total swell +'mdts' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 74 ; + } +#2D wave spectra (single) +'d2fd' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 86 ; + } #Eastward sea water velocity 'uoe' = { discipline = 10 ; @@ -6463,6 +6573,44 @@ parameterNumber = 3 ; typeOfFirstFixedSurface = 160 ; } +#Skin reservoir content +'srcrea' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 50 ; + } +#Vertical integral of mass of atmosphere +'vima' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 39 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + } +#Vertical integral of potential+internal+latent energy +'vipile' = { + discipline = 0 ; + parameterCategory = 21 ; + parameterNumber = 21 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + } +#Vertical integral of eastward heat flux +'vithee' = { + discipline = 0 ; + parameterCategory = 21 ; + parameterNumber = 19 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + } +#Vertical integral of northward heat flux +'vithen' = { + discipline = 0 ; + parameterCategory = 21 ; + parameterNumber = 20 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + } #Vertical integral of eastward water vapour flux 'viwve' = { discipline = 0 ; @@ -6479,6 +6627,12 @@ typeOfFirstFixedSurface = 1 ; typeOfSecondFixedSurface = 8 ; } +#Vertically integrated moisture divergence flux +'viwvd' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 165 ; + } #Surface runoff 'sro' = { discipline = 2 ; @@ -6629,6 +6783,48 @@ scaledValueOfSecondFixedSurface = missing() ; scaleFactorOfSecondFixedSurface = missing() ; } +#Minimum vertical gradient of refractivity inside trapping layer +'dndzn' = { + discipline = 0 ; + parameterCategory = 19 ; + parameterNumber = 45 ; + } +#Mean vertical gradient of refractivity inside trapping layer +'dndza' = { + discipline = 0 ; + parameterCategory = 19 ; + parameterNumber = 44 ; + } +#Duct base height +'dctb' = { + discipline = 0 ; + parameterCategory = 19 ; + parameterNumber = 41 ; + } +#Trapping layer base height +'tplb' = { + discipline = 0 ; + parameterCategory = 19 ; + parameterNumber = 42 ; + } +#Trapping layer top height +'tplt' = { + discipline = 0 ; + parameterCategory = 19 ; + parameterNumber = 43 ; + } +#U-component of neutral wind +'u10n' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 56 ; + } +#V-component of neutral wind +'v10n' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 57 ; + } #100 metre U wind component 'u100' = { discipline = 0 ; diff --git a/definitions/grib2/localConcepts/ecmf/cfVarName.def b/definitions/grib2/localConcepts/ecmf/cfVarName.def index 1c5e9eeb7..9d153f351 100644 --- a/definitions/grib2/localConcepts/ecmf/cfVarName.def +++ b/definitions/grib2/localConcepts/ecmf/cfVarName.def @@ -34,9 +34,12 @@ } #Sub-surface runoff 'ssro' = { - discipline = 192 ; - parameterCategory = 128 ; - parameterNumber = 9 ; + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 204 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; } #U component of divergent wind 'udvw' = { @@ -100,12 +103,6 @@ parameterCategory = 128 ; parameterNumber = 19 ; } -#Clear sky surface photosynthetically active radiation -'parcs' = { - discipline = 192 ; - parameterCategory = 128 ; - parameterNumber = 20 ; - } #Reserved for future unbalanced components 'p24.128' = { discipline = 192 ; @@ -124,30 +121,6 @@ parameterCategory = 128 ; parameterNumber = 26 ; } -#Low vegetation cover -'cvl' = { - discipline = 192 ; - parameterCategory = 128 ; - parameterNumber = 27 ; - } -#High vegetation cover -'cvh' = { - discipline = 192 ; - parameterCategory = 128 ; - parameterNumber = 28 ; - } -#Type of low vegetation -'tvl' = { - discipline = 192 ; - parameterCategory = 128 ; - parameterNumber = 29 ; - } -#Type of high vegetation -'tvh' = { - discipline = 192 ; - parameterCategory = 128 ; - parameterNumber = 30 ; - } #Snow albedo 'asn' = { localTablesVersion = 1 ; @@ -227,12 +200,6 @@ parameterCategory = 128 ; parameterNumber = 46 ; } -#Magnitude of turbulent surface stress -'magss' = { - discipline = 192 ; - parameterCategory = 128 ; - parameterNumber = 48 ; - } #Maximum temperature at 2 metres in the last 24 hours 'mx2t24' = { discipline = 0 ; @@ -299,18 +266,6 @@ parameterCategory = 128 ; parameterNumber = 65 ; } -#Leaf area index, low vegetation -'lai_lv' = { - discipline = 192 ; - parameterCategory = 128 ; - parameterNumber = 66 ; - } -#Leaf area index, high vegetation -'lai_hv' = { - discipline = 192 ; - parameterCategory = 128 ; - parameterNumber = 67 ; - } #Minimum stomatal resistance, low vegetation 'msr_lv' = { discipline = 192 ; @@ -675,12 +630,6 @@ typeOfFirstFixedSurface = 1 ; typeOfStatisticalProcessing = 1 ; } -#Charnock -'chnk' = { - discipline = 192 ; - parameterCategory = 128 ; - parameterNumber = 148 ; - } #Surface net radiation 'snr' = { discipline = 192 ; @@ -845,9 +794,10 @@ } #Skin reservoir content 'src' = { - discipline = 192 ; - parameterCategory = 128 ; - parameterNumber = 198 ; + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 205 ; } #Vegetation fraction 'veg' = { @@ -881,12 +831,6 @@ parameterCategory = 128 ; parameterNumber = 206 ; } -#Vertically integrated moisture divergence -'vimd' = { - discipline = 192 ; - parameterCategory = 128 ; - parameterNumber = 213 ; - } #Diabatic heating by radiation 'dhr' = { discipline = 192 ; @@ -1030,12 +974,6 @@ parameterCategory = 19 ; parameterNumber = 193 ; } -#Forecast logarithm of surface roughness for heat -'flsr' = { - discipline = 192 ; - parameterCategory = 128 ; - parameterNumber = 245 ; - } #Accumulated ice water tendency 'aiw' = { discipline = 192 ; @@ -13754,12 +13692,6 @@ parameterCategory = 228 ; parameterNumber = 21 ; } -#Clear-sky direct solar radiation at surface -'cdir' = { - discipline = 192 ; - parameterCategory = 228 ; - parameterNumber = 22 ; - } #Cloud base height 'cbh' = { discipline = 192 ; @@ -13820,18 +13752,6 @@ parameterCategory = 228 ; parameterNumber = 43 ; } -#Height of zero-degree wet-bulb temperature -'hwbt0' = { - discipline = 192 ; - parameterCategory = 228 ; - parameterNumber = 47 ; - } -#Height of one-degree wet-bulb temperature -'hwbt1' = { - discipline = 192 ; - parameterCategory = 228 ; - parameterNumber = 48 ; - } #GPP coefficient from Biogenic Flux Adjustment System 'gppbfas' = { localTablesVersion = 1 ; @@ -15856,8 +15776,8 @@ discipline = 10 ; parameterCategory = 0 ; parameterNumber = 3 ; - typeOfFirstFixedSurface = 101 ; productDefinitionTemplateNumber = 5 ; + typeOfFirstFixedSurface = 101 ; scaledValueOfLowerLimit = 6 ; scaleFactorOfLowerLimit = 0 ; probabilityType = 3 ; @@ -15867,8 +15787,8 @@ discipline = 10 ; parameterCategory = 0 ; parameterNumber = 3 ; - typeOfFirstFixedSurface = 101 ; productDefinitionTemplateNumber = 5 ; + typeOfFirstFixedSurface = 101 ; scaledValueOfLowerLimit = 8 ; scaleFactorOfLowerLimit = 0 ; probabilityType = 3 ; @@ -16611,24 +16531,12 @@ parameterCategory = 140 ; parameterNumber = 233 ; } -#Mean direction of wind waves -'mdww' = { - discipline = 192 ; - parameterCategory = 140 ; - parameterNumber = 235 ; - } #Significant height of total swell 'shts' = { discipline = 192 ; parameterCategory = 140 ; parameterNumber = 237 ; } -#Mean direction of total swell -'mdts' = { - discipline = 192 ; - parameterCategory = 140 ; - parameterNumber = 238 ; - } #Mean period of total swell 'mpts' = { discipline = 192 ; @@ -16701,12 +16609,6 @@ parameterCategory = 140 ; parameterNumber = 250 ; } -#2D wave spectra (single) -'d2fd' = { - discipline = 192 ; - parameterCategory = 140 ; - parameterNumber = 251 ; - } #Wave spectral kurtosis 'wsk' = { discipline = 192 ; @@ -17451,12 +17353,6 @@ parameterCategory = 160 ; parameterNumber = 184 ; } -#Skin reservoir content -'srcrea' = { - discipline = 192 ; - parameterCategory = 160 ; - parameterNumber = 198 ; - } #Percentage of vegetation 'vegrea' = { discipline = 192 ; @@ -17673,12 +17569,6 @@ parameterCategory = 162 ; parameterNumber = 51 ; } -#Vertical integral of mass of atmosphere -'vima' = { - discipline = 192 ; - parameterCategory = 162 ; - parameterNumber = 53 ; - } #Vertical integral of temperature 'vit' = { discipline = 192 ; @@ -17721,12 +17611,6 @@ parameterCategory = 162 ; parameterNumber = 61 ; } -#Vertical integral of potential+internal+latent energy -'vipile' = { - discipline = 192 ; - parameterCategory = 162 ; - parameterNumber = 62 ; - } #Vertical integral of total energy 'vitoe' = { discipline = 192 ; @@ -17763,18 +17647,6 @@ parameterCategory = 162 ; parameterNumber = 68 ; } -#Vertical integral of eastward heat flux -'vithee' = { - discipline = 192 ; - parameterCategory = 162 ; - parameterNumber = 69 ; - } -#Vertical integral of northward heat flux -'vithen' = { - discipline = 192 ; - parameterCategory = 162 ; - parameterNumber = 70 ; - } #Vertical integral of eastward geopotential flux 'vige' = { discipline = 192 ; @@ -17829,12 +17701,6 @@ parameterCategory = 162 ; parameterNumber = 83 ; } -#Vertical integral of divergence of moisture flux -'viwvd' = { - discipline = 192 ; - parameterCategory = 162 ; - parameterNumber = 84 ; - } #Vertical integral of divergence of geopotential flux 'vigd' = { discipline = 192 ; @@ -22125,48 +21991,6 @@ parameterCategory = 228 ; parameterNumber = 6 ; } -#Minimum vertical gradient of refractivity inside trapping layer -'dndzn' = { - discipline = 192 ; - parameterCategory = 228 ; - parameterNumber = 15 ; - } -#Mean vertical gradient of refractivity inside trapping layer -'dndza' = { - discipline = 192 ; - parameterCategory = 228 ; - parameterNumber = 16 ; - } -#Duct base height -'dctb' = { - discipline = 192 ; - parameterCategory = 228 ; - parameterNumber = 17 ; - } -#Trapping layer base height -'tplb' = { - discipline = 192 ; - parameterCategory = 228 ; - parameterNumber = 18 ; - } -#Trapping layer top height -'tplt' = { - discipline = 192 ; - parameterCategory = 228 ; - parameterNumber = 19 ; - } -#Neutral wind at 10 m u-component -'u10n' = { - discipline = 192 ; - parameterCategory = 228 ; - parameterNumber = 131 ; - } -#Neutral wind at 10 m v-component -'v10n' = { - discipline = 192 ; - parameterCategory = 228 ; - parameterNumber = 132 ; - } #Surface temperature significance 'sts' = { discipline = 192 ; diff --git a/definitions/grib2/localConcepts/ecmf/name.def b/definitions/grib2/localConcepts/ecmf/name.def index 22f92c884..356bdd4e4 100644 --- a/definitions/grib2/localConcepts/ecmf/name.def +++ b/definitions/grib2/localConcepts/ecmf/name.def @@ -34,9 +34,12 @@ } #Sub-surface runoff 'Sub-surface runoff' = { - discipline = 192 ; - parameterCategory = 128 ; - parameterNumber = 9 ; + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 204 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; } #U component of divergent wind 'U component of divergent wind' = { @@ -100,12 +103,6 @@ parameterCategory = 128 ; parameterNumber = 19 ; } -#Clear sky surface photosynthetically active radiation -'Clear sky surface photosynthetically active radiation' = { - discipline = 192 ; - parameterCategory = 128 ; - parameterNumber = 20 ; - } #Reserved for future unbalanced components 'Reserved for future unbalanced components' = { discipline = 192 ; @@ -124,30 +121,6 @@ parameterCategory = 128 ; parameterNumber = 26 ; } -#Low vegetation cover -'Low vegetation cover' = { - discipline = 192 ; - parameterCategory = 128 ; - parameterNumber = 27 ; - } -#High vegetation cover -'High vegetation cover' = { - discipline = 192 ; - parameterCategory = 128 ; - parameterNumber = 28 ; - } -#Type of low vegetation -'Type of low vegetation' = { - discipline = 192 ; - parameterCategory = 128 ; - parameterNumber = 29 ; - } -#Type of high vegetation -'Type of high vegetation' = { - discipline = 192 ; - parameterCategory = 128 ; - parameterNumber = 30 ; - } #Snow albedo 'Snow albedo' = { localTablesVersion = 1 ; @@ -227,12 +200,6 @@ parameterCategory = 128 ; parameterNumber = 46 ; } -#Magnitude of turbulent surface stress -'Magnitude of turbulent surface stress' = { - discipline = 192 ; - parameterCategory = 128 ; - parameterNumber = 48 ; - } #Maximum temperature at 2 metres in the last 24 hours 'Maximum temperature at 2 metres in the last 24 hours' = { discipline = 0 ; @@ -299,18 +266,6 @@ parameterCategory = 128 ; parameterNumber = 65 ; } -#Leaf area index, low vegetation -'Leaf area index, low vegetation' = { - discipline = 192 ; - parameterCategory = 128 ; - parameterNumber = 66 ; - } -#Leaf area index, high vegetation -'Leaf area index, high vegetation' = { - discipline = 192 ; - parameterCategory = 128 ; - parameterNumber = 67 ; - } #Minimum stomatal resistance, low vegetation 'Minimum stomatal resistance, low vegetation' = { discipline = 192 ; @@ -675,12 +630,6 @@ typeOfFirstFixedSurface = 1 ; typeOfStatisticalProcessing = 1 ; } -#Charnock -'Charnock' = { - discipline = 192 ; - parameterCategory = 128 ; - parameterNumber = 148 ; - } #Surface net radiation 'Surface net radiation' = { discipline = 192 ; @@ -845,9 +794,10 @@ } #Skin reservoir content 'Skin reservoir content' = { - discipline = 192 ; - parameterCategory = 128 ; - parameterNumber = 198 ; + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 205 ; } #Vegetation fraction 'Vegetation fraction' = { @@ -881,12 +831,6 @@ parameterCategory = 128 ; parameterNumber = 206 ; } -#Vertically integrated moisture divergence -'Vertically integrated moisture divergence' = { - discipline = 192 ; - parameterCategory = 128 ; - parameterNumber = 213 ; - } #Diabatic heating by radiation 'Diabatic heating by radiation' = { discipline = 192 ; @@ -1030,12 +974,6 @@ parameterCategory = 19 ; parameterNumber = 193 ; } -#Forecast logarithm of surface roughness for heat -'Forecast logarithm of surface roughness for heat' = { - discipline = 192 ; - parameterCategory = 128 ; - parameterNumber = 245 ; - } #Accumulated ice water tendency 'Accumulated ice water tendency' = { discipline = 192 ; @@ -13754,12 +13692,6 @@ parameterCategory = 228 ; parameterNumber = 21 ; } -#Clear-sky direct solar radiation at surface -'Clear-sky direct solar radiation at surface' = { - discipline = 192 ; - parameterCategory = 228 ; - parameterNumber = 22 ; - } #Cloud base height 'Cloud base height' = { discipline = 192 ; @@ -13820,18 +13752,6 @@ parameterCategory = 228 ; parameterNumber = 43 ; } -#Height of zero-degree wet-bulb temperature -'Height of zero-degree wet-bulb temperature' = { - discipline = 192 ; - parameterCategory = 228 ; - parameterNumber = 47 ; - } -#Height of one-degree wet-bulb temperature -'Height of one-degree wet-bulb temperature' = { - discipline = 192 ; - parameterCategory = 228 ; - parameterNumber = 48 ; - } #GPP coefficient from Biogenic Flux Adjustment System 'GPP coefficient from Biogenic Flux Adjustment System' = { localTablesVersion = 1 ; @@ -16611,24 +16531,12 @@ parameterCategory = 140 ; parameterNumber = 233 ; } -#Mean direction of wind waves -'Mean direction of wind waves' = { - discipline = 192 ; - parameterCategory = 140 ; - parameterNumber = 235 ; - } #Significant height of total swell 'Significant height of total swell' = { discipline = 192 ; parameterCategory = 140 ; parameterNumber = 237 ; } -#Mean direction of total swell -'Mean direction of total swell' = { - discipline = 192 ; - parameterCategory = 140 ; - parameterNumber = 238 ; - } #Mean period of total swell 'Mean period of total swell' = { discipline = 192 ; @@ -16701,12 +16609,6 @@ parameterCategory = 140 ; parameterNumber = 250 ; } -#2D wave spectra (single) -'2D wave spectra (single)' = { - discipline = 192 ; - parameterCategory = 140 ; - parameterNumber = 251 ; - } #Wave spectral kurtosis 'Wave spectral kurtosis' = { discipline = 192 ; @@ -17451,12 +17353,6 @@ parameterCategory = 160 ; parameterNumber = 184 ; } -#Skin reservoir content -'Skin reservoir content' = { - discipline = 192 ; - parameterCategory = 160 ; - parameterNumber = 198 ; - } #Percentage of vegetation 'Percentage of vegetation' = { discipline = 192 ; @@ -17673,12 +17569,6 @@ parameterCategory = 162 ; parameterNumber = 51 ; } -#Vertical integral of mass of atmosphere -'Vertical integral of mass of atmosphere' = { - discipline = 192 ; - parameterCategory = 162 ; - parameterNumber = 53 ; - } #Vertical integral of temperature 'Vertical integral of temperature' = { discipline = 192 ; @@ -17721,12 +17611,6 @@ parameterCategory = 162 ; parameterNumber = 61 ; } -#Vertical integral of potential+internal+latent energy -'Vertical integral of potential+internal+latent energy' = { - discipline = 192 ; - parameterCategory = 162 ; - parameterNumber = 62 ; - } #Vertical integral of total energy 'Vertical integral of total energy' = { discipline = 192 ; @@ -17763,18 +17647,6 @@ parameterCategory = 162 ; parameterNumber = 68 ; } -#Vertical integral of eastward heat flux -'Vertical integral of eastward heat flux' = { - discipline = 192 ; - parameterCategory = 162 ; - parameterNumber = 69 ; - } -#Vertical integral of northward heat flux -'Vertical integral of northward heat flux' = { - discipline = 192 ; - parameterCategory = 162 ; - parameterNumber = 70 ; - } #Vertical integral of eastward geopotential flux 'Vertical integral of eastward geopotential flux' = { discipline = 192 ; @@ -17829,12 +17701,6 @@ parameterCategory = 162 ; parameterNumber = 83 ; } -#Vertical integral of divergence of moisture flux -'Vertical integral of divergence of moisture flux' = { - discipline = 192 ; - parameterCategory = 162 ; - parameterNumber = 84 ; - } #Vertical integral of divergence of geopotential flux 'Vertical integral of divergence of geopotential flux' = { discipline = 192 ; @@ -22125,48 +21991,6 @@ parameterCategory = 228 ; parameterNumber = 6 ; } -#Minimum vertical gradient of refractivity inside trapping layer -'Minimum vertical gradient of refractivity inside trapping layer' = { - discipline = 192 ; - parameterCategory = 228 ; - parameterNumber = 15 ; - } -#Mean vertical gradient of refractivity inside trapping layer -'Mean vertical gradient of refractivity inside trapping layer' = { - discipline = 192 ; - parameterCategory = 228 ; - parameterNumber = 16 ; - } -#Duct base height -'Duct base height' = { - discipline = 192 ; - parameterCategory = 228 ; - parameterNumber = 17 ; - } -#Trapping layer base height -'Trapping layer base height' = { - discipline = 192 ; - parameterCategory = 228 ; - parameterNumber = 18 ; - } -#Trapping layer top height -'Trapping layer top height' = { - discipline = 192 ; - parameterCategory = 228 ; - parameterNumber = 19 ; - } -#Neutral wind at 10 m u-component -'Neutral wind at 10 m u-component' = { - discipline = 192 ; - parameterCategory = 228 ; - parameterNumber = 131 ; - } -#Neutral wind at 10 m v-component -'Neutral wind at 10 m v-component' = { - discipline = 192 ; - parameterCategory = 228 ; - parameterNumber = 132 ; - } #Surface temperature significance 'Surface temperature significance' = { discipline = 192 ; diff --git a/definitions/grib2/localConcepts/ecmf/paramId.def b/definitions/grib2/localConcepts/ecmf/paramId.def index 15acbd329..0299e302d 100644 --- a/definitions/grib2/localConcepts/ecmf/paramId.def +++ b/definitions/grib2/localConcepts/ecmf/paramId.def @@ -34,9 +34,12 @@ } #Sub-surface runoff '9' = { - discipline = 192 ; - parameterCategory = 128 ; - parameterNumber = 9 ; + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 204 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; } #U component of divergent wind '11' = { @@ -100,12 +103,6 @@ parameterCategory = 128 ; parameterNumber = 19 ; } -#Clear sky surface photosynthetically active radiation -'20' = { - discipline = 192 ; - parameterCategory = 128 ; - parameterNumber = 20 ; - } #Reserved for future unbalanced components '24' = { discipline = 192 ; @@ -124,30 +121,6 @@ parameterCategory = 128 ; parameterNumber = 26 ; } -#Low vegetation cover -'27' = { - discipline = 192 ; - parameterCategory = 128 ; - parameterNumber = 27 ; - } -#High vegetation cover -'28' = { - discipline = 192 ; - parameterCategory = 128 ; - parameterNumber = 28 ; - } -#Type of low vegetation -'29' = { - discipline = 192 ; - parameterCategory = 128 ; - parameterNumber = 29 ; - } -#Type of high vegetation -'30' = { - discipline = 192 ; - parameterCategory = 128 ; - parameterNumber = 30 ; - } #Snow albedo '32' = { localTablesVersion = 1 ; @@ -227,12 +200,6 @@ parameterCategory = 128 ; parameterNumber = 46 ; } -#Magnitude of turbulent surface stress -'48' = { - discipline = 192 ; - parameterCategory = 128 ; - parameterNumber = 48 ; - } #Maximum temperature at 2 metres in the last 24 hours '51' = { discipline = 0 ; @@ -299,18 +266,6 @@ parameterCategory = 128 ; parameterNumber = 65 ; } -#Leaf area index, low vegetation -'66' = { - discipline = 192 ; - parameterCategory = 128 ; - parameterNumber = 66 ; - } -#Leaf area index, high vegetation -'67' = { - discipline = 192 ; - parameterCategory = 128 ; - parameterNumber = 67 ; - } #Minimum stomatal resistance, low vegetation '68' = { discipline = 192 ; @@ -675,12 +630,6 @@ typeOfFirstFixedSurface = 1 ; typeOfStatisticalProcessing = 1 ; } -#Charnock -'148' = { - discipline = 192 ; - parameterCategory = 128 ; - parameterNumber = 148 ; - } #Surface net radiation '149' = { discipline = 192 ; @@ -845,9 +794,10 @@ } #Skin reservoir content '198' = { - discipline = 192 ; - parameterCategory = 128 ; - parameterNumber = 198 ; + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 205 ; } #Vegetation fraction '199' = { @@ -881,12 +831,6 @@ parameterCategory = 128 ; parameterNumber = 206 ; } -#Vertically integrated moisture divergence -'213' = { - discipline = 192 ; - parameterCategory = 128 ; - parameterNumber = 213 ; - } #Diabatic heating by radiation '214' = { discipline = 192 ; @@ -1030,12 +974,6 @@ parameterCategory = 19 ; parameterNumber = 193 ; } -#Forecast logarithm of surface roughness for heat -'245' = { - discipline = 192 ; - parameterCategory = 128 ; - parameterNumber = 245 ; - } #Accumulated ice water tendency '249' = { discipline = 192 ; @@ -13754,12 +13692,6 @@ parameterCategory = 228 ; parameterNumber = 21 ; } -#Clear-sky direct solar radiation at surface -'228022' = { - discipline = 192 ; - parameterCategory = 228 ; - parameterNumber = 22 ; - } #Cloud base height '228023' = { discipline = 192 ; @@ -13820,18 +13752,6 @@ parameterCategory = 228 ; parameterNumber = 43 ; } -#Height of zero-degree wet-bulb temperature -'228047' = { - discipline = 192 ; - parameterCategory = 228 ; - parameterNumber = 47 ; - } -#Height of one-degree wet-bulb temperature -'228048' = { - discipline = 192 ; - parameterCategory = 228 ; - parameterNumber = 48 ; - } #GPP coefficient from Biogenic Flux Adjustment System '228078' = { localTablesVersion = 1 ; @@ -16611,24 +16531,12 @@ parameterCategory = 140 ; parameterNumber = 233 ; } -#Mean direction of wind waves -'140235' = { - discipline = 192 ; - parameterCategory = 140 ; - parameterNumber = 235 ; - } #Significant height of total swell '140237' = { discipline = 192 ; parameterCategory = 140 ; parameterNumber = 237 ; } -#Mean direction of total swell -'140238' = { - discipline = 192 ; - parameterCategory = 140 ; - parameterNumber = 238 ; - } #Mean period of total swell '140239' = { discipline = 192 ; @@ -16701,12 +16609,6 @@ parameterCategory = 140 ; parameterNumber = 250 ; } -#2D wave spectra (single) -'140251' = { - discipline = 192 ; - parameterCategory = 140 ; - parameterNumber = 251 ; - } #Wave spectral kurtosis '140252' = { discipline = 192 ; @@ -17451,12 +17353,6 @@ parameterCategory = 160 ; parameterNumber = 184 ; } -#Skin reservoir content -'160198' = { - discipline = 192 ; - parameterCategory = 160 ; - parameterNumber = 198 ; - } #Percentage of vegetation '160199' = { discipline = 192 ; @@ -17673,12 +17569,6 @@ parameterCategory = 162 ; parameterNumber = 51 ; } -#Vertical integral of mass of atmosphere -'162053' = { - discipline = 192 ; - parameterCategory = 162 ; - parameterNumber = 53 ; - } #Vertical integral of temperature '162054' = { discipline = 192 ; @@ -17721,12 +17611,6 @@ parameterCategory = 162 ; parameterNumber = 61 ; } -#Vertical integral of potential+internal+latent energy -'162062' = { - discipline = 192 ; - parameterCategory = 162 ; - parameterNumber = 62 ; - } #Vertical integral of total energy '162063' = { discipline = 192 ; @@ -17763,18 +17647,6 @@ parameterCategory = 162 ; parameterNumber = 68 ; } -#Vertical integral of eastward heat flux -'162069' = { - discipline = 192 ; - parameterCategory = 162 ; - parameterNumber = 69 ; - } -#Vertical integral of northward heat flux -'162070' = { - discipline = 192 ; - parameterCategory = 162 ; - parameterNumber = 70 ; - } #Vertical integral of eastward geopotential flux '162073' = { discipline = 192 ; @@ -17829,12 +17701,6 @@ parameterCategory = 162 ; parameterNumber = 83 ; } -#Vertical integral of divergence of moisture flux -'162084' = { - discipline = 192 ; - parameterCategory = 162 ; - parameterNumber = 84 ; - } #Vertical integral of divergence of geopotential flux '162085' = { discipline = 192 ; @@ -22125,48 +21991,6 @@ parameterCategory = 228 ; parameterNumber = 6 ; } -#Minimum vertical gradient of refractivity inside trapping layer -'228015' = { - discipline = 192 ; - parameterCategory = 228 ; - parameterNumber = 15 ; - } -#Mean vertical gradient of refractivity inside trapping layer -'228016' = { - discipline = 192 ; - parameterCategory = 228 ; - parameterNumber = 16 ; - } -#Duct base height -'228017' = { - discipline = 192 ; - parameterCategory = 228 ; - parameterNumber = 17 ; - } -#Trapping layer base height -'228018' = { - discipline = 192 ; - parameterCategory = 228 ; - parameterNumber = 18 ; - } -#Trapping layer top height -'228019' = { - discipline = 192 ; - parameterCategory = 228 ; - parameterNumber = 19 ; - } -#Neutral wind at 10 m u-component -'228131' = { - discipline = 192 ; - parameterCategory = 228 ; - parameterNumber = 131 ; - } -#Neutral wind at 10 m v-component -'228132' = { - discipline = 192 ; - parameterCategory = 228 ; - parameterNumber = 132 ; - } #Surface temperature significance '234139' = { discipline = 192 ; diff --git a/definitions/grib2/localConcepts/ecmf/shortName.def b/definitions/grib2/localConcepts/ecmf/shortName.def index 44e0a7945..ee182920a 100644 --- a/definitions/grib2/localConcepts/ecmf/shortName.def +++ b/definitions/grib2/localConcepts/ecmf/shortName.def @@ -34,9 +34,12 @@ } #Sub-surface runoff 'ssro' = { - discipline = 192 ; - parameterCategory = 128 ; - parameterNumber = 9 ; + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 204 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; } #U component of divergent wind 'udvw' = { @@ -100,12 +103,6 @@ parameterCategory = 128 ; parameterNumber = 19 ; } -#Clear sky surface photosynthetically active radiation -'parcs' = { - discipline = 192 ; - parameterCategory = 128 ; - parameterNumber = 20 ; - } #Reserved for future unbalanced components '~' = { discipline = 192 ; @@ -124,30 +121,6 @@ parameterCategory = 128 ; parameterNumber = 26 ; } -#Low vegetation cover -'cvl' = { - discipline = 192 ; - parameterCategory = 128 ; - parameterNumber = 27 ; - } -#High vegetation cover -'cvh' = { - discipline = 192 ; - parameterCategory = 128 ; - parameterNumber = 28 ; - } -#Type of low vegetation -'tvl' = { - discipline = 192 ; - parameterCategory = 128 ; - parameterNumber = 29 ; - } -#Type of high vegetation -'tvh' = { - discipline = 192 ; - parameterCategory = 128 ; - parameterNumber = 30 ; - } #Snow albedo 'asn' = { localTablesVersion = 1 ; @@ -227,12 +200,6 @@ parameterCategory = 128 ; parameterNumber = 46 ; } -#Magnitude of turbulent surface stress -'magss' = { - discipline = 192 ; - parameterCategory = 128 ; - parameterNumber = 48 ; - } #Maximum temperature at 2 metres in the last 24 hours 'mx2t24' = { discipline = 0 ; @@ -299,18 +266,6 @@ parameterCategory = 128 ; parameterNumber = 65 ; } -#Leaf area index, low vegetation -'lai_lv' = { - discipline = 192 ; - parameterCategory = 128 ; - parameterNumber = 66 ; - } -#Leaf area index, high vegetation -'lai_hv' = { - discipline = 192 ; - parameterCategory = 128 ; - parameterNumber = 67 ; - } #Minimum stomatal resistance, low vegetation 'msr_lv' = { discipline = 192 ; @@ -675,12 +630,6 @@ typeOfFirstFixedSurface = 1 ; typeOfStatisticalProcessing = 1 ; } -#Charnock -'chnk' = { - discipline = 192 ; - parameterCategory = 128 ; - parameterNumber = 148 ; - } #Surface net radiation 'snr' = { discipline = 192 ; @@ -845,9 +794,10 @@ } #Skin reservoir content 'src' = { - discipline = 192 ; - parameterCategory = 128 ; - parameterNumber = 198 ; + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 205 ; } #Vegetation fraction 'veg' = { @@ -881,12 +831,6 @@ parameterCategory = 128 ; parameterNumber = 206 ; } -#Vertically integrated moisture divergence -'vimd' = { - discipline = 192 ; - parameterCategory = 128 ; - parameterNumber = 213 ; - } #Diabatic heating by radiation 'dhr' = { discipline = 192 ; @@ -1030,12 +974,6 @@ parameterCategory = 19 ; parameterNumber = 193 ; } -#Forecast logarithm of surface roughness for heat -'flsr' = { - discipline = 192 ; - parameterCategory = 128 ; - parameterNumber = 245 ; - } #Accumulated ice water tendency 'aiw' = { discipline = 192 ; @@ -13754,12 +13692,6 @@ parameterCategory = 228 ; parameterNumber = 21 ; } -#Clear-sky direct solar radiation at surface -'cdir' = { - discipline = 192 ; - parameterCategory = 228 ; - parameterNumber = 22 ; - } #Cloud base height 'cbh' = { discipline = 192 ; @@ -13820,18 +13752,6 @@ parameterCategory = 228 ; parameterNumber = 43 ; } -#Height of zero-degree wet-bulb temperature -'hwbt0' = { - discipline = 192 ; - parameterCategory = 228 ; - parameterNumber = 47 ; - } -#Height of one-degree wet-bulb temperature -'hwbt1' = { - discipline = 192 ; - parameterCategory = 228 ; - parameterNumber = 48 ; - } #GPP coefficient from Biogenic Flux Adjustment System 'gppbfas' = { localTablesVersion = 1 ; @@ -16611,24 +16531,12 @@ parameterCategory = 140 ; parameterNumber = 233 ; } -#Mean direction of wind waves -'mdww' = { - discipline = 192 ; - parameterCategory = 140 ; - parameterNumber = 235 ; - } #Significant height of total swell 'shts' = { discipline = 192 ; parameterCategory = 140 ; parameterNumber = 237 ; } -#Mean direction of total swell -'mdts' = { - discipline = 192 ; - parameterCategory = 140 ; - parameterNumber = 238 ; - } #Mean period of total swell 'mpts' = { discipline = 192 ; @@ -16701,12 +16609,6 @@ parameterCategory = 140 ; parameterNumber = 250 ; } -#2D wave spectra (single) -'2dfd' = { - discipline = 192 ; - parameterCategory = 140 ; - parameterNumber = 251 ; - } #Wave spectral kurtosis 'wsk' = { discipline = 192 ; @@ -17451,12 +17353,6 @@ parameterCategory = 160 ; parameterNumber = 184 ; } -#Skin reservoir content -'srcrea' = { - discipline = 192 ; - parameterCategory = 160 ; - parameterNumber = 198 ; - } #Percentage of vegetation 'vegrea' = { discipline = 192 ; @@ -17673,12 +17569,6 @@ parameterCategory = 162 ; parameterNumber = 51 ; } -#Vertical integral of mass of atmosphere -'vima' = { - discipline = 192 ; - parameterCategory = 162 ; - parameterNumber = 53 ; - } #Vertical integral of temperature 'vit' = { discipline = 192 ; @@ -17721,12 +17611,6 @@ parameterCategory = 162 ; parameterNumber = 61 ; } -#Vertical integral of potential+internal+latent energy -'vipile' = { - discipline = 192 ; - parameterCategory = 162 ; - parameterNumber = 62 ; - } #Vertical integral of total energy 'vitoe' = { discipline = 192 ; @@ -17763,18 +17647,6 @@ parameterCategory = 162 ; parameterNumber = 68 ; } -#Vertical integral of eastward heat flux -'vithee' = { - discipline = 192 ; - parameterCategory = 162 ; - parameterNumber = 69 ; - } -#Vertical integral of northward heat flux -'vithen' = { - discipline = 192 ; - parameterCategory = 162 ; - parameterNumber = 70 ; - } #Vertical integral of eastward geopotential flux 'vige' = { discipline = 192 ; @@ -17829,12 +17701,6 @@ parameterCategory = 162 ; parameterNumber = 83 ; } -#Vertical integral of divergence of moisture flux -'viwvd' = { - discipline = 192 ; - parameterCategory = 162 ; - parameterNumber = 84 ; - } #Vertical integral of divergence of geopotential flux 'vigd' = { discipline = 192 ; @@ -22125,48 +21991,6 @@ parameterCategory = 228 ; parameterNumber = 6 ; } -#Minimum vertical gradient of refractivity inside trapping layer -'dndzn' = { - discipline = 192 ; - parameterCategory = 228 ; - parameterNumber = 15 ; - } -#Mean vertical gradient of refractivity inside trapping layer -'dndza' = { - discipline = 192 ; - parameterCategory = 228 ; - parameterNumber = 16 ; - } -#Duct base height -'dctb' = { - discipline = 192 ; - parameterCategory = 228 ; - parameterNumber = 17 ; - } -#Trapping layer base height -'tplb' = { - discipline = 192 ; - parameterCategory = 228 ; - parameterNumber = 18 ; - } -#Trapping layer top height -'tplt' = { - discipline = 192 ; - parameterCategory = 228 ; - parameterNumber = 19 ; - } -#Neutral wind at 10 m u-component -'u10n' = { - discipline = 192 ; - parameterCategory = 228 ; - parameterNumber = 131 ; - } -#Neutral wind at 10 m v-component -'v10n' = { - discipline = 192 ; - parameterCategory = 228 ; - parameterNumber = 132 ; - } #Surface temperature significance 'sts' = { discipline = 192 ; diff --git a/definitions/grib2/localConcepts/ecmf/units.def b/definitions/grib2/localConcepts/ecmf/units.def index 54f2faad7..43fdb374c 100644 --- a/definitions/grib2/localConcepts/ecmf/units.def +++ b/definitions/grib2/localConcepts/ecmf/units.def @@ -34,9 +34,12 @@ } #Sub-surface runoff 'm' = { - discipline = 192 ; - parameterCategory = 128 ; - parameterNumber = 9 ; + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 204 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; } #U component of divergent wind 'm s**-1' = { @@ -100,12 +103,6 @@ parameterCategory = 128 ; parameterNumber = 19 ; } -#Clear sky surface photosynthetically active radiation -'J m**-2' = { - discipline = 192 ; - parameterCategory = 128 ; - parameterNumber = 20 ; - } #Reserved for future unbalanced components '~' = { discipline = 192 ; @@ -124,30 +121,6 @@ parameterCategory = 128 ; parameterNumber = 26 ; } -#Low vegetation cover -'(0 - 1)' = { - discipline = 192 ; - parameterCategory = 128 ; - parameterNumber = 27 ; - } -#High vegetation cover -'(0 - 1)' = { - discipline = 192 ; - parameterCategory = 128 ; - parameterNumber = 28 ; - } -#Type of low vegetation -'~' = { - discipline = 192 ; - parameterCategory = 128 ; - parameterNumber = 29 ; - } -#Type of high vegetation -'~' = { - discipline = 192 ; - parameterCategory = 128 ; - parameterNumber = 30 ; - } #Snow albedo '(0 - 1)' = { localTablesVersion = 1 ; @@ -227,12 +200,6 @@ parameterCategory = 128 ; parameterNumber = 46 ; } -#Magnitude of turbulent surface stress -'N m**-2 s' = { - discipline = 192 ; - parameterCategory = 128 ; - parameterNumber = 48 ; - } #Maximum temperature at 2 metres in the last 24 hours 'K' = { discipline = 0 ; @@ -299,18 +266,6 @@ parameterCategory = 128 ; parameterNumber = 65 ; } -#Leaf area index, low vegetation -'m**2 m**-2' = { - discipline = 192 ; - parameterCategory = 128 ; - parameterNumber = 66 ; - } -#Leaf area index, high vegetation -'m**2 m**-2' = { - discipline = 192 ; - parameterCategory = 128 ; - parameterNumber = 67 ; - } #Minimum stomatal resistance, low vegetation 's m**-1' = { discipline = 192 ; @@ -675,12 +630,6 @@ typeOfFirstFixedSurface = 1 ; typeOfStatisticalProcessing = 1 ; } -#Charnock -'~' = { - discipline = 192 ; - parameterCategory = 128 ; - parameterNumber = 148 ; - } #Surface net radiation 'J m**-2' = { discipline = 192 ; @@ -845,9 +794,10 @@ } #Skin reservoir content 'm of water equivalent' = { - discipline = 192 ; - parameterCategory = 128 ; - parameterNumber = 198 ; + localTablesVersion = 1 ; + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 205 ; } #Vegetation fraction '(0 - 1)' = { @@ -881,12 +831,6 @@ parameterCategory = 128 ; parameterNumber = 206 ; } -#Vertically integrated moisture divergence -'kg m**-2' = { - discipline = 192 ; - parameterCategory = 128 ; - parameterNumber = 213 ; - } #Diabatic heating by radiation 'K' = { discipline = 192 ; @@ -1030,12 +974,6 @@ parameterCategory = 19 ; parameterNumber = 193 ; } -#Forecast logarithm of surface roughness for heat -'~' = { - discipline = 192 ; - parameterCategory = 128 ; - parameterNumber = 245 ; - } #Accumulated ice water tendency '(-1 to 1)' = { discipline = 192 ; @@ -13754,12 +13692,6 @@ parameterCategory = 228 ; parameterNumber = 21 ; } -#Clear-sky direct solar radiation at surface -'J m**-2' = { - discipline = 192 ; - parameterCategory = 228 ; - parameterNumber = 22 ; - } #Cloud base height 'm' = { discipline = 192 ; @@ -13820,18 +13752,6 @@ parameterCategory = 228 ; parameterNumber = 43 ; } -#Height of zero-degree wet-bulb temperature -'m' = { - discipline = 192 ; - parameterCategory = 228 ; - parameterNumber = 47 ; - } -#Height of one-degree wet-bulb temperature -'m' = { - discipline = 192 ; - parameterCategory = 228 ; - parameterNumber = 48 ; - } #GPP coefficient from Biogenic Flux Adjustment System 'dimensionless' = { localTablesVersion = 1 ; @@ -16611,24 +16531,12 @@ parameterCategory = 140 ; parameterNumber = 233 ; } -#Mean direction of wind waves -'degrees' = { - discipline = 192 ; - parameterCategory = 140 ; - parameterNumber = 235 ; - } #Significant height of total swell 'm' = { discipline = 192 ; parameterCategory = 140 ; parameterNumber = 237 ; } -#Mean direction of total swell -'degrees' = { - discipline = 192 ; - parameterCategory = 140 ; - parameterNumber = 238 ; - } #Mean period of total swell 's' = { discipline = 192 ; @@ -16701,12 +16609,6 @@ parameterCategory = 140 ; parameterNumber = 250 ; } -#2D wave spectra (single) -'m**2 s radian**-1' = { - discipline = 192 ; - parameterCategory = 140 ; - parameterNumber = 251 ; - } #Wave spectral kurtosis 'dimensionless' = { discipline = 192 ; @@ -17451,12 +17353,6 @@ parameterCategory = 160 ; parameterNumber = 184 ; } -#Skin reservoir content -'kg m**-2' = { - discipline = 192 ; - parameterCategory = 160 ; - parameterNumber = 198 ; - } #Percentage of vegetation '%' = { discipline = 192 ; @@ -17673,12 +17569,6 @@ parameterCategory = 162 ; parameterNumber = 51 ; } -#Vertical integral of mass of atmosphere -'kg m**-2' = { - discipline = 192 ; - parameterCategory = 162 ; - parameterNumber = 53 ; - } #Vertical integral of temperature 'K kg m**-2' = { discipline = 192 ; @@ -17721,12 +17611,6 @@ parameterCategory = 162 ; parameterNumber = 61 ; } -#Vertical integral of potential+internal+latent energy -'J m**-2' = { - discipline = 192 ; - parameterCategory = 162 ; - parameterNumber = 62 ; - } #Vertical integral of total energy 'J m**-2' = { discipline = 192 ; @@ -17763,18 +17647,6 @@ parameterCategory = 162 ; parameterNumber = 68 ; } -#Vertical integral of eastward heat flux -'W m**-1' = { - discipline = 192 ; - parameterCategory = 162 ; - parameterNumber = 69 ; - } -#Vertical integral of northward heat flux -'W m**-1' = { - discipline = 192 ; - parameterCategory = 162 ; - parameterNumber = 70 ; - } #Vertical integral of eastward geopotential flux 'W m**-1' = { discipline = 192 ; @@ -17829,12 +17701,6 @@ parameterCategory = 162 ; parameterNumber = 83 ; } -#Vertical integral of divergence of moisture flux -'kg m**-2 s**-1' = { - discipline = 192 ; - parameterCategory = 162 ; - parameterNumber = 84 ; - } #Vertical integral of divergence of geopotential flux 'W m**-2' = { discipline = 192 ; @@ -22125,48 +21991,6 @@ parameterCategory = 228 ; parameterNumber = 6 ; } -#Minimum vertical gradient of refractivity inside trapping layer -'m**-1' = { - discipline = 192 ; - parameterCategory = 228 ; - parameterNumber = 15 ; - } -#Mean vertical gradient of refractivity inside trapping layer -'m**-1' = { - discipline = 192 ; - parameterCategory = 228 ; - parameterNumber = 16 ; - } -#Duct base height -'m' = { - discipline = 192 ; - parameterCategory = 228 ; - parameterNumber = 17 ; - } -#Trapping layer base height -'m' = { - discipline = 192 ; - parameterCategory = 228 ; - parameterNumber = 18 ; - } -#Trapping layer top height -'m' = { - discipline = 192 ; - parameterCategory = 228 ; - parameterNumber = 19 ; - } -#Neutral wind at 10 m u-component -'m s**-1' = { - discipline = 192 ; - parameterCategory = 228 ; - parameterNumber = 131 ; - } -#Neutral wind at 10 m v-component -'m s**-1' = { - discipline = 192 ; - parameterCategory = 228 ; - parameterNumber = 132 ; - } #Surface temperature significance '%' = { discipline = 192 ; diff --git a/definitions/grib2/name.def b/definitions/grib2/name.def index 4909713b8..842bd8262 100644 --- a/definitions/grib2/name.def +++ b/definitions/grib2/name.def @@ -113,6 +113,14 @@ parameterCategory = 2 ; parameterNumber = 1 ; } +#Surface photosynthetically active radiation, clear sky +'Surface photosynthetically active radiation, clear sky' = { + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 60 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; + } #Unbalanced component of temperature 'Unbalanced component of temperature' = { discipline = 0 ; @@ -131,6 +139,30 @@ parameterCategory = 2 ; parameterNumber = 45 ; } +#Low vegetation cover +'Low vegetation cover' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 53 ; + } +#High vegetation cover +'High vegetation cover' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 54 ; + } +#Type of low vegetation +'Type of low vegetation' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 57 ; + } +#Type of high vegetation +'Type of high vegetation' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 58 ; + } #Sea ice area fraction 'Sea ice area fraction' = { discipline = 10 ; @@ -166,6 +198,14 @@ typeOfSecondFixedSurface = 255 ; typeOfStatisticalProcessing = 1 ; } +#Magnitude of turbulent surface stress +'Magnitude of turbulent surface stress' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 58 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; + } #Large-scale precipitation fraction 'Large-scale precipitation fraction' = { discipline = 0 ; @@ -190,6 +230,18 @@ typeOfFirstFixedSurface = 1 ; typeOfStatisticalProcessing = 1 ; } +#Leaf area index, low vegetation +'Leaf area index, low vegetation' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 55 ; + } +#Leaf area index, high vegetation +'Leaf area index, high vegetation' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 56 ; + } #Standard deviation of filtered subgrid orography (climatological) 'Standard deviation of filtered subgrid orography (climatological)' = { discipline = 0 ; @@ -246,6 +298,12 @@ parameterNumber = 20 ; typeOfStatisticalProcessing = 1 ; } +#Charnock +'Charnock' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 76 ; + } #Boundary layer height 'Boundary layer height' = { discipline = 0 ; @@ -369,6 +427,13 @@ typeOfFirstFixedSurface = 8 ; typeOfStatisticalProcessing = 1 ; } +#Vertically integrated moisture divergence +'Vertically integrated moisture divergence' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 165 ; + typeOfStatisticalProcessing = 1 ; + } #Instantaneous eastward turbulent surface stress 'Instantaneous eastward turbulent surface stress' = { discipline = 0 ; @@ -418,6 +483,13 @@ parameterNumber = 1 ; typeOfFirstFixedSurface = 1 ; } +#Forecast logarithm of surface roughness for heat +'Forecast logarithm of surface roughness for heat' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 54 ; + typeOfFirstFixedSurface = 1 ; + } #Specific cloud liquid water content 'Specific cloud liquid water content' = { discipline = 0 ; @@ -2132,6 +2204,14 @@ scaledValueOfFirstFixedSurface = 26315 ; scaleFactorOfFirstFixedSurface = 2 ; } +#Surface direct short-wave radiation, clear sky +'Surface direct short-wave radiation, clear sky' = { + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 61 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; + } #0 degrees C isothermal level (atm) '0 degrees C isothermal level (atm)' = { discipline = 0 ; @@ -2237,6 +2317,18 @@ parameterCategory = 6 ; parameterNumber = 27 ; } +#Height of zero-degree wet-bulb temperature +'Height of zero-degree wet-bulb temperature' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 44 ; + } +#Height of one-degree wet-bulb temperature +'Height of one-degree wet-bulb temperature' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 45 ; + } #Instantaneous total lightning flash density 'Instantaneous total lightning flash density' = { discipline = 0 ; @@ -6443,12 +6535,30 @@ parameterCategory = 0 ; parameterNumber = 5 ; } +#Mean direction of wind waves +'Mean direction of wind waves' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 75 ; + } #Mean period of wind waves 'Mean period of wind waves' = { discipline = 10 ; parameterCategory = 0 ; parameterNumber = 6 ; } +#Mean direction of total swell +'Mean direction of total swell' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 74 ; + } +#2D wave spectra (single) +'2D wave spectra (single)' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 86 ; + } #Eastward sea water velocity 'Eastward sea water velocity' = { discipline = 10 ; @@ -6463,6 +6573,44 @@ parameterNumber = 3 ; typeOfFirstFixedSurface = 160 ; } +#Skin reservoir content +'Skin reservoir content' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 50 ; + } +#Vertical integral of mass of atmosphere +'Vertical integral of mass of atmosphere' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 39 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + } +#Vertical integral of potential+internal+latent energy +'Vertical integral of potential+internal+latent energy' = { + discipline = 0 ; + parameterCategory = 21 ; + parameterNumber = 21 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + } +#Vertical integral of eastward heat flux +'Vertical integral of eastward heat flux' = { + discipline = 0 ; + parameterCategory = 21 ; + parameterNumber = 19 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + } +#Vertical integral of northward heat flux +'Vertical integral of northward heat flux' = { + discipline = 0 ; + parameterCategory = 21 ; + parameterNumber = 20 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + } #Vertical integral of eastward water vapour flux 'Vertical integral of eastward water vapour flux' = { discipline = 0 ; @@ -6479,6 +6627,12 @@ typeOfFirstFixedSurface = 1 ; typeOfSecondFixedSurface = 8 ; } +#Vertically integrated moisture divergence flux +'Vertically integrated moisture divergence flux' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 165 ; + } #Surface runoff 'Surface runoff' = { discipline = 2 ; @@ -6629,6 +6783,48 @@ scaledValueOfSecondFixedSurface = missing() ; scaleFactorOfSecondFixedSurface = missing() ; } +#Minimum vertical gradient of refractivity inside trapping layer +'Minimum vertical gradient of refractivity inside trapping layer' = { + discipline = 0 ; + parameterCategory = 19 ; + parameterNumber = 45 ; + } +#Mean vertical gradient of refractivity inside trapping layer +'Mean vertical gradient of refractivity inside trapping layer' = { + discipline = 0 ; + parameterCategory = 19 ; + parameterNumber = 44 ; + } +#Duct base height +'Duct base height' = { + discipline = 0 ; + parameterCategory = 19 ; + parameterNumber = 41 ; + } +#Trapping layer base height +'Trapping layer base height' = { + discipline = 0 ; + parameterCategory = 19 ; + parameterNumber = 42 ; + } +#Trapping layer top height +'Trapping layer top height' = { + discipline = 0 ; + parameterCategory = 19 ; + parameterNumber = 43 ; + } +#U-component of neutral wind +'U-component of neutral wind' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 56 ; + } +#V-component of neutral wind +'V-component of neutral wind' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 57 ; + } #100 metre U wind component '100 metre U wind component' = { discipline = 0 ; diff --git a/definitions/grib2/paramId.def b/definitions/grib2/paramId.def index 8c1d40874..75e24295a 100644 --- a/definitions/grib2/paramId.def +++ b/definitions/grib2/paramId.def @@ -113,6 +113,14 @@ parameterCategory = 2 ; parameterNumber = 1 ; } +#Surface photosynthetically active radiation, clear sky +'20' = { + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 60 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; + } #Unbalanced component of temperature '21' = { discipline = 0 ; @@ -131,6 +139,30 @@ parameterCategory = 2 ; parameterNumber = 45 ; } +#Low vegetation cover +'27' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 53 ; + } +#High vegetation cover +'28' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 54 ; + } +#Type of low vegetation +'29' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 57 ; + } +#Type of high vegetation +'30' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 58 ; + } #Sea ice area fraction '31' = { discipline = 10 ; @@ -166,6 +198,14 @@ typeOfSecondFixedSurface = 255 ; typeOfStatisticalProcessing = 1 ; } +#Magnitude of turbulent surface stress +'48' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 58 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; + } #Large-scale precipitation fraction '50' = { discipline = 0 ; @@ -190,6 +230,18 @@ typeOfFirstFixedSurface = 1 ; typeOfStatisticalProcessing = 1 ; } +#Leaf area index, low vegetation +'66' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 55 ; + } +#Leaf area index, high vegetation +'67' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 56 ; + } #Standard deviation of filtered subgrid orography (climatological) '74' = { discipline = 0 ; @@ -246,6 +298,12 @@ parameterNumber = 20 ; typeOfStatisticalProcessing = 1 ; } +#Charnock +'148' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 76 ; + } #Boundary layer height '159' = { discipline = 0 ; @@ -369,6 +427,13 @@ typeOfFirstFixedSurface = 8 ; typeOfStatisticalProcessing = 1 ; } +#Vertically integrated moisture divergence +'213' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 165 ; + typeOfStatisticalProcessing = 1 ; + } #Instantaneous eastward turbulent surface stress '229' = { discipline = 0 ; @@ -418,6 +483,13 @@ parameterNumber = 1 ; typeOfFirstFixedSurface = 1 ; } +#Forecast logarithm of surface roughness for heat +'245' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 54 ; + typeOfFirstFixedSurface = 1 ; + } #Specific cloud liquid water content '246' = { discipline = 0 ; @@ -2132,6 +2204,14 @@ scaledValueOfFirstFixedSurface = 26315 ; scaleFactorOfFirstFixedSurface = 2 ; } +#Surface direct short-wave radiation, clear sky +'228022' = { + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 61 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; + } #0 degrees C isothermal level (atm) '228024' = { discipline = 0 ; @@ -2237,6 +2317,18 @@ parameterCategory = 6 ; parameterNumber = 27 ; } +#Height of zero-degree wet-bulb temperature +'228047' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 44 ; + } +#Height of one-degree wet-bulb temperature +'228048' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 45 ; + } #Instantaneous total lightning flash density '228050' = { discipline = 0 ; @@ -6443,12 +6535,30 @@ parameterCategory = 0 ; parameterNumber = 5 ; } +#Mean direction of wind waves +'140235' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 75 ; + } #Mean period of wind waves '140236' = { discipline = 10 ; parameterCategory = 0 ; parameterNumber = 6 ; } +#Mean direction of total swell +'140238' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 74 ; + } +#2D wave spectra (single) +'140251' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 86 ; + } #Eastward sea water velocity '151131' = { discipline = 10 ; @@ -6463,6 +6573,44 @@ parameterNumber = 3 ; typeOfFirstFixedSurface = 160 ; } +#Skin reservoir content +'160198' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 50 ; + } +#Vertical integral of mass of atmosphere +'162053' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 39 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + } +#Vertical integral of potential+internal+latent energy +'162062' = { + discipline = 0 ; + parameterCategory = 21 ; + parameterNumber = 21 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + } +#Vertical integral of eastward heat flux +'162069' = { + discipline = 0 ; + parameterCategory = 21 ; + parameterNumber = 19 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + } +#Vertical integral of northward heat flux +'162070' = { + discipline = 0 ; + parameterCategory = 21 ; + parameterNumber = 20 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + } #Vertical integral of eastward water vapour flux '162071' = { discipline = 0 ; @@ -6479,6 +6627,12 @@ typeOfFirstFixedSurface = 1 ; typeOfSecondFixedSurface = 8 ; } +#Vertically integrated moisture divergence flux +'162084' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 165 ; + } #Surface runoff '174008' = { discipline = 2 ; @@ -6629,6 +6783,48 @@ scaledValueOfSecondFixedSurface = missing() ; scaleFactorOfSecondFixedSurface = missing() ; } +#Minimum vertical gradient of refractivity inside trapping layer +'228015' = { + discipline = 0 ; + parameterCategory = 19 ; + parameterNumber = 45 ; + } +#Mean vertical gradient of refractivity inside trapping layer +'228016' = { + discipline = 0 ; + parameterCategory = 19 ; + parameterNumber = 44 ; + } +#Duct base height +'228017' = { + discipline = 0 ; + parameterCategory = 19 ; + parameterNumber = 41 ; + } +#Trapping layer base height +'228018' = { + discipline = 0 ; + parameterCategory = 19 ; + parameterNumber = 42 ; + } +#Trapping layer top height +'228019' = { + discipline = 0 ; + parameterCategory = 19 ; + parameterNumber = 43 ; + } +#U-component of neutral wind +'228131' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 56 ; + } +#V-component of neutral wind +'228132' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 57 ; + } #100 metre U wind component '228246' = { discipline = 0 ; diff --git a/definitions/grib2/shortName.def b/definitions/grib2/shortName.def index b318da296..5007e8d76 100644 --- a/definitions/grib2/shortName.def +++ b/definitions/grib2/shortName.def @@ -113,6 +113,14 @@ parameterCategory = 2 ; parameterNumber = 1 ; } +#Surface photosynthetically active radiation, clear sky +'parcs' = { + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 60 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; + } #Unbalanced component of temperature 'uctp' = { discipline = 0 ; @@ -131,6 +139,30 @@ parameterCategory = 2 ; parameterNumber = 45 ; } +#Low vegetation cover +'cvl' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 53 ; + } +#High vegetation cover +'cvh' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 54 ; + } +#Type of low vegetation +'tvl' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 57 ; + } +#Type of high vegetation +'tvh' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 58 ; + } #Sea ice area fraction 'ci' = { discipline = 10 ; @@ -166,6 +198,14 @@ typeOfSecondFixedSurface = 255 ; typeOfStatisticalProcessing = 1 ; } +#Magnitude of turbulent surface stress +'magss' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 58 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; + } #Large-scale precipitation fraction 'lspf' = { discipline = 0 ; @@ -190,6 +230,18 @@ typeOfFirstFixedSurface = 1 ; typeOfStatisticalProcessing = 1 ; } +#Leaf area index, low vegetation +'lai_lv' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 55 ; + } +#Leaf area index, high vegetation +'lai_hv' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 56 ; + } #Standard deviation of filtered subgrid orography (climatological) 'sdfor' = { discipline = 0 ; @@ -246,6 +298,12 @@ parameterNumber = 20 ; typeOfStatisticalProcessing = 1 ; } +#Charnock +'chnk' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 76 ; + } #Boundary layer height 'blh' = { discipline = 0 ; @@ -369,6 +427,13 @@ typeOfFirstFixedSurface = 8 ; typeOfStatisticalProcessing = 1 ; } +#Vertically integrated moisture divergence +'vimd' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 165 ; + typeOfStatisticalProcessing = 1 ; + } #Instantaneous eastward turbulent surface stress 'iews' = { discipline = 0 ; @@ -418,6 +483,13 @@ parameterNumber = 1 ; typeOfFirstFixedSurface = 1 ; } +#Forecast logarithm of surface roughness for heat +'flsr' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 54 ; + typeOfFirstFixedSurface = 1 ; + } #Specific cloud liquid water content 'clwc' = { discipline = 0 ; @@ -2132,6 +2204,14 @@ scaledValueOfFirstFixedSurface = 26315 ; scaleFactorOfFirstFixedSurface = 2 ; } +#Surface direct short-wave radiation, clear sky +'cdir' = { + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 61 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; + } #0 degrees C isothermal level (atm) 'deg0l' = { discipline = 0 ; @@ -2237,6 +2317,18 @@ parameterCategory = 6 ; parameterNumber = 27 ; } +#Height of zero-degree wet-bulb temperature +'hwbt0' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 44 ; + } +#Height of one-degree wet-bulb temperature +'hwbt1' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 45 ; + } #Instantaneous total lightning flash density 'litoti' = { discipline = 0 ; @@ -6443,12 +6535,30 @@ parameterCategory = 0 ; parameterNumber = 5 ; } +#Mean direction of wind waves +'mdww' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 75 ; + } #Mean period of wind waves 'mpww' = { discipline = 10 ; parameterCategory = 0 ; parameterNumber = 6 ; } +#Mean direction of total swell +'mdts' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 74 ; + } +#2D wave spectra (single) +'2dfd' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 86 ; + } #Eastward sea water velocity 'ocu' = { discipline = 10 ; @@ -6463,6 +6573,44 @@ parameterNumber = 3 ; typeOfFirstFixedSurface = 160 ; } +#Skin reservoir content +'srcrea' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 50 ; + } +#Vertical integral of mass of atmosphere +'vima' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 39 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + } +#Vertical integral of potential+internal+latent energy +'vipile' = { + discipline = 0 ; + parameterCategory = 21 ; + parameterNumber = 21 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + } +#Vertical integral of eastward heat flux +'vithee' = { + discipline = 0 ; + parameterCategory = 21 ; + parameterNumber = 19 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + } +#Vertical integral of northward heat flux +'vithen' = { + discipline = 0 ; + parameterCategory = 21 ; + parameterNumber = 20 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + } #Vertical integral of eastward water vapour flux 'viwve' = { discipline = 0 ; @@ -6479,6 +6627,12 @@ typeOfFirstFixedSurface = 1 ; typeOfSecondFixedSurface = 8 ; } +#Vertically integrated moisture divergence flux +'viwvd' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 165 ; + } #Surface runoff 'sro' = { discipline = 2 ; @@ -6629,6 +6783,48 @@ scaledValueOfSecondFixedSurface = missing() ; scaleFactorOfSecondFixedSurface = missing() ; } +#Minimum vertical gradient of refractivity inside trapping layer +'dndzn' = { + discipline = 0 ; + parameterCategory = 19 ; + parameterNumber = 45 ; + } +#Mean vertical gradient of refractivity inside trapping layer +'dndza' = { + discipline = 0 ; + parameterCategory = 19 ; + parameterNumber = 44 ; + } +#Duct base height +'dctb' = { + discipline = 0 ; + parameterCategory = 19 ; + parameterNumber = 41 ; + } +#Trapping layer base height +'tplb' = { + discipline = 0 ; + parameterCategory = 19 ; + parameterNumber = 42 ; + } +#Trapping layer top height +'tplt' = { + discipline = 0 ; + parameterCategory = 19 ; + parameterNumber = 43 ; + } +#U-component of neutral wind +'u10n' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 56 ; + } +#V-component of neutral wind +'v10n' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 57 ; + } #100 metre U wind component '100u' = { discipline = 0 ; diff --git a/definitions/grib2/units.def b/definitions/grib2/units.def index 917caea8b..c174b7614 100644 --- a/definitions/grib2/units.def +++ b/definitions/grib2/units.def @@ -113,6 +113,14 @@ parameterCategory = 2 ; parameterNumber = 1 ; } +#Surface photosynthetically active radiation, clear sky +'J m**-2' = { + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 60 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; + } #Unbalanced component of temperature 'K' = { discipline = 0 ; @@ -131,6 +139,30 @@ parameterCategory = 2 ; parameterNumber = 45 ; } +#Low vegetation cover +'(0 - 1)' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 53 ; + } +#High vegetation cover +'(0 - 1)' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 54 ; + } +#Type of low vegetation +'(code table 4.234)' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 57 ; + } +#Type of high vegetation +'(code table 4.234)' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 58 ; + } #Sea ice area fraction '(0 - 1)' = { discipline = 10 ; @@ -166,6 +198,14 @@ typeOfSecondFixedSurface = 255 ; typeOfStatisticalProcessing = 1 ; } +#Magnitude of turbulent surface stress +'N m**-2 s' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 58 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; + } #Large-scale precipitation fraction 's' = { discipline = 0 ; @@ -190,6 +230,18 @@ typeOfFirstFixedSurface = 1 ; typeOfStatisticalProcessing = 1 ; } +#Leaf area index, low vegetation +'m**2 m**-2' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 55 ; + } +#Leaf area index, high vegetation +'m**2 m**-2' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 56 ; + } #Standard deviation of filtered subgrid orography (climatological) 'm' = { discipline = 0 ; @@ -246,6 +298,12 @@ parameterNumber = 20 ; typeOfStatisticalProcessing = 1 ; } +#Charnock +'Numeric' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 76 ; + } #Boundary layer height 'm' = { discipline = 0 ; @@ -369,6 +427,13 @@ typeOfFirstFixedSurface = 8 ; typeOfStatisticalProcessing = 1 ; } +#Vertically integrated moisture divergence +'kg m**-2' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 165 ; + typeOfStatisticalProcessing = 1 ; + } #Instantaneous eastward turbulent surface stress 'N m**-2' = { discipline = 0 ; @@ -418,6 +483,13 @@ parameterNumber = 1 ; typeOfFirstFixedSurface = 1 ; } +#Forecast logarithm of surface roughness for heat +'Numeric' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 54 ; + typeOfFirstFixedSurface = 1 ; + } #Specific cloud liquid water content 'kg kg**-1' = { discipline = 0 ; @@ -2132,6 +2204,14 @@ scaledValueOfFirstFixedSurface = 26315 ; scaleFactorOfFirstFixedSurface = 2 ; } +#Surface direct short-wave radiation, clear sky +'J m**-2' = { + discipline = 0 ; + parameterCategory = 4 ; + parameterNumber = 61 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 1 ; + } #0 degrees C isothermal level (atm) 'm' = { discipline = 0 ; @@ -2237,6 +2317,18 @@ parameterCategory = 6 ; parameterNumber = 27 ; } +#Height of zero-degree wet-bulb temperature +'m' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 44 ; + } +#Height of one-degree wet-bulb temperature +'m' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 45 ; + } #Instantaneous total lightning flash density 'km**-2 day**-1' = { discipline = 0 ; @@ -6443,12 +6535,30 @@ parameterCategory = 0 ; parameterNumber = 5 ; } +#Mean direction of wind waves +'degrees' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 75 ; + } #Mean period of wind waves 's' = { discipline = 10 ; parameterCategory = 0 ; parameterNumber = 6 ; } +#Mean direction of total swell +'degrees' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 74 ; + } +#2D wave spectra (single) +'m**2 s radian**-1' = { + discipline = 10 ; + parameterCategory = 0 ; + parameterNumber = 86 ; + } #Eastward sea water velocity 'm s**-1' = { discipline = 10 ; @@ -6463,6 +6573,44 @@ parameterNumber = 3 ; typeOfFirstFixedSurface = 160 ; } +#Skin reservoir content +'kg m**-2' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 50 ; + } +#Vertical integral of mass of atmosphere +'kg m**-2' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 39 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + } +#Vertical integral of potential+internal+latent energy +'J m**-2' = { + discipline = 0 ; + parameterCategory = 21 ; + parameterNumber = 21 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + } +#Vertical integral of eastward heat flux +'W m**-1' = { + discipline = 0 ; + parameterCategory = 21 ; + parameterNumber = 19 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + } +#Vertical integral of northward heat flux +'W m**-1' = { + discipline = 0 ; + parameterCategory = 21 ; + parameterNumber = 20 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + } #Vertical integral of eastward water vapour flux 'kg m**-1 s**-1' = { discipline = 0 ; @@ -6479,6 +6627,12 @@ typeOfFirstFixedSurface = 1 ; typeOfSecondFixedSurface = 8 ; } +#Vertically integrated moisture divergence flux +'kg m**-2 s**-1' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 165 ; + } #Surface runoff 'kg m**-2' = { discipline = 2 ; @@ -6629,6 +6783,48 @@ scaledValueOfSecondFixedSurface = missing() ; scaleFactorOfSecondFixedSurface = missing() ; } +#Minimum vertical gradient of refractivity inside trapping layer +'m**-1' = { + discipline = 0 ; + parameterCategory = 19 ; + parameterNumber = 45 ; + } +#Mean vertical gradient of refractivity inside trapping layer +'m**-1' = { + discipline = 0 ; + parameterCategory = 19 ; + parameterNumber = 44 ; + } +#Duct base height +'m' = { + discipline = 0 ; + parameterCategory = 19 ; + parameterNumber = 41 ; + } +#Trapping layer base height +'m' = { + discipline = 0 ; + parameterCategory = 19 ; + parameterNumber = 42 ; + } +#Trapping layer top height +'m' = { + discipline = 0 ; + parameterCategory = 19 ; + parameterNumber = 43 ; + } +#U-component of neutral wind +'m s**-1' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 56 ; + } +#V-component of neutral wind +'m s**-1' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 57 ; + } #100 metre U wind component 'm s**-1' = { discipline = 0 ; From 624c12e1a08627341fe1b7f4b8299e147faa1ce1 Mon Sep 17 00:00:00 2001 From: Eugen Betke Date: Tue, 30 May 2023 14:33:02 +0000 Subject: [PATCH 190/378] ECC-1602: Clean up --- src/grib_accessor_class_data_ccsds_packing.cc | 6 ------ 1 file changed, 6 deletions(-) diff --git a/src/grib_accessor_class_data_ccsds_packing.cc b/src/grib_accessor_class_data_ccsds_packing.cc index 0c219ff79..007a6a92f 100644 --- a/src/grib_accessor_class_data_ccsds_packing.cc +++ b/src/grib_accessor_class_data_ccsds_packing.cc @@ -209,7 +209,6 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) long binary_scale_factor = 0; long decimal_scale_factor = 0; double reference_value = 0; - long bits8 = 0; long bits_per_value = 0; double max, min, d, divisor; @@ -448,8 +447,6 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) goto cleanup; } - //printf("n_vals = %ld, bits8 = %ld\n", n_vals, bits8); - //printf("in %ld out => %zu\n", bits8/8*n_vals, buflen); buflen = strm.total_out; grib_buffer_replace(a, buf, buflen, 1, 1); @@ -490,7 +487,6 @@ static int unpack(grib_accessor* a, T* val, size_t* len) long decimal_scale_factor = 0; double reference_value = 0; long bits_per_value = 0; - long bits8; long ccsds_flags; long ccsds_block_size; @@ -559,8 +555,6 @@ static int unpack(grib_accessor* a, T* val, size_t* len) if (nbytes == 3) nbytes = 4; - bits8 = ((bits_per_value + 7) / 8) * 8; - //size = n_vals * ((bits_per_value + 7) / 8); size = n_vals * nbytes; decoded = (unsigned char*)grib_context_buffer_malloc_clear(a->context, size); if (!decoded) { From fb4cf7226f35351c07b0d418d82af28987300516 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 30 May 2023 14:40:00 +0000 Subject: [PATCH 191/378] ECC-1592: Local codes --- definitions/grib2/tables/local/ecmf/1/4.2.2.0.table | 2 ++ 1 file changed, 2 insertions(+) diff --git a/definitions/grib2/tables/local/ecmf/1/4.2.2.0.table b/definitions/grib2/tables/local/ecmf/1/4.2.2.0.table index bdc028ffe..f68411f32 100644 --- a/definitions/grib2/tables/local/ecmf/1/4.2.2.0.table +++ b/definitions/grib2/tables/local/ecmf/1/4.2.2.0.table @@ -11,4 +11,6 @@ 201 201 Water runoff (m) 202 202 Surface runoff (m) 203 203 Snow melt (m of water equivalent) +204 204 Sub-surface runoff (m) +205 205 Skin reservoir content (m of water equivalent) 255 255 Missing From 8ee0d5217fbd2a7ecdffc4fddbcfb42c3dac2ca8 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 30 May 2023 14:57:36 +0000 Subject: [PATCH 192/378] ECC-1598: Time-mean parameter names --- definitions/grib2/cfVarName.def | 4 ++-- definitions/grib2/name.def | 8 ++++---- definitions/grib2/paramId.def | 4 ++-- definitions/grib2/shortName.def | 4 ++-- definitions/grib2/units.def | 4 ++-- 5 files changed, 12 insertions(+), 12 deletions(-) diff --git a/definitions/grib2/cfVarName.def b/definitions/grib2/cfVarName.def index 59b60da8b..be3db0c1d 100644 --- a/definitions/grib2/cfVarName.def +++ b/definitions/grib2/cfVarName.def @@ -5067,7 +5067,7 @@ scaleFactorOfSecondFixedSurface = missing() ; typeOfStatisticalProcessing = 0 ; } -#Time-mean X-component of sea ice velocity +#Time-mean eastward sea ice velocity 'avg_siue' = { discipline = 10 ; parameterCategory = 2 ; @@ -5080,7 +5080,7 @@ scaleFactorOfSecondFixedSurface = missing() ; typeOfStatisticalProcessing = 0 ; } -#Time-mean Y-component of sea ice velocity +#Time-mean northward sea ice velocity 'avg_sivn' = { discipline = 10 ; parameterCategory = 2 ; diff --git a/definitions/grib2/name.def b/definitions/grib2/name.def index 842bd8262..96b414f4d 100644 --- a/definitions/grib2/name.def +++ b/definitions/grib2/name.def @@ -5067,8 +5067,8 @@ scaleFactorOfSecondFixedSurface = missing() ; typeOfStatisticalProcessing = 0 ; } -#Time-mean X-component of sea ice velocity -'Time-mean X-component of sea ice velocity' = { +#Time-mean eastward sea ice velocity +'Time-mean eastward sea ice velocity' = { discipline = 10 ; parameterCategory = 2 ; parameterNumber = 4 ; @@ -5080,8 +5080,8 @@ scaleFactorOfSecondFixedSurface = missing() ; typeOfStatisticalProcessing = 0 ; } -#Time-mean Y-component of sea ice velocity -'Time-mean Y-component of sea ice velocity' = { +#Time-mean northward sea ice velocity +'Time-mean northward sea ice velocity' = { discipline = 10 ; parameterCategory = 2 ; parameterNumber = 5 ; diff --git a/definitions/grib2/paramId.def b/definitions/grib2/paramId.def index 75e24295a..1aad3620f 100644 --- a/definitions/grib2/paramId.def +++ b/definitions/grib2/paramId.def @@ -5067,7 +5067,7 @@ scaleFactorOfSecondFixedSurface = missing() ; typeOfStatisticalProcessing = 0 ; } -#Time-mean X-component of sea ice velocity +#Time-mean eastward sea ice velocity '263003' = { discipline = 10 ; parameterCategory = 2 ; @@ -5080,7 +5080,7 @@ scaleFactorOfSecondFixedSurface = missing() ; typeOfStatisticalProcessing = 0 ; } -#Time-mean Y-component of sea ice velocity +#Time-mean northward sea ice velocity '263004' = { discipline = 10 ; parameterCategory = 2 ; diff --git a/definitions/grib2/shortName.def b/definitions/grib2/shortName.def index 5007e8d76..7e55a29b8 100644 --- a/definitions/grib2/shortName.def +++ b/definitions/grib2/shortName.def @@ -5067,7 +5067,7 @@ scaleFactorOfSecondFixedSurface = missing() ; typeOfStatisticalProcessing = 0 ; } -#Time-mean X-component of sea ice velocity +#Time-mean eastward sea ice velocity 'avg_siue' = { discipline = 10 ; parameterCategory = 2 ; @@ -5080,7 +5080,7 @@ scaleFactorOfSecondFixedSurface = missing() ; typeOfStatisticalProcessing = 0 ; } -#Time-mean Y-component of sea ice velocity +#Time-mean northward sea ice velocity 'avg_sivn' = { discipline = 10 ; parameterCategory = 2 ; diff --git a/definitions/grib2/units.def b/definitions/grib2/units.def index c174b7614..cf28da244 100644 --- a/definitions/grib2/units.def +++ b/definitions/grib2/units.def @@ -5067,7 +5067,7 @@ scaleFactorOfSecondFixedSurface = missing() ; typeOfStatisticalProcessing = 0 ; } -#Time-mean X-component of sea ice velocity +#Time-mean eastward sea ice velocity 'm s**-1' = { discipline = 10 ; parameterCategory = 2 ; @@ -5080,7 +5080,7 @@ scaleFactorOfSecondFixedSurface = missing() ; typeOfStatisticalProcessing = 0 ; } -#Time-mean Y-component of sea ice velocity +#Time-mean northward sea ice velocity 'm s**-1' = { discipline = 10 ; parameterCategory = 2 ; From 9e84a7bd47236c31502a6136455f51858d30789f Mon Sep 17 00:00:00 2001 From: Eugen Betke Date: Tue, 30 May 2023 15:13:35 +0000 Subject: [PATCH 193/378] ECC-1602: Change error code GRIB_NOT_IMPLEMENTED -> GRIB_OUT_OF_RANGE --- src/grib_accessor_class_data_ccsds_packing.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/grib_accessor_class_data_ccsds_packing.cc b/src/grib_accessor_class_data_ccsds_packing.cc index 007a6a92f..3c6b74fc5 100644 --- a/src/grib_accessor_class_data_ccsds_packing.cc +++ b/src/grib_accessor_class_data_ccsds_packing.cc @@ -389,7 +389,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) } break; default: - err = GRIB_NOT_IMPLEMENTED; + err = GRIB_OUT_OF_RANGE; goto cleanup; } @@ -596,7 +596,7 @@ static int unpack(grib_accessor* a, T* val, size_t* len) } break; default: - err = GRIB_NOT_IMPLEMENTED; + err = GRIB_OUT_OF_RANGE; goto cleanup; } From ff0359322cac79cfd2b795f12166b85c5d4d5e2d Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 30 May 2023 16:07:29 +0000 Subject: [PATCH 194/378] ECC-1604: GRIB2: Modification and correction of sea water practical salinity units --- definitions/grib2/units.def | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/definitions/grib2/units.def b/definitions/grib2/units.def index cf28da244..8e3aa7ba7 100644 --- a/definitions/grib2/units.def +++ b/definitions/grib2/units.def @@ -4488,7 +4488,7 @@ scaleFactorOfSecondFixedSurface = missing() ; } #Vertically-integrated sea water practical salinity in the upper 300 m -'10**-3 m**-2' = { +'g kg**-1 m' = { discipline = 10 ; parameterCategory = 4 ; parameterNumber = 21 ; @@ -4500,7 +4500,7 @@ scaleFactorOfSecondFixedSurface = 0 ; } #Vertically-integrated sea water practical salinity in the upper 700 m -'10**-3 m**-2' = { +'g kg**-1 m' = { discipline = 10 ; parameterCategory = 4 ; parameterNumber = 21 ; @@ -4512,7 +4512,7 @@ scaleFactorOfSecondFixedSurface = 0 ; } #Total column sea water practical salinity -'10**-3 m**-2' = { +'g kg**-1 m' = { discipline = 10 ; parameterCategory = 4 ; parameterNumber = 21 ; @@ -4794,7 +4794,7 @@ parameterNumber = 20 ; } #Sea water practical salinity -'10**-3' = { +'g kg**-1' = { discipline = 10 ; parameterCategory = 4 ; parameterNumber = 21 ; @@ -5536,7 +5536,7 @@ typeOfStatisticalProcessing = 0 ; } #Time-mean vertically-integrated sea water practical salinity in the upper 300 m -'10**-3 m**-2' = { +'g kg**-1 m' = { discipline = 10 ; parameterCategory = 4 ; parameterNumber = 21 ; @@ -5549,7 +5549,7 @@ typeOfStatisticalProcessing = 0 ; } #Time-mean vertically-integrated sea water practical salinity in the upper 700 m -'10**-3 m**-2' = { +'g kg**-1 m' = { discipline = 10 ; parameterCategory = 4 ; parameterNumber = 21 ; @@ -5562,7 +5562,7 @@ typeOfStatisticalProcessing = 0 ; } #Time-mean total column sea water practical salinity -'10**-3 m**-2' = { +'g kg**-1 m' = { discipline = 10 ; parameterCategory = 4 ; parameterNumber = 21 ; @@ -5861,7 +5861,7 @@ typeOfStatisticalProcessing = 0 ; } #Time-mean sea water practical salinity -'10**-3' = { +'g kg**-1' = { discipline = 10 ; parameterCategory = 4 ; parameterNumber = 21 ; From 46f57dde9834b817f083973cec9aa06682c1e4de Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 30 May 2023 19:41:36 +0100 Subject: [PATCH 195/378] Remove unused variables --- src/grib_accessor_class_data_ccsds_packing.cc | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/grib_accessor_class_data_ccsds_packing.cc b/src/grib_accessor_class_data_ccsds_packing.cc index 3c6b74fc5..9acb486e3 100644 --- a/src/grib_accessor_class_data_ccsds_packing.cc +++ b/src/grib_accessor_class_data_ccsds_packing.cc @@ -212,7 +212,6 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) long bits_per_value = 0; double max, min, d, divisor; - unsigned char* p; long number_of_data_points; long ccsds_flags; @@ -480,7 +479,6 @@ static int unpack(grib_accessor* a, T* val, size_t* len) size_t size = 0; unsigned char* decoded = NULL; // unsigned char* p = NULL; - long pos = 0; long nn = 0; long binary_scale_factor = 0; @@ -573,8 +571,6 @@ static int unpack(grib_accessor* a, T* val, size_t* len) goto cleanup; } - pos = 0; - // ECC-1427: Performance improvement (replaced by ECC-1602) //grib_decode_array(decoded, &pos, bits8 , reference_value, bscale, dscale, n_vals, val); From d9bdfdc4df96baecbb82695f6d53d9d371651647 Mon Sep 17 00:00:00 2001 From: Eugen Betke Date: Tue, 30 May 2023 18:46:23 +0000 Subject: [PATCH 196/378] ECC-1602: Use uint8_t, uint16_t and uint32_t data types --- src/grib_accessor_class_data_ccsds_packing.cc | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/grib_accessor_class_data_ccsds_packing.cc b/src/grib_accessor_class_data_ccsds_packing.cc index 3c6b74fc5..01a45b618 100644 --- a/src/grib_accessor_class_data_ccsds_packing.cc +++ b/src/grib_accessor_class_data_ccsds_packing.cc @@ -375,17 +375,17 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) switch (nbytes) { case 1: for (i = 0; i < n_vals; i++) { - encoded[i] = static_cast(((val[i] * d - reference_value) * divisor) + 0.5); + encoded[i] = static_cast(((val[i] * d - reference_value) * divisor) + 0.5); } break; case 2: for (i = 0; i < n_vals; i++) { - reinterpret_cast(encoded)[i] = static_cast(((val[i] * d - reference_value) * divisor) + 0.5); + reinterpret_cast(encoded)[i] = static_cast(((val[i] * d - reference_value) * divisor) + 0.5); } break; case 4: for (i = 0; i < n_vals; i++) { - reinterpret_cast(encoded)[i] = static_cast(((val[i] * d - reference_value) * divisor) + 0.5); + reinterpret_cast(encoded)[i] = static_cast(((val[i] * d - reference_value) * divisor) + 0.5); } break; default: @@ -582,17 +582,17 @@ static int unpack(grib_accessor* a, T* val, size_t* len) switch (nbytes) { case 1: for (i = 0; i < n_vals; i++) { - val[i] = (reinterpret_cast(decoded)[i] * bscale + reference_value) * dscale; + val[i] = (reinterpret_cast(decoded)[i] * bscale + reference_value) * dscale; } break; case 2: for (i = 0; i < n_vals; i++) { - val[i] = (reinterpret_cast(decoded)[i] * bscale + reference_value) * dscale; + val[i] = (reinterpret_cast(decoded)[i] * bscale + reference_value) * dscale; } break; case 4: for (i = 0; i < n_vals; i++) { - val[i] = (reinterpret_cast(decoded)[i] * bscale + reference_value) * dscale; + val[i] = (reinterpret_cast(decoded)[i] * bscale + reference_value) * dscale; } break; default: From 35c641787c9affa2a9ded1458f1e2ee722e13414 Mon Sep 17 00:00:00 2001 From: Eugen Betke Date: Tue, 30 May 2023 19:09:40 +0000 Subject: [PATCH 197/378] ECC-1602: Add header --- src/grib_accessor_class_data_ccsds_packing.cc | 1 + 1 file changed, 1 insertion(+) diff --git a/src/grib_accessor_class_data_ccsds_packing.cc b/src/grib_accessor_class_data_ccsds_packing.cc index 3a528627c..0e6e975a7 100644 --- a/src/grib_accessor_class_data_ccsds_packing.cc +++ b/src/grib_accessor_class_data_ccsds_packing.cc @@ -9,6 +9,7 @@ */ #include "grib_api_internal_cpp.h" +#include /* This is used by make_class.pl From c5c5ba80179caf18e758b0451f0e4eeee9882f04 Mon Sep 17 00:00:00 2001 From: Eugen Betke Date: Thu, 1 Jun 2023 12:10:23 +0000 Subject: [PATCH 198/378] ECC-1602: Move AEC flags modification to a function; Return GRIB_INVALID_BPV instead of GRIB_OUT_OF_RANGE --- src/grib_accessor_class_data_ccsds_packing.cc | 64 +++++++++++++------ 1 file changed, 46 insertions(+), 18 deletions(-) diff --git a/src/grib_accessor_class_data_ccsds_packing.cc b/src/grib_accessor_class_data_ccsds_packing.cc index 0e6e975a7..c09e9bee5 100644 --- a/src/grib_accessor_class_data_ccsds_packing.cc +++ b/src/grib_accessor_class_data_ccsds_packing.cc @@ -57,6 +57,8 @@ static void init(grib_accessor*, const long, grib_arguments*); //static void init_class(grib_accessor_class*); static int unpack_double_element(grib_accessor*, size_t i, double* val); static int unpack_double_element_set(grib_accessor*, const size_t* index_array, size_t len, double* val_array); +static bool is_big_endian(); +static void modify_aec_flags(long& flags); typedef struct grib_accessor_data_ccsds_packing { @@ -240,12 +242,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) if ((err = grib_get_long_internal(hand, self->ccsds_rsi, &ccsds_rsi)) != GRIB_SUCCESS) return err; - // ECC-1602: Performance improvement - ccsds_flags &= ~AEC_DATA_MSB; // enable little-endian - ccsds_flags &= ~AEC_DATA_3BYTE; // disable support for 3-bytes per value - unsigned short is_little_endian = 1; - if (reinterpret_cast(&is_little_endian)[0] == 0) - ccsds_flags |= AEC_DATA_MSB; + modify_aec_flags(ccsds_flags); // Special case if (*len == 0) { @@ -361,16 +358,34 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) divisor = grib_power(-binary_scale_factor, 2); size_t nbytes = (bits_per_value + 7) / 8; + // ECC-1602: use native a data type (4 bytes for uint32_t) for values that require only 3 bytes if (nbytes == 3) nbytes = 4; - encoded = (unsigned char*)grib_context_buffer_malloc_clear(a->context, nbytes * n_vals); + encoded = reinterpret_cast(grib_context_buffer_malloc_clear(a->context, nbytes * n_vals)); if (!encoded) { err = GRIB_OUT_OF_MEMORY; goto cleanup; } + /* + // Original code is memory efficient and supports 3 bytes per value + // replaced by ECC-1602 for performance reasons + buflen = 0; + p = encoded; + for (i = 0; i < n_vals; i++) { + long blen = bits8; + unsigned long unsigned_val = (unsigned long)((((val[i] * d) - reference_value) * divisor) + 0.5); + while (blen >= 8) { + blen -= 8; + *p = (unsigned_val >> blen); + p++; + buflen++; + } + } + */ + // ECC-1602: Performance improvement switch (nbytes) { case 1: @@ -389,11 +404,11 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) } break; default: - err = GRIB_OUT_OF_RANGE; + grib_context_log(a->context, GRIB_LOG_DEBUG,"data_ccsds_packing pack_double: packing %s, bits_per_value %d (max 32)", a->name, bits_per_value); + err = GRIB_INVALID_BPV; goto cleanup; } - grib_context_log(a->context, GRIB_LOG_DEBUG,"data_ccsds_packing pack_double: packing %s, %d values", a->name, n_vals); // ECC-1431: GRIB2: CCSDS encoding failure AEC_STREAM_ERROR @@ -463,6 +478,23 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) return err; } +static bool is_big_endian() +{ + unsigned char is_big_endian = 0; + unsigned short endianess_test = 1; + return reinterpret_cast(&endianess_test)[0] == is_big_endian; +} + +static void modify_aec_flags(long& flags) +{ + // ECC-1602: Performance improvement: enabled the use of native data types + flags &= ~AEC_DATA_3BYTE; // disable support for 3-bytes per value + if (is_big_endian()) + flags |= AEC_DATA_MSB; // enable big-endian + else + flags &= ~AEC_DATA_MSB; // enable little-endian +} + template static int unpack(grib_accessor* a, T* val, size_t* len) { @@ -516,12 +548,7 @@ static int unpack(grib_accessor* a, T* val, size_t* len) if ((err = grib_get_long_internal(hand, self->ccsds_rsi, &ccsds_rsi)) != GRIB_SUCCESS) return err; - // ECC-1602: Performance improvement - ccsds_flags &= ~AEC_DATA_MSB; // enable little-endian - ccsds_flags &= ~AEC_DATA_3BYTE; // disable support for 3-bytes per value - unsigned short is_little_endian = 1; - if (reinterpret_cast(&is_little_endian)[0] == 0) - ccsds_flags |= AEC_DATA_MSB; + modify_aec_flags(ccsds_flags); // TODO(masn): This should be called upstream if (*len < n_vals) @@ -551,8 +578,8 @@ static int unpack(grib_accessor* a, T* val, size_t* len) strm.avail_in = buflen; nbytes = (bits_per_value + 7) / 8; - if (nbytes == 3) - nbytes = 4; + if (nbytes == 3) + nbytes = 4 size = n_vals * nbytes; decoded = (unsigned char*)grib_context_buffer_malloc_clear(a->context, size); @@ -593,7 +620,8 @@ static int unpack(grib_accessor* a, T* val, size_t* len) } break; default: - err = GRIB_OUT_OF_RANGE; + grib_context_log(a->context, GRIB_LOG_DEBUG,"data_ccsds_packing %s: packing %s, bits_per_value %d (max 32)", __func__, a->name, bits_per_value); + err = GRIB_INVALID_BPV; goto cleanup; } From 021de6c4c796538e7f7d25d32a9799200cbbbc10 Mon Sep 17 00:00:00 2001 From: Eugen Betke Date: Thu, 1 Jun 2023 12:45:21 +0000 Subject: [PATCH 199/378] ECC-1602: Minor change --- src/grib_accessor_class_data_ccsds_packing.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/grib_accessor_class_data_ccsds_packing.cc b/src/grib_accessor_class_data_ccsds_packing.cc index c09e9bee5..a47974649 100644 --- a/src/grib_accessor_class_data_ccsds_packing.cc +++ b/src/grib_accessor_class_data_ccsds_packing.cc @@ -579,7 +579,7 @@ static int unpack(grib_accessor* a, T* val, size_t* len) nbytes = (bits_per_value + 7) / 8; if (nbytes == 3) - nbytes = 4 + nbytes = 4; size = n_vals * nbytes; decoded = (unsigned char*)grib_context_buffer_malloc_clear(a->context, size); From a2dfb2fde2106928b6e8185ff9c914a372b78863 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 1 Jun 2023 14:47:17 +0100 Subject: [PATCH 200/378] ECC-1605: GRIB: Overflow for key forecastTime --- src/grib_accessor_class_signed.cc | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/src/grib_accessor_class_signed.cc b/src/grib_accessor_class_signed.cc index 1d7ed6b6b..f893fc4d9 100644 --- a/src/grib_accessor_class_signed.cc +++ b/src/grib_accessor_class_signed.cc @@ -210,7 +210,7 @@ static int pack_long(grib_accessor* a, const long* val, size_t* len) rlen = count; if (*len < 1) { - grib_context_log(a->context, GRIB_LOG_ERROR, "Wrong size for %s it contains %d values ", a->name, 1); + grib_context_log(a->context, GRIB_LOG_ERROR, "Wrong size for %s, it contains %d values", a->name, 1); len[0] = 0; return GRIB_ARRAY_TOO_SMALL; } @@ -222,9 +222,22 @@ static int pack_long(grib_accessor* a, const long* val, size_t* len) if (rlen == 1) { long v = val[0]; - if (missing) + if (missing) { if (v == GRIB_MISSING_LONG) v = missing; + } else { + // ECC-1605: Check overflow/underflow + const int nbits = self->nbytes * 8; + const long minval = -(1L << (nbits-1)); + const long maxval = (1L << (nbits-1)) - 1; + printf(" key=%s: v=%ld (minval=%ld maxval=%ld)\n", a->name, v, minval, maxval); + if (v > maxval || v < minval) { + grib_context_log(a->context, GRIB_LOG_ERROR, + "Key \"%s\": Trying to encode value of %ld but the allowable range is %ld to %ld (number of bits=%d)", + a->name, v, minval, maxval, nbits); + return GRIB_ENCODING_ERROR; + } + } off = a->offset; ret = grib_encode_signed_long(grib_handle_of_accessor(a)->buffer->data, v, off, a->length); From 0ce93aa9ba75a45f91f91480bf495986398e14d0 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 1 Jun 2023 15:44:32 +0000 Subject: [PATCH 201/378] ECC-1605: Fix broken test (edition convertion) --- definitions/grib1/grid_rotation.def | 8 ++++---- src/grib_accessor_class_signed.cc | 6 +++--- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/definitions/grib1/grid_rotation.def b/definitions/grib1/grid_rotation.def index 05d49bd29..cd05657fb 100644 --- a/definitions/grib1/grid_rotation.def +++ b/definitions/grib1/grid_rotation.def @@ -1,10 +1,10 @@ # (C) Copyright 2005- ECMWF. -signed[3] latitudeOfSouthernPole : edition_specific; -meta geography.latitudeOfSouthernPoleInDegrees scale(latitudeOfSouthernPole ,oneConstant,grib1divider,truncateDegrees) : dump; +signed[3] latitudeOfSouthernPole : edition_specific, no_copy; +meta geography.latitudeOfSouthernPoleInDegrees scale(latitudeOfSouthernPole ,oneConstant,grib1divider,truncateDegrees): dump; -signed[3] longitudeOfSouthernPole : edition_specific ; -meta geography.longitudeOfSouthernPoleInDegrees scale(longitudeOfSouthernPole ,oneConstant,grib1divider,truncateDegrees) : dump; +signed[3] longitudeOfSouthernPole : edition_specific, no_copy; +meta geography.longitudeOfSouthernPoleInDegrees scale(longitudeOfSouthernPole ,oneConstant,grib1divider,truncateDegrees): dump; ibmfloat geography.angleOfRotationInDegrees : dump; diff --git a/src/grib_accessor_class_signed.cc b/src/grib_accessor_class_signed.cc index f893fc4d9..357577335 100644 --- a/src/grib_accessor_class_signed.cc +++ b/src/grib_accessor_class_signed.cc @@ -230,11 +230,11 @@ static int pack_long(grib_accessor* a, const long* val, size_t* len) const int nbits = self->nbytes * 8; const long minval = -(1L << (nbits-1)); const long maxval = (1L << (nbits-1)) - 1; - printf(" key=%s: v=%ld (minval=%ld maxval=%ld)\n", a->name, v, minval, maxval); + //printf(" key=%s: v=%ld (minval=%ld maxval=%ld)\n", a->name, v, minval, maxval); if (v > maxval || v < minval) { grib_context_log(a->context, GRIB_LOG_ERROR, - "Key \"%s\": Trying to encode value of %ld but the allowable range is %ld to %ld (number of bits=%d)", - a->name, v, minval, maxval, nbits); + "Key \"%s\": Trying to encode value of %ld but the allowable range is %ld to %ld (number of bits=%d)", + a->name, v, minval, maxval, nbits); return GRIB_ENCODING_ERROR; } } From df282c882b3418ff71a3e9eb457acc108e588933 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 1 Jun 2023 17:03:03 +0100 Subject: [PATCH 202/378] ECC-1605: Fix Lambert conformal Latin1, Latin2 keys --- definitions/grib1/grid_definition_lambert.def | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/definitions/grib1/grid_definition_lambert.def b/definitions/grib1/grid_definition_lambert.def index aca2b323d..5556c16ac 100644 --- a/definitions/grib1/grid_definition_lambert.def +++ b/definitions/grib1/grid_definition_lambert.def @@ -60,7 +60,7 @@ alias xFirst=longitudeOfFirstGridPointInDegrees; include "grib1/scanning_mode.def"; # Latin 1 - first latitude from the pole at which the secant cone cuts the sphere -signed[3] Latin1 : edition_specific; +signed[3] Latin1 : edition_specific, no_copy; meta geography.Latin1InDegrees scale(Latin1,oneConstant,grib1divider,truncateDegrees) : dump; alias firstLatitude=Latin1; alias firstLatitudeInDegrees=Latin1InDegrees; @@ -70,7 +70,7 @@ constant LaDInDegrees = Latin1InDegrees : dump; alias geography.LaDInDegrees=LaDInDegrees; # Latin 2 - second latitude from the pole at which the secant cone cuts the sphere -signed[3] Latin2 :edition_specific; +signed[3] Latin2 :edition_specific,no_copy; alias secondLatitude=Latin2; meta geography.Latin2InDegrees scale(Latin2,oneConstant,grib1divider,truncateDegrees) : dump; alias secondLatitudeInDegrees=Latin2InDegrees; From 2678f8df754653f97435dba4212e1f9ecf1ac39d Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 1 Jun 2023 17:12:35 +0100 Subject: [PATCH 203/378] ECC-1605: Add test --- tests/grib_set.sh | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/tests/grib_set.sh b/tests/grib_set.sh index 6aa665a60..3f3157c89 100755 --- a/tests/grib_set.sh +++ b/tests/grib_set.sh @@ -75,6 +75,22 @@ set -e [ $status -ne 0 ] grep -q "Trying to encode a negative value of -1 for key of type unsigned" $temp +# ECC-1605: Out-of-bounds value for signed keys +# ---------------------------------------------------- +input=$ECCODES_SAMPLES_PATH/GRIB2.tmpl +set +e +${tools_dir}/grib_set -s forecastTime=2147483648 $input $outfile 2>$temp +status=$? +set -e +[ $status -ne 0 ] +grep -q "Trying to encode value of 2147483648 but the allowable range is -2147483648 to 2147483647" $temp + +set +e +${tools_dir}/grib_set -s forecastTime=-2147483650 $input $outfile 2>$temp +status=$? +set -e +[ $status -ne 0 ] + # GRIB-941: encoding of GRIB2 angles # ----------------------------------- From cd35aeb2ebd4480eb550ff1e505ee17e7af27b0f Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 1 Jun 2023 17:17:02 +0100 Subject: [PATCH 204/378] ECC-1605: Error message --- src/grib_accessor_class_unsigned.cc | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/grib_accessor_class_unsigned.cc b/src/grib_accessor_class_unsigned.cc index 82439a465..f620fc590 100644 --- a/src/grib_accessor_class_unsigned.cc +++ b/src/grib_accessor_class_unsigned.cc @@ -220,7 +220,7 @@ int pack_long_unsigned_helper(grib_accessor* a, const long* val, size_t* len, in if (check) { if (val[0] < 0) { grib_context_log(a->context, GRIB_LOG_ERROR, - "Key \"%s\": Trying to encode a negative value of %ld for key of type unsigned\n", a->name, val[0]); + "Key \"%s\": Trying to encode a negative value of %ld for key of type unsigned", a->name, val[0]); return GRIB_ENCODING_ERROR; } /* See GRIB-23 and GRIB-262 */ @@ -230,8 +230,8 @@ int pack_long_unsigned_helper(grib_accessor* a, const long* val, size_t* len, in unsigned long maxval = (1UL << nbits) - 1; if (maxval > 0 && v > maxval) { /* See ECC-1002 */ grib_context_log(a->context, GRIB_LOG_ERROR, - "Key \"%s\": Trying to encode value of %ld but the maximum allowable value is %ld (number of bits=%ld)\n", - a->name, v, maxval, nbits); + "Key \"%s\": Trying to encode value of %ld but the maximum allowable value is %lu (number of bits=%ld)", + a->name, v, maxval, nbits); return GRIB_ENCODING_ERROR; } } From d43491f0fa0fe798156fe5532ec776ecd56005ad Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 1 Jun 2023 23:02:41 +0100 Subject: [PATCH 205/378] ECC-1605: Testing --- tests/grib_set.sh | 29 +++++++++++++++-------------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/tests/grib_set.sh b/tests/grib_set.sh index 3f3157c89..863de5f78 100755 --- a/tests/grib_set.sh +++ b/tests/grib_set.sh @@ -77,20 +77,21 @@ grep -q "Trying to encode a negative value of -1 for key of type unsigned" $temp # ECC-1605: Out-of-bounds value for signed keys # ---------------------------------------------------- -input=$ECCODES_SAMPLES_PATH/GRIB2.tmpl -set +e -${tools_dir}/grib_set -s forecastTime=2147483648 $input $outfile 2>$temp -status=$? -set -e -[ $status -ne 0 ] -grep -q "Trying to encode value of 2147483648 but the allowable range is -2147483648 to 2147483647" $temp - -set +e -${tools_dir}/grib_set -s forecastTime=-2147483650 $input $outfile 2>$temp -status=$? -set -e -[ $status -ne 0 ] - +if [ $ECCODES_ON_WINDOWS -eq 0 ]; then + input=$ECCODES_SAMPLES_PATH/GRIB2.tmpl + set +e + ${tools_dir}/grib_set -s forecastTime=2147483648 $input $outfile 2>$temp + status=$? + set -e + [ $status -ne 0 ] + grep -q "Trying to encode value of 2147483648 but the allowable range is -2147483648 to 2147483647" $temp + + set +e + ${tools_dir}/grib_set -s forecastTime=-2147483650 $input $outfile 2>$temp + status=$? + set -e + [ $status -ne 0 ] +fi # GRIB-941: encoding of GRIB2 angles # ----------------------------------- From 7b62c6f7fe8994eb93cccd03b4c2d9a31c6fc097 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 2 Jun 2023 11:00:28 +0100 Subject: [PATCH 206/378] Use cclass name for error messages --- ...ccessor_class_change_scanning_direction.cc | 7 ++-- ...ib_accessor_class_data_g22order_packing.cc | 35 +++++++++---------- 2 files changed, 21 insertions(+), 21 deletions(-) diff --git a/src/grib_accessor_class_change_scanning_direction.cc b/src/grib_accessor_class_change_scanning_direction.cc index 832339e7a..078529963 100644 --- a/src/grib_accessor_class_change_scanning_direction.cc +++ b/src/grib_accessor_class_change_scanning_direction.cc @@ -154,17 +154,18 @@ static int pack_long(grib_accessor* a, const long* val, size_t* len) grib_accessor_change_scanning_direction* self = (grib_accessor_change_scanning_direction*)a; grib_context* c = a->context; grib_handle* h = grib_handle_of_accessor(a); + const char* cclass_name = a->cclass->name; if (*val == 0) return 0; /* Make sure Ni / Nj are not missing */ if (grib_is_missing(h, self->Ni, &err) && !err) { - grib_context_log(c, GRIB_LOG_ERROR, "change_scanning_direction: Key %s cannot be 'missing'!", self->Ni); + grib_context_log(c, GRIB_LOG_ERROR, "%s: Key %s cannot be 'missing'!", cclass_name, self->Ni); return GRIB_WRONG_GRID; } if (grib_is_missing(h, self->Nj, &err) && !err) { - grib_context_log(c, GRIB_LOG_ERROR, "change_scanning_direction: Key %s cannot be 'missing'!", self->Nj); + grib_context_log(c, GRIB_LOG_ERROR, "%s: Key %s cannot be 'missing'!", cclass_name, self->Nj); return GRIB_WRONG_GRID; } @@ -187,7 +188,7 @@ static int pack_long(grib_accessor* a, const long* val, size_t* len) return err; if (size > Ni * Nj) { - grib_context_log(c, GRIB_LOG_ERROR, "change_scanning_direction: wrong values size!=Ni*Nj (%ld!=%ld*%ld)", size, Ni, Nj); + grib_context_log(c, GRIB_LOG_ERROR, "%s: Wrong values size!=Ni*Nj (%ld!=%ld*%ld)", cclass_name, size, Ni, Nj); return GRIB_WRONG_ARRAY_SIZE; } diff --git a/src/grib_accessor_class_data_g22order_packing.cc b/src/grib_accessor_class_data_g22order_packing.cc index ae030eb9b..b8639fddd 100644 --- a/src/grib_accessor_class_data_g22order_packing.cc +++ b/src/grib_accessor_class_data_g22order_packing.cc @@ -347,7 +347,7 @@ static int min_max_array(double* data, unsigned int n, double* min, double* max) if (n == 0) { *min = *max = 0.0; - return 1; + return GRIB_DECODING_ERROR; } for (first = 0; first < n; first++) { @@ -355,7 +355,7 @@ static int min_max_array(double* data, unsigned int n, double* min, double* max) } if (first >= n) { *min = *max = 0.0; - return 1; + return GRIB_DECODING_ERROR; } mn = mx = data[first]; @@ -380,7 +380,7 @@ static int min_max_array(double* data, unsigned int n, double* min, double* max) *min = mn; *max = mx; - return 0; + return GRIB_SUCCESS; } #if 0 @@ -521,16 +521,15 @@ static int unpack(grib_accessor* a, T* val, const size_t* len) { static_assert(std::is_floating_point::value, "Requires floating points numbers"); grib_accessor_data_g22order_packing* self = reinterpret_cast(a); + const char* cclass_name = a->cclass->name; + grib_handle* gh = grib_handle_of_accessor(a); size_t i = 0; size_t j = 0; long n_vals = 0; long vcount = 0; int err = GRIB_SUCCESS; - - long* sec_val = NULL; - grib_handle* gh = grib_handle_of_accessor(a); - + long* sec_val = NULL; unsigned char* buf = reinterpret_cast(gh->buffer->data); unsigned char* buf_ref = NULL; unsigned char* buf_width = NULL; @@ -541,7 +540,6 @@ static int unpack(grib_accessor* a, T* val, const size_t* len) long ref_p = 0; long width_p = 0; long vals_p = 0; - long nvals_per_group = 0; long nbits_per_group_val = 0; long group_ref_val = 0; @@ -737,7 +735,7 @@ static int unpack(grib_accessor* a, T* val, const size_t* len) // For Complex packing and spatial differencing, order == 1 or 2 (code table 5.6) if (orderOfSpatialDifferencing != 1 && orderOfSpatialDifferencing != 2) { grib_context_log(a->context, GRIB_LOG_ERROR, - "grid_complex unpacking: Unsupported order of spatial differencing %ld", orderOfSpatialDifferencing); + "%s unpacking: Unsupported order of spatial differencing %ld", cclass_name, orderOfSpatialDifferencing); return GRIB_INTERNAL_ERROR; } @@ -1181,6 +1179,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) unsigned char* sec7; grib_accessor_data_g22order_packing* self = reinterpret_cast(a); grib_handle* gh = grib_handle_of_accessor(a); + const char* cclass_name = a->cclass->name; int err = 0; @@ -1331,7 +1330,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) size_t ndata = *len; double* data = reinterpret_cast(grib_context_malloc_clear(a->context, ndata * sizeof(double))); if (data == NULL) { - grib_context_log(a->context, GRIB_LOG_ERROR, "grid_complex packing: unable to allocate %zu bytes", ndata * sizeof(double)); + grib_context_log(a->context, GRIB_LOG_ERROR, "%s packing: unable to allocate %zu bytes", cclass_name, ndata * sizeof(double)); return GRIB_OUT_OF_MEMORY; } memcpy(data, val, sizeof(*data) * ndata); @@ -1351,11 +1350,11 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) v = reinterpret_cast(grib_context_malloc(a->context, nndata * sizeof(int))); if (v == NULL) { - grib_context_log(a->context, GRIB_LOG_ERROR, "grid_complex packing: unable to allocate %d bytes", nndata * sizeof(int)); + grib_context_log(a->context, GRIB_LOG_ERROR, "%s packing: unable to allocate %zu bytes", cclass_name, nndata * sizeof(int)); return GRIB_OUT_OF_MEMORY; } - if (min_max_array(data, ndata, &mn, &mx) != 0) { - grib_context_log(a->context, GRIB_LOG_ERROR, "grid_complex packing: failed to get min max of data"); + if (min_max_array(data, ndata, &mn, &mx) != GRIB_SUCCESS) { + grib_context_log(a->context, GRIB_LOG_ERROR, "%s packing: failed to get min max of data", cclass_name); return GRIB_ENCODING_ERROR; } min_val = static_cast(mn); @@ -1534,7 +1533,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) list = reinterpret_cast(grib_context_malloc_clear(a->context, nstruct * sizeof(section))); if (list == NULL) { - grib_context_log(a->context, GRIB_LOG_ERROR, "grid_complex packing: memory allocation of list failed"); + grib_context_log(a->context, GRIB_LOG_ERROR, "%s packing: memory allocation of list failed",cclass_name); return GRIB_OUT_OF_MEMORY; } @@ -1564,7 +1563,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) start.tail = &list[0]; if (nstruct != ii + 1) { - grib_context_log(a->context, GRIB_LOG_ERROR, "grid_complex packing: nstruct=%zu wanted %lu", nstruct, ii + 1); + grib_context_log(a->context, GRIB_LOG_ERROR, "%s packing: nstruct=%zu wanted %lu", cclass_name, nstruct, ii + 1); return GRIB_ENCODING_ERROR; } for (i = 1; i < nstruct; i++) { @@ -1592,7 +1591,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) list_backup = reinterpret_cast(grib_context_malloc(a->context, nstruct * sizeof(section))); if (list_backup == NULL) { - grib_context_log(a->context, GRIB_LOG_ERROR, "grid_complex packing: memory allocation of list_backup failed"); + grib_context_log(a->context, GRIB_LOG_ERROR, "%s packing: memory allocation of list_backup failed", cclass_name); return GRIB_OUT_OF_MEMORY; } @@ -1672,7 +1671,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) itmp2 = reinterpret_cast(grib_context_malloc(a->context, ngroups * sizeof(int))); if (lens == NULL || widths == NULL || refs == NULL || itmp == NULL || itmp2 == NULL) { - grib_context_log(a->context, GRIB_LOG_ERROR, "grid_complex packing: memory allocation of lens/widths/refs/itmp/itmp2 failed"); + grib_context_log(a->context, GRIB_LOG_ERROR, "%s packing: memory alloc of lens/widths/refs/itmp/itmp2 failed",cclass_name); return GRIB_OUT_OF_MEMORY; } @@ -1807,7 +1806,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) sec7 = reinterpret_cast(grib_context_malloc(a->context, size_sec7)); if (sec7 == NULL) { - grib_context_log(a->context, GRIB_LOG_ERROR, "grid_complex packing: unable to allocate %d bytes", size_sec7); + grib_context_log(a->context, GRIB_LOG_ERROR, "%s packing: unable to allocate %d bytes", cclass_name, size_sec7); return GRIB_OUT_OF_MEMORY; } From 7ebcceea398fa6d5b9667df69d3a6d9d4166a139 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 2 Jun 2023 12:11:34 +0100 Subject: [PATCH 207/378] Improved usage info --- tools/codes_export_resource.cc | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tools/codes_export_resource.cc b/tools/codes_export_resource.cc index 1511ae762..400373d83 100644 --- a/tools/codes_export_resource.cc +++ b/tools/codes_export_resource.cc @@ -20,6 +20,10 @@ typedef enum ResourceType static void usage(const char* prog) { printf("Usage: %s [-s | -d] resource_path out_file\n", prog); + printf(" -s Extract a resource from the samples directory\n"); + printf(" -d Extract a resource from the definitions directory\n"); + printf("\n"); + printf(" E.g., %s -s GRIB2.tmpl my.grib2\n", prog); exit(1); } From a75f6c2d142ddf3149dbe063a615dc53e68c6202 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 2 Jun 2023 16:07:44 +0100 Subject: [PATCH 208/378] Testing: CCSDS with various bits per value --- tests/grib_ccsds.sh | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/tests/grib_ccsds.sh b/tests/grib_ccsds.sh index 86e006bd7..8ea2e8441 100755 --- a/tests/grib_ccsds.sh +++ b/tests/grib_ccsds.sh @@ -82,8 +82,8 @@ fi rm -f $outfile1 $outfile2 infile=${data_dir}/reduced_latlon_surface.grib2 -outfile1=$infile.tmp_ccsds.1 -outfile2=$infile.tmp_ccsds.2 +#outfile1=$infile.tmp_ccsds.1 +#outfile2=$infile.tmp_ccsds.2 ${tools_dir}/grib_set -r -s packingType=grid_ccsds $infile $outfile1 ${tools_dir}/grib_compare -b $BLACKLIST $infile $outfile1 > $REDIRECT @@ -101,8 +101,8 @@ rm -f $outfile1 $outfile2 # ECC-297: Basic support # -------------------------------------- infile=${data_dir}/tigge_ecmwf.grib2 -outfile1=$infile.tmp_ccsds.1 -outfile2=$infile.tmp_ccsds.2 +#outfile1=$infile.tmp_ccsds.1 +#outfile2=$infile.tmp_ccsds.2 ${tools_dir}/grib_set -r -s bitsPerValue=17 $infile $outfile1 ${tools_dir}/grib_set -r -s packingType=grid_ccsds $outfile1 $outfile2 @@ -143,6 +143,22 @@ grib_check_key_equals $outfile2 packingType grid_ccsds ${tools_dir}/grib_compare -b $BLACKLIST $infile $outfile1 ${tools_dir}/grib_compare -c data:n $outfile1 $outfile2 +# Test increasing bitsPerValue +# ----------------------------- +# input=${data_dir}/ccsds.grib2 TODO: This is broken for some BPV values!! +input=${proj_dir}/ifs_samples/grib1_mlgrib2_ccsds/gg_ml.tmpl +MIN_BPV=`${tools_dir}/grib_get -p bitsPerValue $input` +MAX_BPV=32 # libaec cannot handle more than this +stats1=`${tools_dir}/grib_get -F%.3f -p min,max,avg,sd $input` +grib_check_key_equals $input 'bitsPerValue,packingType' '16 grid_ccsds' +for bpv in `seq $MIN_BPV $MAX_BPV`; do + ${tools_dir}/grib_set -s setBitsPerValue=$bpv $input $outfile2 + ${tools_dir}/grib_compare -c data:n $input $outfile2 + stats2=`${tools_dir}/grib_get -F%.3f -p min,max,avg,sd $outfile2` + [ "$stats1" = "$stats2" ] + rm -f $outfile2 +done + # ECC-1362 # --------- From 603cd12f78f69909668f8b1530e3e8cdd32220de Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 2 Jun 2023 16:15:29 +0100 Subject: [PATCH 209/378] ECC-1607: Move the version info from CMakeLists.txt to the VERSION file --- CMakeLists.txt | 2 +- VERSION | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) create mode 100644 VERSION diff --git a/CMakeLists.txt b/CMakeLists.txt index e7da7eead..050e8ff70 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.31.0 LANGUAGES CXX ) +project( eccodes LANGUAGES CXX ) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) diff --git a/VERSION b/VERSION new file mode 100644 index 000000000..bafceb320 --- /dev/null +++ b/VERSION @@ -0,0 +1 @@ +2.31.0 From 6cc48efee75eb8ad1f34d9389a64765edfb37dc4 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 2 Jun 2023 16:39:59 +0100 Subject: [PATCH 210/378] Fix error messages --- src/grib_accessor_class_data_ccsds_packing.cc | 32 +++++++++++-------- tests/grib_ccsds.sh | 12 ++++++- 2 files changed, 29 insertions(+), 15 deletions(-) diff --git a/src/grib_accessor_class_data_ccsds_packing.cc b/src/grib_accessor_class_data_ccsds_packing.cc index a47974649..d90f30a7d 100644 --- a/src/grib_accessor_class_data_ccsds_packing.cc +++ b/src/grib_accessor_class_data_ccsds_packing.cc @@ -201,6 +201,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) grib_accessor_data_ccsds_packing* self = (grib_accessor_data_ccsds_packing*)a; grib_handle* hand = grib_handle_of_accessor(a); + const char* cclass_name = a->cclass->name; int err = GRIB_SUCCESS; size_t buflen = 0, i = 0; bool is_constant_field = false; @@ -278,7 +279,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) #endif if (grib_get_nearest_smaller_value(hand, self->reference_value, val[0], &reference_value) != GRIB_SUCCESS) { grib_context_log(a->context, GRIB_LOG_ERROR, - "data_ccsds_packing %s: unable to find nearest_smaller_value of %g for %s", __func__, min, self->reference_value); + "%s %s: unable to find nearest_smaller_value of %g for %s", cclass_name, __func__, min, self->reference_value); return GRIB_INTERNAL_ERROR; } if ((err = grib_set_double_internal(hand, self->reference_value, reference_value)) != GRIB_SUCCESS) @@ -305,13 +306,13 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) if (grib_get_nearest_smaller_value(hand, self->reference_value, min, &reference_value) != GRIB_SUCCESS) { grib_context_log(a->context, GRIB_LOG_ERROR, - "data_ccsds_packing %s: unable to find nearest_smaller_value of %g for %s", __func__, min, self->reference_value); + "%s %s: unable to find nearest_smaller_value of %g for %s", cclass_name, __func__, min, self->reference_value); return GRIB_INTERNAL_ERROR; } if (reference_value > min) { grib_context_log(a->context, GRIB_LOG_ERROR, - "data_ccsds_packing %s: reference_value=%g min_value=%g diff=%g", __func__, reference_value, min, reference_value - min); + "%s %s: reference_value=%g min_value=%g diff=%g", cclass_name, __func__, reference_value, min, reference_value - min); DebugAssert(reference_value <= min); return GRIB_INTERNAL_ERROR; } @@ -348,7 +349,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) } if (grib_get_nearest_smaller_value(hand, self->reference_value, min, &reference_value) != GRIB_SUCCESS) { grib_context_log(a->context, GRIB_LOG_ERROR, - "data_ccsds_packing %s: unable to find nearest_smaller_value of %g for %s", __func__, min, self->reference_value); + "%s %s: unable to find nearest_smaller_value of %g for %s", cclass_name, __func__, min, self->reference_value); return GRIB_INTERNAL_ERROR; } d = grib_power(decimal_scale_factor, 10); @@ -404,12 +405,13 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) } break; default: - grib_context_log(a->context, GRIB_LOG_DEBUG,"data_ccsds_packing pack_double: packing %s, bits_per_value %d (max 32)", a->name, bits_per_value); + grib_context_log(a->context, GRIB_LOG_ERROR,"%s pack_double: packing %s, bits_per_value=%ld (max 32)", + cclass_name, a->name, bits_per_value); err = GRIB_INVALID_BPV; goto cleanup; } - grib_context_log(a->context, GRIB_LOG_DEBUG,"data_ccsds_packing pack_double: packing %s, %d values", a->name, n_vals); + grib_context_log(a->context, GRIB_LOG_DEBUG,"%s pack_double: packing %s, %zu values", cclass_name, a->name, n_vals); // ECC-1431: GRIB2: CCSDS encoding failure AEC_STREAM_ERROR buflen = (nbytes * n_vals) * 67 / 64 + 256; @@ -427,8 +429,8 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) double ref = 1e-100; grib_get_double_internal(hand, self->reference_value, &ref); if (ref != reference_value) { - grib_context_log(a->context, GRIB_LOG_ERROR, "data_ccsds_packing %s: %s (ref=%.10e != reference_value=%.10e)", - __func__, self->reference_value, ref, reference_value); + grib_context_log(a->context, GRIB_LOG_ERROR, "%s %s: %s (ref=%.10e != reference_value=%.10e)", + cclass_name, __func__, self->reference_value, ref, reference_value); return GRIB_INTERNAL_ERROR; } } @@ -456,8 +458,8 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) if (hand->context->debug) print_aec_stream_info(&strm, "pack_double"); if ((err = aec_buffer_encode(&strm)) != AEC_OK) { - grib_context_log(a->context, GRIB_LOG_ERROR, "data_ccsds_packing %s: aec_buffer_encode error %d (%s)", - __func__, err, aec_get_error_message(err)); + grib_context_log(a->context, GRIB_LOG_ERROR, "%s %s: aec_buffer_encode error %d (%s)", + cclass_name, __func__, err, aec_get_error_message(err)); err = GRIB_ENCODING_ERROR; goto cleanup; } @@ -500,7 +502,8 @@ static int unpack(grib_accessor* a, T* val, size_t* len) { static_assert(std::is_floating_point::value, "Requires floating point numbers"); grib_accessor_data_ccsds_packing* self = (grib_accessor_data_ccsds_packing*)a; - grib_handle* hand = grib_handle_of_accessor(a); + grib_handle* hand = grib_handle_of_accessor(a); + const char* cclass_name = a->cclass->name; int err = GRIB_SUCCESS, i = 0; size_t buflen = 0; @@ -593,8 +596,8 @@ static int unpack(grib_accessor* a, T* val, size_t* len) if (hand->context->debug) print_aec_stream_info(&strm, "unpack_*"); if ((err = aec_buffer_decode(&strm)) != AEC_OK) { - grib_context_log(a->context, GRIB_LOG_ERROR, "CCSDS %s: aec_buffer_decode error %d (%s)", - __func__, err, aec_get_error_message(err)); + grib_context_log(a->context, GRIB_LOG_ERROR, "%s %s: aec_buffer_decode error %d (%s)", + cclass_name, __func__, err, aec_get_error_message(err)); err = GRIB_DECODING_ERROR; goto cleanup; } @@ -620,7 +623,8 @@ static int unpack(grib_accessor* a, T* val, size_t* len) } break; default: - grib_context_log(a->context, GRIB_LOG_DEBUG,"data_ccsds_packing %s: packing %s, bits_per_value %d (max 32)", __func__, a->name, bits_per_value); + grib_context_log(a->context, GRIB_LOG_ERROR, "%s %s: unpacking %s, bits_per_value=%d (max 32)", + cclass_name, __func__, a->name, bits_per_value); err = GRIB_INVALID_BPV; goto cleanup; } diff --git a/tests/grib_ccsds.sh b/tests/grib_ccsds.sh index 8ea2e8441..995929624 100755 --- a/tests/grib_ccsds.sh +++ b/tests/grib_ccsds.sh @@ -18,6 +18,7 @@ BLACKLIST="totalLength,section5Length,section7Length,dataRepresentationTemplateN infile=${data_dir}/ccsds.grib2 outfile1=temp.$label.1 outfile2=temp.$label.2 +logfile=temp.$label.log rm -f $outfile1 $outfile2 @@ -159,6 +160,15 @@ for bpv in `seq $MIN_BPV $MAX_BPV`; do rm -f $outfile2 done +# Invalid bitsPerValue (>32) +# -------------------------- +input=${data_dir}/ccsds.grib2 +set +e +${tools_dir}/grib_set -s setBitsPerValue=33 $input $outfile2 2> $logfile +status=$? +set -e +[ $status -ne 0 ] +grep -q "Invalid number of bits per value" $logfile # ECC-1362 # --------- @@ -176,4 +186,4 @@ if [ $HAVE_JPEG -eq 1 ]; then fi # Clean up -rm -f $outfile1 $outfile2 +rm -f $outfile1 $outfile2 $logfile From 8169b17ca85c1d4a11acfdb8edb8ab0dcc2f077e Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 2 Jun 2023 17:48:32 +0100 Subject: [PATCH 211/378] ECC-1605: Fix lower bound --- src/grib_accessor_class_signed.cc | 2 +- tests/grib_set.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/grib_accessor_class_signed.cc b/src/grib_accessor_class_signed.cc index 357577335..ac00c14e7 100644 --- a/src/grib_accessor_class_signed.cc +++ b/src/grib_accessor_class_signed.cc @@ -228,7 +228,7 @@ static int pack_long(grib_accessor* a, const long* val, size_t* len) } else { // ECC-1605: Check overflow/underflow const int nbits = self->nbytes * 8; - const long minval = -(1L << (nbits-1)); + const long minval = -(1L << (nbits-1)) + 1; const long maxval = (1L << (nbits-1)) - 1; //printf(" key=%s: v=%ld (minval=%ld maxval=%ld)\n", a->name, v, minval, maxval); if (v > maxval || v < minval) { diff --git a/tests/grib_set.sh b/tests/grib_set.sh index 863de5f78..9d35ad349 100755 --- a/tests/grib_set.sh +++ b/tests/grib_set.sh @@ -84,7 +84,7 @@ if [ $ECCODES_ON_WINDOWS -eq 0 ]; then status=$? set -e [ $status -ne 0 ] - grep -q "Trying to encode value of 2147483648 but the allowable range is -2147483648 to 2147483647" $temp + grep -q "Trying to encode value of 2147483648 but the allowable range is -2147483647 to 2147483647" $temp set +e ${tools_dir}/grib_set -s forecastTime=-2147483650 $input $outfile 2>$temp From 3c24996bd516bd5f7d0577d392dcc6dc5808f3cd Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 1 Jun 2023 14:47:17 +0100 Subject: [PATCH 212/378] ECC-1605: GRIB: Overflow for key forecastTime --- src/grib_accessor_class_signed.cc | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/src/grib_accessor_class_signed.cc b/src/grib_accessor_class_signed.cc index 1d7ed6b6b..f893fc4d9 100644 --- a/src/grib_accessor_class_signed.cc +++ b/src/grib_accessor_class_signed.cc @@ -210,7 +210,7 @@ static int pack_long(grib_accessor* a, const long* val, size_t* len) rlen = count; if (*len < 1) { - grib_context_log(a->context, GRIB_LOG_ERROR, "Wrong size for %s it contains %d values ", a->name, 1); + grib_context_log(a->context, GRIB_LOG_ERROR, "Wrong size for %s, it contains %d values", a->name, 1); len[0] = 0; return GRIB_ARRAY_TOO_SMALL; } @@ -222,9 +222,22 @@ static int pack_long(grib_accessor* a, const long* val, size_t* len) if (rlen == 1) { long v = val[0]; - if (missing) + if (missing) { if (v == GRIB_MISSING_LONG) v = missing; + } else { + // ECC-1605: Check overflow/underflow + const int nbits = self->nbytes * 8; + const long minval = -(1L << (nbits-1)); + const long maxval = (1L << (nbits-1)) - 1; + printf(" key=%s: v=%ld (minval=%ld maxval=%ld)\n", a->name, v, minval, maxval); + if (v > maxval || v < minval) { + grib_context_log(a->context, GRIB_LOG_ERROR, + "Key \"%s\": Trying to encode value of %ld but the allowable range is %ld to %ld (number of bits=%d)", + a->name, v, minval, maxval, nbits); + return GRIB_ENCODING_ERROR; + } + } off = a->offset; ret = grib_encode_signed_long(grib_handle_of_accessor(a)->buffer->data, v, off, a->length); From 16fcc5eda3135de0fb1f7e71e77091bf15b2b786 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 1 Jun 2023 15:44:32 +0000 Subject: [PATCH 213/378] ECC-1605: Fix broken test (edition convertion) --- definitions/grib1/grid_rotation.def | 8 ++++---- src/grib_accessor_class_signed.cc | 6 +++--- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/definitions/grib1/grid_rotation.def b/definitions/grib1/grid_rotation.def index 05d49bd29..cd05657fb 100644 --- a/definitions/grib1/grid_rotation.def +++ b/definitions/grib1/grid_rotation.def @@ -1,10 +1,10 @@ # (C) Copyright 2005- ECMWF. -signed[3] latitudeOfSouthernPole : edition_specific; -meta geography.latitudeOfSouthernPoleInDegrees scale(latitudeOfSouthernPole ,oneConstant,grib1divider,truncateDegrees) : dump; +signed[3] latitudeOfSouthernPole : edition_specific, no_copy; +meta geography.latitudeOfSouthernPoleInDegrees scale(latitudeOfSouthernPole ,oneConstant,grib1divider,truncateDegrees): dump; -signed[3] longitudeOfSouthernPole : edition_specific ; -meta geography.longitudeOfSouthernPoleInDegrees scale(longitudeOfSouthernPole ,oneConstant,grib1divider,truncateDegrees) : dump; +signed[3] longitudeOfSouthernPole : edition_specific, no_copy; +meta geography.longitudeOfSouthernPoleInDegrees scale(longitudeOfSouthernPole ,oneConstant,grib1divider,truncateDegrees): dump; ibmfloat geography.angleOfRotationInDegrees : dump; diff --git a/src/grib_accessor_class_signed.cc b/src/grib_accessor_class_signed.cc index f893fc4d9..357577335 100644 --- a/src/grib_accessor_class_signed.cc +++ b/src/grib_accessor_class_signed.cc @@ -230,11 +230,11 @@ static int pack_long(grib_accessor* a, const long* val, size_t* len) const int nbits = self->nbytes * 8; const long minval = -(1L << (nbits-1)); const long maxval = (1L << (nbits-1)) - 1; - printf(" key=%s: v=%ld (minval=%ld maxval=%ld)\n", a->name, v, minval, maxval); + //printf(" key=%s: v=%ld (minval=%ld maxval=%ld)\n", a->name, v, minval, maxval); if (v > maxval || v < minval) { grib_context_log(a->context, GRIB_LOG_ERROR, - "Key \"%s\": Trying to encode value of %ld but the allowable range is %ld to %ld (number of bits=%d)", - a->name, v, minval, maxval, nbits); + "Key \"%s\": Trying to encode value of %ld but the allowable range is %ld to %ld (number of bits=%d)", + a->name, v, minval, maxval, nbits); return GRIB_ENCODING_ERROR; } } From 5802a1bbb951e0ef1273e8b72b76ed04577872a8 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 1 Jun 2023 17:03:03 +0100 Subject: [PATCH 214/378] ECC-1605: Fix Lambert conformal Latin1, Latin2 keys --- definitions/grib1/grid_definition_lambert.def | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/definitions/grib1/grid_definition_lambert.def b/definitions/grib1/grid_definition_lambert.def index aca2b323d..5556c16ac 100644 --- a/definitions/grib1/grid_definition_lambert.def +++ b/definitions/grib1/grid_definition_lambert.def @@ -60,7 +60,7 @@ alias xFirst=longitudeOfFirstGridPointInDegrees; include "grib1/scanning_mode.def"; # Latin 1 - first latitude from the pole at which the secant cone cuts the sphere -signed[3] Latin1 : edition_specific; +signed[3] Latin1 : edition_specific, no_copy; meta geography.Latin1InDegrees scale(Latin1,oneConstant,grib1divider,truncateDegrees) : dump; alias firstLatitude=Latin1; alias firstLatitudeInDegrees=Latin1InDegrees; @@ -70,7 +70,7 @@ constant LaDInDegrees = Latin1InDegrees : dump; alias geography.LaDInDegrees=LaDInDegrees; # Latin 2 - second latitude from the pole at which the secant cone cuts the sphere -signed[3] Latin2 :edition_specific; +signed[3] Latin2 :edition_specific,no_copy; alias secondLatitude=Latin2; meta geography.Latin2InDegrees scale(Latin2,oneConstant,grib1divider,truncateDegrees) : dump; alias secondLatitudeInDegrees=Latin2InDegrees; From 399edac7c2c05ed28264cef7ac6ecb0094ee0879 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 1 Jun 2023 17:12:35 +0100 Subject: [PATCH 215/378] ECC-1605: Add test --- tests/grib_set.sh | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/tests/grib_set.sh b/tests/grib_set.sh index 6aa665a60..3f3157c89 100755 --- a/tests/grib_set.sh +++ b/tests/grib_set.sh @@ -75,6 +75,22 @@ set -e [ $status -ne 0 ] grep -q "Trying to encode a negative value of -1 for key of type unsigned" $temp +# ECC-1605: Out-of-bounds value for signed keys +# ---------------------------------------------------- +input=$ECCODES_SAMPLES_PATH/GRIB2.tmpl +set +e +${tools_dir}/grib_set -s forecastTime=2147483648 $input $outfile 2>$temp +status=$? +set -e +[ $status -ne 0 ] +grep -q "Trying to encode value of 2147483648 but the allowable range is -2147483648 to 2147483647" $temp + +set +e +${tools_dir}/grib_set -s forecastTime=-2147483650 $input $outfile 2>$temp +status=$? +set -e +[ $status -ne 0 ] + # GRIB-941: encoding of GRIB2 angles # ----------------------------------- From 4760693752fb41510aed486e7e9f9e4f53eadd2c Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 1 Jun 2023 17:17:02 +0100 Subject: [PATCH 216/378] ECC-1605: Error message --- src/grib_accessor_class_unsigned.cc | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/grib_accessor_class_unsigned.cc b/src/grib_accessor_class_unsigned.cc index 82439a465..f620fc590 100644 --- a/src/grib_accessor_class_unsigned.cc +++ b/src/grib_accessor_class_unsigned.cc @@ -220,7 +220,7 @@ int pack_long_unsigned_helper(grib_accessor* a, const long* val, size_t* len, in if (check) { if (val[0] < 0) { grib_context_log(a->context, GRIB_LOG_ERROR, - "Key \"%s\": Trying to encode a negative value of %ld for key of type unsigned\n", a->name, val[0]); + "Key \"%s\": Trying to encode a negative value of %ld for key of type unsigned", a->name, val[0]); return GRIB_ENCODING_ERROR; } /* See GRIB-23 and GRIB-262 */ @@ -230,8 +230,8 @@ int pack_long_unsigned_helper(grib_accessor* a, const long* val, size_t* len, in unsigned long maxval = (1UL << nbits) - 1; if (maxval > 0 && v > maxval) { /* See ECC-1002 */ grib_context_log(a->context, GRIB_LOG_ERROR, - "Key \"%s\": Trying to encode value of %ld but the maximum allowable value is %ld (number of bits=%ld)\n", - a->name, v, maxval, nbits); + "Key \"%s\": Trying to encode value of %ld but the maximum allowable value is %lu (number of bits=%ld)", + a->name, v, maxval, nbits); return GRIB_ENCODING_ERROR; } } From eaa919c95fae2a7733c0b807a28048c65b768df2 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 1 Jun 2023 23:02:41 +0100 Subject: [PATCH 217/378] ECC-1605: Testing --- tests/grib_set.sh | 29 +++++++++++++++-------------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/tests/grib_set.sh b/tests/grib_set.sh index 3f3157c89..863de5f78 100755 --- a/tests/grib_set.sh +++ b/tests/grib_set.sh @@ -77,20 +77,21 @@ grep -q "Trying to encode a negative value of -1 for key of type unsigned" $temp # ECC-1605: Out-of-bounds value for signed keys # ---------------------------------------------------- -input=$ECCODES_SAMPLES_PATH/GRIB2.tmpl -set +e -${tools_dir}/grib_set -s forecastTime=2147483648 $input $outfile 2>$temp -status=$? -set -e -[ $status -ne 0 ] -grep -q "Trying to encode value of 2147483648 but the allowable range is -2147483648 to 2147483647" $temp - -set +e -${tools_dir}/grib_set -s forecastTime=-2147483650 $input $outfile 2>$temp -status=$? -set -e -[ $status -ne 0 ] - +if [ $ECCODES_ON_WINDOWS -eq 0 ]; then + input=$ECCODES_SAMPLES_PATH/GRIB2.tmpl + set +e + ${tools_dir}/grib_set -s forecastTime=2147483648 $input $outfile 2>$temp + status=$? + set -e + [ $status -ne 0 ] + grep -q "Trying to encode value of 2147483648 but the allowable range is -2147483648 to 2147483647" $temp + + set +e + ${tools_dir}/grib_set -s forecastTime=-2147483650 $input $outfile 2>$temp + status=$? + set -e + [ $status -ne 0 ] +fi # GRIB-941: encoding of GRIB2 angles # ----------------------------------- From d52947676c2e24f66b6208a0151ec96119d7d04a Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 2 Jun 2023 17:48:32 +0100 Subject: [PATCH 218/378] ECC-1605: Fix lower bound --- src/grib_accessor_class_signed.cc | 2 +- tests/grib_set.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/grib_accessor_class_signed.cc b/src/grib_accessor_class_signed.cc index 357577335..ac00c14e7 100644 --- a/src/grib_accessor_class_signed.cc +++ b/src/grib_accessor_class_signed.cc @@ -228,7 +228,7 @@ static int pack_long(grib_accessor* a, const long* val, size_t* len) } else { // ECC-1605: Check overflow/underflow const int nbits = self->nbytes * 8; - const long minval = -(1L << (nbits-1)); + const long minval = -(1L << (nbits-1)) + 1; const long maxval = (1L << (nbits-1)) - 1; //printf(" key=%s: v=%ld (minval=%ld maxval=%ld)\n", a->name, v, minval, maxval); if (v > maxval || v < minval) { diff --git a/tests/grib_set.sh b/tests/grib_set.sh index 863de5f78..9d35ad349 100755 --- a/tests/grib_set.sh +++ b/tests/grib_set.sh @@ -84,7 +84,7 @@ if [ $ECCODES_ON_WINDOWS -eq 0 ]; then status=$? set -e [ $status -ne 0 ] - grep -q "Trying to encode value of 2147483648 but the allowable range is -2147483648 to 2147483647" $temp + grep -q "Trying to encode value of 2147483648 but the allowable range is -2147483647 to 2147483647" $temp set +e ${tools_dir}/grib_set -s forecastTime=-2147483650 $input $outfile 2>$temp From 88571d721424b2162c6fd0f2515148b565b6ad7e Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 2 Jun 2023 20:32:19 +0100 Subject: [PATCH 219/378] Testing: Test both gridded IFS CCSDS samples --- tests/grib_ccsds.sh | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/tests/grib_ccsds.sh b/tests/grib_ccsds.sh index 8ea2e8441..4779c72b0 100755 --- a/tests/grib_ccsds.sh +++ b/tests/grib_ccsds.sh @@ -146,17 +146,22 @@ ${tools_dir}/grib_compare -c data:n $outfile1 $outfile2 # Test increasing bitsPerValue # ----------------------------- # input=${data_dir}/ccsds.grib2 TODO: This is broken for some BPV values!! -input=${proj_dir}/ifs_samples/grib1_mlgrib2_ccsds/gg_ml.tmpl -MIN_BPV=`${tools_dir}/grib_get -p bitsPerValue $input` +ifs_samples="gg_ml.tmpl gg_sfc_grib2.tmpl" +ifs_dir=${proj_dir}/ifs_samples/grib1_mlgrib2_ccsds MAX_BPV=32 # libaec cannot handle more than this -stats1=`${tools_dir}/grib_get -F%.3f -p min,max,avg,sd $input` -grib_check_key_equals $input 'bitsPerValue,packingType' '16 grid_ccsds' -for bpv in `seq $MIN_BPV $MAX_BPV`; do - ${tools_dir}/grib_set -s setBitsPerValue=$bpv $input $outfile2 - ${tools_dir}/grib_compare -c data:n $input $outfile2 - stats2=`${tools_dir}/grib_get -F%.3f -p min,max,avg,sd $outfile2` - [ "$stats1" = "$stats2" ] - rm -f $outfile2 + +for sample in $ifs_samples; do + input=$ifs_dir/$sample + MIN_BPV=`${tools_dir}/grib_get -p bitsPerValue $input` + stats1=`${tools_dir}/grib_get -F%.3f -p min,max,avg,sd $input` + grib_check_key_equals $input 'bitsPerValue,packingType' '16 grid_ccsds' + for bpv in `seq $MIN_BPV $MAX_BPV`; do + ${tools_dir}/grib_set -s setBitsPerValue=$bpv $input $outfile2 + ${tools_dir}/grib_compare -c data:n $input $outfile2 + stats2=`${tools_dir}/grib_get -F%.3f -p min,max,avg,sd $outfile2` + [ "$stats1" = "$stats2" ] + rm -f $outfile2 + done done From 2849aee78182e17d37a44267949bc733c4e60a08 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 2 Jun 2023 20:34:27 +0100 Subject: [PATCH 220/378] Testing: Test AEC_DATA_3BYTE_OPTION_MASK --- tests/grib_ccsds.sh | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/tests/grib_ccsds.sh b/tests/grib_ccsds.sh index 4779c72b0..d2a516df8 100755 --- a/tests/grib_ccsds.sh +++ b/tests/grib_ccsds.sh @@ -145,7 +145,9 @@ ${tools_dir}/grib_compare -c data:n $outfile1 $outfile2 # Test increasing bitsPerValue # ----------------------------- -# input=${data_dir}/ccsds.grib2 TODO: This is broken for some BPV values!! +# TODO: This one is broken for some BPV values. It has AEC_DATA_3BYTE_OPTION_MASK==0 +# input=${data_dir}/ccsds.grib2 + ifs_samples="gg_ml.tmpl gg_sfc_grib2.tmpl" ifs_dir=${proj_dir}/ifs_samples/grib1_mlgrib2_ccsds MAX_BPV=32 # libaec cannot handle more than this @@ -154,7 +156,7 @@ for sample in $ifs_samples; do input=$ifs_dir/$sample MIN_BPV=`${tools_dir}/grib_get -p bitsPerValue $input` stats1=`${tools_dir}/grib_get -F%.3f -p min,max,avg,sd $input` - grib_check_key_equals $input 'bitsPerValue,packingType' '16 grid_ccsds' + grib_check_key_equals $input 'bitsPerValue,packingType,AEC_DATA_3BYTE_OPTION_MASK' '16 grid_ccsds 1' for bpv in `seq $MIN_BPV $MAX_BPV`; do ${tools_dir}/grib_set -s setBitsPerValue=$bpv $input $outfile2 ${tools_dir}/grib_compare -c data:n $input $outfile2 From 3ba86243f84284f6bc5fd36d3ec0dbd478ddbc80 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sat, 3 Jun 2023 11:35:42 +0100 Subject: [PATCH 221/378] Compiler warnings: type checks --- src/grib_accessor_class_data_g22order_packing.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/grib_accessor_class_data_g22order_packing.cc b/src/grib_accessor_class_data_g22order_packing.cc index b8639fddd..13cb49caa 100644 --- a/src/grib_accessor_class_data_g22order_packing.cc +++ b/src/grib_accessor_class_data_g22order_packing.cc @@ -1209,7 +1209,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) int use_bitmap; int j, j0, k, *v, binary_scale, nbits, has_undef, extra_0, extra_1; - unsigned int i, ii; + size_t i, ii; int vmn, vmx, vbits; // Sections double max_val, min_val, ref, frange, dec_factor, scale; @@ -1563,7 +1563,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) start.tail = &list[0]; if (nstruct != ii + 1) { - grib_context_log(a->context, GRIB_LOG_ERROR, "%s packing: nstruct=%zu wanted %lu", cclass_name, nstruct, ii + 1); + grib_context_log(a->context, GRIB_LOG_ERROR, "%s packing: nstruct=%zu wanted %zu", cclass_name, nstruct, ii + 1); return GRIB_ENCODING_ERROR; } for (i = 1; i < nstruct; i++) { From 67300d928f5866e12614f3d1302815ac5b813d96 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sat, 3 Jun 2023 11:36:16 +0100 Subject: [PATCH 222/378] ECC-1605: edition conversion --- definitions/grib1/grid_definition_5.def | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/definitions/grib1/grid_definition_5.def b/definitions/grib1/grid_definition_5.def index 341da6b18..43781136e 100644 --- a/definitions/grib1/grid_definition_5.def +++ b/definitions/grib1/grid_definition_5.def @@ -23,7 +23,7 @@ alias Lo1 = longitudeOfFirstGridPoint; include "grib1/resolution_flags.def"; # LoV - orientation of the grid; i.e. the longitude value of the meridian which is parallel to the Y-axis -signed[3] orientationOfTheGrid ; +signed[3] orientationOfTheGrid : edition_specific, no_copy ; meta geography.orientationOfTheGridInDegrees scale(orientationOfTheGrid,oneConstant,grib1divider,truncateDegrees) : dump; alias LoV = orientationOfTheGrid ; From a0a32c533466e26a409e5c9264354e46982b8ea6 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sat, 3 Jun 2023 12:21:54 +0100 Subject: [PATCH 223/378] Replace Asserts with proper error messages and exit codes --- ...rib_accessor_class_data_complex_packing.cc | 34 +++++++++---------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/src/grib_accessor_class_data_complex_packing.cc b/src/grib_accessor_class_data_complex_packing.cc index 6f5122d9b..c7d1f46ec 100644 --- a/src/grib_accessor_class_data_complex_packing.cc +++ b/src/grib_accessor_class_data_complex_packing.cc @@ -314,6 +314,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) { grib_accessor_data_complex_packing* self = (grib_accessor_data_complex_packing*)a; grib_handle* gh = grib_handle_of_accessor(a); + const char* cclass_name = a->cclass->name; size_t i = 0; int ret = GRIB_SUCCESS; @@ -430,8 +431,8 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) n_vals = (pen_j + 1) * (pen_j + 2); if (*len != n_vals) { - grib_context_log(a->context, GRIB_LOG_ERROR, "COMPLEX_PACKING: wrong number of values, expected %ld - got %lu", - n_vals, *len); + grib_context_log(a->context, GRIB_LOG_ERROR, "%s: Wrong number of values, expected %ld - got %zu", + cclass_name, n_vals, *len); return GRIB_INTERNAL_ERROR; } @@ -487,7 +488,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) hpos = 0; scals = (double*)grib_context_malloc(a->context, maxv * sizeof(double)); - Assert(scals); + if (!scals) return GRIB_OUT_OF_MEMORY; scals[0] = 0; for (i = 1; i < maxv; i++) @@ -543,7 +544,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) &reference_value); if (ret != GRIB_SUCCESS) { grib_context_log(gh->context, GRIB_LOG_ERROR, - "unable to find nearest_smaller_value of %g for %s", min, self->reference_value); + "%s: unable to find nearest_smaller_value of %g for %s", cclass_name, min, self->reference_value); return GRIB_INTERNAL_ERROR; } d = grib_power(+decimal_scale_factor, 10); @@ -552,7 +553,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) d = grib_power(+decimal_scale_factor, 10); if (grib_get_nearest_smaller_value(gh, self->reference_value, d * min, &reference_value) != GRIB_SUCCESS) { grib_context_log(gh->context, GRIB_LOG_ERROR, - "unable to find nearest_smaller_value of %g for %s", d * min, self->reference_value); + "%s: unable to find nearest_smaller_value of %g for %s", cclass_name, d * min, self->reference_value); return GRIB_INTERNAL_ERROR; } binary_scale_factor = grib_get_binary_scale_fact(d * max, reference_value, bits_per_value, &ret); @@ -564,7 +565,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) } else { if (ret != GRIB_SUCCESS) { - grib_context_log(a->context, GRIB_LOG_ERROR, "COMPLEX_PACKING : Cannot compute binary_scale_factor"); + grib_context_log(a->context, GRIB_LOG_ERROR, "%s: Cannot compute binary_scale_factor", cclass_name); return ret; } } @@ -609,13 +610,13 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) current_val = (((((val[i++] * d) * scals[lup]) - reference_value) * s) + 0.5); if (current_val < 0) grib_context_log(a->context, GRIB_LOG_ERROR, - "COMPLEX_PACKING : negative coput before packing (%g)", current_val); + "%s: negative coput before packing (%g)", cclass_name, current_val); grib_encode_unsigned_longb(lres, current_val, &lpos, bits_per_value); current_val = (((((val[i++] * d) * scals[lup]) - reference_value) * s) + 0.5); if (current_val < 0) grib_context_log(a->context, GRIB_LOG_ERROR, - "COMPLEX_PACKING : negative coput before packing (%g)", current_val); + "%s: negative coput before packing (%g)", cclass_name, current_val); grib_encode_unsigned_longb(lres, current_val, &lpos, bits_per_value); lup++; } @@ -625,13 +626,13 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) current_val = (((((val[i++] * d) * scals[lup]) - reference_value) * s) + 0.5); if (current_val < 0) grib_context_log(a->context, GRIB_LOG_ERROR, - "COMPLEX_PACKING : negative coput before packing (%g)", current_val); + "%s: negative coput before packing (%g)", cclass_name, current_val); grib_encode_unsigned_long(lres, current_val, &lpos, bits_per_value); current_val = (((((val[i++] * d) * scals[lup]) - reference_value) * s) + 0.5); if (current_val < 0) grib_context_log(a->context, GRIB_LOG_ERROR, - "COMPLEX_PACKING : negative coput before packing (%g)", current_val); + "%s: negative coput before packing (%g)", cclass_name, current_val); grib_encode_unsigned_long(lres, current_val, &lpos, bits_per_value); lup++; } @@ -645,7 +646,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) if (((hpos / 8) != hsize) && ((lpos / 8) != lsize)) { grib_context_log(a->context, GRIB_LOG_ERROR, - "COMPLEX_PACKING : Mismatch in packing between high resolution and low resolution part"); + "%s: Mismatch in packing between high resolution and low resolution part", cclass_name); grib_context_free(a->context, buf); grib_context_free(a->context, scals); return GRIB_INTERNAL_ERROR; @@ -681,6 +682,7 @@ static int unpack(grib_accessor* a, T* val, size_t* len) static_assert(std::is_floating_point::value, "Requires floating point numbers"); grib_accessor_data_complex_packing* self = (grib_accessor_data_complex_packing*)a; grib_handle* gh = grib_handle_of_accessor(a); + const char* cclass_name = a->cclass->name; size_t i = 0; int ret = GRIB_SUCCESS; @@ -812,7 +814,6 @@ static int unpack(grib_accessor* a, T* val, size_t* len) return 0; } - packed_offset = grib_byte_offset(a) + bytes * (sub_k + 1) * (sub_k + 2); lpos = 8 * (packed_offset - offsetdata); @@ -821,7 +822,7 @@ static int unpack(grib_accessor* a, T* val, size_t* len) d = grib_power(-decimal_scale_factor, 10); scals = (T*)grib_context_malloc(a->context, maxv * sizeof(T)); - Assert(scals); + if (!scals) return GRIB_OUT_OF_MEMORY; scals[0] = 0; for (i = 1; i < maxv; i++) { @@ -830,8 +831,7 @@ static int unpack(grib_accessor* a, T* val, size_t* len) scals[i] = (1.0 / operat); else { grib_context_log(a->context, GRIB_LOG_WARNING, - "COMPLEX_PACKING : problem with operator div by zero at index %d of %d \n", - i, maxv); + "%s: Problem with operator div by zero at index %d of %d", cclass_name, i, maxv); scals[i] = 0; } } @@ -912,8 +912,8 @@ static int unpack_float(grib_accessor* a, float* val, size_t* len) size_t size = *len; double* val8 = NULL; val8 = (double*)grib_context_malloc(a->context, size*(sizeof(double))); - if (!val8) - return GRIB_OUT_OF_MEMORY; + if (!val8) return GRIB_OUT_OF_MEMORY; + err = unpack(a, val8, len); if (err) { grib_context_free(a->context,val8); From c2160c2f99395e74a63ad16cad0e0c1ff9c8aed1 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sun, 4 Jun 2023 12:23:49 +0100 Subject: [PATCH 224/378] Error messages: Print accessor name and function --- ..._accessor_class_data_run_length_packing.cc | 20 ++++---- ...grib_accessor_class_data_simple_packing.cc | 46 +++++++++---------- 2 files changed, 32 insertions(+), 34 deletions(-) diff --git a/src/grib_accessor_class_data_run_length_packing.cc b/src/grib_accessor_class_data_run_length_packing.cc index 08ec9227f..369ac2fc8 100644 --- a/src/grib_accessor_class_data_run_length_packing.cc +++ b/src/grib_accessor_class_data_run_length_packing.cc @@ -150,6 +150,7 @@ static int unpack_double(grib_accessor* a, double* val, size_t* len) { grib_accessor_data_run_length_packing* self = (grib_accessor_data_run_length_packing*)a; grib_handle* gh = grib_handle_of_accessor(a); + const char* cclass_name = a->cclass->name; int err = GRIB_SUCCESS; long seclen, number_of_values, bits_per_value, max_level_value, number_of_level_values, decimal_scale_factor; long* level_values = NULL; @@ -194,9 +195,9 @@ static int unpack_double(grib_accessor* a, double* val, size_t* len) range = (1 << bits_per_value) - 1 - max_level_value; if ((max_level_value <= 0) || (number_of_level_values <= 0) || (max_level_value > number_of_level_values) || (range <= 0)) { grib_context_log(a->context, GRIB_LOG_ERROR, - "data_run_length_packing: parameters are invalid: max_level_value=%ld(>0, <=number_of_level_values), " + "%s: parameters are invalid: max_level_value=%ld(>0, <=number_of_level_values), " "number_of_level_values=%ld(>0, >=max_level_value), range=%ld(>0)", - max_level_value, number_of_level_values, range); + cclass_name, max_level_value, number_of_level_values, range); return GRIB_DECODING_ERROR; } if (decimal_scale_factor > 127) { @@ -219,9 +220,9 @@ static int unpack_double(grib_accessor* a, double* val, size_t* len) while (i < number_of_compressed_values) { if (compressed_values[i] > max_level_value) { grib_context_log(a->context, GRIB_LOG_ERROR, - "data_run_length_packing: numberOfValues mismatch: i=%d, " + "%s: numberOfValues mismatch: i=%d, " "compressed_values[i]=%ld, max_level_value=%ld", - i, compressed_values[i], max_level_value); + cclass_name, i, compressed_values[i], max_level_value); break; } v = compressed_values[i++]; @@ -233,8 +234,8 @@ static int unpack_double(grib_accessor* a, double* val, size_t* len) i++; } if (n > number_of_values) { - grib_context_log(a->context, GRIB_LOG_ERROR, "data_run_length_packing: numberOfValues mismatch: n=%ld, number_of_values=%ld", - n, number_of_values); + grib_context_log(a->context, GRIB_LOG_ERROR, "%s: numberOfValues mismatch: n=%ld, number_of_values=%ld", + cclass_name, n, number_of_values); break; } for (k = 0; k < n; k++) { @@ -245,8 +246,8 @@ static int unpack_double(grib_accessor* a, double* val, size_t* len) grib_context_free(a->context, levels); grib_context_free(a->context, compressed_values); if (j != number_of_values) { - grib_context_log(a->context, GRIB_LOG_ERROR, "data_run_length_packing: numberOfValues mismatch: j=%ld, number_of_values=%ld", - j, number_of_values); + grib_context_log(a->context, GRIB_LOG_ERROR, "%s: numberOfValues mismatch: j=%ld, number_of_values=%ld", + cclass_name, j, number_of_values); return GRIB_DECODING_ERROR; } return err; @@ -254,6 +255,7 @@ static int unpack_double(grib_accessor* a, double* val, size_t* len) static int pack_double(grib_accessor* a, const double* val, size_t* len) { - grib_context_log(a->context, GRIB_LOG_ERROR, "Changing the packing type to 'grid_run_length' is not implemented."); + grib_context_log(a->context, GRIB_LOG_ERROR, + "%s: Function '%s' is not implemented", a->cclass->name, __func__); return GRIB_NOT_IMPLEMENTED; } diff --git a/src/grib_accessor_class_data_simple_packing.cc b/src/grib_accessor_class_data_simple_packing.cc index c1cf199a8..df8191f53 100644 --- a/src/grib_accessor_class_data_simple_packing.cc +++ b/src/grib_accessor_class_data_simple_packing.cc @@ -8,10 +8,6 @@ * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. */ -/******************************** - * Enrico Fucile - *******************************/ - #include "grib_api_internal_cpp.h" #include "grib_optimize_decimal_factor.h" #include @@ -198,6 +194,7 @@ static int value_count(grib_accessor* a, long* number_of_values) static int unpack_double_element(grib_accessor* a, size_t idx, double* val) { grib_accessor_data_simple_packing* self = (grib_accessor_data_simple_packing*)a; + const char* cclass_name = a->cclass->name; long n_vals; int err = 0; @@ -242,8 +239,8 @@ static int unpack_double_element(grib_accessor* a, size_t idx, double* val) d = grib_power(-decimal_scale_factor, 10); grib_context_log(a->context, GRIB_LOG_DEBUG, - "grib_accessor_data_simple_packing: unpack_double_element: creating %s, %d values (idx=%ld)", - a->name, n_vals, idx); + "%s: %s: creating %s, %ld values (idx=%zu)", + cclass_name, __func__, a->name, n_vals, idx); buf += grib_byte_offset(a); @@ -251,14 +248,11 @@ static int unpack_double_element(grib_accessor* a, size_t idx, double* val) if (bits_per_value % 8) { grib_context_log(a->context, GRIB_LOG_DEBUG, - "unpack_double_element: calling outline function : bpv %d, rv : %g, sf : %d, dsf : %d ", - bits_per_value, reference_value, binary_scale_factor, decimal_scale_factor); + "%s: calling outline function : bpv %ld, rv: %g, bsf: %ld, dsf: %ld ", + cclass_name, bits_per_value, reference_value, binary_scale_factor, decimal_scale_factor); pos = idx * bits_per_value; - *val = (double)((( - grib_decode_unsigned_long(buf, &pos, bits_per_value) * s) + - reference_value) * - d); - /* val[i] = grib_decode_unsigned_long(buf, &pos, bits_per_value); */ + *val = (double)(((grib_decode_unsigned_long(buf, &pos, bits_per_value) * s) + reference_value) * d); + /* val[i] = grib_decode_unsigned_long(buf, &pos, bits_per_value); */ /* fprintf(stdout,"unpck uuu-o: %d vals %d bitspv buf %d by long \n", n_vals, bits_per_value, pos/8);*/ } else { @@ -298,6 +292,7 @@ static int unpack(grib_accessor* a, T* val, size_t* len) static_assert(std::is_floating_point::value, "Requires floating point numbers"); grib_accessor_data_simple_packing* self = (grib_accessor_data_simple_packing*)a; + const char* cclass_name = a->cclass->name; grib_handle* gh = grib_handle_of_accessor(a); unsigned char* buf = (unsigned char*)grib_handle_of_accessor(a)->buffer->data; @@ -377,8 +372,7 @@ static int unpack(grib_accessor* a, T* val, size_t* len) d = grib_power(-decimal_scale_factor, 10); grib_context_log(a->context, GRIB_LOG_DEBUG, - "grib_accessor_data_simple_packing: unpack_double : creating %s, %d values", - a->name, n_vals); + "%s %s: Creating %s, %zu values", cclass_name, __func__, a->name, n_vals); offsetBeforeData = grib_byte_offset(a); buf += offsetBeforeData; @@ -394,8 +388,9 @@ static int unpack(grib_accessor* a, T* val, size_t* len) const long valuesSize = (bits_per_value * n_vals) / 8; /*in bytes*/ if (offsetBeforeData + valuesSize > offsetAfterData) { grib_context_log(a->context, GRIB_LOG_ERROR, - "Data section size mismatch: offset before data=%ld, offset after data=%ld (num values=%ld, bits per value=%ld)", - offsetBeforeData, offsetAfterData, n_vals, bits_per_value); + "%s: Data section size mismatch: " + "offset before data=%ld, offset after data=%ld (num values=%zu, bits per value=%ld)", + cclass_name, offsetBeforeData, offsetAfterData, n_vals, bits_per_value); return GRIB_DECODING_ERROR; } } @@ -411,8 +406,8 @@ static int unpack(grib_accessor* a, T* val, size_t* len) } grib_context_log(a->context, GRIB_LOG_DEBUG, - "unpack_double: calling outline function : bpv %d, rv : %g, sf : %d, dsf : %d ", - bits_per_value, reference_value, binary_scale_factor, decimal_scale_factor); + "%s %s: calling outline function: bpv: %ld, rv: %g, bsf: %ld, dsf: %ld", + cclass_name, __func__, bits_per_value, reference_value, binary_scale_factor, decimal_scale_factor); grib_decode_array(buf, &pos, bits_per_value, reference_value, s, d, n_vals, val); *len = (long)n_vals; @@ -445,6 +440,7 @@ static int _unpack_double(grib_accessor* a, double* val, size_t* len, unsigned c { grib_accessor_data_simple_packing* self = (grib_accessor_data_simple_packing*)a; grib_handle* gh = grib_handle_of_accessor(a); + const char* cclass_name = a->cclass->name; size_t i = 0; int err = 0; @@ -514,8 +510,7 @@ static int _unpack_double(grib_accessor* a, double* val, size_t* len, unsigned c d = grib_power(-decimal_scale_factor, 10); grib_context_log(a->context, GRIB_LOG_DEBUG, - "grib_accessor_data_simple_packing: unpack_double : creating %s, %d values", - a->name, n_vals); + "%s %s: Creating %s, %zu values", cclass_name, __func__, a->name, n_vals); offsetBeforeData = grib_byte_offset(a); buf += offsetBeforeData; @@ -620,6 +615,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) { grib_accessor_data_simple_packing* self = (grib_accessor_data_simple_packing*)a; grib_handle* gh = grib_handle_of_accessor(a); + const char* cclass_name = a->cclass->name; size_t i = 0; size_t n_vals = *len; @@ -694,8 +690,8 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) double ref = 1e-100; grib_get_double_internal(gh, self->reference_value, &ref); if (ref != reference_value) { - grib_context_log(a->context, GRIB_LOG_ERROR, "data_simple_packing %s: (ref=%.10e != reference_value=%.10e)", - __func__, ref, reference_value); + grib_context_log(a->context, GRIB_LOG_ERROR, "%s %s: (ref=%.10e != reference_value=%.10e)", + cclass_name, __func__, ref, reference_value); return GRIB_INTERNAL_ERROR; } } @@ -756,8 +752,8 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) err = number_of_bits((unsigned long)ceil(fabs(max - min)), &bits_per_value); if (err) { grib_context_log(a->context, GRIB_LOG_ERROR, - "Range of values too large. Try a smaller value for decimal precision (less than %ld)", - decimal_scale_factor); + "%s %s: Range of values too large. Try a smaller value for decimal precision (less than %ld)", + cclass_name, __func__, decimal_scale_factor); return err; } From 48b1c8c624e068ac7ef2cde0657ba936087e031c Mon Sep 17 00:00:00 2001 From: Dusan Figala Date: Sat, 3 Jun 2023 07:30:41 +0200 Subject: [PATCH 225/378] Add deploy WF --- .github/workflows/cd.yml | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 .github/workflows/cd.yml diff --git a/.github/workflows/cd.yml b/.github/workflows/cd.yml new file mode 100644 index 000000000..ef99a2174 --- /dev/null +++ b/.github/workflows/cd.yml @@ -0,0 +1,11 @@ +name: cd + +on: + push: + tags: + - '**' + +jobs: + deploy: + uses: ecmwf-actions/reusable-workflows/.github/workflows/create-package.yml@v2 + secrets: inherit From ca250f1884594da28b7413acb94b996aab345431 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 5 Jun 2023 16:28:10 +0100 Subject: [PATCH 226/378] Remove debugging printf --- tools/grib_check_gaussian_grid.cc | 1 - 1 file changed, 1 deletion(-) diff --git a/tools/grib_check_gaussian_grid.cc b/tools/grib_check_gaussian_grid.cc index 9a3aea661..ce944fa28 100644 --- a/tools/grib_check_gaussian_grid.cc +++ b/tools/grib_check_gaussian_grid.cc @@ -126,7 +126,6 @@ static int process_file(const char* filename) GRIB_CHECK(grib_get_long(h, "angleSubdivisions", &angleSubdivisions), 0); Assert(angleSubdivisions > 0); angular_tolerance = 1.0/angleSubdivisions; - printf(" angular_tolerance=%g\n",angular_tolerance); if (N <= 0) { error(filename, msg_num, "N should be > 0\n", N); From 0f661eb271fd47db4c6a3b02569eb5d5ac87bc27 Mon Sep 17 00:00:00 2001 From: Eugen Betke Date: Wed, 7 Jun 2023 12:21:45 +0000 Subject: [PATCH 227/378] ECC-1609: Fix decimalScaleFactor (not complete) --- src/grib_accessor_class_data_ccsds_packing.cc | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/grib_accessor_class_data_ccsds_packing.cc b/src/grib_accessor_class_data_ccsds_packing.cc index 07f42539a..046acae3e 100644 --- a/src/grib_accessor_class_data_ccsds_packing.cc +++ b/src/grib_accessor_class_data_ccsds_packing.cc @@ -344,12 +344,16 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) max = unscaled_max * decimal; range = (max - min); } + + d = grib_power(decimal_scale_factor, 10); + min = unscaled_min * d; + max = unscaled_max * d; + if (grib_get_nearest_smaller_value(hand, self->reference_value, min, &reference_value) != GRIB_SUCCESS) { grib_context_log(a->context, GRIB_LOG_ERROR, "data_ccsds_packing %s: unable to find nearest_smaller_value of %g for %s", __func__, min, self->reference_value); return GRIB_INTERNAL_ERROR; } - d = grib_power(decimal_scale_factor, 10); } binary_scale_factor = grib_get_binary_scale_fact(max, reference_value, bits_per_value, &err); From bb666dabd4931b6098ffd4cad3229d017a5a80dc Mon Sep 17 00:00:00 2001 From: Eugen Betke Date: Wed, 7 Jun 2023 13:14:09 +0000 Subject: [PATCH 228/378] ECC-1609: Reset decimal_scale_factor before re-computing --- src/grib_accessor_class_data_ccsds_packing.cc | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/grib_accessor_class_data_ccsds_packing.cc b/src/grib_accessor_class_data_ccsds_packing.cc index 046acae3e..ba49128f4 100644 --- a/src/grib_accessor_class_data_ccsds_packing.cc +++ b/src/grib_accessor_class_data_ccsds_packing.cc @@ -322,6 +322,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) double unscaled_min = 0; double f = 0; double decimal = 1; + decimal_scale_factor = 0; range = (max - min); unscaled_min = min; @@ -345,10 +346,6 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) range = (max - min); } - d = grib_power(decimal_scale_factor, 10); - min = unscaled_min * d; - max = unscaled_max * d; - if (grib_get_nearest_smaller_value(hand, self->reference_value, min, &reference_value) != GRIB_SUCCESS) { grib_context_log(a->context, GRIB_LOG_ERROR, "data_ccsds_packing %s: unable to find nearest_smaller_value of %g for %s", __func__, min, self->reference_value); From f4ffeddef8538ce500a63348c5e05b75f8655665 Mon Sep 17 00:00:00 2001 From: Eugen Betke Date: Wed, 7 Jun 2023 13:43:12 +0000 Subject: [PATCH 229/378] ECC-1609: ClangFormat --- src/grib_accessor_class_data_ccsds_packing.cc | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/grib_accessor_class_data_ccsds_packing.cc b/src/grib_accessor_class_data_ccsds_packing.cc index ba49128f4..58259e037 100644 --- a/src/grib_accessor_class_data_ccsds_packing.cc +++ b/src/grib_accessor_class_data_ccsds_packing.cc @@ -322,14 +322,14 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) double unscaled_min = 0; double f = 0; double decimal = 1; - decimal_scale_factor = 0; - range = (max - min); - unscaled_min = min; - unscaled_max = max; - f = (grib_power(bits_per_value, 2) - 1); - minrange = grib_power(-last, 2) * f; - maxrange = grib_power(last, 2) * f; + decimal_scale_factor = 0; + range = (max - min); + unscaled_min = min; + unscaled_max = max; + f = (grib_power(bits_per_value, 2) - 1); + minrange = grib_power(-last, 2) * f; + maxrange = grib_power(last, 2) * f; while (range < minrange) { decimal_scale_factor += 1; From d45770e3b70c70b1b09d24346519380d06f25266 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 9 Jun 2023 14:12:54 +0100 Subject: [PATCH 230/378] Dumper: add native type info (Debug mode) --- src/grib_dumper_class_debug.cc | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/grib_dumper_class_debug.cc b/src/grib_dumper_class_debug.cc index 087e6ee6a..7621762b9 100644 --- a/src/grib_dumper_class_debug.cc +++ b/src/grib_dumper_class_debug.cc @@ -191,6 +191,8 @@ static void dump_long(grib_dumper* d, grib_accessor* a, const char* comment) fprintf(self->dumper.out, "%ld-%ld %s %s = %ld", self->begin, self->theEnd, a->creator->op, a->name, value); if (comment) fprintf(self->dumper.out, " [%s]", comment); + if ((d->option_flags & GRIB_DUMP_FLAG_TYPE) != 0) + fprintf(self->dumper.out, " (%s)", grib_get_type_name(grib_accessor_get_native_type(a))); if ((a->flags & GRIB_ACCESSOR_FLAG_CAN_BE_MISSING) != 0) fprintf(self->dumper.out, " %s", "(can be missing)"); if ((a->flags & GRIB_ACCESSOR_FLAG_READ_ONLY) != 0) @@ -269,6 +271,8 @@ static void dump_double(grib_dumper* d, grib_accessor* a, const char* comment) fprintf(self->dumper.out, "%ld-%ld %s %s = %g", self->begin, self->theEnd, a->creator->op, a->name, value); if (comment) fprintf(self->dumper.out, " [%s]", comment); + if ((d->option_flags & GRIB_DUMP_FLAG_TYPE) != 0) + fprintf(self->dumper.out, " (%s)", grib_get_type_name(grib_accessor_get_native_type(a))); if (err) fprintf(self->dumper.out, " *** ERR=%d (%s) [grib_dumper_debug::dump_double]", err, grib_get_error_message(err)); aliases(d, a); @@ -317,6 +321,9 @@ static void dump_string(grib_dumper* d, grib_accessor* a, const char* comment) if (comment) fprintf(self->dumper.out, " [%s]", comment); + if ((d->option_flags & GRIB_DUMP_FLAG_TYPE) != 0) + fprintf(self->dumper.out, " (%s)", grib_get_type_name(grib_accessor_get_native_type(a))); + if (err) fprintf(self->dumper.out, " *** ERR=%d (%s) [grib_dumper_debug::dump_string]", err, grib_get_error_message(err)); aliases(d, a); From 3360626999d23af604c43a3c9c8fb958cc9e65b7 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 9 Jun 2023 14:39:19 +0100 Subject: [PATCH 231/378] Replace Asserts with proper error messages and exit codes --- src/grib_accessor_class_gen.cc | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/grib_accessor_class_gen.cc b/src/grib_accessor_class_gen.cc index fb69ac0ad..ba85a8855 100644 --- a/src/grib_accessor_class_gen.cc +++ b/src/grib_accessor_class_gen.cc @@ -463,7 +463,7 @@ static int pack_long(grib_accessor* a, const long* v, size_t* len) double* val = (double*)grib_context_malloc(c, *len * (sizeof(double))); if (!val) { grib_context_log(c, GRIB_LOG_ERROR, - "Unable to allocate %d bytes\n", (int)(*len * (sizeof(double)))); + "Unable to allocate %zu bytes", *len * (sizeof(double))); return GRIB_OUT_OF_MEMORY; } for (i = 0; i < *len; i++) @@ -473,7 +473,6 @@ static int pack_long(grib_accessor* a, const long* v, size_t* len) return ret; } grib_context_log(c, GRIB_LOG_ERROR, "Should not grib_pack %s as long", a->name); - Assert(0); return GRIB_NOT_IMPLEMENTED; } @@ -565,7 +564,7 @@ static int pack_bytes(grib_accessor* a, const unsigned char* val, size_t* len) const size_t length = *len; if (length != a->length) { grib_context_log(a->context, GRIB_LOG_ERROR, - "pack_bytes: Wrong size (%lu) for %s. It is %lu bytes long", + "pack_bytes: Wrong size (%zu) for %s. It is %ld bytes long", length, a->name, a->length); return GRIB_BUFFER_TOO_SMALL; } @@ -599,7 +598,7 @@ static void update_size(grib_accessor* a, size_t s) { grib_context_log(a->context, GRIB_LOG_ERROR, "Accessor %s [%s] must implement 'update_size'", a->name, a->cclass->name); - Assert(0 == 1); + Assert(0); } static grib_accessor* next(grib_accessor* a, int mod) From 650c75aa0828e5f36e8225dce2cd46a0ad3f5f47 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 9 Jun 2023 16:14:44 +0100 Subject: [PATCH 232/378] ECC-1599: Add missing code tables (Sent my Marijana) --- .../tables/0/wmo/40/codetables/1035.table | 277 ++++++++++ .../tables/0/wmo/40/codetables/8046.table | 520 ++++++++++++++++++ 2 files changed, 797 insertions(+) create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/1035.table create mode 100644 definitions/bufr/tables/0/wmo/40/codetables/8046.table diff --git a/definitions/bufr/tables/0/wmo/40/codetables/1035.table b/definitions/bufr/tables/0/wmo/40/codetables/1035.table new file mode 100644 index 000000000..7d9dd60a3 --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/1035.table @@ -0,0 +1,277 @@ +0 0 WMO SECRETARIAT +1 1 MELBOURNE +2 2 MELBOURNE +3 3 ) +4 4 MOSCOW +5 5 MOSCOW +6 6 ) +7 7 US NATIONAL WEATHER SERVICE, NATIONAL CENTRES FOR ENVIRONMENTAL PREDICTION (NCEP) +8 8 US NATIONAL WEATHER SERVICE TELECOMMUNICATIONS GATEWAY (NWSTG) +9 9 US NATIONAL WEATHER SERVICE - OTHER +10 10 CAIRO (RSMC) +11 11 ) +12 12 DAKAR (RSMC) +13 13 ) +14 14 NAIROBI (RSMC) +15 15 ) +16 16 CASABLANCA (RSMC) +17 17 TUNIS (RSMC) +18 18 TUNIS-CASABLANCA (RSMC) +19 19 ) +20 20 LAS PALMAS +21 21 ALGIERS (RSMC) +22 22 ACMAD +23 23 MOZAMBIQUE (NMC) +24 24 PRETORIA (RSMC) +25 25 LA REUNION (RSMC) +26 26 KHABAROVSK (RSMC) +27 27 ) +28 28 NEW DELHI (RSMC) +29 29 ) +30 30 NOVOSIBIRSK (RSMC) +31 31 ) +32 32 TASHKENT (RSMC) +33 33 JEDDAH (RSMC) +34 34 TOKYO (RSMC), JAPAN METEOROLOGICAL AGENCY +35 35 ) +36 36 BANGKOK +37 37 ULAANBAATAR +38 38 BEIJING (RSMC) +39 39 ) +40 40 SEOUL +41 41 BUENOS AIRES (RSMC) +42 42 ) +43 43 BRASILIA (RSMC) +44 44 ) +45 45 SANTIAGO +46 46 BRAZILIAN SPACE AGENCY INPE +47 47 COLOMBIA (NMC) +48 48 ECUADOR (NMC) +49 49 PERU (NMC) +50 50 VENEZUELA (BOLIVARIAN REPUBLIC OF) (NMC) +51 51 MIAMI (RSMC) +52 52 MIAMI RSMC, NATIONAL HURRICANE CENTRE +53 53 MSC MONITORING +54 54 MONTREAL (RSMC) +55 55 SAN FRANCISCO +56 56 ARINC CENTRE +57 57 US AIR FORCE - AIR FORCE GLOBAL WEATHER CENTRAL +58 58 FLEET NUMERICAL METEOROLOGY AND OCEANOGRAPHY CENTER, MONTEREY, CA, UNITED STATES +59 59 THE NOAA FORECAST SYSTEMS LABORATORY, BOULDER, CO, UNITED STATES +60 60 UNITED STATES NATIONAL CENTER FOR ATMOSPHERIC RESEARCH (NCAR) +61 61 SERVICE ARGOS - LANDOVER +62 62 US NAVAL OCEANOGRAPHIC OFFICE +63 63 INTERNATIONAL RESEARCH INSTITUTE FOR CLIMATE AND SOCIETY (IRI) +64 64 HONOLULU (RSMC) +65 65 DARWIN (RSMC) +66 66 ) +67 67 MELBOURNE (RSMC) +68 68 RESERVED +69 69 WELLINGTON (RSMC) +70 70 ) +71 71 NADI (RSMC) +72 72 SINGAPORE +73 73 MALAYSIA (NMC) +74 74 UK METEOROLOGICAL OFFICE EXETER (RSMC) +75 75 ) +76 76 MOSCOW (RSMC) +77 77 RESERVED +78 78 OFFENBACH (RSMC) +79 79 ) +80 80 ROME (RSMC) +81 81 ) +82 82 NORRKOPING +83 83 ) +84 84 TOULOUSE (RSMC) +85 85 TOULOUSE (RSMC) +86 86 HELSINKI +87 87 BELGRADE +88 88 OSLO +89 89 PRAGUE +90 90 EPISKOPI +91 91 ANKARA +92 92 FRANKFURT/MAIN +93 93 LONDON (WAFC) +94 94 COPENHAGEN +95 95 ROTA +96 96 ATHENS +97 97 EUROPEAN SPACE AGENCY (ESA) +98 98 EUROPEAN CENTRE FOR MEDIUM RANGE WEATHER FORECASTS (ECMWF) (RSMC) +99 99 DE BILT +100 100 BRAZZAVILLE +101 101 ABIDJAN +102 102 LIBYA (NMC) +103 103 MADAGASCAR (NMC) +104 104 MAURITIUS (NMC) +105 105 NIGER (NMC) +106 106 SEYCHELLES (NMC) +107 107 UGANDA (NMC) +108 108 UNITED REPUBLIC OF TANZANIA (NMC) +109 109 ZIMBABWE (NMC) +110 110 HONG KONG, CHINA +111 111 AFGHANISTAN (NMC) +112 112 BAHRAIN (NMC) +113 113 BANGLADESH (NMC) +114 114 BHUTAN (NMC) +115 115 CAMBODIA (NMC) +116 116 DEMOCRATIC PEOPLE'S REPUBLIC OF KOREA (NMC) +117 117 ISLAMIC REPUBLIC OF IRAN (NMC) +118 118 IRAQ (NMC) +119 119 KAZAKHSTAN (NMC) +120 120 KUWAIT (NMC) +121 121 KYRGYZSTAN (NMC) +122 122 LAO PEOPLE'S DEMOCRATIC REPUBLIC (NMC) +123 123 MACAO, CHINA +124 124 MALDIVES (NMC) +125 125 MYANMAR (NMC) +126 126 NEPAL (NMC) +127 127 OMAN (NMC) +128 128 PAKISTAN (NMC) +129 129 QATAR (NMC) +130 130 YEMEN (NMC) +131 131 SRI LANKA (NMC) +132 132 TAJIKISTAN (NMC) +133 133 TURKMENISTAN (NMC) +134 134 UNITED ARAB EMIRATES (NMC) +135 135 UZBEKISTAN (NMC) +136 136 VIET NAM (NMC) +140 140 BOLIVIA (PLURINATIONAL STATE OF) (NMC) +141 141 GUYANA (NMC) +142 142 PARAGUAY (NMC) +143 143 SURINAME (NMC) +144 144 URUGUAY (NMC) +145 145 FRENCH GUIANA +146 146 BRAZILIAN NAVY HYDROGRAPHIC CENTRE +147 147 NATIONAL COMMISSION ON SPACE ACTIVITIES (CONAE) - ARGENTINA +148 148 BRAZILIAN DEPARTMENT OF AIRSPACE CONTROL - DECEA +149 149 RESERVED FOR OTHER CENTRES +150 150 ANTIGUA AND BARBUDA (NMC) +151 151 BAHAMAS (NMC) +152 152 BARBADOS (NMC) +153 153 BELIZE (NMC) +154 154 BRITISH CARIBBEAN TERRITORIES CENTRE +155 155 SAN JOSE +156 156 CUBA (NMC) +157 157 DOMINICA (NMC) +158 158 DOMINICAN REPUBLIC (NMC) +159 159 EL SALVADOR (NMC) +160 160 US NOAA/NESDIS +161 161 US NOAA OFFICE OF OCEANIC AND ATMOSPHERIC RESEARCH +162 162 GUATEMALA (NMC) +163 163 HAITI (NMC) +164 164 HONDURAS (NMC) +165 165 JAMAICA (NMC) +166 166 MEXICO +167 167 CURACAO AND SINT MAARTEN (NMC) +168 168 NICARAGUA (NMC) +169 169 PANAMA (NMC) +170 170 SAINT LUCIA (NMC) +171 171 TRINIDAD AND TOBAGO (NMC) +172 172 FRENCH DEPARTMENTS IN RA IV +173 173 US NATIONAL AERONAUTICS AND SPACE ADMINISTRATION (NASA) +174 174 INTEGRATED SCIENCE DATA MANAGEMENT/MARINE ENVIRONMENTAL DATA SERVICE (ISDM/MEDS - CANADA) +175 175 UNIVERSITY CORPORATION FOR ATMOSPHERIC RESEARCH (UCAR) - UNITED STATES +176 176 COOPERATIVE INSTITUTE FOR METEOROLOGICAL SATELLITE STUDIES (CIMSS) - UNITED STATES +177 177 NOAA NATIONAL OCEAN SERVICE - UNITED STATES +178 178 SPIRE GLOBAL, INC. +179 179 GEOOPTICS, INC. +180 180 PLANETIQ +190 190 COOK ISLANDS (NMC) +191 191 FRENCH POLYNESIA (NMC) +192 192 TONGA (NMC) +193 193 VANUATU (NMC) +194 194 BRUNEI DARUSSALAM (NMC) +195 195 INDONESIA (NMC) +196 196 KIRIBATI (NMC) +197 197 FEDERATED STATES OF MICRONESIA (NMC) +198 198 NEW CALEDONIA (NMC) +199 199 NIUE +200 200 PAPUA NEW GUINEA (NMC) +201 201 PHILIPPINES (NMC) +202 202 SAMOA (NMC) +203 203 SOLOMON ISLANDS (NMC) +204 204 NATIONAL INSTITUTE OF WATER AND ATMOSPHERIC RESEARCH (NIWA - NEW ZEALAND) +210 210 FRASCATI (ESA/ESRIN) +211 211 LANNION +212 212 LISBOA +213 213 REYKJAVIK +214 214 MADRID +215 215 ZUERICH +216 216 SERVICE ARGOS TOULOUSE +217 217 BRATISLAVA +218 218 BUDAPEST +219 219 LJUBLJANA +220 220 WARSAW +221 221 ZAGREB +222 222 ALBANIA (NMC) +223 223 ARMENIA (NMC) +224 224 AUSTRIA (NMC) +225 225 AZERBAIJAN (NMC) +226 226 BELARUS (NMC) +227 227 BELGIUM (NMC) +228 228 BOSNIA AND HERZEGOVINA (NMC) +229 229 BULGARIA (NMC) +230 230 CYPRUS (NMC) +231 231 ESTONIA (NMC) +232 232 GEORGIA (NMC) +233 233 DUBLIN +234 234 ISRAEL (NMC) +235 235 JORDAN (NMC) +236 236 LATVIA (NMC) +237 237 LEBANON (NMC) +238 238 LITHUANIA (NMC) +239 239 LUXEMBOURG +240 240 MALTA (NMC) +241 241 MONACO +242 242 ROMANIA (NMC) +243 243 SYRIAN ARAB REPUBLIC (NMC) +244 244 THE FORMER YUGOSLAV REPUBLIC OF MACEDONIA (NMC) +245 245 UKRAINE (NMC) +246 246 REPUBLIC OF MOLDOVA (NMC) +247 247 OPERATIONAL PROGRAMME FOR THE EXCHANGE OF WEATHER RADAR INFORMATION (OPERA) - EUMETNET +248 248 MONTENEGRO (NMC) +249 249 BARCELONA DUST FORECAST CENTER +250 250 CONSORTIUM FOR SMALL SCALE MODELLING (COSMO) +251 251 METEOROLOGICAL COOPERATION ON OPERATIONAL NWP (METCOOP) +252 252 MAX PLANCK INSTITUTE FOR METEOROLOGY (MPI-M) +253 253 RESERVED FOR OTHER CENTRES +254 254 EUMETSAT OPERATION CENTRE +255 255 NOT TO BE USED +256 256 ANGOLA (NMC) +257 257 BENIN (NMC) +258 258 BOTSWANA (NMC) +259 259 BURKINA FASO (NMC) +260 260 BURUNDI (NMC) +261 261 CAMEROON (NMC) +262 262 CABO VERDE (NMC) +263 263 CENTRAL AFRICAN REPUBLIC (NMC) +264 264 CHAD (NMC) +265 265 COMOROS (NMC) +266 266 DEMOCRATIC REPUBLIC OF THE CONGO (NMC) +267 267 DJIBOUTI (NMC) +268 268 ERITREA (NMC) +269 269 ETHIOPIA (NMC) +270 270 GABON (NMC) +271 271 GAMBIA (NMC) +272 272 GHANA (NMC) +273 273 GUINEA (NMC) +274 274 GUINEA-BISSAU (NMC) +275 275 LESOTHO (NMC) +276 276 LIBERIA (NMC) +277 277 MALAWI (NMC) +278 278 MALI (NMC) +279 279 MAURITANIA (NMC) +280 280 NAMIBIA (NMC) +281 281 NIGERIA (NMC) +282 282 RWANDA (NMC) +283 283 SAO TOME AND PRINCIPE (NMC) +284 284 SIERRA LEONE (NMC) +285 285 SOMALIA (NMC) +286 286 SUDAN (NMC) +287 287 ESWATINI (NMC) +288 288 TOGO (NMC) +289 289 ZAMBIA (NMC) +290 290 EUMETNET E-PROFILE +291 291 INSTITUTE OF ATMOSPHERIC PHYSICS (IAP) OF THE CHINESE ACADEMY OF SCIENCES (CAS) +292 292 HELMHOLTZ CENTRE FOR ENVIRONMENTAL RESEARCH (UFZ) +65535 65535 MISSING VALUE diff --git a/definitions/bufr/tables/0/wmo/40/codetables/8046.table b/definitions/bufr/tables/0/wmo/40/codetables/8046.table new file mode 100644 index 000000000..21d0933ea --- /dev/null +++ b/definitions/bufr/tables/0/wmo/40/codetables/8046.table @@ -0,0 +1,520 @@ +0 0 OZONE +1 1 WATER VAPOUR +2 2 METHANE +3 3 CARBON DIOXIDE +4 4 CARBON MONOXIDE +5 5 NITROGEN DIOXIDE +6 6 NITROUS OXIDE +7 7 FORMALDEHYDE +8 8 SULPHUR DIOXIDE +9 9 AMMONIA +10 10 AMMONIUM CATION +11 11 NITROGEN MONOXIDE +12 12 ATOMIC OXYGEN +13 13 NITRATE RADICAL +14 14 HYDROPEROXYL RADICAL +15 15 DINITROGEN PENTOXIDE +16 16 NITROUS ACID +17 17 NITRIC ACID +18 18 PEROXYNITRIC ACID +19 19 HYDROGEN PEROXIDE +20 20 DIHYDROGEN +21 21 ATOMIC NITROGEN +22 22 SULPHATE ANION +23 23 ATOMIC RADON +24 24 MERCURY VAPOUR +25 25 MERCURY(II) CATION +26 26 ATOMIC CHLORINE +27 27 CHLORINE MONOXIDE +28 28 DICHLORINE PEROXIDE +29 29 HYPOCHLOROUS ACID +30 30 CHLORINE NITRATE +31 31 CHLORINE DIOXIDE +32 32 ATOMIC BROMINE +33 33 BROMINE MONOXIDE +34 34 BROMINE CHLORIDE +35 35 HYDROGEN BROMIDE +36 36 HYPOBROMOUS ACID +37 37 BROMINE NITRATE +38 38 DIOXYGEN +39 39 NITRYL CHLORIDE +40 40 SULPHURIC ACID +41 41 HYDROGEN SULPHIDE +42 42 SULPHUR TRIOXIDE +43 43 BROMINE +44 44 HYDROFLUORIC ACID +45 45 SULPHUR HEXAFLUORIDE +46 46 CHLORINE +10000 10000 HYDROXYL RADICAL +10001 10001 METHYL PEROXY RADICAL +10002 10002 METHYL HYDROPEROXIDE +10004 10004 METHANOL +10005 10005 FORMIC ACID +10006 10006 HYDROGEN CYANIDE +10007 10007 ACETO NITRILE +10008 10008 ETHANE +10009 10009 ETHENE (= ETHYLENE) +10010 10010 ETHYNE (= ACETYLENE) +10011 10011 ETHANOL +10012 10012 ACETIC ACID +10013 10013 PEROXYACETYL NITRATE +10014 10014 PROPANE +10015 10015 PROPENE +10016 10016 BUTANE (ALL ISOMERS) +10017 10017 ISOPRENE +10018 10018 ALPHA PINENE +10019 10019 BETA PINENE +10020 10020 LIMONENE +10021 10021 BENZENE +10022 10022 TOLUENE +10023 10023 XYLENE +10024 10024 METHANESULPHONIC ACID +10025 10025 METHYLGLYOXAL (2-OXOPROPANAL) +10026 10026 PEROXYACETYL RADICAL +10027 10027 METHACRYLIC ACID (2-METHYLPROP-2-ENOIC ACID) +10028 10028 METHACROLEIN (2-METHYLPROP-2-ENAL) +10029 10029 ACETONE (PROPAN-2-ONE) +10030 10030 ETHYL DIOXIDANYL RADICAL +10031 10031 BUTADIENE (BUTA-1,3-DIENE) +10032 10032 ACETALDEHYDE (ETHANAL) +10033 10033 GLYCOLALDEHYDE (HYDROXYETHANAL) +10034 10034 CRESOL (METHYLPHENOL), ALL ISOMERS +10035 10035 PERACETIC ACID (ETHANEPEROXOIC ACID) +10036 10036 2-HYDROXYETHYL OXIDANYL RADICAL +10037 10037 2-HYDROXYETHYL DIOXIDANYL RADICAL +10038 10038 GLYOXAL (OXALDEHYDE) +10039 10039 ISOPROPYL DIOXIDANYL RADICAL +10040 10040 ISOPROPYL HYDROPEROXIDE (2-HYDROPEROXYPROPANE) +10041 10041 HYDROXYACETONE (1-HYDROXYPROPAN-2-ONE) +10042 10042 PEROXYACETIC ACID (ETHANEPEROXOIC ACID) +10043 10043 METHYL VINYL KETONE (BUT-3-EN-2-ONE) +10044 10044 PHENOXY RADICAL +10045 10045 METHYL RADICAL +10046 10046 CARBONYL SULPHIDE (CARBON OXIDE SULPHIDE) +10047 10047 DIBROMOMETHANE +10048 10048 METHOXY RADICAL +10049 10049 TRIBROMOMETHANE +10050 10050 FORMYL RADICAL (OXOMETHYL RADICAL) +10051 10051 HYDROXYMETHYL DIOXIDANYL RADICAL +10052 10052 ETHYL HYDROPEROXIDE +10053 10053 3-HYDROXYPROPYL DIOXIDANYL RADICAL +10054 10054 3-HYDROXYPROPYL HYDROPEROXIDE +10055 10055 METHYL-PEROXY-NITRATE (NITROPEROXY-METHANE) +10056 10056 2-LAMBDA^1-OXIDANYLOXY-2-METHYLBUT-3-EN-1-OL (4-HYDROXY-3-METHYL-1-BUTENE-3-YLPEROXY RADICAL) +10057 10057 2-LAMBDA^1-OXIDANYLOXY-3-METHYLBUT-3-EN-1-OL (2-HYDROXY-1-ISOPROPENYLETHYLPEROXY RADICAL) +10058 10058 (Z)-4-HYDROPEROXY-2-METHYL-2-BUTENAL +10059 10059 (Z)-4-HYDROPEROXY-3-METHYL-2-BUTENAL +10500 10500 DIMETHYL SULPHIDE +10501 10501 DMSO (DIMETHYL SULFOXIDE) +20001 20001 HYDROGEN CHLORIDE +20002 20002 CFC-11 (TRICHLOROFLUOROMETHANE) +20003 20003 CFC-12 (DICHLORODIFLUOROMETHANE) +20004 20004 CFC-113 (1,1,2-TRICHLORO-1,2,2-TRIFLUOROETHANE) +20005 20005 CFC-113A (1,1,1-TRICHLORO-2,2,2-TRIFLUOROETHANE) +20006 20006 CFC-114 (1,2-DICHLORO-1,1,2,2-TETRAFLUOROETHANE) +20007 20007 CFC-115 (1-CHLORO-1,1,2,2,2-PENTAFLUOROETHANE) +20008 20008 HCFC-22 (CHLORODIFLUOROMETHANE) +20009 20009 HCFC-141B (1,1-DICHLORO-1-FLUOROETHANE) +20010 20010 HCFC-142B (1-CHLORO-1,1-DIFLUOROETHANE) +20011 20011 HALON-1202 (DIBROMODIFLUOROMETHANE) +20012 20012 HALON-1211 (BROMOCHLORODIFLUOROMETHANE) +20013 20013 HALON-1301 (BROMOTRIFLUOROMETHANE) +20014 20014 HALON-2402 (1,2-DIBROMO-1,1,2,2-TETRAFLUOROETHANE) +20015 20015 HCC-40 (METHYL CHLORIDE) +20016 20016 HCC-10 (CARBON TETRACHLORIDE) +20017 20017 HCC-140A (1,1,1-TRICHLOROETHANE) +20018 20018 HBC-40B1 (METHYL BROMIDE) +20019 20019 HCH (HEXACHLOROCYCLOHEXANE) ALL ISOMERS +20020 20020 ALPHA-HCH (ALPHA-HEXACHLOROCYCLOHEXANE) BOTH ENANTIOMERS +20021 20021 PCB-153 (2,2',4,4',5,5'-HEXACHLOROBIPHENYL) +20022 20022 HCFC-141A (1,1-DICHLORO-2-FLUOROETHANE) +30000 30000 RADIOACTIVE POLLUTANT (TRACER, DEFINED BY ORIGINATING CENTRE) +30010 30010 TRITIUM (HYDROGEN 3) +30011 30011 TRITIUM ORGANIC BOUNDED +30012 30012 TRITIUM INORGANIC +30013 30013 BERYLLIUM 7 +30014 30014 BERYLLIUM 10 +30015 30015 CARBON 14 +30016 30016 CARBON 14 CO2 +30017 30017 CARBON 14 OTHER GASES +30018 30018 NITROGEN 13 +30019 30019 NITROGEN 16 +30020 30020 FLUORINE 18 +30021 30021 SODIUM 22 +30022 30022 PHOSPHATE 32 +30023 30023 PHOSPHATE 33 +30024 30024 SULPHUR 35 +30025 30025 CHLORINE 36 +30026 30026 POTASSIUM 40 +30027 30027 ARGON 41 +30028 30028 CALCIUM 41 +30029 30029 CALCIUM 45 +30030 30030 TITANIUM 44 +30031 30031 SCANDIUM 46 +30032 30032 VANADIUM 48 +30033 30033 VANADIUM 49 +30034 30034 CHROME 51 +30035 30035 MANGANESE 52 +30036 30036 MANGANESE 54 +30037 30037 IRON 55 +30038 30038 IRON 59 +30039 30039 COBALT 56 +30040 30040 COBALT 57 +30041 30041 COBALT 58 +30042 30042 COBALT 60 +30043 30043 NICKEL 59 +30044 30044 NICKEL 63 +30045 30045 ZINC 65 +30046 30046 GALLIUM 67 +30047 30047 GALLIUM 68 +30048 30048 GERMANIUM 68 +30049 30049 GERMANIUM 69 +30050 30050 ARSENIC 73 +30051 30051 SELENIUM 75 +30052 30052 SELENIUM 79 +30053 30053 RUBIDIUM 81 +30054 30054 RUBIDIUM 83 +30055 30055 RUBIDIUM 84 +30056 30056 RUBIDIUM 86 +30057 30057 RUBIDIUM 87 +30058 30058 RUBIDIUM 88 +30059 30059 KRYPTON 85 +30060 30060 KRYPTON 85 METASTABLE +30061 30061 KRYPTON 87 +30062 30062 KRYPTON 88 +30063 30063 KRYPTON 89 +30064 30064 STRONTIUM 85 +30065 30065 STRONTIUM 89 +30066 30066 STRONTIUM 89/90 +30067 30067 STRONTIUM 90 +30068 30068 STRONTIUM 91 +30069 30069 STRONTIUM 92 +30070 30070 YTTRIUM 87 +30071 30071 YTTRIUM 88 +30072 30072 YTTRIUM 90 +30073 30073 YTTRIUM 91 +30074 30074 YTTRIUM 91 METASTABLE +30075 30075 YTTRIUM 92 +30076 30076 YTTRIUM 93 +30077 30077 ZIRCONIUM 89 +30078 30078 ZIRCONIUM 93 +30079 30079 ZIRCONIUM 95 +30080 30080 ZIRCONIUM 97 +30081 30081 NIOBIUM 93 METASTABLE +30082 30082 NIOBIUM 94 +30083 30083 NIOBIUM 95 +30084 30084 NIOBIUM 95 METASTABLE +30085 30085 NIOBIUM 97 +30086 30086 NIOBIUM 97 METASTABLE +30087 30087 MOLYBDENUM 93 +30088 30088 MOLYBDENUM 99 +30089 30089 TECHNETIUM 95 METASTABLE +30090 30090 TECHNETIUM 96 +30091 30091 TECHNETIUM 99 +30092 30092 TECHNETIUM 99 METASTABLE +30093 30093 RHODIUM 99 +30094 30094 RHODIUM 101 +30095 30095 RHODIUM 102 METASTABLE +30096 30096 RHODIUM 103 METASTABLE +30097 30097 RHODIUM 105 +30098 30098 RHODIUM 106 +30099 30099 PALLADIUM 100 +30100 30100 PALLADIUM 103 +30101 30101 PALLADIUM 107 +30102 30102 RUTHENIUM 103 +30103 30103 RUTHENIUM 105 +30104 30104 RUTHENIUM 106 +30105 30105 SILVER 108 METASTABLE +30106 30106 SILVER 110 METASTABLE +30107 30107 CADMIUM 109 +30108 30108 CADMIUM 113 METASTABLE +30109 30109 CADMIUM 115 METASTABLE +30110 30110 INDIUM 114 METASTABLE +30111 30111 TIN 113 +30112 30112 TIN 119 METASTABLE +30113 30113 TIN 121 METASTABLE +30114 30114 TIN 122 +30115 30115 TIN 123 +30116 30116 TIN 126 +30117 30117 ANTIMONY 124 +30118 30118 ANTIMONY 125 +30119 30119 ANTIMONY 126 +30120 30120 ANTIMONY 127 +30121 30121 ANTIMONY 129 +30122 30122 TELLURIUM 123 METASTABLE +30123 30123 TELLURIUM 125 METASTABLE +30124 30124 TELLURIUM 127 +30125 30125 TELLURIUM 127 METASTABLE +30126 30126 TELLURIUM 129 +30127 30127 TELLURIUM 129 METASTABLE +30128 30128 TELLURIUM 131 METASTABLE +30129 30129 TELLURIUM 132 +30130 30130 IODINE 123 +30131 30131 IODINE 124 +30132 30132 IODINE 125 +30133 30133 IODINE 126 +30134 30134 IODINE 129 +30135 30135 IODINE 129 ELEMENTARY GASEOUS +30136 30136 IODINE 129 ORGANIC BOUNDED +30137 30137 IODINE 131 +30138 30138 IODINE 131 ELEMENTARY GASEOUS +30139 30139 IODINE 131 ORGANIC BOUNDED +30140 30140 IODINE 131 GASEOUS ELEMENTARY AND ORGANIC BOUNDED +30141 30141 IODINE 131 AEROSOL +30142 30142 IODINE 132 +30143 30143 IODINE 132 ELEMENTARY GASEOUS +30144 30144 IODINE 132 ORGANIC BOUNDED +30145 30145 IODINE 132 GASEOUS ELEMENTARY AND ORGANIC BOUNDED +30146 30146 IODINE 132 AEROSOL +30147 30147 IODINE 133 +30148 30148 IODINE 133 ELEMENTARY GASEOUS +30149 30149 IODINE 133 ORGANIC BOUNDED +30150 30150 IODINE 133 GASEOUS ELEMENTARY AND ORGANIC BOUNDED +30151 30151 IODINE 133 AEROSOL +30152 30152 IODINE 134 +30153 30153 IODINE 134 ELEMENTARY GASEOUS +30154 30154 IODINE 134 ORGANIC BOUNDED +30155 30155 IODINE 135 +30156 30156 IODINE 135 ELEMENTARY GASEOUS +30157 30157 IODINE 135 ORGANIC BOUNDED +30158 30158 IODINE 135 GASEOUS ELEMENTARY AND ORGANIC BOUNDED +30159 30159 IODINE 135 AEROSOL +30160 30160 XENON 131 METASTABLE +30161 30161 XENON 133 +30162 30162 XENON 133 METASTABLE +30163 30163 XENON 135 +30164 30164 XENON 135 METASTABLE +30165 30165 XENON 137 +30166 30166 XENON 138 +30167 30167 XENON SUM OF ALL XENON ISOTOPES +30168 30168 CAESIUM 131 +30169 30169 CAESIUM 134 +30170 30170 CAESIUM 135 +30171 30171 CAESIUM 136 +30172 30172 CAESIUM 137 +30173 30173 BARIUM 133 +30174 30174 BARIUM 137 METASTABLE +30175 30175 BARIUM 140 +30176 30176 CERIUM 139 +30177 30177 CERIUM 141 +30178 30178 CERIUM 143 +30179 30179 CERIUM 144 +30180 30180 LANTHANUM 140 +30181 30181 LANTHANUM 141 +30182 30182 PRASEODYMIUM 143 +30183 30183 PRASEODYMIUM 144 +30184 30184 PRASEODYMIUM 144 METASTABLE +30185 30185 SAMARIUM 145 +30186 30186 SAMARIUM 147 +30187 30187 SAMARIUM 151 +30188 30188 NEODYMIUM 147 +30189 30189 PROMETHIUM 146 +30190 30190 PROMETHIUM 147 +30191 30191 PROMETHIUM 151 +30192 30192 EUROPIUM 152 +30193 30193 EUROPIUM 154 +30194 30194 EUROPIUM 155 +30195 30195 GADOLINIUM 153 +30196 30196 TERBIUM 160 +30197 30197 HOLMIUM 166 METASTABLE +30198 30198 THULIUM 170 +30199 30199 YTTERBIUM 169 +30200 30200 HAFNIUM 175 +30201 30201 HAFNIUM 181 +30202 30202 TANTALUM 179 +30203 30203 TANTALUM 182 +30204 30204 RHENIUM 184 +30205 30205 IRIDIUM 192 +30206 30206 MERCURY 203 +30207 30207 THALLIUM 204 +30208 30208 THALLIUM 207 +30209 30209 THALLIUM 208 +30210 30210 THALLIUM 209 +30211 30211 BISMUTH 205 +30212 30212 BISMUTH 207 +30213 30213 BISMUTH 210 +30214 30214 BISMUTH 211 +30215 30215 BISMUTH 212 +30216 30216 BISMUTH 213 +30217 30217 BISMUTH 214 +30218 30218 POLONIUM 208 +30219 30219 POLONIUM 210 +30220 30220 POLONIUM 212 +30221 30221 POLONIUM 213 +30222 30222 POLONIUM 214 +30223 30223 POLONIUM 215 +30224 30224 POLONIUM 216 +30225 30225 POLONIUM 218 +30226 30226 LEAD 209 +30227 30227 LEAD 210 +30228 30228 LEAD 211 +30229 30229 LEAD 212 +30230 30230 LEAD 214 +30231 30231 ASTATINE 217 +30232 30232 RADON 219 +30233 30233 RADON 220 +30234 30234 RADON 222 +30235 30235 FRANCIUM 221 +30236 30236 FRANCIUM 223 +30237 30237 RADIUM 223 +30238 30238 RADIUM 224 +30239 30239 RADIUM 225 +30240 30240 RADIUM 226 +30241 30241 RADIUM 228 +30242 30242 ACTINIUM 225 +30243 30243 ACTINIUM 227 +30244 30244 ACTINIUM 228 +30245 30245 THORIUM 227 +30246 30246 THORIUM 228 +30247 30247 THORIUM 229 +30248 30248 THORIUM 230 +30249 30249 THORIUM 231 +30250 30250 THORIUM 232 +30251 30251 THORIUM 234 +30252 30252 PROTACTINIUM 231 +30253 30253 PROTACTINIUM 233 +30254 30254 PROTACTINIUM 234 METASTABLE +30255 30255 URANIUM 232 +30256 30256 URANIUM 233 +30257 30257 URANIUM 234 +30258 30258 URANIUM 235 +30259 30259 URANIUM 236 +30260 30260 URANIUM 237 +30261 30261 URANIUM 238 +30262 30262 PLUTONIUM 236 +30263 30263 PLUTONIUM 238 +30264 30264 PLUTONIUM 239 +30265 30265 PLUTONIUM 240 +30266 30266 PLUTONIUM 241 +30267 30267 PLUTONIUM 242 +30268 30268 PLUTONIUM 244 +30269 30269 NEPTUNIUM 237 +30270 30270 NEPTUNIUM 238 +30271 30271 NEPTUNIUM 239 +30272 30272 AMERICIUM 241 +30273 30273 AMERICIUM 242 +30274 30274 AMERICIUM 242 METASTABLE +30275 30275 AMERICIUM 243 +30276 30276 CURIUM 242 +30277 30277 CURIUM 243 +30278 30278 CURIUM 244 +30279 30279 CURIUM 245 +30280 30280 CURIUM 246 +30281 30281 CURIUM 247 +30282 30282 CURIUM 248 +30283 30283 CURIUM 243/244 +30284 30284 PLUTONIUM 238/AMERICIUM 241 +30285 30285 PLUTONIUM 239/240 +30286 30286 BERKELIUM 249 +30287 30287 CALIFORNIUM 249 +30288 30288 CALIFORNIUM 250 +30289 30289 CALIFORNIUM 252 +30290 30290 SUM AEROSOL PARTICULATES +30291 30291 SUM IODINE +30292 30292 SUM NOBLE GAS +30293 30293 ACTIVATION GAS +30294 30294 CS-137 EQUIVALENT +30295 30295 CARBON-13 +30296 30296 LEAD +30297 30297 TELLURIUM 131 +30298 30298 NEODYMIUM 137 +40000 40000 SINGLET SIGMA OXYGEN (DIOXYGEN (SIGMA SINGLET)) +40001 40001 SINGLET DELTA OXYGEN (DIOXYGEN (DELTA SINGLET)) +40002 40002 SINGLET EXCITED OXYGEN ATOM +40003 40003 TRIPLET GROUND STATE OXYGEN ATOM +60000 60000 HOX RADICAL (OH+HO2) +60001 60001 TOTAL INORGANIC AND ORGANIC PEROXY RADICALS (HOO* + ROO*) +60002 60002 PASSIVE OZONE +60003 60003 NOX EXPRESSED AS NITROGEN +60004 60004 ALL NITROGEN OXIDES (NOY) EXPRESSED AS NITROGEN +60005 60005 TOTAL INORGANIC CHLORINE +60006 60006 TOTAL INORGANIC BROMINE +60007 60007 TOTAL INORGANIC CHLORINE EXCEPT HCL, CLONO2: CLOX +60008 60008 TOTAL INORGANIC BROMINE EXCEPT HBR, BRONO2: BROX +60009 60009 LUMPED ALKANES +60010 60010 LUMPED ALKENES +60011 60011 LUMPED AROMATIC COMPOUNDS +60012 60012 LUMPED TERPENES +60013 60013 NON-METHANE VOLATILE ORGANIC COMPOUNDS EXPRESSED AS CARBON +60014 60014 ANTHROPOGENIC NON-METHANE VOLATILE ORGANIC COMPOUNDS EXPRESSED AS CARBON +60015 60015 BIOGENIC NON-METHANE VOLATILE ORGANIC COMPOUNDS EXPRESSED AS CARBON +60016 60016 LUMPED OXYGENATED HYDROCARBONS +60017 60017 NOX EXPRESSED AS NITROGEN DIOXIDE (NO2) +60018 60018 ORGANIC ALDEHYDES +60019 60019 ORGANIC PEROXIDES +60020 60020 ORGANIC NITRATES +60021 60021 ETHERS +60022 60022 AMINES +60023 60023 KETONES +60024 60024 DICARBONYLS UNSATURATED +60025 60025 HYDROXY DICARBONYLS UNSATURATED +60026 60026 HYDROXY KETONES +60027 60027 OXIDES +60028 60028 PEROXYACYL NITRATES +60029 60029 AROMATIC PEROXIDE RADICAL (ARYL DIOXYDANYL RADICALS) +60030 60030 BIOGENIC SECONDARY ORGANIC COMPOUND +60031 60031 ANTHROPOGENIC SECONDARY ORGANIC COMPOUND +60032 60032 ALL HYDROXY-PEROXIDES PRODUCTS OF THE REACTION OF HYDROXY-ISOPRENE ADDUCTS WITH O2 +60033 60033 ANTHROPOGENIC VOLATILE ORGANIC COMPOUNDS +60034 60034 BIOMASS BURNING VOLATILE ORGANIC COMPOUNDS +62000 62000 TOTAL AEROSOL +62001 62001 DUST DRY +62002 62002 WATER IN AMBIENT +62003 62003 AMMONIUM DRY +62004 62004 NITRATE DRY +62005 62005 NITRIC ACID TRIHYDRATE +62006 62006 SULPHATE DRY +62007 62007 MERCURY DRY +62008 62008 SEA SALT DRY +62009 62009 BLACK CARBON DRY +62010 62010 PARTICULATE ORGANIC MATTER DRY +62011 62011 PRIMARY PARTICULATE ORGANIC MATTER DRY +62012 62012 SECONDARY PARTICULATE ORGANIC MATTER DRY +62013 62013 BLACK CARBON HYDROPHILIC DRY +62014 62014 BLACK CARBON HYDROPHOBIC DRY +62015 62015 PARTICULATE ORGANIC MATTER HYDROPHILIC DRY +62016 62016 PARTICULATE ORGANIC MATTER HYDROPHOBIC DRY +62017 62017 NITRATE HYDROPHILIC DRY +62018 62018 NITRATE HYDROPHOBIC DRY +62019 62019 RESERVED +62020 62020 SMOKE - HIGH ABSORPTION +62021 62021 SMOKE - LOW ABSORPTION +62022 62022 AEROSOL - HIGH ABSORPTION +62023 62023 AEROSOL - LOW ABSORPTION +62024 62024 RESERVED +62025 62025 VOLCANIC ASH +62026 62026 PARTICULATE MATTER (PM) +62027 62027 RESERVED +62028 62028 TOTAL AEROSOL HYDROPHILIC +62029 62029 TOTAL AEROSOL HYDROPHOBIC +62030 62030 PRIMARY PARTICULATE INORGANIC MATTER DRY +62031 62031 SECONDARY PARTICULATE INORGANIC MATTER DRY +62032 62032 BIOGENIC SECONDARY ORGANIC AEROSOL +62033 62033 ANTHROPOGENIC SECONDARY ORGANIC AEROSOL +62034 62034 RAIN WATER +62035 62035 CLOUD WATER +62036 62036 BROWN CARBON DRY +62100 62100 ALNUS (ALDER) POLLEN +62101 62101 BETULA (BIRCH) POLLEN +62102 62102 CASTANEA (CHESTNUT) POLLEN +62103 62103 CARPINUS (HORNBEAM) POLLEN +62104 62104 CORYLUS (HAZEL) POLLEN +62105 62105 FAGUS (BEECH) POLLEN +62106 62106 FRAXINUS (ASH) POLLEN +62107 62107 PINUS (PINE) POLLEN +62108 62108 PLATANUS (PLANE) POLLEN +62109 62109 POPULUS (COTTONWOOD, POPLAR) POLLEN +62110 62110 QUERCUS (OAK) POLLEN +62111 62111 SALIX (WILLOW) POLLEN +62112 62112 TAXUS (YEW) POLLEN +62113 62113 TILIA (LIME, LINDEN) POLLEN +62114 62114 ULMUS (ELM) POLLEN +62115 62115 OLEA (OLIVE) POLLEN +62200 62200 AMBROSIA (RAGWEED, BURR-RAGWEED) POLLEN +62201 62201 ARTEMISIA (SAGEBRUSH, WORMWOOD, MUGWORT) POLLEN +62202 62202 BRASSICA (RAPE, BROCCOLI, BRUSSELS SPROUTS, CABBAGE, CAULIFLOWER, COLLARDS, KALE, KOHLRABI, MUSTARD, RUTABAGA) POLLEN +62203 62203 PLANTAGO (PLANTAIN) POLLEN +62204 62204 RUMEX (DOCK, SORREL) POLLEN +62205 62205 URTICA (NETTLE) POLLEN +62300 62300 POACEAE (GRASS FAMILY) POLLEN +65535 65535 MISSING From 3d642d76d0f6df31b44ac1c2477b2103fe262b18 Mon Sep 17 00:00:00 2001 From: Eugen Betke Date: Sun, 11 Jun 2023 08:21:00 +0000 Subject: [PATCH 233/378] ECC-1609: Add missing decimal_scale_factor calculation --- src/grib_accessor_class_data_ccsds_packing.cc | 1 + 1 file changed, 1 insertion(+) diff --git a/src/grib_accessor_class_data_ccsds_packing.cc b/src/grib_accessor_class_data_ccsds_packing.cc index 58259e037..3eb37c2dc 100644 --- a/src/grib_accessor_class_data_ccsds_packing.cc +++ b/src/grib_accessor_class_data_ccsds_packing.cc @@ -351,6 +351,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) "data_ccsds_packing %s: unable to find nearest_smaller_value of %g for %s", __func__, min, self->reference_value); return GRIB_INTERNAL_ERROR; } + d = grib_power(decimal_scale_factor, 10); } binary_scale_factor = grib_get_binary_scale_fact(max, reference_value, bits_per_value, &err); From 89f92e07513ab17d594371d87859c3a2da423d84 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 12 Jun 2023 10:25:02 +0100 Subject: [PATCH 234/378] Testing: CCSDS bitsPerValue test when AEC_DATA_3BYTE_OPTION_MASK=0 --- tests/grib_ccsds.sh | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/tests/grib_ccsds.sh b/tests/grib_ccsds.sh index d650a0fa0..bb37f060c 100755 --- a/tests/grib_ccsds.sh +++ b/tests/grib_ccsds.sh @@ -146,18 +146,21 @@ ${tools_dir}/grib_compare -c data:n $outfile1 $outfile2 # Test increasing bitsPerValue # ----------------------------- -# TODO: This one is broken for some BPV values. It has AEC_DATA_3BYTE_OPTION_MASK==0 -# input=${data_dir}/ccsds.grib2 - -ifs_samples="gg_ml.tmpl gg_sfc_grib2.tmpl" ifs_dir=${proj_dir}/ifs_samples/grib1_mlgrib2_ccsds +inputs=" + $data_dir/ccsds.grib2 + $ifs_dir/gg_ml.tmpl + $ifs_dir/gg_sfc_grib2.tmpl +" +grib_check_key_equals $data_dir/ccsds.grib2 'bitsPerValue,packingType,AEC_DATA_3BYTE_OPTION_MASK' '14 grid_ccsds 0' +grib_check_key_equals $ifs_dir/gg_ml.tmpl 'bitsPerValue,packingType,AEC_DATA_3BYTE_OPTION_MASK' '16 grid_ccsds 1' +grib_check_key_equals $ifs_dir/gg_sfc_grib2.tmpl 'bitsPerValue,packingType,AEC_DATA_3BYTE_OPTION_MASK' '16 grid_ccsds 1' + MAX_BPV=32 # libaec cannot handle more than this -for sample in $ifs_samples; do - input=$ifs_dir/$sample +for input in $inputs; do MIN_BPV=`${tools_dir}/grib_get -p bitsPerValue $input` stats1=`${tools_dir}/grib_get -F%.3f -p min,max,avg,sd $input` - grib_check_key_equals $input 'bitsPerValue,packingType,AEC_DATA_3BYTE_OPTION_MASK' '16 grid_ccsds 1' for bpv in `seq $MIN_BPV $MAX_BPV`; do ${tools_dir}/grib_set -s setBitsPerValue=$bpv $input $outfile2 ${tools_dir}/grib_compare -c data:n $input $outfile2 From c014f0a5f77fd8a122bf49b53ac19a217161f895 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 12 Jun 2023 11:35:32 +0100 Subject: [PATCH 235/378] Testing: Add the tests for ECC-1433 (CCSDS very small values) --- tests/CMakeLists.txt | 2 ++ tests/grib_ecc-1433.cc | 62 ++++++++++++++++++++++++++++++++++++++++++ tests/grib_ecc-1433.sh | 18 ++++++++++++ 3 files changed, 82 insertions(+) create mode 100644 tests/grib_ecc-1433.cc create mode 100755 tests/grib_ecc-1433.sh diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index f7ee9e572..8e64e8692 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -34,6 +34,7 @@ list(APPEND test_c_bins grib_ecc-386 grib_ecc-1467 grib_ecc-1431 + grib_ecc-1433 bufr_ecc-517 bufr_ecc-1288 bufr_get_element @@ -281,6 +282,7 @@ if( HAVE_BUILD_TOOLS ) if( HAVE_AEC AND ENABLE_EXTRA_TESTS ) list(APPEND tests_extra grib_ecc-1431) + list(APPEND tests_extra grib_ecc-1433) endif() if( HAVE_FORTRAN AND ENABLE_EXTRA_TESTS ) list(APPEND tests_extra bufr_dump_encode_fortran) diff --git a/tests/grib_ecc-1433.cc b/tests/grib_ecc-1433.cc new file mode 100644 index 000000000..ed2ac04aa --- /dev/null +++ b/tests/grib_ecc-1433.cc @@ -0,0 +1,62 @@ +/* + * (C) Copyright 2005- ECMWF. + * + * This software is licensed under the terms of the Apache Licence Version 2.0 + * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. + * + * In applying this licence, ECMWF does not waive the privileges and immunities granted to it by + * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. + */ + +#include "grib_api_internal.h" +#include +#include +#include +#include +#include +#include +#include +#include + +typedef std::numeric_limits dbl; +typedef std::numeric_limits flt; + +int main(int argc, char** argv) +{ + size_t values_len = 10; + std::default_random_engine re; + std::uniform_real_distribution unif(flt::min(), flt::min() * 10); + + codes_handle* handle = codes_grib_handle_new_from_samples(0, "reduced_gg_pl_128_grib2"); + double* values = new double[values_len]; + double* grid_ccsds_values = new double[values_len]; + + // Initialize with small random values + for (size_t i = 0; i < values_len; ++i) { + values[i] = unif(re); + } + + // Test grid_ccsds + std::string packing_type = "grid_ccsds"; + size_t size = packing_type.size(); + CODES_CHECK(codes_set_double_array(handle, "values", values, values_len), 0); + CODES_CHECK(codes_set_string(handle, "packingType", packing_type.c_str(), &size), 0); + CODES_CHECK(codes_get_double_array(handle, "values", grid_ccsds_values, &values_len), 0); + + // Test buffers + double tolerance = 0.000001; + for (size_t i = 0; i < values_len; ++i) { + if (!((grid_ccsds_values[i] < (values[i] * (1 + tolerance))) && + grid_ccsds_values[i] > (values[i] / (1 + tolerance)))) { + std::cout.precision(dbl::max_digits10); + std::cout << "Test failed: " << grid_ccsds_values[i] << " != " << values[i] << std::endl; + Assert(0); + } + } + + codes_handle_delete(handle); + + delete[] values; + delete[] grid_ccsds_values; + return 0; +} diff --git a/tests/grib_ecc-1433.sh b/tests/grib_ecc-1433.sh new file mode 100755 index 000000000..9fd834346 --- /dev/null +++ b/tests/grib_ecc-1433.sh @@ -0,0 +1,18 @@ +#!/bin/sh +# (C) Copyright 2005- ECMWF. +# +# This software is licensed under the terms of the Apache Licence Version 2.0 +# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. +# +# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by +# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. +# + +. ./include.ctest.sh + +label="grib_ecc-1433_test" +temp=temp.$label + +$EXEC $test_dir/grib_ecc-1433 + +rm -f $temp From 0721b02976a108d0529fdb5be3c39828cba14551 Mon Sep 17 00:00:00 2001 From: Sebastien Villaume Date: Mon, 12 Jun 2023 11:46:24 +0100 Subject: [PATCH 236/378] adding stepTrange for ocean data --- definitions/mars/grib.ocda.tpa.def | 8 ++++++++ definitions/mars/grib.oper.fc.def | 6 +++++- 2 files changed, 13 insertions(+), 1 deletion(-) create mode 100644 definitions/mars/grib.ocda.tpa.def diff --git a/definitions/mars/grib.ocda.tpa.def b/definitions/mars/grib.ocda.tpa.def new file mode 100644 index 000000000..ce6ab9ad8 --- /dev/null +++ b/definitions/mars/grib.ocda.tpa.def @@ -0,0 +1,8 @@ +# aliasing MARS date and Time to the date and time defined in section 1, +alias mars.date = dataDate; +alias mars.time = dataTime; + +# dateOfAnalysis and timeOfAnalysis still exist in this stream but is not used in MARS + +unalias mars.step; +alias mars.step = stepRange; diff --git a/definitions/mars/grib.oper.fc.def b/definitions/mars/grib.oper.fc.def index a7a404bc3..1ece3366b 100644 --- a/definitions/mars/grib.oper.fc.def +++ b/definitions/mars/grib.oper.fc.def @@ -1 +1,5 @@ -alias mars.step = endStep; +if (levtype is "o2d" || levtype is "o3d") { + alias mars.step = stepRange; +} else { + alias mars.step = endStep; +} From bef2dfeb1a51482d44884d210c294b67ced24a7f Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 12 Jun 2023 16:25:33 +0100 Subject: [PATCH 237/378] ECC-1610: MARS: configure keywords mapping for ocda/tpa and oper/fc for ocean levtype o2d/o3d --- definitions/mars/grib.ocda.tpa.def | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/definitions/mars/grib.ocda.tpa.def b/definitions/mars/grib.ocda.tpa.def index ce6ab9ad8..d46a8bd2a 100644 --- a/definitions/mars/grib.ocda.tpa.def +++ b/definitions/mars/grib.ocda.tpa.def @@ -1,8 +1,8 @@ -# aliasing MARS date and Time to the date and time defined in section 1, +# aliasing MARS date and time to the date and time defined in section 1 alias mars.date = dataDate; alias mars.time = dataTime; -# dateOfAnalysis and timeOfAnalysis still exist in this stream but is not used in MARS +# dateOfAnalysis and timeOfAnalysis still exist in this stream but is not used in MARS unalias mars.step; alias mars.step = stepRange; From 3b52ef5203ec4088108849b57f7781a8fcd0bec4 Mon Sep 17 00:00:00 2001 From: Eugen Betke Date: Tue, 13 Jun 2023 11:02:59 +0000 Subject: [PATCH 238/378] ECC-1433: renamed: tests/grib_ecc-1433.cpp -> tests/grib_ecc-1433.cc --- tests/{grib_ecc-1433.cpp => grib_ecc-1433.cc} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename tests/{grib_ecc-1433.cpp => grib_ecc-1433.cc} (100%) diff --git a/tests/grib_ecc-1433.cpp b/tests/grib_ecc-1433.cc similarity index 100% rename from tests/grib_ecc-1433.cpp rename to tests/grib_ecc-1433.cc From cf4970987c462463a3a42e0e18df07c68e3d965d Mon Sep 17 00:00:00 2001 From: Eugen Betke Date: Tue, 13 Jun 2023 11:26:38 +0000 Subject: [PATCH 239/378] ECC-1433: Remove C++ experimental from CMakeLists.txt --- tests/CMakeLists.txt | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index bf5baf639..c597f0bc0 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -61,20 +61,6 @@ foreach( tool ${test_c_bins} ) LIBS eccodes ) endforeach() -if( HAVE_EXPERIMENTAL_BUILD_WITH_CXX ) - if( HAVE_AEC AND ENABLE_EXTRA_TESTS ) - list(APPEND test_cpp_bins grib_ecc-1431) - list(APPEND test_cpp_bins grib_ecc-1433) - endif() - - foreach( tool ${test_cpp_bins} ) - # here we use the fact that each tool has only one C file that matches its name - ecbuild_add_executable( TARGET ${tool} - NOINSTALL - SOURCES ${tool}.cpp - LIBS eccodes ) - endforeach() -endif() # Now add each test (shell scripts) ################################################# From 4ca1a08fcc9fe75a98c4ae16c9f4fc30a7f9f941 Mon Sep 17 00:00:00 2001 From: Eugen Betke Date: Tue, 13 Jun 2023 12:25:25 +0000 Subject: [PATCH 240/378] Ignore *.analyzerinfo *.snalyzerinfo files --- .gitignore | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitignore b/.gitignore index a20dc2122..bfdfd9434 100644 --- a/.gitignore +++ b/.gitignore @@ -15,6 +15,8 @@ configure grib_api.spec grib_api.pc grib_api_f90.pc +*.analyzerinfo +*.snalyzerinfo # compiled source # ################### From a12e9114a8ce6c7990217ea10db13635cdf7008d Mon Sep 17 00:00:00 2001 From: Eugen Betke Date: Tue, 13 Jun 2023 13:57:49 +0000 Subject: [PATCH 241/378] ECC-1467: Make grib_power() a template function --- src/grib_api_cpp.h | 13 ------------- src/grib_api_internal_cpp.h | 17 ----------------- 2 files changed, 30 deletions(-) delete mode 100644 src/grib_api_cpp.h delete mode 100644 src/grib_api_internal_cpp.h diff --git a/src/grib_api_cpp.h b/src/grib_api_cpp.h deleted file mode 100644 index aac0a52f1..000000000 --- a/src/grib_api_cpp.h +++ /dev/null @@ -1,13 +0,0 @@ -/* - * (C) Copyright 2005- ECMWF. - * - * This software is licensed under the terms of the Apache Licence Version 2.0 - * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. - * - * In applying this licence, ECMWF does not waive the privileges and immunities granted to it by - * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. - */ - -#pragma once - -//template T grib_power(long s, long n); diff --git a/src/grib_api_internal_cpp.h b/src/grib_api_internal_cpp.h deleted file mode 100644 index 2c23dcab5..000000000 --- a/src/grib_api_internal_cpp.h +++ /dev/null @@ -1,17 +0,0 @@ -/* - * (C) Copyright 2005- ECMWF. - * - * This software is licensed under the terms of the Apache Licence Version 2.0 - * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. - * - * In applying this licence, ECMWF does not waive the privileges and immunities granted to it by - * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. - */ - -#pragma once - -#include "grib_accessor.h" -#include "grib_value.h" -#include "grib_bits_any_endian_simple.h" -#include "grib_ieeefloat.h" -#include "grib_scaling.h" From e8e4beb5c72cc94d6ec4afb6664da8a32b0df99e Mon Sep 17 00:00:00 2001 From: Eugen Betke Date: Tue, 13 Jun 2023 14:09:52 +0000 Subject: [PATCH 242/378] ECC-1467: Make grib_power() a template function --- src/functions.cc | 2 +- src/grib_accessor_class_apply_operators.cc | 3 +-- src/grib_accessor_class_bufr_data_array.cc | 2 +- src/grib_accessor_class_bufr_elements_table.cc | 2 +- src/grib_accessor_class_data_2order_packing.cc | 2 +- src/grib_accessor_class_data_apply_bitmap.cc | 2 +- src/grib_accessor_class_data_ccsds_packing.cc | 3 ++- src/grib_accessor_class_data_complex_packing.cc | 4 ++-- ...cessor_class_data_g1second_order_constant_width_packing.cc | 2 +- ...ssor_class_data_g1second_order_general_extended_packing.cc | 2 +- ...grib_accessor_class_data_g1second_order_general_packing.cc | 2 +- ...b_accessor_class_data_g1second_order_row_by_row_packing.cc | 2 +- src/grib_accessor_class_data_g1simple_packing.cc | 2 +- src/grib_accessor_class_data_g22order_packing.cc | 2 +- src/grib_accessor_class_data_g2bifourier_packing.cc | 2 +- src/grib_accessor_class_data_g2simple_packing.cc | 2 +- src/grib_accessor_class_data_jpeg2000_packing.cc | 2 +- src/grib_accessor_class_data_png_packing.cc | 2 +- src/grib_accessor_class_data_raw_packing.cc | 2 +- src/grib_accessor_class_data_run_length_packing.cc | 2 +- src/grib_accessor_class_data_sh_packed.cc | 2 +- src/grib_accessor_class_data_sh_unpacked.cc | 2 +- src/grib_accessor_class_data_simple_packing.cc | 3 ++- src/grib_accessor_class_expanded_descriptors.cc | 2 +- src/grib_accessor_class_gen.cc | 2 +- src/grib_accessor_class_second_order_bits_per_value.cc | 2 +- src/grib_accessor_class_simple_packing_error.cc | 2 +- src/grib_bufr_descriptor.cc | 2 +- src/grib_optimize_decimal_factor.cc | 2 +- src/grib_scaling.cc | 2 +- 30 files changed, 33 insertions(+), 32 deletions(-) diff --git a/src/functions.cc b/src/functions.cc index 3c84d1dc1..fdcf9bf8e 100644 --- a/src/functions.cc +++ b/src/functions.cc @@ -8,7 +8,7 @@ * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. */ -#include "grib_api_internal_cpp.h" +#include "grib_scaling.h" #include "grib_api_internal.h" long grib_op_eq(long a, long b) diff --git a/src/grib_accessor_class_apply_operators.cc b/src/grib_accessor_class_apply_operators.cc index 5aa497e65..1a40320fe 100644 --- a/src/grib_accessor_class_apply_operators.cc +++ b/src/grib_accessor_class_apply_operators.cc @@ -8,8 +8,7 @@ * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. */ - -#include "grib_api_internal_cpp.h" +#include "grib_scaling.h" #include "grib_api_internal.h" /* This is used by make_class.pl diff --git a/src/grib_accessor_class_bufr_data_array.cc b/src/grib_accessor_class_bufr_data_array.cc index b9826b8f9..65874b5ca 100644 --- a/src/grib_accessor_class_bufr_data_array.cc +++ b/src/grib_accessor_class_bufr_data_array.cc @@ -7,7 +7,7 @@ * In applying this licence, ECMWF does not waive the privileges and immunities granted to it by * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. */ -#include "grib_api_internal_cpp.h" +#include "grib_scaling.h" #include "grib_api_internal.h" /* diff --git a/src/grib_accessor_class_bufr_elements_table.cc b/src/grib_accessor_class_bufr_elements_table.cc index 07b765591..320c86f8e 100644 --- a/src/grib_accessor_class_bufr_elements_table.cc +++ b/src/grib_accessor_class_bufr_elements_table.cc @@ -12,7 +12,7 @@ * Enrico Fucile ****************************************/ -#include "grib_api_internal_cpp.h" +#include "grib_scaling.h" #include "grib_api_internal.h" #if GRIB_PTHREADS diff --git a/src/grib_accessor_class_data_2order_packing.cc b/src/grib_accessor_class_data_2order_packing.cc index f2edfe246..ee8ef5983 100644 --- a/src/grib_accessor_class_data_2order_packing.cc +++ b/src/grib_accessor_class_data_2order_packing.cc @@ -8,7 +8,7 @@ * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. */ -#include "grib_api_internal_cpp.h" +#include "grib_scaling.h" #include "grib_api_internal.h" /* diff --git a/src/grib_accessor_class_data_apply_bitmap.cc b/src/grib_accessor_class_data_apply_bitmap.cc index b187dec39..6fad8640a 100644 --- a/src/grib_accessor_class_data_apply_bitmap.cc +++ b/src/grib_accessor_class_data_apply_bitmap.cc @@ -8,7 +8,7 @@ * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. */ -#include "grib_api_internal_cpp.h" +#include "grib_value.h" /* This is used by make_class.pl diff --git a/src/grib_accessor_class_data_ccsds_packing.cc b/src/grib_accessor_class_data_ccsds_packing.cc index bda1a7004..0d3858fbd 100644 --- a/src/grib_accessor_class_data_ccsds_packing.cc +++ b/src/grib_accessor_class_data_ccsds_packing.cc @@ -8,7 +8,8 @@ * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. */ -#include "grib_api_internal_cpp.h" +#include "grib_bits_any_endian_simple.h" +#include "grib_scaling.h" /* This is used by make_class.pl diff --git a/src/grib_accessor_class_data_complex_packing.cc b/src/grib_accessor_class_data_complex_packing.cc index 606131f7a..0f01edfbc 100644 --- a/src/grib_accessor_class_data_complex_packing.cc +++ b/src/grib_accessor_class_data_complex_packing.cc @@ -8,8 +8,8 @@ * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. */ -#include "grib_api_cpp.h" -#include "grib_api_internal_cpp.h" +#include "grib_ieeefloat.h" +#include "grib_scaling.h" #include /* This is used by make_class.pl diff --git a/src/grib_accessor_class_data_g1second_order_constant_width_packing.cc b/src/grib_accessor_class_data_g1second_order_constant_width_packing.cc index bba4cd2fa..fcd19f261 100644 --- a/src/grib_accessor_class_data_g1second_order_constant_width_packing.cc +++ b/src/grib_accessor_class_data_g1second_order_constant_width_packing.cc @@ -8,7 +8,7 @@ * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. */ -#include "grib_api_internal_cpp.h" +#include "grib_scaling.h" #include "grib_api_internal.h" /* diff --git a/src/grib_accessor_class_data_g1second_order_general_extended_packing.cc b/src/grib_accessor_class_data_g1second_order_general_extended_packing.cc index 19a997436..f34a3ca4e 100644 --- a/src/grib_accessor_class_data_g1second_order_general_extended_packing.cc +++ b/src/grib_accessor_class_data_g1second_order_general_extended_packing.cc @@ -8,7 +8,7 @@ * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. */ -#include "grib_api_internal_cpp.h" +#include "grib_scaling.h" #include "grib_api_internal.h" #include "grib_optimize_decimal_factor.h" diff --git a/src/grib_accessor_class_data_g1second_order_general_packing.cc b/src/grib_accessor_class_data_g1second_order_general_packing.cc index 60d99a237..f0f9f54b3 100644 --- a/src/grib_accessor_class_data_g1second_order_general_packing.cc +++ b/src/grib_accessor_class_data_g1second_order_general_packing.cc @@ -8,7 +8,7 @@ * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. */ -#include "grib_api_internal_cpp.h" +#include "grib_scaling.h" #include "grib_api_internal.h" #include diff --git a/src/grib_accessor_class_data_g1second_order_row_by_row_packing.cc b/src/grib_accessor_class_data_g1second_order_row_by_row_packing.cc index b43cbccc1..19a9df467 100644 --- a/src/grib_accessor_class_data_g1second_order_row_by_row_packing.cc +++ b/src/grib_accessor_class_data_g1second_order_row_by_row_packing.cc @@ -8,7 +8,7 @@ * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. */ -#include "grib_api_internal_cpp.h" +#include "grib_scaling.h" #include "grib_api_internal.h" /* diff --git a/src/grib_accessor_class_data_g1simple_packing.cc b/src/grib_accessor_class_data_g1simple_packing.cc index 9526a8b83..4b98368cb 100644 --- a/src/grib_accessor_class_data_g1simple_packing.cc +++ b/src/grib_accessor_class_data_g1simple_packing.cc @@ -8,7 +8,7 @@ * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. */ -#include "grib_api_internal_cpp.h" +#include "grib_scaling.h" #include "grib_api_internal.h" /* diff --git a/src/grib_accessor_class_data_g22order_packing.cc b/src/grib_accessor_class_data_g22order_packing.cc index b01ba8d59..24d8d687d 100644 --- a/src/grib_accessor_class_data_g22order_packing.cc +++ b/src/grib_accessor_class_data_g22order_packing.cc @@ -9,7 +9,7 @@ */ -#include "grib_api_internal_cpp.h" +#include "grib_scaling.h" #include "grib_api_internal.h" #include diff --git a/src/grib_accessor_class_data_g2bifourier_packing.cc b/src/grib_accessor_class_data_g2bifourier_packing.cc index d9c09b95d..4d60288fa 100644 --- a/src/grib_accessor_class_data_g2bifourier_packing.cc +++ b/src/grib_accessor_class_data_g2bifourier_packing.cc @@ -12,7 +12,7 @@ * philippe.marguinaud@meteo.fr *******************************/ -#include "grib_api_internal_cpp.h" +#include "grib_scaling.h" #include "grib_api_internal.h" #include "grib_optimize_decimal_factor.h" #include diff --git a/src/grib_accessor_class_data_g2simple_packing.cc b/src/grib_accessor_class_data_g2simple_packing.cc index 974c23226..8347a1549 100644 --- a/src/grib_accessor_class_data_g2simple_packing.cc +++ b/src/grib_accessor_class_data_g2simple_packing.cc @@ -8,7 +8,7 @@ * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. */ -#include "grib_api_internal_cpp.h" +#include "grib_scaling.h" #include "grib_api_internal.h" /* diff --git a/src/grib_accessor_class_data_jpeg2000_packing.cc b/src/grib_accessor_class_data_jpeg2000_packing.cc index 78441f478..b3fde5e49 100644 --- a/src/grib_accessor_class_data_jpeg2000_packing.cc +++ b/src/grib_accessor_class_data_jpeg2000_packing.cc @@ -8,7 +8,7 @@ * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. */ -#include "grib_api_internal_cpp.h" +#include "grib_scaling.h" #include "grib_api_internal.h" /* diff --git a/src/grib_accessor_class_data_png_packing.cc b/src/grib_accessor_class_data_png_packing.cc index 5c8edf76a..0bebb23f8 100644 --- a/src/grib_accessor_class_data_png_packing.cc +++ b/src/grib_accessor_class_data_png_packing.cc @@ -8,7 +8,7 @@ * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. */ -#include "grib_api_internal_cpp.h" +#include "grib_scaling.h" #include "grib_api_internal.h" #define PNG_ANYBITS diff --git a/src/grib_accessor_class_data_raw_packing.cc b/src/grib_accessor_class_data_raw_packing.cc index b44094719..2d36ef58a 100644 --- a/src/grib_accessor_class_data_raw_packing.cc +++ b/src/grib_accessor_class_data_raw_packing.cc @@ -11,7 +11,7 @@ * Enrico Fucile ****************************/ -#include "grib_api_internal_cpp.h" +#include "grib_ieeefloat.h" #define PRE_PROCESSING_NONE 0 #define PRE_PROCESSING_DIFFERENCE 1 diff --git a/src/grib_accessor_class_data_run_length_packing.cc b/src/grib_accessor_class_data_run_length_packing.cc index 71c16f495..d20697e1d 100644 --- a/src/grib_accessor_class_data_run_length_packing.cc +++ b/src/grib_accessor_class_data_run_length_packing.cc @@ -8,7 +8,7 @@ * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. */ -#include "grib_api_internal_cpp.h" +#include "grib_scaling.h" #include "grib_api_internal.h" /* diff --git a/src/grib_accessor_class_data_sh_packed.cc b/src/grib_accessor_class_data_sh_packed.cc index 2741d6b41..d5cdc5ccb 100644 --- a/src/grib_accessor_class_data_sh_packed.cc +++ b/src/grib_accessor_class_data_sh_packed.cc @@ -8,7 +8,7 @@ * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. */ -#include "grib_api_internal_cpp.h" +#include "grib_scaling.h" #include "grib_api_internal.h" #include /* diff --git a/src/grib_accessor_class_data_sh_unpacked.cc b/src/grib_accessor_class_data_sh_unpacked.cc index 8894e8bc2..c0db2fa99 100644 --- a/src/grib_accessor_class_data_sh_unpacked.cc +++ b/src/grib_accessor_class_data_sh_unpacked.cc @@ -8,7 +8,7 @@ * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. */ -#include "grib_api_internal_cpp.h" +#include "grib_scaling.h" #include "grib_api_internal.h" #include /* diff --git a/src/grib_accessor_class_data_simple_packing.cc b/src/grib_accessor_class_data_simple_packing.cc index 192adddd5..80b632035 100644 --- a/src/grib_accessor_class_data_simple_packing.cc +++ b/src/grib_accessor_class_data_simple_packing.cc @@ -8,7 +8,8 @@ * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. */ -#include "grib_api_internal_cpp.h" +#include "grib_scaling.h" +#include "grib_bits_any_endian_simple.h" #include "grib_optimize_decimal_factor.h" #include diff --git a/src/grib_accessor_class_expanded_descriptors.cc b/src/grib_accessor_class_expanded_descriptors.cc index ee6bd8fbb..61e961396 100644 --- a/src/grib_accessor_class_expanded_descriptors.cc +++ b/src/grib_accessor_class_expanded_descriptors.cc @@ -15,7 +15,7 @@ can appear */ -#include "grib_api_internal_cpp.h" +#include "grib_scaling.h" #include "grib_api_internal.h" /* This is used by make_class.pl diff --git a/src/grib_accessor_class_gen.cc b/src/grib_accessor_class_gen.cc index ba85a8855..82064b987 100644 --- a/src/grib_accessor_class_gen.cc +++ b/src/grib_accessor_class_gen.cc @@ -14,9 +14,9 @@ * Shahram Najm * ***************************************************************************/ #include "grib_api_internal.h" +#include "grib_value.h" #include #include -#include "grib_api_internal_cpp.h" /* This is used by make_class.pl diff --git a/src/grib_accessor_class_second_order_bits_per_value.cc b/src/grib_accessor_class_second_order_bits_per_value.cc index ae807f7cb..00d8f9958 100644 --- a/src/grib_accessor_class_second_order_bits_per_value.cc +++ b/src/grib_accessor_class_second_order_bits_per_value.cc @@ -12,7 +12,7 @@ * Enrico Fucile **********************************/ -#include "grib_api_internal_cpp.h" +#include "grib_scaling.h" #include "grib_api_internal.h" /* This is used by make_class.pl diff --git a/src/grib_accessor_class_simple_packing_error.cc b/src/grib_accessor_class_simple_packing_error.cc index 591c35563..50ea5be57 100644 --- a/src/grib_accessor_class_simple_packing_error.cc +++ b/src/grib_accessor_class_simple_packing_error.cc @@ -13,7 +13,7 @@ **************************************/ -#include "grib_api_internal_cpp.h" +#include "grib_scaling.h" #include "grib_api_internal.h" /* This is used by make_class.pl diff --git a/src/grib_bufr_descriptor.cc b/src/grib_bufr_descriptor.cc index 99a406783..9d8516103 100644 --- a/src/grib_bufr_descriptor.cc +++ b/src/grib_bufr_descriptor.cc @@ -9,7 +9,7 @@ */ -#include "grib_api_internal_cpp.h" +#include "grib_scaling.h" #include "grib_api_internal.h" bufr_descriptor* grib_bufr_descriptor_new(grib_accessor* tables_accessor, int code, int silent, int* err) diff --git a/src/grib_optimize_decimal_factor.cc b/src/grib_optimize_decimal_factor.cc index bb4a64ce1..2e31e2c23 100644 --- a/src/grib_optimize_decimal_factor.cc +++ b/src/grib_optimize_decimal_factor.cc @@ -8,7 +8,7 @@ * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. */ -#include "grib_api_internal_cpp.h" +#include "grib_scaling.h" #include "grib_api_internal.h" #include "grib_optimize_decimal_factor.h" #include diff --git a/src/grib_scaling.cc b/src/grib_scaling.cc index 2f2d98863..e31e4cfb8 100644 --- a/src/grib_scaling.cc +++ b/src/grib_scaling.cc @@ -12,7 +12,7 @@ * Enrico Fucile **************************************/ -#include "grib_api_internal_cpp.h" +#include "grib_scaling.h" #include "grib_api_internal.h" long grib_get_binary_scale_fact(double max, double min, long bpval, int* ret) From a61073e179a389d4bd7550d3ee064af922bd6c16 Mon Sep 17 00:00:00 2001 From: Eugen Betke Date: Tue, 13 Jun 2023 14:20:58 +0000 Subject: [PATCH 243/378] ECC-1467: Restore grib_fortran.c --- fortran/grib_fortran.c | 53 +++++++++++++++++++----------------------- 1 file changed, 24 insertions(+), 29 deletions(-) diff --git a/fortran/grib_fortran.c b/fortran/grib_fortran.c index e6fa07439..976eaa2ce 100644 --- a/fortran/grib_fortran.c +++ b/fortran/grib_fortran.c @@ -2783,41 +2783,38 @@ int grib_f_get_real4(int* gid, char* key, float* val, int len){ int grib_f_get_real4_array_(int* gid, char* key, float *val, int* size, int len) { - /*See ECC-1579:*/ - /*Ideally we should be calling:*/ - - size_t lsize = *size; - char buf[1024]; + /* See ECC-1579: + * Ideally we should be calling: + * err = grib_get_float_array(h, cast_char(buf,key,len), val, &lsize); + * + */ + grib_handle *h = get_handle(*gid); int err = GRIB_SUCCESS; - err = grib_get_float_array(h, cast_char(buf,key,len), val, &lsize); - - /*grib_handle *h = get_handle(*gid);*/ - /*int err = GRIB_SUCCESS;*/ - /*char buf[1024];*/ - /*size_t lsize = *size;*/ - /*double* val8 = NULL;*/ - /*size_t i;*/ + char buf[1024]; + size_t lsize = *size; + double* val8 = NULL; + size_t i; - /*if(!h) return GRIB_INVALID_GRIB;*/ + if(!h) return GRIB_INVALID_GRIB; - /*if(*size)*/ - /* val8 = (double*)grib_context_malloc(h->context,(*size)*(sizeof(double)));*/ - /*else*/ - /* val8 = (double*)grib_context_malloc(h->context,sizeof(double));*/ + if(*size) + val8 = (double*)grib_context_malloc(h->context,(*size)*(sizeof(double))); + else + val8 = (double*)grib_context_malloc(h->context,sizeof(double)); - /*if(!val8) return GRIB_OUT_OF_MEMORY;*/ + if(!val8) return GRIB_OUT_OF_MEMORY; - /*err = grib_get_double_array(h, cast_char(buf,key,len), val8, &lsize);*/ - /*if (err) {*/ - /* grib_context_free(h->context,val8);*/ - /* return err;*/ - /*}*/ + err = grib_get_double_array(h, cast_char(buf,key,len), val8, &lsize); + if (err) { + grib_context_free(h->context,val8); + return err; + } - /*for(i=0;icontext,val8);*/ + grib_context_free(h->context,val8); return err; } @@ -3160,7 +3157,6 @@ int grib_f_get_real8_array_(int* gid, char* key, double*val, int* size, int len) return GRIB_INVALID_GRIB; }else{ err = grib_get_double_array(h, cast_char(buf,key,len), val, &lsize); - printf("%30s - %0.60f\n", __func__, val[40]); *size = lsize; return err; } @@ -3170,7 +3166,6 @@ int grib_f_get_real8_array__(int* gid, char* key, double*val, int* size, int len } int grib_f_get_real8_array(int* gid, char* key, double*val, int* size, int len){ return grib_f_get_real8_array_( gid, key, val, size, len); - printf("%s - %0.60f\n", __func__, val[40]); } int grib_f_set_force_real8_array__(int* gid, char* key, double *val, int* size, int len){ From 7135a7f8b87e402d0e915758caac4b3def838c31 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 14 Jun 2023 10:05:57 +0000 Subject: [PATCH 244/378] Direct users to the support portal --- INSTALL | 6 ++---- README.md | 4 ++-- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/INSTALL b/INSTALL index 802e3cc22..b75d5b2b5 100644 --- a/INSTALL +++ b/INSTALL @@ -3,11 +3,9 @@ How to build and install ecCodes library/tools Building and installation has been tested on several platforms and with several compilers. However for some platforms modifications to the installation engine may be required. -If you encounter any problems during the installation procedure please send an e-mail -with your problem to: - - Software.Support@ecmwf.int +If you encounter any problems during the installation procedure, please visit our Support Portal: + https://support.ecmwf.int Installation using CMake ------------------------ diff --git a/README.md b/README.md index 982fd2476..024dc5c33 100644 --- a/README.md +++ b/README.md @@ -67,9 +67,9 @@ To add the Python3 bindings, use pip3 install from PyPI as follows: For more details, please see: https://confluence.ecmwf.int/display/ECC/ecCodes+installation -If you encounter any problems please send an e-mail with your problem to: +If you encounter any problems please visit our Support Portal: - Software.Support@ecmwf.int + https://support.ecmwf.int From cca1a8b743d728b3e9c83fba06d88b1daf7f6205 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 14 Jun 2023 13:04:28 +0100 Subject: [PATCH 245/378] cpplint warning: runtime/references --- src/grib_accessor_class_data_ccsds_packing.cc | 44 +++++++++---------- 1 file changed, 21 insertions(+), 23 deletions(-) diff --git a/src/grib_accessor_class_data_ccsds_packing.cc b/src/grib_accessor_class_data_ccsds_packing.cc index 2fabe2c44..c317521a3 100644 --- a/src/grib_accessor_class_data_ccsds_packing.cc +++ b/src/grib_accessor_class_data_ccsds_packing.cc @@ -57,8 +57,6 @@ static void init(grib_accessor*, const long, grib_arguments*); //static void init_class(grib_accessor_class*); static int unpack_double_element(grib_accessor*, size_t i, double* val); static int unpack_double_element_set(grib_accessor*, const size_t* index_array, size_t len, double* val_array); -static bool is_big_endian(); -static void modify_aec_flags(long& flags); typedef struct grib_accessor_data_ccsds_packing { @@ -176,7 +174,24 @@ static int value_count(grib_accessor* a, long* count) #error Version of libaec appears to be too old. Please upgrade. #endif -const char* aec_get_error_message(int code) +static bool is_big_endian() +{ + unsigned char is_big_endian = 0; + unsigned short endianess_test = 1; + return reinterpret_cast(&endianess_test)[0] == is_big_endian; +} + +static void modify_aec_flags(long* flags) +{ + // ECC-1602: Performance improvement: enabled the use of native data types + *flags &= ~AEC_DATA_3BYTE; // disable support for 3-bytes per value + if (is_big_endian()) + *flags |= AEC_DATA_MSB; // enable big-endian + else + *flags &= ~AEC_DATA_MSB; // enable little-endian +} + +static const char* aec_get_error_message(int code) { if (code == AEC_MEM_ERROR) return "AEC_MEM_ERROR"; if (code == AEC_DATA_ERROR) return "AEC_DATA_ERROR"; @@ -186,7 +201,7 @@ const char* aec_get_error_message(int code) return "Unknown error code"; } -void print_aec_stream_info(struct aec_stream* strm, const char* func) +static void print_aec_stream_info(struct aec_stream* strm, const char* func) { fprintf(stderr, "ECCODES DEBUG CCSDS %s aec_stream.flags=%u\n", func, strm->flags); fprintf(stderr, "ECCODES DEBUG CCSDS %s aec_stream.bits_per_sample=%u\n", func, strm->bits_per_sample); @@ -243,7 +258,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) if ((err = grib_get_long_internal(hand, self->ccsds_rsi, &ccsds_rsi)) != GRIB_SUCCESS) return err; - modify_aec_flags(ccsds_flags); + modify_aec_flags(&ccsds_flags); // Special case if (*len == 0) { @@ -482,23 +497,6 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) return err; } -static bool is_big_endian() -{ - unsigned char is_big_endian = 0; - unsigned short endianess_test = 1; - return reinterpret_cast(&endianess_test)[0] == is_big_endian; -} - -static void modify_aec_flags(long& flags) -{ - // ECC-1602: Performance improvement: enabled the use of native data types - flags &= ~AEC_DATA_3BYTE; // disable support for 3-bytes per value - if (is_big_endian()) - flags |= AEC_DATA_MSB; // enable big-endian - else - flags &= ~AEC_DATA_MSB; // enable little-endian -} - template static int unpack(grib_accessor* a, T* val, size_t* len) { @@ -553,7 +551,7 @@ static int unpack(grib_accessor* a, T* val, size_t* len) if ((err = grib_get_long_internal(hand, self->ccsds_rsi, &ccsds_rsi)) != GRIB_SUCCESS) return err; - modify_aec_flags(ccsds_flags); + modify_aec_flags(&ccsds_flags); // TODO(masn): This should be called upstream if (*len < n_vals) From 7c08ef63e37ace689e950b96eba0384e0d3d2f23 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 12 Jun 2023 20:11:07 +0100 Subject: [PATCH 246/378] BUFR: Add function to determine if a key is a coordinate descriptor --- src/bufr_util.cc | 11 ++++++++ src/eccodes.h | 4 +++ src/eccodes_prototypes.h | 1 + src/grib_accessor_class_bufr_data_array.cc | 5 ++++ src/grib_api_internal.h | 33 +++++++++++----------- 5 files changed, 38 insertions(+), 16 deletions(-) diff --git a/src/bufr_util.cc b/src/bufr_util.cc index b19df6fd4..0bdfa8403 100644 --- a/src/bufr_util.cc +++ b/src/bufr_util.cc @@ -1123,3 +1123,14 @@ int codes_bufr_key_is_header(const grib_handle* h, const char* key, int* err) } return ((acc->flags & GRIB_ACCESSOR_FLAG_BUFR_DATA) == 0); } + +/* Returns 1 if the BUFR key is a coordinate descriptor */ +int codes_bufr_key_is_coordinate(const grib_handle* h, const char* key, int* err) +{ + grib_accessor* acc = grib_find_accessor(h, key); + if (!acc) { + *err = GRIB_NOT_FOUND; + return 0; + } + return ((acc->flags & GRIB_ACCESSOR_FLAG_BUFR_COORD) != 0); +} diff --git a/src/eccodes.h b/src/eccodes.h index cb47d8ca0..7f8fd1941 100644 --- a/src/eccodes.h +++ b/src/eccodes.h @@ -1360,6 +1360,10 @@ int codes_is_defined(const codes_handle* h, const char* key); The error code is the final argument */ int codes_bufr_key_is_header(const codes_handle* h, const char* key, int* err); +/* Returns 1 if the BUFR key is a coordinate descriptor and 0 otherwise. + The error code is the final argument */ +int codes_bufr_key_is_coordinate(const codes_handle* h, const char* key, int* err); + int codes_set_missing(codes_handle* h, const char* key); /* The truncation is the Gaussian number (or order) */ int codes_get_gaussian_latitudes(long truncation, double* latitudes); diff --git a/src/eccodes_prototypes.h b/src/eccodes_prototypes.h index 5d27ec67f..58b462538 100644 --- a/src/eccodes_prototypes.h +++ b/src/eccodes_prototypes.h @@ -1479,6 +1479,7 @@ int codes_bufr_copy_data(grib_handle* hin, grib_handle* hout); int codes_bufr_extract_headers_malloc(grib_context* c, const char* filename, codes_bufr_header** result, int* num_messages, int strict_mode); int codes_bufr_header_get_string(codes_bufr_header* bh, const char* key, char* val, size_t* len); int codes_bufr_key_is_header(const grib_handle* h, const char* key, int* err); +int codes_bufr_key_is_coordinate(const grib_handle* h, const char* key, int* err); /* string_util.cc*/ int strcmp_nocase(const char* s1, const char* s2); diff --git a/src/grib_accessor_class_bufr_data_array.cc b/src/grib_accessor_class_bufr_data_array.cc index 64731fa28..ef70c92a2 100644 --- a/src/grib_accessor_class_bufr_data_array.cc +++ b/src/grib_accessor_class_bufr_data_array.cc @@ -2562,6 +2562,8 @@ static int create_keys(const grib_accessor* a, long onlySubset, long startSubset gaGroup = grib_accessor_factory(groupSection, &creatorGroup, 0, NULL); gaGroup->sub_section = grib_section_create(hand, gaGroup); gaGroup->bufr_group_number = groupNumber; + + //gaGroup->flags |= GRIB_ACCESSOR_FLAG_BUFR_COORD; //?? accessor_constant_set_type(gaGroup, GRIB_TYPE_LONG); accessor_constant_set_dval(gaGroup, groupNumber); grib_push_accessor(gaGroup, groupSection->block); @@ -2734,6 +2736,9 @@ static int create_keys(const grib_accessor* a, long onlySubset, long startSubset } } if (add_key) { + if (descriptor->F == 0 && IS_COORDINATE_DESCRIPTOR(descriptor->X)) { //?? + elementAccessor->flags |= GRIB_ACCESSOR_FLAG_BUFR_COORD; + } grib_push_accessor(elementAccessor, section->block); rank = grib_data_accessors_trie_push(self->dataAccessorsTrie, elementAccessor); grib_accessors_list_push(self->dataAccessors, elementAccessor, rank); diff --git a/src/grib_api_internal.h b/src/grib_api_internal.h index 88d8a50f9..8b947819e 100644 --- a/src/grib_api_internal.h +++ b/src/grib_api_internal.h @@ -562,23 +562,24 @@ struct grib_accessor grib_accessor* parent_as_attribute; }; -#define GRIB_ACCESSOR_FLAG_READ_ONLY (1 << 1) -#define GRIB_ACCESSOR_FLAG_DUMP (1 << 2) +#define GRIB_ACCESSOR_FLAG_READ_ONLY (1 << 1) +#define GRIB_ACCESSOR_FLAG_DUMP (1 << 2) #define GRIB_ACCESSOR_FLAG_EDITION_SPECIFIC (1 << 3) -#define GRIB_ACCESSOR_FLAG_CAN_BE_MISSING (1 << 4) -#define GRIB_ACCESSOR_FLAG_HIDDEN (1 << 5) -#define GRIB_ACCESSOR_FLAG_CONSTRAINT (1 << 6) -#define GRIB_ACCESSOR_FLAG_BUFR_DATA (1 << 7) -#define GRIB_ACCESSOR_FLAG_NO_COPY (1 << 8) -#define GRIB_ACCESSOR_FLAG_COPY_OK (1 << 9) -#define GRIB_ACCESSOR_FLAG_FUNCTION (1 << 10) -#define GRIB_ACCESSOR_FLAG_DATA (1 << 11) -#define GRIB_ACCESSOR_FLAG_NO_FAIL (1 << 12) -#define GRIB_ACCESSOR_FLAG_TRANSIENT (1 << 13) -#define GRIB_ACCESSOR_FLAG_STRING_TYPE (1 << 14) -#define GRIB_ACCESSOR_FLAG_LONG_TYPE (1 << 15) -#define GRIB_ACCESSOR_FLAG_DOUBLE_TYPE (1 << 16) -#define GRIB_ACCESSOR_FLAG_LOWERCASE (1 << 17) +#define GRIB_ACCESSOR_FLAG_CAN_BE_MISSING (1 << 4) +#define GRIB_ACCESSOR_FLAG_HIDDEN (1 << 5) +#define GRIB_ACCESSOR_FLAG_CONSTRAINT (1 << 6) +#define GRIB_ACCESSOR_FLAG_BUFR_DATA (1 << 7) +#define GRIB_ACCESSOR_FLAG_NO_COPY (1 << 8) +#define GRIB_ACCESSOR_FLAG_COPY_OK (1 << 9) +#define GRIB_ACCESSOR_FLAG_FUNCTION (1 << 10) +#define GRIB_ACCESSOR_FLAG_DATA (1 << 11) +#define GRIB_ACCESSOR_FLAG_NO_FAIL (1 << 12) +#define GRIB_ACCESSOR_FLAG_TRANSIENT (1 << 13) +#define GRIB_ACCESSOR_FLAG_STRING_TYPE (1 << 14) +#define GRIB_ACCESSOR_FLAG_LONG_TYPE (1 << 15) +#define GRIB_ACCESSOR_FLAG_DOUBLE_TYPE (1 << 16) +#define GRIB_ACCESSOR_FLAG_LOWERCASE (1 << 17) +#define GRIB_ACCESSOR_FLAG_BUFR_COORD (1 << 18) /** * a section accessor From 9cccaec4edc32d3b2404cf10101ce72db3ddb167 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 13 Jun 2023 20:52:59 +0100 Subject: [PATCH 247/378] ECC-1611: C API: Add function to determine if a BUFR key is a coordinate descriptor --- src/grib_accessor_class_bufr_data_array.cc | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/src/grib_accessor_class_bufr_data_array.cc b/src/grib_accessor_class_bufr_data_array.cc index ef70c92a2..6e4189168 100644 --- a/src/grib_accessor_class_bufr_data_array.cc +++ b/src/grib_accessor_class_bufr_data_array.cc @@ -1961,7 +1961,8 @@ static int adding_extra_key_attributes(grib_handle* h) } static grib_accessor* create_accessor_from_descriptor(const grib_accessor* a, grib_accessor* attribute, grib_section* section, - long ide, long subset, int add_dump_flag, int count, int add_extra_attributes) + long ide, long subset, int add_dump_flag, int add_coord_flag, + int count, int add_extra_attributes) { grib_accessor_bufr_data_array* self = (grib_accessor_bufr_data_array*)a; char code[10] = {0,}; @@ -1989,6 +1990,10 @@ static grib_accessor* create_accessor_from_descriptor(const grib_accessor* a, gr creator.flags = GRIB_ACCESSOR_FLAG_DUMP; operatorCreator.flags |= GRIB_ACCESSOR_FLAG_DUMP; } + if (add_coord_flag) { + creator.flags |= GRIB_ACCESSOR_FLAG_BUFR_COORD; + operatorCreator.flags |= GRIB_ACCESSOR_FLAG_BUFR_COORD; + } idx = self->compressedData ? self->elementsDescriptorsIndex->v[0]->v[ide] : self->elementsDescriptorsIndex->v[subset]->v[ide]; @@ -1996,6 +2001,7 @@ static grib_accessor* create_accessor_from_descriptor(const grib_accessor* a, gr case 0: case 1: creator.name = grib_context_strdup(a->context, self->expanded->v[idx]->shortName); + /* ECC-325: store alloc'd string (due to strdup) for clean up later */ grib_sarray_push(a->context, self->tempStrings, creator.name); elementAccessor = grib_accessor_factory(section, &creator, 0, NULL); @@ -2466,7 +2472,7 @@ static int create_keys(const grib_accessor* a, long onlySubset, long startSubset grib_accessor* elementFromBitmap = NULL; grib_handle* hand = grib_handle_of_accessor(a); /*int reuseBitmap=0;*/ - int add_dump_flag = 1, count = 0; + int add_dump_flag = 1, add_coord_flag = 0, count = 0; /*int forceGroupClosure=0;*/ creatorGroup.op = (char*)"bufr_group"; @@ -2533,11 +2539,13 @@ static int create_keys(const grib_accessor* a, long onlySubset, long startSubset continue; /* Descriptor does not have an associated key e.g. inside op 203YYY */ } elementFromBitmap = NULL; + add_coord_flag = 0; if (descriptor->F == 0 && IS_COORDINATE_DESCRIPTOR(descriptor->X) && self->unpackMode == CODES_BUFR_UNPACK_STRUCTURE) { const int sidx = descriptor->Y + significanceQualifierIndexArray[descriptor->X] * NUMBER_OF_QUALIFIERS_PER_CATEGORY; DebugAssert(sidx > 0); groupNumber++; + add_coord_flag = 1; if (significanceQualifierGroup[sidx]) { groupSection = significanceQualifierGroup[sidx]->parent; @@ -2563,7 +2571,6 @@ static int create_keys(const grib_accessor* a, long onlySubset, long startSubset gaGroup->sub_section = grib_section_create(hand, gaGroup); gaGroup->bufr_group_number = groupNumber; - //gaGroup->flags |= GRIB_ACCESSOR_FLAG_BUFR_COORD; //?? accessor_constant_set_type(gaGroup, GRIB_TYPE_LONG); accessor_constant_set_dval(gaGroup, groupNumber); grib_push_accessor(gaGroup, groupSection->block); @@ -2677,7 +2684,8 @@ static int create_keys(const grib_accessor* a, long onlySubset, long startSubset grib_accessors_list_push(self->dataAccessors, asn, rank); } count++; - elementAccessor = create_accessor_from_descriptor(a, associatedFieldAccessor, section, ide, iss, add_dump_flag, count, add_extra_attributes); + elementAccessor = create_accessor_from_descriptor(a, associatedFieldAccessor, section, ide, iss, + add_dump_flag, add_coord_flag, count, add_extra_attributes); if (!elementAccessor) { err = GRIB_DECODING_ERROR; return err; @@ -2736,9 +2744,6 @@ static int create_keys(const grib_accessor* a, long onlySubset, long startSubset } } if (add_key) { - if (descriptor->F == 0 && IS_COORDINATE_DESCRIPTOR(descriptor->X)) { //?? - elementAccessor->flags |= GRIB_ACCESSOR_FLAG_BUFR_COORD; - } grib_push_accessor(elementAccessor, section->block); rank = grib_data_accessors_trie_push(self->dataAccessorsTrie, elementAccessor); grib_accessors_list_push(self->dataAccessors, elementAccessor, rank); From d0d1c1fa31b35d447ea1d98efae8ead33a21ab24 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 14 Jun 2023 19:49:23 +0100 Subject: [PATCH 248/378] ECC-1611: Add test --- tests/CMakeLists.txt | 3 ++ tests/bufr_coordinate_descriptors.cc | 74 ++++++++++++++++++++++++++++ tests/bufr_coordinate_descriptors.sh | 21 ++++++++ 3 files changed, 98 insertions(+) create mode 100644 tests/bufr_coordinate_descriptors.cc create mode 100755 tests/bufr_coordinate_descriptors.sh diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 8e64e8692..5ca17c7a9 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -41,6 +41,7 @@ list(APPEND test_c_bins bufr_extract_headers extract_offsets bufr_check_descriptors + bufr_coordinate_descriptors codes_new_from_samples codes_set_samples_path grib_sh_ieee64 @@ -75,6 +76,7 @@ if( HAVE_BUILD_TOOLS ) grib_dump_samples bufr_dump_samples bufr_check_descriptors + bufr_coordinate_descriptors definitions grib2_version grib_calendar @@ -440,6 +442,7 @@ else() unit_tests julian bufr_check_descriptors + bufr_coordinate_descriptors grib_sh_imag grib_sh_spectral_complex grib_2nd_order_numValues diff --git a/tests/bufr_coordinate_descriptors.cc b/tests/bufr_coordinate_descriptors.cc new file mode 100644 index 000000000..c089f16e2 --- /dev/null +++ b/tests/bufr_coordinate_descriptors.cc @@ -0,0 +1,74 @@ +/* + * (C) Copyright 2005- ECMWF. + * + * This software is licensed under the terms of the Apache Licence Version 2.0 + * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. + * + * In applying this licence, ECMWF does not waive the privileges and immunities granted to it by + * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. + */ + +#include "eccodes.h" +#undef NDEBUG +#include + +static int is_coord_using_Xcode(const char* X) +{ + if (strcmp(X, "01")==0) return 1; + if (strcmp(X, "02")==0) return 1; + if (strcmp(X, "04")==0) return 1; + if (strcmp(X, "05")==0) return 1; + if (strcmp(X, "06")==0) return 1; + if (strcmp(X, "07")==0) return 1; + if (strcmp(X, "08")==0) return 1; + return 0; +} + +int main(int argc, char* argv[]) +{ + int err = 0; + codes_handle* h = NULL; + char* filename = NULL; + FILE* fin = NULL; + + assert (argc == 2); + filename = argv[1]; + + fin = fopen(filename, "rb"); + assert(fin); + while ((h = codes_handle_new_from_file(NULL, fin, PRODUCT_BUFR, &err)) != NULL || err != CODES_SUCCESS) { + codes_bufr_keys_iterator* kiter = NULL; + CODES_CHECK(codes_set_long(h, "unpack", 1), 0); + kiter = codes_bufr_keys_iterator_new(h, 0); + assert(kiter); + while (codes_bufr_keys_iterator_next(kiter)) { + char* name = codes_bufr_keys_iterator_get_name(kiter); + if (strcmp(name, "subsetNumber") == 0) continue; + if (!codes_bufr_key_is_header(h, name, &err) && !err) { + char name1[256] = {0,}; + char scode[256] = {0,}; + char X[3] = {0,}; // the 'X' part of FXY + size_t slen = 256; + snprintf(name1, 256, "%s->code", name); + int error = codes_get_string(h, name1, scode, &slen); + if (!error) { + assert( strlen(scode)==6); + X[0] = scode[1]; + X[1] = scode[2]; + X[2] = 0; + int is_X_coord = is_coord_using_Xcode(X); + int is_coord = codes_bufr_key_is_coordinate(h, name, &error); + assert(!error); + if (is_coord != is_X_coord) { + fprintf(stderr, "ERROR: %s X=%s is_coord=%d is_X_coord=%d\n", name, X, is_coord, is_X_coord); + return 1; + } + } + } + } + codes_bufr_keys_iterator_delete(kiter); + codes_handle_delete(h); + } + fclose(fin); + return 0; +} diff --git a/tests/bufr_coordinate_descriptors.sh b/tests/bufr_coordinate_descriptors.sh new file mode 100755 index 000000000..41aebf8ba --- /dev/null +++ b/tests/bufr_coordinate_descriptors.sh @@ -0,0 +1,21 @@ +#!/bin/sh +# (C) Copyright 2005- ECMWF. +# +# This software is licensed under the terms of the Apache Licence Version 2.0 +# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. +# +# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by +# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. +# + +. ./include.ctest.sh + +label="bufr_coordinate_descriptors_test" +temp=temp.$label.txt + +bufr_files=`cat ${data_dir}/bufr/bufr_data_files.txt` +for f in ${bufr_files}; do + fpath=${data_dir}/bufr/$f + ${test_dir}/bufr_coordinate_descriptors $fpath +done +rm -f $temp From bb57d20fd5091ba45f42e44988df279d767d80f4 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 14 Jun 2023 20:38:26 +0100 Subject: [PATCH 249/378] ECC-1611: No need to add flag to operators --- src/grib_accessor_class_bufr_data_array.cc | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/grib_accessor_class_bufr_data_array.cc b/src/grib_accessor_class_bufr_data_array.cc index 6e4189168..33bc8c68c 100644 --- a/src/grib_accessor_class_bufr_data_array.cc +++ b/src/grib_accessor_class_bufr_data_array.cc @@ -1991,8 +1991,7 @@ static grib_accessor* create_accessor_from_descriptor(const grib_accessor* a, gr operatorCreator.flags |= GRIB_ACCESSOR_FLAG_DUMP; } if (add_coord_flag) { - creator.flags |= GRIB_ACCESSOR_FLAG_BUFR_COORD; - operatorCreator.flags |= GRIB_ACCESSOR_FLAG_BUFR_COORD; + creator.flags |= GRIB_ACCESSOR_FLAG_BUFR_COORD; // ECC-1611 } idx = self->compressedData ? self->elementsDescriptorsIndex->v[0]->v[ide] : self->elementsDescriptorsIndex->v[subset]->v[ide]; From 815f3dfd4a72b699e2e815dadb8adcad7803157c Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 14 Jun 2023 21:23:10 +0100 Subject: [PATCH 250/378] ECC-1611: Fix test --- tests/CMakeLists.txt | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 5ca17c7a9..0a923ace3 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -76,7 +76,6 @@ if( HAVE_BUILD_TOOLS ) grib_dump_samples bufr_dump_samples bufr_check_descriptors - bufr_coordinate_descriptors definitions grib2_version grib_calendar @@ -149,6 +148,7 @@ if( HAVE_BUILD_TOOLS ) bufr_templates bufr_dump_data bufr_dump_descriptors + bufr_coordinate_descriptors bufr_dump_subset bufr_dump_decode_filter bufr_dump_encode_filter @@ -442,7 +442,6 @@ else() unit_tests julian bufr_check_descriptors - bufr_coordinate_descriptors grib_sh_imag grib_sh_spectral_complex grib_2nd_order_numValues From 30673fd961d72786393a2792f3e44005fdeab660 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 15 Jun 2023 10:48:31 +0100 Subject: [PATCH 251/378] ECC-1611: Test non-coordinate keys too --- tests/bufr_coordinate_descriptors.cc | 39 ++++++++++++++++++---------- 1 file changed, 26 insertions(+), 13 deletions(-) diff --git a/tests/bufr_coordinate_descriptors.cc b/tests/bufr_coordinate_descriptors.cc index c089f16e2..d743024a2 100644 --- a/tests/bufr_coordinate_descriptors.cc +++ b/tests/bufr_coordinate_descriptors.cc @@ -12,24 +12,28 @@ #undef NDEBUG #include +// Get the X part of a BUFR descriptor (FXY) and determine if it +// is a coordinate. +// See https://confluence.ecmwf.int/display/UDOC/What+are+coordinate+descriptors+-+ecCodes+BUFR+FAQ static int is_coord_using_Xcode(const char* X) { - if (strcmp(X, "01")==0) return 1; - if (strcmp(X, "02")==0) return 1; - if (strcmp(X, "04")==0) return 1; - if (strcmp(X, "05")==0) return 1; - if (strcmp(X, "06")==0) return 1; - if (strcmp(X, "07")==0) return 1; - if (strcmp(X, "08")==0) return 1; + if (strcmp(X, "01") == 0) return 1; + if (strcmp(X, "02") == 0) return 1; + if (strcmp(X, "04") == 0) return 1; + if (strcmp(X, "05") == 0) return 1; + if (strcmp(X, "06") == 0) return 1; + if (strcmp(X, "07") == 0) return 1; + if (strcmp(X, "08") == 0) return 1; return 0; } int main(int argc, char* argv[]) { - int err = 0; - codes_handle* h = NULL; - char* filename = NULL; - FILE* fin = NULL; + int err = 0; + codes_handle* h = NULL; + char* filename = NULL; + FILE* fin = NULL; + int is_coord = 0; assert (argc == 2); filename = argv[1]; @@ -52,12 +56,12 @@ int main(int argc, char* argv[]) snprintf(name1, 256, "%s->code", name); int error = codes_get_string(h, name1, scode, &slen); if (!error) { - assert( strlen(scode)==6); + assert(strlen(scode) == 6); X[0] = scode[1]; X[1] = scode[2]; X[2] = 0; int is_X_coord = is_coord_using_Xcode(X); - int is_coord = codes_bufr_key_is_coordinate(h, name, &error); + is_coord = codes_bufr_key_is_coordinate(h, name, &error); assert(!error); if (is_coord != is_X_coord) { fprintf(stderr, "ERROR: %s X=%s is_coord=%d is_X_coord=%d\n", name, X, is_coord, is_X_coord); @@ -65,7 +69,16 @@ int main(int argc, char* argv[]) } } } + else { + // header keys cannot be coordinate descriptors + is_coord = codes_bufr_key_is_coordinate(h, name, &err); + assert(!is_coord); + } } + + is_coord = codes_bufr_key_is_coordinate(h, "nosuchkey", &err); + assert(err == CODES_NOT_FOUND); + codes_bufr_keys_iterator_delete(kiter); codes_handle_delete(h); } From c00bf351522160230ea8e90ba688e491411bd604 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 15 Jun 2023 10:48:46 +0100 Subject: [PATCH 252/378] Cleanup --- src/bufr_util.cc | 100 +++++++++++++++++++++++------------------------ 1 file changed, 50 insertions(+), 50 deletions(-) diff --git a/src/bufr_util.cc b/src/bufr_util.cc index 0bdfa8403..4f008c228 100644 --- a/src/bufr_util.cc +++ b/src/bufr_util.cc @@ -10,8 +10,8 @@ #include "grib_api_internal.h" -/* Return the rank of the key using list of keys (For BUFR keys) */ -/* The argument 'keys' is an input as well as output from each call */ +// Return the rank of the key using list of keys (For BUFR keys) +// The argument 'keys' is an input as well as output from each call int compute_bufr_key_rank(grib_handle* h, grib_string_list* keys, const char* key) { grib_string_list* next = keys; @@ -43,11 +43,11 @@ int compute_bufr_key_rank(grib_handle* h, grib_string_list* keys, const char* ke next->count++; theRank = next->count; if (theRank == 1) { - /* If the count is 1 it could mean two things: */ - /* This is the first instance of the key and there is another one */ - /* This is the first and only instance of the key */ - /* So we check if there is a second one of this key, */ - /* If not, then rank is zero i.e. this is the only instance */ + // If the count is 1 it could mean two things: + // This is the first instance of the key and there is another one + // This is the first and only instance of the key + // So we check if there is a second one of this key, + // If not, then rank is zero i.e. this is the only instance size_t slen = strlen(key) + 5; char* s = (char*)grib_context_malloc_clear(c, slen); snprintf(s, slen, "#2#%s", key); @@ -77,14 +77,13 @@ char** codes_bufr_copy_data_return_copied_keys(grib_handle* hin, grib_handle* ho while (codes_bufr_keys_iterator_next(kiter)) { char* name = codes_bufr_keys_iterator_get_name(kiter); - /* if the copy fails we want to keep copying without any errors. - This is because the copy can be between structures that are not - identical and we want to copy what can be copied and skip what - cannot be copied because is not in the output handle - */ + // if the copy fails we want to keep copying without any errors. + // This is because the copy can be between structures that are not + // identical and we want to copy what can be copied and skip what + // cannot be copied because is not in the output handle *err = codes_copy_key(hin, hout, name, 0); if (*err == 0) { - /* 'name' will be freed when we call codes_bufr_keys_iterator_delete so copy */ + // 'name' will be freed when we call codes_bufr_keys_iterator_delete so copy char* copied_name = strdup(name); k = grib_sarray_push(hin->context, k, copied_name); } @@ -93,7 +92,7 @@ char** codes_bufr_copy_data_return_copied_keys(grib_handle* hin, grib_handle* ho keys = grib_sarray_get_array(hin->context, k); grib_sarray_delete(hin->context, k); if (*nkeys > 0) { - /* Do the pack if something was copied */ + // Do the pack if something was copied *err = grib_set_long(hout, "pack", 1); } codes_bufr_keys_iterator_delete(kiter); @@ -116,18 +115,17 @@ int codes_bufr_copy_data(grib_handle* hin, grib_handle* hout) while (codes_bufr_keys_iterator_next(kiter)) { char* name = codes_bufr_keys_iterator_get_name(kiter); - /* if the copy fails we want to keep copying without any error messages. - This is because the copy can be between structures that are not - identical and we want to copy what can be copied and skip what - cannot be copied because is not in the output handle - */ + // if the copy fails we want to keep copying without any error messages. + // This is because the copy can be between structures that are not + // identical and we want to copy what can be copied and skip what + // cannot be copied because is not in the output handle err = codes_copy_key(hin, hout, name, GRIB_TYPE_UNDEFINED); if (err == 0) nkeys++; } if (nkeys > 0) { - /* Do the pack if something was copied */ + // Do the pack if something was copied err = grib_set_long(hout, "pack", 1); } @@ -135,7 +133,7 @@ int codes_bufr_copy_data(grib_handle* hin, grib_handle* hout) return err; } -#define BUFR_SECTION0_LEN 8 /* BUFR section 0 is always 8 bytes long */ +#define BUFR_SECTION0_LEN 8 // BUFR section 0 is always 8 bytes long static int bufr_extract_edition(const void* message, long* edition) { const long nbits_edition = 8; @@ -145,7 +143,7 @@ static int bufr_extract_edition(const void* message, long* edition) *edition = (long)grib_decode_unsigned_long(pMessage, &pos_edition, nbits_edition); return GRIB_SUCCESS; } -/* The ECMWF BUFR local use section */ +// The ECMWF BUFR local use section static int bufr_decode_rdb_keys(const void* message, long offset_section2, codes_bufr_header* hdr) { const unsigned char* pMessage = (const unsigned char*)message; @@ -181,7 +179,7 @@ static int bufr_decode_rdb_keys(const void* message, long offset_section2, codes hdr->localMinute = (long)grib_decode_unsigned_long(p, &start, 6); hdr->localSecond = (long)grib_decode_unsigned_long(p, &start, 6); - /* rdbtime */ + // rdbtime p = (unsigned char*)message + offset_rdbtime; start = 0; hdr->rdbtimeDay = (long)grib_decode_unsigned_long(p, &start, 6); @@ -189,7 +187,7 @@ static int bufr_decode_rdb_keys(const void* message, long offset_section2, codes hdr->rdbtimeMinute = (long)grib_decode_unsigned_long(p, &start, 6); hdr->rdbtimeSecond = (long)grib_decode_unsigned_long(p, &start, 6); - /* rectime */ + // rectime p = (unsigned char*)message + offset_rectime; start = 0; hdr->rectimeDay = (long)grib_decode_unsigned_long(p, &start, 6); @@ -206,16 +204,16 @@ static int bufr_decode_rdb_keys(const void* message, long offset_section2, codes return GRIB_SUCCESS; } -#define IDENT_LEN 9 /* 8 chars plus the final 0 terminator */ +#define IDENT_LEN 9 // 8 chars plus the final 0 terminator -/* The ECMWF BUFR local use section */ +// The ECMWF BUFR local use section static int bufr_decode_extra_rdb_keys(const void* message, long offset_section2, codes_bufr_header* hdr) { bool isSatelliteType = false; long start = 0; const long offset_keyData = offset_section2 + 6; - const long offset_keyMore = offset_section2 + 19; /* 8 bytes long */ - const long offset_keySat = offset_section2 + 27; /* 9 bytes long */ + const long offset_keyMore = offset_section2 + 19; // 8 bytes long + const long offset_keySat = offset_section2 + 27; // 9 bytes long unsigned char* pKeyData = (unsigned char*)message + offset_keyData; char* pKeyMore = (char*)message + offset_keyMore; @@ -233,7 +231,7 @@ static int bufr_decode_extra_rdb_keys(const void* message, long offset_section2, } if (hdr->isSatellite) { - unsigned char* pKeyMoreLong = (unsigned char*)message + offset_keyMore; /* as an integer */ + unsigned char* pKeyMoreLong = (unsigned char*)message + offset_keyMore; // as an integer unsigned char* pKeySat = (unsigned char*)message + offset_keySat; unsigned long lValue = 0; start = 40; @@ -277,13 +275,13 @@ static int bufr_decode_extra_rdb_keys(const void* message, long offset_section2, lValue = grib_decode_unsigned_long(pKeyData, &start, 26); hdr->localLongitude = (lValue - 18000000.0) / 100000.0; - /* interpret keyMore as a string. Copy to a temporary */ + // interpret keyMore as a string. Copy to a temporary for (i = 0; i < IDENT_LEN - 1; ++i) { temp[i] = *pKeyMore++; } temp[i] = '\0'; pTemp = temp; - string_lrtrim(&pTemp, 1, 1); /* Trim left and right */ + string_lrtrim(&pTemp, 1, 1); // Trim left and right strncpy(hdr->ident, pTemp, IDENT_LEN - 1); } @@ -331,7 +329,7 @@ static int bufr_decode_edition3(const void* message, codes_bufr_header* hdr) long nbits_localTablesVersionNumber = 1 * 8; long pos_localTablesVersionNumber = 19 * 8; - const long typicalCentury = 21; /* This century */ + const long typicalCentury = 21; // This century long typicalYearOfCentury = 0; long nbits_typicalYearOfCentury = 1 * 8; long pos_typicalYearOfCentury = 20 * 8; @@ -352,11 +350,11 @@ static int bufr_decode_edition3(const void* message, codes_bufr_header* hdr) long offset_section2 = 0; long offset_section3 = 0; long nbits_numberOfSubsets = 2 * 8; - long pos_numberOfSubsets = 0; /*depends on offset_section3*/ + long pos_numberOfSubsets = 0; //depends on offset_section3 unsigned long section3Flags; long nbits_section3Flags = 1 * 8; - long pos_section3Flags = 0; /*depends on offset_section3*/ + long pos_section3Flags = 0; //depends on offset_section3 totalLength = grib_decode_unsigned_long(pMessage, &pos_totalLength, nbits_totalLength); if (totalLength != hdr->message_size) { @@ -383,7 +381,7 @@ static int bufr_decode_edition3(const void* message, codes_bufr_header* hdr) hdr->typicalDate = hdr->typicalYear * 10000 + hdr->typicalMonth * 100 + hdr->typicalDay; hdr->typicalTime = hdr->typicalHour * 10000 + hdr->typicalMinute * 100 + hdr->typicalSecond; - offset_section2 = BUFR_SECTION0_LEN + section1Length; /*bytes*/ + offset_section2 = BUFR_SECTION0_LEN + section1Length; //bytes section2Length = 0; hdr->localSectionPresent = (section1Flags != 0); if (hdr->localSectionPresent) { @@ -399,7 +397,7 @@ static int bufr_decode_edition3(const void* message, codes_bufr_header* hdr) } } - offset_section3 = BUFR_SECTION0_LEN + section1Length + section2Length; /*bytes*/ + offset_section3 = BUFR_SECTION0_LEN + section1Length + section2Length; //bytes pos_numberOfSubsets = (offset_section3 + 4) * 8; hdr->numberOfSubsets = grib_decode_unsigned_long(pMessage, &pos_numberOfSubsets, nbits_numberOfSubsets); @@ -459,7 +457,7 @@ static int bufr_decode_edition4(const void* message, codes_bufr_header* hdr) long nbits_localTablesVersionNumber = 1 * 8; long pos_localTablesVersionNumber = 22 * 8; - long typicalYear2 = 0; /* corrected */ + long typicalYear2 = 0; // corrected long nbits_typicalYear = 2 * 8; long pos_typicalYear = 23 * 8; @@ -482,11 +480,11 @@ static int bufr_decode_edition4(const void* message, codes_bufr_header* hdr) long offset_section2 = 0; long offset_section3 = 0; long nbits_numberOfSubsets = 2 * 8; - long pos_numberOfSubsets = 0; /*depends on offset_section3*/ + long pos_numberOfSubsets = 0; //depends on offset_section3 unsigned long section3Flags; long nbits_section3Flags = 1 * 8; - long pos_section3Flags = 0; /*depends on offset_section3*/ + long pos_section3Flags = 0; //depends on offset_section3 totalLength = grib_decode_unsigned_long(pMessage, &pos_totalLength, nbits_totalLength); if (totalLength != hdr->message_size) { @@ -505,7 +503,7 @@ static int bufr_decode_edition4(const void* message, codes_bufr_header* hdr) hdr->localTablesVersionNumber = (long)grib_decode_unsigned_long(pMessage, &pos_localTablesVersionNumber, nbits_localTablesVersionNumber); hdr->typicalYear = (long)grib_decode_unsigned_long(pMessage, &pos_typicalYear, nbits_typicalYear); - typicalYear2 = hdr->typicalYear < 100 ? 2000 + hdr->typicalYear : hdr->typicalYear; /*ECC-556*/ + typicalYear2 = hdr->typicalYear < 100 ? 2000 + hdr->typicalYear : hdr->typicalYear; //ECC-556 hdr->typicalMonth = (long)grib_decode_unsigned_long(pMessage, &pos_typicalMonth, nbits_typicalMonth); hdr->typicalDay = (long)grib_decode_unsigned_long(pMessage, &pos_typicalDay, nbits_typicalDay); hdr->typicalHour = (long)grib_decode_unsigned_long(pMessage, &pos_typicalHour, nbits_typicalHour); @@ -514,7 +512,7 @@ static int bufr_decode_edition4(const void* message, codes_bufr_header* hdr) hdr->typicalDate = typicalYear2 * 10000 + hdr->typicalMonth * 100 + hdr->typicalDay; hdr->typicalTime = hdr->typicalHour * 10000 + hdr->typicalMinute * 100 + hdr->typicalSecond; - offset_section2 = BUFR_SECTION0_LEN + section1Length; /*bytes*/ + offset_section2 = BUFR_SECTION0_LEN + section1Length; //bytes section2Length = 0; hdr->localSectionPresent = (section1Flags != 0); if (hdr->localSectionPresent) { @@ -530,7 +528,7 @@ static int bufr_decode_edition4(const void* message, codes_bufr_header* hdr) } } - offset_section3 = BUFR_SECTION0_LEN + section1Length + section2Length; /*bytes*/ + offset_section3 = BUFR_SECTION0_LEN + section1Length + section2Length; //bytes pos_numberOfSubsets = (offset_section3 + 4) * 8; hdr->numberOfSubsets = grib_decode_unsigned_long(pMessage, &pos_numberOfSubsets, nbits_numberOfSubsets); @@ -584,10 +582,10 @@ static int count_bufr_messages(grib_context* c, FILE* f, int* n, int strict_mode while (!done) { mesg = wmo_read_bufr_from_file_malloc(f, 0, &size, &offset, &err); - /*printf("Count so far=%d, mesg=%x, err=%d (%s)\n", *n, mesg, err, grib_get_error_message(err));*/ + //printf("Count so far=%d, mesg=%x, err=%d (%s)\n", *n, mesg, err, grib_get_error_message(err)); if (!mesg) { if (err == GRIB_END_OF_FILE || err == GRIB_PREMATURE_END_OF_FILE) { - done = 1; /* reached the end */ + done = 1; // reached the end break; } if (strict_mode) @@ -669,7 +667,7 @@ int codes_bufr_extract_headers_malloc(grib_context* c, const char* filename, cod } if (!mesg) { if (err != GRIB_END_OF_FILE && err != GRIB_PREMATURE_END_OF_FILE) { - /* An error occurred */ + // An error occurred grib_context_log(c, GRIB_LOG_ERROR, "codes_bufr_extract_headers_malloc: Unable to read BUFR message"); if (strict_mode) { fclose(fp); @@ -786,7 +784,7 @@ static const char* codes_bufr_header_get_centre_name(long edition, long centre_c } #if 0 -/* TODO: Not efficient as it opens the code table every time */ +// TODO: Not efficient as it opens the code table every time static char* codes_bufr_header_get_centre_name(long edition, long centre_code) { char full_path[2014] = {0,}; @@ -849,7 +847,7 @@ int codes_bufr_header_get_string(codes_bufr_header* bh, const char* key, char* v bool isEcmwfLocal = false; Assert(bh); Assert(key); - *len = strlen(NOT_FOUND); /*By default*/ + *len = strlen(NOT_FOUND); // By default isEcmwfLocal = (bh->ecmwfLocalSectionPresent == 1); Assert(!(isEcmwfLocal && bh->bufrHeaderCentre != 98)); @@ -913,7 +911,7 @@ int codes_bufr_header_get_string(codes_bufr_header* bh, const char* key, char* v else if (strcmp(key, "ecmwfLocalSectionPresent") == 0) *len = snprintf(val, 32, "%ld", bh->ecmwfLocalSectionPresent); - /* Local ECMWF keys. Can be absent so must return NOT_FOUND */ + // Local ECMWF keys. Can be absent so must return NOT_FOUND else if (strcmp(key, "rdbType") == 0) { if (isEcmwfLocal) *len = snprintf(val, 32, "%ld", bh->rdbType); @@ -1113,7 +1111,7 @@ int codes_bufr_header_get_string(codes_bufr_header* bh, const char* key, char* v return GRIB_SUCCESS; } -/* Returns 1 if the BUFR key is in the header and 0 if it is in the data section */ +// Returns 1 if the BUFR key is in the header and 0 if it is in the data section int codes_bufr_key_is_header(const grib_handle* h, const char* key, int* err) { grib_accessor* acc = grib_find_accessor(h, key); @@ -1121,10 +1119,11 @@ int codes_bufr_key_is_header(const grib_handle* h, const char* key, int* err) *err = GRIB_NOT_FOUND; return 0; } + *err = GRIB_SUCCESS; return ((acc->flags & GRIB_ACCESSOR_FLAG_BUFR_DATA) == 0); } -/* Returns 1 if the BUFR key is a coordinate descriptor */ +// Returns 1 if the BUFR key is a coordinate descriptor int codes_bufr_key_is_coordinate(const grib_handle* h, const char* key, int* err) { grib_accessor* acc = grib_find_accessor(h, key); @@ -1132,5 +1131,6 @@ int codes_bufr_key_is_coordinate(const grib_handle* h, const char* key, int* err *err = GRIB_NOT_FOUND; return 0; } + *err = GRIB_SUCCESS; return ((acc->flags & GRIB_ACCESSOR_FLAG_BUFR_COORD) != 0); } From 4df55cda9b18dc89a2084cbae2eb1dc7c293db49 Mon Sep 17 00:00:00 2001 From: Eugen Betke Date: Thu, 15 Jun 2023 11:52:33 +0000 Subject: [PATCH 253/378] ECC-1431: Workaround for ECC-1612 --- tests/grib_ecc-1431.cc | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/tests/grib_ecc-1431.cc b/tests/grib_ecc-1431.cc index 2adb39fc5..39454b203 100644 --- a/tests/grib_ecc-1431.cc +++ b/tests/grib_ecc-1431.cc @@ -56,6 +56,7 @@ int main(int argc, char** argv) int err; std::default_random_engine re; + size_t in_values_ecc_1612_workaround_len = 0; size_t grid_simple_values_len = 0; size_t grid_ccsds_values_len = 0; std::string packing_type = ""; @@ -73,9 +74,11 @@ int main(int argc, char** argv) codes_handle* handle = codes_grib_handle_new_from_samples(0, "reduced_gg_pl_128_grib2"); double* in_values = new double[in_values_len]; + double* in_values_ecc_1612_workaround = new double[in_values_len]; double* grid_simple_values = new double[in_values_len]; double* grid_ccsds_values = new double[in_values_len]; + in_values_ecc_1612_workaround_len = in_values_len; grid_simple_values_len = in_values_len; grid_ccsds_values_len = in_values_len; @@ -84,9 +87,16 @@ int main(int argc, char** argv) in_values[i] = unif(re); } - // Convert original values to quantized values, by grid_simple - CODES_CHECK(codes_set_double_array(handle, "values", in_values, in_values_len), 0); - CODES_CHECK(codes_get_double_array(handle, "values", grid_simple_values, &grid_simple_values_len), 0); + // Convert original values to quantized values using grid_simple + { // Workaround ECC-1612. Can be removed when fixed. Use code below instead. + CODES_CHECK(codes_set_double_array(handle, "values", in_values, in_values_len), 0); + CODES_CHECK(codes_get_double_array(handle, "values", in_values_ecc_1612_workaround, &in_values_ecc_1612_workaround_len), 0); + CODES_CHECK(codes_set_double_array(handle, "values", in_values_ecc_1612_workaround, in_values_ecc_1612_workaround_len), 0); + CODES_CHECK(codes_get_double_array(handle, "values", grid_simple_values, &grid_simple_values_len), 0); + //CODES_CHECK(codes_set_double_array(handle, "values", in_values, in_values_len), 0); + //CODES_CHECK(codes_get_double_array(handle, "values", grid_simple_values, &grid_simple_values_len), 0); + } + Assert(in_values_len == grid_simple_values_len); // Test grid_ccsds @@ -113,6 +123,7 @@ int main(int argc, char** argv) codes_handle_delete(handle); delete[] in_values; + delete[] in_values_ecc_1612_workaround; delete[] grid_simple_values; delete[] grid_ccsds_values; } From 8e3a4e43f22de53273e54d0a6998d0e762a63aeb Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 15 Jun 2023 13:22:25 +0100 Subject: [PATCH 254/378] Fortran API: Unused functions --- fortran/grib_api_externals.h | 2 +- fortran/grib_fortran.c | 3 ++- fortran/grib_fortran_prototypes.h | 3 --- 3 files changed, 3 insertions(+), 5 deletions(-) diff --git a/fortran/grib_api_externals.h b/fortran/grib_api_externals.h index d66a89376..f41562c02 100644 --- a/fortran/grib_api_externals.h +++ b/fortran/grib_api_externals.h @@ -34,7 +34,7 @@ integer, external :: grib_f_new_from_message, & bufr_f_new_from_file, & grib_f_headers_only_new_from_file integer, external :: grib_f_release -integer, external :: grib_f_dump, grib_f_print +integer, external :: grib_f_dump integer, external :: grib_f_get_error_string integer, external :: grib_f_get_native_type integer, external :: grib_f_get_size_int,grib_f_get_size_long diff --git a/fortran/grib_fortran.c b/fortran/grib_fortran.c index 976eaa2ce..06d48f343 100644 --- a/fortran/grib_fortran.c +++ b/fortran/grib_fortran.c @@ -2154,6 +2154,7 @@ int grib_f_dump(int* gid){ } /*****************************************************************************/ +#ifdef USE_GRIB_PRINT int grib_f_print_(int* gid, char* key, int len){ grib_handle *h = get_handle(*gid); int err = GRIB_SUCCESS; @@ -2175,7 +2176,7 @@ int grib_f_print__(int* gid, char* key, int len){ int grib_f_print(int* gid, char* key, int len){ return grib_f_print_(gid, key, len); } - +#endif /*****************************************************************************/ int grib_f_get_error_string_(int* err, char* buf, int len){ const char* err_msg = grib_get_error_message(*err); diff --git a/fortran/grib_fortran_prototypes.h b/fortran/grib_fortran_prototypes.h index a8e399924..32920c521 100644 --- a/fortran/grib_fortran_prototypes.h +++ b/fortran/grib_fortran_prototypes.h @@ -199,9 +199,6 @@ int grib_f_release(int *hid); int grib_f_dump_(int *gid); int grib_f_dump__(int *gid); int grib_f_dump(int *gid); -int grib_f_print_(int *gid, char *key, int len); -int grib_f_print__(int *gid, char *key, int len); -int grib_f_print(int *gid, char *key, int len); int grib_f_get_api_version_(int* apiVersion,int len); int grib_f_get_api_version__(int* apiVersion,int len); From d3bc8d8487dacd836f28aceb3b906d58520c8210 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 16 Jun 2023 22:28:31 +0100 Subject: [PATCH 255/378] ECC-1573: GRIB spectral_simple: Assertion failed: 'ref == *val' --- ..._accessor_class_data_g2shsimple_packing.cc | 10 -- tests/grib_sh_spectral_complex.cc | 105 +++++++++++------- tests/grib_sh_spectral_complex.sh | 17 ++- 3 files changed, 79 insertions(+), 53 deletions(-) diff --git a/src/grib_accessor_class_data_g2shsimple_packing.cc b/src/grib_accessor_class_data_g2shsimple_packing.cc index 2ad8cec87..9cae61828 100644 --- a/src/grib_accessor_class_data_g2shsimple_packing.cc +++ b/src/grib_accessor_class_data_g2shsimple_packing.cc @@ -178,16 +178,6 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) if ((err = grib_set_double_internal(grib_handle_of_accessor(a), self->real_part, *val)) != GRIB_SUCCESS) return err; - { - /* Make sure we can decode it again */ - double ref = 1e-100; - grib_get_double_internal(grib_handle_of_accessor(a), self->real_part, &ref); - if (ref != *val) { - grib_context_log(a->context, GRIB_LOG_ERROR, "data_g2shsimple_packing %s: %s (ref=%.10e != *val=%.10e)", - __func__, self->real_part, ref, *val); - return GRIB_INTERNAL_ERROR; - } - } val++; diff --git a/tests/grib_sh_spectral_complex.cc b/tests/grib_sh_spectral_complex.cc index e4fead3a6..78db8da4d 100644 --- a/tests/grib_sh_spectral_complex.cc +++ b/tests/grib_sh_spectral_complex.cc @@ -10,25 +10,42 @@ #include "grib_api_internal.h" -#include "grib_sh_values.h" /* array 'values' defined here*/ +#include "grib_sh_values.h" // array 'values' defined here #define ILCHAM 992 #define MTRONC 30 #define STRONC 10 #define TOLERANCE 1e-5 -static const char* TEMPFILE = "output.grib_sh_spectral_complex.grib"; int main(int argc, char* argv[]) { size_t len, size; - grib_handle* h; + grib_handle* h = NULL; double zval[ILCHAM]; int i, m, n, k, err; FILE* fin = NULL; FILE* fout = NULL; const void* buffer = NULL; + char* in_filename = NULL; + char* out_filename = NULL; + char packingType[50] = {0,}; + bool do_compare = true; - GRIB_CHECK(((h = grib_handle_new_from_samples(NULL, "sh_ml_grib2")) == NULL), 0); + Assert(argc == 3); + in_filename = argv[1]; + out_filename = argv[2]; + + printf("Opening file '%s'...\n", in_filename); + fin = fopen(in_filename, "rb"); + Assert(fin); + + h = grib_handle_new_from_file(0, fin, &err); + Assert(h); + Assert(!err); + + len = sizeof(packingType); + GRIB_CHECK(grib_get_string(h, "packingType", packingType, &len), 0); + Assert( STR_EQUAL(packingType, "spectral_complex") || STR_EQUAL(packingType, "spectral_simple") ); GRIB_CHECK(grib_set_long(h, "pentagonalResolutionParameterJ", MTRONC), 0); GRIB_CHECK(grib_set_long(h, "pentagonalResolutionParameterK", MTRONC), 0); @@ -36,62 +53,70 @@ int main(int argc, char* argv[]) GRIB_CHECK(grib_set_long(h, "bitsPerValue", 16), 0); - GRIB_CHECK(grib_set_long(h, "subSetJ", STRONC), 0); - GRIB_CHECK(grib_set_long(h, "subSetK", STRONC), 0); - GRIB_CHECK(grib_set_long(h, "subSetM", STRONC), 0); - GRIB_CHECK(grib_set_long(h, "unpackedSubsetPrecision", 1), 0); + if (STR_EQUAL(packingType, "spectral_complex")) { + GRIB_CHECK(grib_set_long(h, "subSetJ", STRONC), 0); + GRIB_CHECK(grib_set_long(h, "subSetK", STRONC), 0); + GRIB_CHECK(grib_set_long(h, "subSetM", STRONC), 0); + GRIB_CHECK(grib_set_long(h, "unpackedSubsetPrecision", 1), 0); + } else { + do_compare = false; + } printf("Encode values...\n"); GRIB_CHECK(grib_set_double_array(h, "values", values, ILCHAM), 0); - /* Write to a temporary GRIB file */ - printf("Save to GRIB %s...\n",TEMPFILE); - fout = fopen(TEMPFILE, "wb"); + // Write to a temporary GRIB file + printf("Save to file '%s'...\n", out_filename); + fout = fopen(out_filename, "wb"); GRIB_CHECK(grib_get_message(h, &buffer, &size), 0); if (fwrite(buffer, 1, size, fout) != size) { Assert(!"Failed to write data"); } fclose(fout); - printf("Decode values and compare...\n"); - len = ILCHAM; - GRIB_CHECK(grib_get_double_array(h, "values", zval, &len), 0); + if (do_compare) { + printf("Decode values and compare...\n"); + len = ILCHAM; + GRIB_CHECK(grib_get_double_array(h, "values", zval, &len), 0); - /* Compare our values */ - for (i = 0; i < ILCHAM; ++i) { - const double diff = fabs(zval[i] - values[i]); - if (diff > TOLERANCE) { - fprintf(stderr, "Unpacked value different: i=%d values[i]=%.10g zval[i]=%.10g (diff=%.10g)\n", i, values[i], zval[i], diff); - return 1; + // Compare our values + for (i = 0; i < ILCHAM; ++i) { + const double diff = fabs(zval[i] - values[i]); + if (diff > TOLERANCE) { + fprintf(stderr, "Unpacked value different: i=%d values[i]=%.10g zval[i]=%.10g (diff=%.10g)\n", i, values[i], zval[i], diff); + return 1; + } } - } - for (m = 0, k = 0; m < MTRONC + 1; m++) { - for (n = m; n < MTRONC + 1; k++, n++) { - /* Check sub-truncation was fully preserved in IEEE-32 */ - if ((m < STRONC + 1) && (n < STRONC + 1) && (((float)zval[2 * k] != (float)values[2 * k]) || ((float)zval[2 * k + 1] != (float)values[2 * k + 1]))) { - printf("Unpacked sub-truncation was not fully preserved; coefficients for wave number (m=%d,n=%d) have been modified\n", m, n); - return 1; + for (m = 0, k = 0; m < MTRONC + 1; m++) { + for (n = m; n < MTRONC + 1; k++, n++) { + // Check sub-truncation was fully preserved in IEEE-32 + if ((m < STRONC + 1) && (n < STRONC + 1) && (((float)zval[2 * k] != (float)values[2 * k]) || ((float)zval[2 * k + 1] != (float)values[2 * k + 1]))) { + printf("Unpacked sub-truncation was not fully preserved; coefficients for wave number (m=%d,n=%d) have been modified\n", m, n); + return 1; + } } } } - GRIB_CHECK(grib_handle_delete(h), 0); + fclose(fin); - /* Read in the saved GRIB file */ - printf("Load values from saved file and compare....\n"); - fin = fopen(TEMPFILE, "rb"); Assert(fin); - h = grib_handle_new_from_file(0, fin, &err); Assert(h); - GRIB_CHECK(grib_get_double_array(h, "values", zval, &len), 0); - for (i = 0; i < ILCHAM; ++i) { - const double diff = fabs(zval[i] - values[i]); - if (diff > TOLERANCE) { - fprintf(stderr, "Unpacked value different: i=%d values[i]=%.10g zval[i]=%.10g (diff=%.10g)\n", i, values[i], zval[i], diff); - return 1; + // Read in the saved GRIB file + if (do_compare) { + printf("Load values from saved file and compare....\n"); + fin = fopen(out_filename, "rb"); Assert(fin); + h = grib_handle_new_from_file(0, fin, &err); Assert(h); + GRIB_CHECK(grib_get_double_array(h, "values", zval, &len), 0); + for (i = 0; i < ILCHAM; ++i) { + const double diff = fabs(zval[i] - values[i]); + if (diff > TOLERANCE) { + fprintf(stderr, "Unpacked value different: i=%d values[i]=%.10g zval[i]=%.10g (diff=%.10g)\n", i, values[i], zval[i], diff); + return 1; + } } + GRIB_CHECK(grib_handle_delete(h), 0); + fclose(fin); } - GRIB_CHECK(grib_handle_delete(h), 0); - fclose(fin); printf("OK\n"); diff --git a/tests/grib_sh_spectral_complex.sh b/tests/grib_sh_spectral_complex.sh index 56acac9e5..5985aa346 100755 --- a/tests/grib_sh_spectral_complex.sh +++ b/tests/grib_sh_spectral_complex.sh @@ -10,7 +10,18 @@ . ./include.ctest.sh -TEMP=output.grib_sh_spectral_complex.grib -$EXEC ${test_dir}/grib_sh_spectral_complex +label="grib_spectral_test" -rm -f $TEMP +output=output.$label.grib +input_complex=$ECCODES_SAMPLES_PATH/sh_ml_grib2.tmpl + +$EXEC ${test_dir}/grib_sh_spectral_complex $input_complex $output + +rm -f $output + +# Now try spectral simple +input_simple=$label.simple.grib +${tools_dir}/grib_set -rs packingType=spectral_simple $input_complex $input_simple +$EXEC ${test_dir}/grib_sh_spectral_complex $input_simple $output + +rm -f $output $input_simple From d441e094c19b98e1d2440aa2b6eaf5d2d1d69bd0 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 16 Jun 2023 22:33:14 +0100 Subject: [PATCH 256/378] ECC-1573: Test --- tests/CMakeLists.txt | 5 ++--- tests/{grib_sh_spectral_complex.cc => grib_spectral.cc} | 0 tests/{grib_sh_spectral_complex.sh => grib_spectral.sh} | 4 ++-- 3 files changed, 4 insertions(+), 5 deletions(-) rename tests/{grib_sh_spectral_complex.cc => grib_spectral.cc} (100%) rename tests/{grib_sh_spectral_complex.sh => grib_spectral.sh} (84%) diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 0a923ace3..0d78ab997 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -50,7 +50,7 @@ list(APPEND test_c_bins grib_copy_message grib_packing_order grib_sh_imag - grib_sh_spectral_complex + grib_spectral grib_lam_bf grib_lam_gp) @@ -126,7 +126,7 @@ if( HAVE_BUILD_TOOLS ) bufr_rdbSubTypes grib_efas grib_sh_imag - grib_sh_spectral_complex + grib_spectral grib_levtype grib_typeOfLevel grib_grid_unstructured @@ -443,7 +443,6 @@ else() julian bufr_check_descriptors grib_sh_imag - grib_sh_spectral_complex grib_2nd_order_numValues grib_sh_ieee64) diff --git a/tests/grib_sh_spectral_complex.cc b/tests/grib_spectral.cc similarity index 100% rename from tests/grib_sh_spectral_complex.cc rename to tests/grib_spectral.cc diff --git a/tests/grib_sh_spectral_complex.sh b/tests/grib_spectral.sh similarity index 84% rename from tests/grib_sh_spectral_complex.sh rename to tests/grib_spectral.sh index 5985aa346..c4dbe1a3c 100755 --- a/tests/grib_sh_spectral_complex.sh +++ b/tests/grib_spectral.sh @@ -15,13 +15,13 @@ label="grib_spectral_test" output=output.$label.grib input_complex=$ECCODES_SAMPLES_PATH/sh_ml_grib2.tmpl -$EXEC ${test_dir}/grib_sh_spectral_complex $input_complex $output +$EXEC ${test_dir}/grib_spectral $input_complex $output rm -f $output # Now try spectral simple input_simple=$label.simple.grib ${tools_dir}/grib_set -rs packingType=spectral_simple $input_complex $input_simple -$EXEC ${test_dir}/grib_sh_spectral_complex $input_simple $output +$EXEC ${test_dir}/grib_spectral $input_simple $output rm -f $output $input_simple From f9e5a46da6d5f8defc92f8516893a4a21fd64c43 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sat, 17 Jun 2023 12:46:03 +0100 Subject: [PATCH 257/378] Replace Asserts with error messages and exit codes --- ...grib_accessor_class_data_2order_packing.cc | 9 ++++-- ...rib_accessor_class_data_complex_packing.cc | 8 +++-- ...accessor_class_data_g2bifourier_packing.cc | 10 ++++-- src/grib_accessor_class_data_png_packing.cc | 31 +++++++++++++------ ...grib_accessor_class_data_simple_packing.cc | 4 +-- 5 files changed, 44 insertions(+), 18 deletions(-) diff --git a/src/grib_accessor_class_data_2order_packing.cc b/src/grib_accessor_class_data_2order_packing.cc index f57505682..2e7d874d6 100644 --- a/src/grib_accessor_class_data_2order_packing.cc +++ b/src/grib_accessor_class_data_2order_packing.cc @@ -649,6 +649,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) { grib_accessor_data_2order_packing* self = (grib_accessor_data_2order_packing*)a; grib_handle* gh = grib_handle_of_accessor(a); + const char* cclass_name = a->cclass->name; size_t i = 0; size_t j = 0; @@ -913,10 +914,14 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) return err; { - /* Make sure we can decode it again */ + // Make sure we can decode it again double ref = 1e-100; grib_get_double_internal(gh, self->reference_value, &ref); - Assert(ref == reference_value); + if (ref != reference_value) { + grib_context_log(a->context, GRIB_LOG_ERROR, "%s %s: %s (ref=%.10e != reference_value=%.10e)", + cclass_name, __func__, self->reference_value, ref, reference_value); + return GRIB_INTERNAL_ERROR; + } } if ((err = grib_set_long_internal(gh, self->binary_scale_factor, binary_scale_factor)) != GRIB_SUCCESS) diff --git a/src/grib_accessor_class_data_complex_packing.cc b/src/grib_accessor_class_data_complex_packing.cc index c7d1f46ec..364ef0b13 100644 --- a/src/grib_accessor_class_data_complex_packing.cc +++ b/src/grib_accessor_class_data_complex_packing.cc @@ -657,10 +657,14 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) if ((ret = grib_set_double_internal(gh, self->reference_value, reference_value)) != GRIB_SUCCESS) return ret; { - /* Make sure we can decode it again */ + // Make sure we can decode it again double ref = 1e-100; grib_get_double_internal(gh, self->reference_value, &ref); - Assert(ref == reference_value); + if (ref != reference_value) { + grib_context_log(a->context, GRIB_LOG_ERROR, "%s %s: %s (ref=%.10e != reference_value=%.10e)", + cclass_name, __func__, self->reference_value, ref, reference_value); + return GRIB_INTERNAL_ERROR; + } } if ((ret = grib_set_long_internal(gh, self->binary_scale_factor, binary_scale_factor)) != GRIB_SUCCESS) diff --git a/src/grib_accessor_class_data_g2bifourier_packing.cc b/src/grib_accessor_class_data_g2bifourier_packing.cc index cc4bcfc22..662c9005c 100644 --- a/src/grib_accessor_class_data_g2bifourier_packing.cc +++ b/src/grib_accessor_class_data_g2bifourier_packing.cc @@ -716,6 +716,8 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) { grib_accessor_data_g2bifourier_packing* self = (grib_accessor_data_g2bifourier_packing*)a; grib_handle* gh = grib_handle_of_accessor(a); + const char* cclass_name = a->cclass->name; + size_t buflen = 0; size_t hsize = 0; size_t lsize = 0; @@ -883,10 +885,14 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) goto cleanup; { - /* Make sure we can decode it again */ + // Make sure we can decode it again double ref = 1e-100; grib_get_double_internal(gh, self->reference_value, &ref); - Assert(ref == bt->reference_value); + if (ref != bt->reference_value) { + grib_context_log(a->context, GRIB_LOG_ERROR, "%s %s: %s (ref=%.10e != reference_value=%.10e)", + cclass_name, __func__, self->reference_value, ref, bt->reference_value); + return GRIB_INTERNAL_ERROR; + } } if ((ret = grib_set_long_internal(gh, self->binary_scale_factor, bt->binary_scale_factor)) != GRIB_SUCCESS) diff --git a/src/grib_accessor_class_data_png_packing.cc b/src/grib_accessor_class_data_png_packing.cc index e923d2721..8d8a7ce73 100644 --- a/src/grib_accessor_class_data_png_packing.cc +++ b/src/grib_accessor_class_data_png_packing.cc @@ -367,6 +367,7 @@ static bool is_constant(const double* values, size_t n_vals) static int pack_double(grib_accessor* a, const double* val, size_t* len) { grib_accessor_data_png_packing* self = (grib_accessor_data_png_packing*)a; + const char* cclass_name = a->cclass->name; int err = GRIB_SUCCESS; bool is_constant_field = false; @@ -434,12 +435,16 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) #endif if ((err = grib_set_double_internal(grib_handle_of_accessor(a), self->reference_value, val[0])) != GRIB_SUCCESS) return err; + { - /* Make sure we can decode it again */ + // Make sure we can decode it again double ref = 1e-100; grib_get_double_internal(grib_handle_of_accessor(a), self->reference_value, &ref); - /*printf("%g %g %g\n", reference_value, ref, reference_value - ref);*/ - Assert(ref == reference_value); + if (ref != reference_value) { + grib_context_log(a->context, GRIB_LOG_ERROR, "%s %s: %s (ref=%.10e != reference_value=%.10e)", + cclass_name, __func__, self->reference_value, ref, reference_value); + return GRIB_INTERNAL_ERROR; + } } if ((err = grib_set_long_internal(grib_handle_of_accessor(a), self->number_of_values, n_vals)) != GRIB_SUCCESS) @@ -488,9 +493,8 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) if (width * height != *len) { grib_context_log(a->context, GRIB_LOG_ERROR, - "grib_accessor_class_data_png_packing pack_double: width=%ld height=%ld len=%ld." - " width*height should equal len!", - (long)width, (long)height, (long)*len); + "%s %s: width=%ld height=%ld len=%ld. width*height should equal len!", + cclass_name, __func__, (long)width, (long)height, (long)*len); /* ECC-802: We cannot bomb out here as the user might have changed Ni/Nj and the packingType * but has not yet submitted the new data values. So len will be out of sync! * So issue a warning but proceed. @@ -516,8 +520,9 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) } if (reference_value > min) { - fprintf(stderr, "reference_value=%g min_value=%g diff=%g\n", reference_value, min, reference_value - min); - Assert(reference_value <= min); + grib_context_log(a->context, GRIB_LOG_ERROR, "reference_value=%g min_value=%g diff=%g", + reference_value, min, reference_value - min); + return GRIB_INTERNAL_ERROR; } binary_scale_factor = grib_get_binary_scale_fact(max, reference_value, bits_per_value, &err); @@ -557,12 +562,18 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) if ((err = grib_set_double_internal(grib_handle_of_accessor(a), self->reference_value, reference_value)) != GRIB_SUCCESS) return err; + { - /* Make sure we can decode it again */ + // Make sure we can decode it again double ref = 1e-100; grib_get_double_internal(grib_handle_of_accessor(a), self->reference_value, &ref); - Assert(ref == reference_value); + if (ref != reference_value) { + grib_context_log(a->context, GRIB_LOG_ERROR, "%s %s: %s (ref=%.10e != reference_value=%.10e)", + cclass_name, __func__, self->reference_value, ref, reference_value); + return GRIB_INTERNAL_ERROR; + } } + if ((err = grib_set_long_internal(grib_handle_of_accessor(a), self->binary_scale_factor, binary_scale_factor)) != GRIB_SUCCESS) return err; if ((err = grib_set_long_internal(grib_handle_of_accessor(a), self->decimal_scale_factor, decimal_scale_factor)) != GRIB_SUCCESS) diff --git a/src/grib_accessor_class_data_simple_packing.cc b/src/grib_accessor_class_data_simple_packing.cc index df8191f53..ff21377bc 100644 --- a/src/grib_accessor_class_data_simple_packing.cc +++ b/src/grib_accessor_class_data_simple_packing.cc @@ -690,8 +690,8 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) double ref = 1e-100; grib_get_double_internal(gh, self->reference_value, &ref); if (ref != reference_value) { - grib_context_log(a->context, GRIB_LOG_ERROR, "%s %s: (ref=%.10e != reference_value=%.10e)", - cclass_name, __func__, ref, reference_value); + grib_context_log(a->context, GRIB_LOG_ERROR, "%s %s: %s (ref=%.10e != reference_value=%.10e)", + cclass_name, __func__, self->reference_value, ref, reference_value); return GRIB_INTERNAL_ERROR; } } From dcfd661e9eab9f712cf6a81748d673631d7d1ba1 Mon Sep 17 00:00:00 2001 From: Daniel Tipping Date: Thu, 15 Jun 2023 10:34:26 +0100 Subject: [PATCH 258/378] Rename GH Actions workflow for consistency --- .github/workflows/{notify_new_pr.yml => notify-new-pr.yml} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename .github/workflows/{notify_new_pr.yml => notify-new-pr.yml} (100%) diff --git a/.github/workflows/notify_new_pr.yml b/.github/workflows/notify-new-pr.yml similarity index 100% rename from .github/workflows/notify_new_pr.yml rename to .github/workflows/notify-new-pr.yml From 0e7b64b6801c929c17560b547053e7b525297eff Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 15 Jun 2023 17:01:17 +0000 Subject: [PATCH 259/378] Fast codes_count: First attempt (WIP) --- src/grib_io.cc | 30 ++++++++++++++++-------------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/src/grib_io.cc b/src/grib_io.cc index da16be6d4..a1803bc06 100644 --- a/src/grib_io.cc +++ b/src/grib_io.cc @@ -89,44 +89,46 @@ static int read_the_rest(reader* r, size_t message_length, unsigned char* tmp, i int err = GRIB_SUCCESS; size_t buffer_size; size_t rest; - unsigned char* buffer; + unsigned char* buffer=0; grib_context* c = grib_context_get_default(); if (message_length == 0) return GRIB_BUFFER_TOO_SMALL; buffer_size = message_length; + buffer_size = 5; rest = message_length - already_read; r->message_size = message_length; + //buffer = (unsigned char*)r->alloc(r->alloc_data, &buffer_size, &err); buffer = (unsigned char*)r->alloc(r->alloc_data, &buffer_size, &err); if (err) return err; - if (buffer == NULL || (buffer_size < message_length)) { - return GRIB_BUFFER_TOO_SMALL; - } - - memcpy(buffer, tmp, already_read); - - if ((r->read(r->read_data, buffer + already_read, rest, &err) != rest) || err) { + //if (buffer_size < message_length) { + // return GRIB_BUFFER_TOO_SMALL; + //} + r->seek(r->read_data, rest-4); +#if 1 + //memcpy(buffer, tmp, already_read); + if ((r->read(r->read_data, buffer, 4, &err) != 4) || err) { /*fprintf(stderr, "read_the_rest: r->read failed: %s\n", grib_get_error_message(err));*/ if (c->debug) fprintf(stderr, "ECCODES DEBUG read_the_rest: Read failed (Coded length=%zu, Already read=%d)\n", message_length, already_read); return err; } - + //printf(" buffer=%s\n",buffer); if (check7777 && !r->headers_only && - (buffer[message_length - 4] != '7' || - buffer[message_length - 3] != '7' || - buffer[message_length - 2] != '7' || - buffer[message_length - 1] != '7')) + (buffer[0] != '7' || + buffer[1] != '7' || + buffer[2] != '7' || + buffer[3] != '7')) { if (c->debug) fprintf(stderr, "ECCODES DEBUG read_the_rest: No final 7777 at expected location (Coded length=%zu)\n", message_length); return GRIB_WRONG_LENGTH; } - +#endif return GRIB_SUCCESS; } From d78166f28b71df01c00a83d2b81478e583622163 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 16 Jun 2023 13:08:17 +0100 Subject: [PATCH 260/378] Fast codes_count: Basic tests are passing (WIP) --- src/grib_api.h | 5 ++ src/grib_io.cc | 139 ++++++++++++++++++++++++++----------------- tools/codes_count.cc | 28 ++++----- 3 files changed, 102 insertions(+), 70 deletions(-) diff --git a/src/grib_api.h b/src/grib_api.h index b06e854fc..0fde5c214 100644 --- a/src/grib_api.h +++ b/src/grib_api.h @@ -1377,6 +1377,11 @@ int wmo_read_bufr_from_file(FILE* f, void* buffer, size_t* len); int wmo_read_gts_from_file(FILE* f, void* buffer, size_t* len); int wmo_read_any_from_stream(void* stream_data, long (*stream_proc)(void*, void* buffer, long len), void* buffer, size_t* len); +int wmo_read_any_from_file_noalloc(FILE* f, void* buffer, size_t* len); +int wmo_read_grib_from_file_noalloc(FILE* f, void* buffer, size_t* len); +int wmo_read_bufr_from_file_noalloc(FILE* f, void* buffer, size_t* len); +int wmo_read_gts_from_file_noalloc(FILE* f, void* buffer, size_t* len); + /* These functions allocate memory for the result so the user is responsible for freeing it */ void* wmo_read_any_from_stream_malloc(void* stream_data, long (*stream_proc)(void*, void* buffer, long len), size_t* size, int* err); void* wmo_read_any_from_file_malloc(FILE* f, int headers_only, size_t* size, off_t* offset, int* err); diff --git a/src/grib_io.cc b/src/grib_io.cc index a1803bc06..f745ea2fd 100644 --- a/src/grib_io.cc +++ b/src/grib_io.cc @@ -84,51 +84,74 @@ typedef struct reader } reader; -static int read_the_rest(reader* r, size_t message_length, unsigned char* tmp, int already_read, int check7777) +static int read_the_rest(reader* r, size_t message_length, unsigned char* tmp, int already_read, int check7777, int no_alloc) { int err = GRIB_SUCCESS; size_t buffer_size; size_t rest; - unsigned char* buffer=0; + unsigned char* buffer = NULL; grib_context* c = grib_context_get_default(); if (message_length == 0) return GRIB_BUFFER_TOO_SMALL; buffer_size = message_length; - buffer_size = 5; + if (no_alloc) + buffer_size = 5; rest = message_length - already_read; r->message_size = message_length; - //buffer = (unsigned char*)r->alloc(r->alloc_data, &buffer_size, &err); buffer = (unsigned char*)r->alloc(r->alloc_data, &buffer_size, &err); if (err) return err; - //if (buffer_size < message_length) { - // return GRIB_BUFFER_TOO_SMALL; - //} - r->seek(r->read_data, rest-4); -#if 1 - //memcpy(buffer, tmp, already_read); - if ((r->read(r->read_data, buffer, 4, &err) != 4) || err) { - /*fprintf(stderr, "read_the_rest: r->read failed: %s\n", grib_get_error_message(err));*/ - if (c->debug) - fprintf(stderr, "ECCODES DEBUG read_the_rest: Read failed (Coded length=%zu, Already read=%d)\n", - message_length, already_read); - return err; + if (!no_alloc) { + if (buffer == NULL || (buffer_size < message_length)) { + return GRIB_BUFFER_TOO_SMALL; + } + memcpy(buffer, tmp, already_read); + } else { + r->seek(r->read_data, rest-4); } - //printf(" buffer=%s\n",buffer); - if (check7777 && !r->headers_only && - (buffer[0] != '7' || - buffer[1] != '7' || - buffer[2] != '7' || - buffer[3] != '7')) - { - if (c->debug) - fprintf(stderr, "ECCODES DEBUG read_the_rest: No final 7777 at expected location (Coded length=%zu)\n", message_length); - return GRIB_WRONG_LENGTH; + + if (no_alloc) { + if ((r->read(r->read_data, buffer, 4, &err) != 4) || err) { + /*fprintf(stderr, "read_the_rest: r->read failed: %s\n", grib_get_error_message(err));*/ + if (c->debug) + fprintf(stderr, "ECCODES DEBUG read_the_rest: Read failed (Coded length=%zu, Already read=%d)\n", + message_length, already_read); + return err; + } + if (check7777 && !r->headers_only && + (buffer[0] != '7' || + buffer[1] != '7' || + buffer[2] != '7' || + buffer[3] != '7')) { + if (c->debug) + fprintf(stderr, "ECCODES DEBUG read_the_rest: No final 7777 at expected location (Coded length=%zu)\n", message_length); + return GRIB_WRONG_LENGTH; + } } -#endif + else { + if ((r->read(r->read_data, buffer + already_read, rest, &err) != rest) || err) { + /*fprintf(stderr, "read_the_rest: r->read failed: %s\n", grib_get_error_message(err));*/ + if (c->debug) + fprintf(stderr, "ECCODES DEBUG read_the_rest: Read failed (Coded length=%zu, Already read=%d)\n", + message_length, already_read); + return err; + } + + if (check7777 && !r->headers_only && + (buffer[message_length - 4] != '7' || + buffer[message_length - 3] != '7' || + buffer[message_length - 2] != '7' || + buffer[message_length - 1] != '7')) + { + if (c->debug) + fprintf(stderr, "ECCODES DEBUG read_the_rest: No final 7777 at expected location (Coded length=%zu)\n", message_length); + return GRIB_WRONG_LENGTH; + } + } + return GRIB_SUCCESS; } @@ -146,7 +169,7 @@ static int read_the_rest(reader* r, size_t message_length, unsigned char* tmp, i #define UINT3(a, b, c) (size_t)((a << 16) + (b << 8) + c); -static int read_GRIB(reader* r) +static int read_GRIB(reader* r, int no_alloc) { unsigned char* tmp = NULL; size_t length = 0; @@ -414,7 +437,7 @@ static int read_GRIB(reader* r) } /* Assert(i <= buf->length); */ - err = read_the_rest(r, length, tmp, i, 1); + err = read_the_rest(r, length, tmp, i, /*check7777=*/1, no_alloc); if (err) r->seek_from_start(r->read_data, r->offset + 4); @@ -469,10 +492,9 @@ static int read_PSEUDO(reader* r, const char* type) /* fprintf(stderr,"%s sec4len=%d i=%d l=%d\n",type,sec4len,i,4+sec1len+sec4len+4); */ Assert(i <= sizeof(tmp)); - return read_the_rest(r, 4 + sec1len + sec4len + 4, tmp, i, 1); + return read_the_rest(r, 4 + sec1len + sec4len + 4, tmp, i, /*check7777=*/1, /*no_alloc=*/0); } - static int read_HDF5_offset(reader* r, int length, unsigned long* v, unsigned char* tmp, int* i) { unsigned char buf[8]; @@ -657,7 +679,7 @@ static int read_HDF5(reader* r) } Assert(i <= sizeof(tmp)); - return read_the_rest(r, end_of_file_address, tmp, i, 0); + return read_the_rest(r, end_of_file_address, tmp, i, 0, 0); } static int read_WRAP(reader* r) @@ -690,10 +712,10 @@ static int read_WRAP(reader* r) } Assert(i <= sizeof(tmp)); - return read_the_rest(r, length, tmp, i, 1); + return read_the_rest(r, length, tmp, i, 1, 0); } -static int read_BUFR(reader* r) +static int read_BUFR(reader* r, int no_alloc) { /* unsigned char tmp[65536];*/ /* Should be enough */ size_t length = 0; @@ -839,7 +861,7 @@ static int read_BUFR(reader* r) } /* Assert(i <= sizeof(tmp)); */ - err = read_the_rest(r, length, tmp, i, 1); + err = read_the_rest(r, length, tmp, i, /*check7777=*/1, no_alloc); if (err) r->seek_from_start(r->read_data, r->offset + 4); @@ -848,7 +870,7 @@ static int read_BUFR(reader* r) return err; } -static int ecc_read_any(reader* r, int grib_ok, int bufr_ok, int hdf5_ok, int wrap_ok) +static int ecc_read_any(reader* r, int no_alloc, int grib_ok, int bufr_ok, int hdf5_ok, int wrap_ok) { unsigned char c; int err = 0; @@ -861,14 +883,14 @@ static int ecc_read_any(reader* r, int grib_ok, int bufr_ok, int hdf5_ok, int wr switch (magic & 0xffffffff) { case GRIB: if (grib_ok) { - err = read_GRIB(r); + err = read_GRIB(r, no_alloc); return err == GRIB_END_OF_FILE ? GRIB_PREMATURE_END_OF_FILE : err; /* Premature EOF */ } break; case BUFR: if (bufr_ok) { - err = read_BUFR(r); + err = read_BUFR(r, no_alloc); return err == GRIB_END_OF_FILE ? GRIB_PREMATURE_END_OF_FILE : err; /* Premature EOF */ } break; @@ -911,7 +933,7 @@ static int ecc_read_any(reader* r, int grib_ok, int bufr_ok, int hdf5_ok, int wr return err; } -static int read_any(reader* r, int grib_ok, int bufr_ok, int hdf5_ok, int wrap_ok) +static int read_any(reader* r, int no_alloc, int grib_ok, int bufr_ok, int hdf5_ok, int wrap_ok) { int result = 0; @@ -924,7 +946,7 @@ static int read_any(reader* r, int grib_ok, int bufr_ok, int hdf5_ok, int wrap_o GRIB_MUTEX_LOCK(&mutex1); #endif - result = ecc_read_any(r, grib_ok, bufr_ok, hdf5_ok, wrap_ok); + result = ecc_read_any(r, no_alloc, grib_ok, bufr_ok, hdf5_ok, wrap_ok); #ifndef ECCODES_EACH_THREAD_OWN_FILE GRIB_MUTEX_UNLOCK(&mutex1); @@ -1154,7 +1176,7 @@ static void* user_provider_buffer(void* data, size_t* length, int* err) return u->user_buffer; } -static int ecc_wmo_read_any_from_file(FILE* f, void* buffer, size_t* len, int grib_ok, int bufr_ok, int hdf5_ok, int wrap_ok) +static int ecc_wmo_read_any_from_file(FILE* f, void* buffer, size_t* len, int no_alloc, int grib_ok, int bufr_ok, int hdf5_ok, int wrap_ok) { int err; user_buffer_t u; @@ -1174,7 +1196,7 @@ static int ecc_wmo_read_any_from_file(FILE* f, void* buffer, size_t* len, int gr r.offset = 0; r.message_size = 0; - err = read_any(&r, grib_ok, bufr_ok, hdf5_ok, wrap_ok); + err = read_any(&r, no_alloc, grib_ok, bufr_ok, hdf5_ok, wrap_ok); *len = r.message_size; return err; @@ -1182,18 +1204,27 @@ static int ecc_wmo_read_any_from_file(FILE* f, void* buffer, size_t* len, int gr int wmo_read_any_from_file(FILE* f, void* buffer, size_t* len) { - return ecc_wmo_read_any_from_file(f, buffer, len, 1, 1, 1, 1); + return ecc_wmo_read_any_from_file(f, buffer, len, /*no_alloc=*/0, 1, 1, 1, 1); } - int wmo_read_grib_from_file(FILE* f, void* buffer, size_t* len) { - return ecc_wmo_read_any_from_file(f, buffer, len, 1, 0, 0, 0); + return ecc_wmo_read_any_from_file(f, buffer, len, /*no_alloc=*/0, 1, 0, 0, 0); } - int wmo_read_bufr_from_file(FILE* f, void* buffer, size_t* len) { - return ecc_wmo_read_any_from_file(f, buffer, len, 0, 1, 0, 0); + return ecc_wmo_read_any_from_file(f, buffer, len, /*no_alloc=*/0, 0, 1, 0, 0); +} + +int wmo_read_any_from_file_noalloc(FILE* f, void* buffer, size_t* len) { + return ecc_wmo_read_any_from_file(f, buffer, len, /*no_alloc=*/1, 1, 1, 1, 1); +} +int wmo_read_grib_from_file_noalloc(FILE* f, void* buffer, size_t* len) { + return ecc_wmo_read_any_from_file(f, buffer, len, /*no_alloc=*/1, 1, 0, 0, 0); +} +int wmo_read_bufr_from_file_noalloc(FILE* f, void* buffer, size_t* len) { + return ecc_wmo_read_any_from_file(f, buffer, len, /*no_alloc=*/1, 0, 1, 0, 0); } +int wmo_read_gts_from_file_noalloc(FILE* f, void* buffer, size_t* len) { return GRIB_NOT_IMPLEMENTED; } int wmo_read_gts_from_file(FILE* f, void* buffer, size_t* len) { @@ -1348,7 +1379,7 @@ int wmo_read_any_from_stream(void* stream_data, long (*stream_proc)(void*, void* r.alloc = &user_provider_buffer; r.headers_only = 0; - err = read_any(&r, 1, 1, 1, 1); + err = read_any(&r, /*no_alloc=*/0, 1, 1, 1, 1); *len = r.message_size; return err; @@ -1377,7 +1408,7 @@ void* wmo_read_any_from_stream_malloc(void* stream_data, long (*stream_proc)(voi r.alloc = &allocate_buffer; r.headers_only = 0; - *err = read_any(&r, 1, 1, 1, 1); + *err = read_any(&r, /*no_alloc=*/0, 1, 1, 1, 1); *size = r.message_size; return u.buffer; @@ -1484,7 +1515,7 @@ static void* ecc_wmo_read_any_from_file_malloc(FILE* f, int* err, size_t* size, r.headers_only = headers_only; r.offset = 0; - *err = read_any(&r, grib_ok, bufr_ok, hdf5_ok, wrap_ok); + *err = read_any(&r, /*no_alloc=*/0, grib_ok, bufr_ok, hdf5_ok, wrap_ok); *size = r.message_size; *offset = r.offset; @@ -1548,7 +1579,7 @@ int grib_read_any_headers_only_from_file(grib_context* ctx, FILE* f, void* buffe r.offset = 0; r.message_size = 0; - err = read_any(&r, 1, ECCODES_READS_BUFR, ECCODES_READS_HDF5, ECCODES_READS_WRAP); + err = read_any(&r, /*no_alloc=*/0, 1, ECCODES_READS_BUFR, ECCODES_READS_HDF5, ECCODES_READS_WRAP); *len = r.message_size; @@ -1578,7 +1609,7 @@ int grib_read_any_from_file(grib_context* ctx, FILE* f, void* buffer, size_t* le offset = ftello(f); - err = read_any(&r, 1, ECCODES_READS_BUFR, ECCODES_READS_HDF5, ECCODES_READS_WRAP); + err = read_any(&r, /*no_alloc=*/0, 1, ECCODES_READS_BUFR, ECCODES_READS_HDF5, ECCODES_READS_WRAP); if (err == GRIB_BUFFER_TOO_SMALL) { if (fseeko(f, offset, SEEK_SET)) @@ -1649,7 +1680,7 @@ int grib_read_any_from_memory_alloc(grib_context* ctx, unsigned char** data, siz r.offset = 0; r.message_size = 0; - err = read_any(&r, 1, ECCODES_READS_BUFR, ECCODES_READS_HDF5, ECCODES_READS_WRAP); + err = read_any(&r, /*no_alloc=*/0, 1, ECCODES_READS_BUFR, ECCODES_READS_HDF5, ECCODES_READS_WRAP); *buffer = u.buffer; *length = u.length; @@ -1683,7 +1714,7 @@ int grib_read_any_from_memory(grib_context* ctx, unsigned char** data, size_t* d r.offset = 0; r.message_size = 0; - err = read_any(&r, 1, ECCODES_READS_BUFR, ECCODES_READS_HDF5, ECCODES_READS_WRAP); + err = read_any(&r, /*no_alloc=*/0, 1, ECCODES_READS_BUFR, ECCODES_READS_HDF5, ECCODES_READS_WRAP); *len = r.message_size; *data_length = m.data_len; diff --git a/tools/codes_count.cc b/tools/codes_count.cc index bb2926b9a..c18e8db5e 100644 --- a/tools/codes_count.cc +++ b/tools/codes_count.cc @@ -21,54 +21,50 @@ static void usage(const char* prog) static int count_messages(FILE* in, int message_type, unsigned long* count) { - void* mesg = NULL; size_t size = 0; - off_t offset = 0; int err = GRIB_SUCCESS; - typedef void* (*wmo_read_proc)(FILE*, int, size_t*, off_t*, int*); + typedef int (*wmo_read_proc)(FILE* , void* , size_t*); wmo_read_proc wmo_read = NULL; - grib_context* c = grib_context_get_default(); + //grib_context* c = grib_context_get_default(); + unsigned char buff1[1000]; + size = sizeof(buff1); if (!in) return 1; /* printf("message_type=%d\n", message_type); */ if (message_type == CODES_GRIB) - wmo_read = wmo_read_grib_from_file_malloc; + wmo_read = wmo_read_grib_from_file_noalloc; else if (message_type == CODES_BUFR) - wmo_read = wmo_read_bufr_from_file_malloc; + wmo_read = wmo_read_bufr_from_file_noalloc; else if (message_type == CODES_GTS) - wmo_read = wmo_read_gts_from_file_malloc; + wmo_read = NULL; else - wmo_read = wmo_read_any_from_file_malloc; + wmo_read = wmo_read_any_from_file_noalloc; if (fail_on_error) { - while ((mesg = wmo_read(in, 0, &size, &offset, &err)) != NULL && err == GRIB_SUCCESS) { - grib_context_free(c, mesg); + while ((err = wmo_read(in, buff1, &size)) == GRIB_SUCCESS) { (*count)++; } } else { int done = 0; while (!done) { - mesg = wmo_read(in, 0, &size, &offset, &err); + err = wmo_read(in, 0, &size); /*printf("Count so far=%ld, mesg=%x, err=%d (%s)\n", *count, mesg, err, grib_get_error_message(err));*/ - if (!mesg) { + if (err) { if (err == GRIB_END_OF_FILE || err == GRIB_PREMATURE_END_OF_FILE) { done = 1; /* reached the end */ } } - if (mesg && !err) { + else { (*count)++; } - grib_context_free(c, mesg); } } if (err == GRIB_END_OF_FILE) err = GRIB_SUCCESS; - if (mesg) grib_context_free(c, mesg); - return err; } From 4d1f9c49b6660e38f6370502ff5043f0f9d2856c Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 16 Jun 2023 17:10:13 +0100 Subject: [PATCH 261/378] Fast codes_count: More tests are passing (WIP) --- src/grib_api.h | 8 ++--- src/grib_io.cc | 74 ++++++++++++++++++---------------------- tools/codes_count.cc | 80 ++++++++++++++++++++++++++++++++++++++------ 3 files changed, 105 insertions(+), 57 deletions(-) diff --git a/src/grib_api.h b/src/grib_api.h index 0fde5c214..007485d2f 100644 --- a/src/grib_api.h +++ b/src/grib_api.h @@ -1377,10 +1377,10 @@ int wmo_read_bufr_from_file(FILE* f, void* buffer, size_t* len); int wmo_read_gts_from_file(FILE* f, void* buffer, size_t* len); int wmo_read_any_from_stream(void* stream_data, long (*stream_proc)(void*, void* buffer, long len), void* buffer, size_t* len); -int wmo_read_any_from_file_noalloc(FILE* f, void* buffer, size_t* len); -int wmo_read_grib_from_file_noalloc(FILE* f, void* buffer, size_t* len); -int wmo_read_bufr_from_file_noalloc(FILE* f, void* buffer, size_t* len); -int wmo_read_gts_from_file_noalloc(FILE* f, void* buffer, size_t* len); +int wmo_read_any_from_file_fast(FILE* f, void* buffer, size_t* len); +int wmo_read_grib_from_file_fast(FILE* f, void* buffer, size_t* len); +int wmo_read_bufr_from_file_fast(FILE* f, void* buffer, size_t* len); +int wmo_read_gts_from_file_fast(FILE* f, void* buffer, size_t* len); /* These functions allocate memory for the result so the user is responsible for freeing it */ void* wmo_read_any_from_stream_malloc(void* stream_data, long (*stream_proc)(void*, void* buffer, long len), size_t* size, int* err); diff --git a/src/grib_io.cc b/src/grib_io.cc index f745ea2fd..fb12378c3 100644 --- a/src/grib_io.cc +++ b/src/grib_io.cc @@ -84,6 +84,7 @@ typedef struct reader } reader; +// If no_alloc argument is 1, then the content of the message are not stored. We just seek to the final 7777 static int read_the_rest(reader* r, size_t message_length, unsigned char* tmp, int already_read, int check7777, int no_alloc) { int err = GRIB_SUCCESS; @@ -95,61 +96,48 @@ static int read_the_rest(reader* r, size_t message_length, unsigned char* tmp, i if (message_length == 0) return GRIB_BUFFER_TOO_SMALL; - buffer_size = message_length; + buffer_size = message_length; // store the whole message in the buffer if (no_alloc) - buffer_size = 5; + buffer_size = 5; // big enough to store the 7777 rest = message_length - already_read; r->message_size = message_length; buffer = (unsigned char*)r->alloc(r->alloc_data, &buffer_size, &err); if (err) return err; - if (!no_alloc) { + if (no_alloc) { + r->seek(r->read_data, rest - 4); // jump to the end before the 7777 + } else { if (buffer == NULL || (buffer_size < message_length)) { return GRIB_BUFFER_TOO_SMALL; } memcpy(buffer, tmp, already_read); - } else { - r->seek(r->read_data, rest-4); } + bool read_failed = false; if (no_alloc) { - if ((r->read(r->read_data, buffer, 4, &err) != 4) || err) { - /*fprintf(stderr, "read_the_rest: r->read failed: %s\n", grib_get_error_message(err));*/ - if (c->debug) - fprintf(stderr, "ECCODES DEBUG read_the_rest: Read failed (Coded length=%zu, Already read=%d)\n", - message_length, already_read); - return err; - } - if (check7777 && !r->headers_only && - (buffer[0] != '7' || - buffer[1] != '7' || - buffer[2] != '7' || - buffer[3] != '7')) { - if (c->debug) - fprintf(stderr, "ECCODES DEBUG read_the_rest: No final 7777 at expected location (Coded length=%zu)\n", message_length); - return GRIB_WRONG_LENGTH; - } + read_failed = ((r->read(r->read_data, buffer, 4, &err) != 4) || err); } else { - if ((r->read(r->read_data, buffer + already_read, rest, &err) != rest) || err) { - /*fprintf(stderr, "read_the_rest: r->read failed: %s\n", grib_get_error_message(err));*/ - if (c->debug) - fprintf(stderr, "ECCODES DEBUG read_the_rest: Read failed (Coded length=%zu, Already read=%d)\n", - message_length, already_read); - return err; - } + read_failed = ((r->read(r->read_data, buffer + already_read, rest, &err) != rest) || err); + } + if (read_failed) { + if (c->debug) + fprintf(stderr, "ECCODES DEBUG %s: Read failed (Coded length=%zu, Already read=%d)", + __func__, message_length, already_read); + return err; + } - if (check7777 && !r->headers_only && - (buffer[message_length - 4] != '7' || - buffer[message_length - 3] != '7' || - buffer[message_length - 2] != '7' || - buffer[message_length - 1] != '7')) - { - if (c->debug) - fprintf(stderr, "ECCODES DEBUG read_the_rest: No final 7777 at expected location (Coded length=%zu)\n", message_length); - return GRIB_WRONG_LENGTH; - } + const size_t mlen = no_alloc ? 4 : message_length; + if (check7777 && !r->headers_only && + (buffer[mlen - 4] != '7' || + buffer[mlen - 3] != '7' || + buffer[mlen - 2] != '7' || + buffer[mlen - 1] != '7')) + { + if (c->debug) + fprintf(stderr, "ECCODES DEBUG %s: No final 7777 at expected location (Coded length=%zu)\n", __func__, message_length); + return GRIB_WRONG_LENGTH; } return GRIB_SUCCESS; @@ -1215,16 +1203,18 @@ int wmo_read_bufr_from_file(FILE* f, void* buffer, size_t* len) return ecc_wmo_read_any_from_file(f, buffer, len, /*no_alloc=*/0, 0, 1, 0, 0); } -int wmo_read_any_from_file_noalloc(FILE* f, void* buffer, size_t* len) { +int wmo_read_any_from_file_fast(FILE* f, void* buffer, size_t* len) { return ecc_wmo_read_any_from_file(f, buffer, len, /*no_alloc=*/1, 1, 1, 1, 1); } -int wmo_read_grib_from_file_noalloc(FILE* f, void* buffer, size_t* len) { +int wmo_read_grib_from_file_fast(FILE* f, void* buffer, size_t* len) { return ecc_wmo_read_any_from_file(f, buffer, len, /*no_alloc=*/1, 1, 0, 0, 0); } -int wmo_read_bufr_from_file_noalloc(FILE* f, void* buffer, size_t* len) { +int wmo_read_bufr_from_file_fast(FILE* f, void* buffer, size_t* len) { return ecc_wmo_read_any_from_file(f, buffer, len, /*no_alloc=*/1, 0, 1, 0, 0); } -int wmo_read_gts_from_file_noalloc(FILE* f, void* buffer, size_t* len) { return GRIB_NOT_IMPLEMENTED; } +int wmo_read_gts_from_file_fast(FILE* f, void* buffer, size_t* len) { + return GRIB_NOT_IMPLEMENTED; +} int wmo_read_gts_from_file(FILE* f, void* buffer, size_t* len) { diff --git a/tools/codes_count.cc b/tools/codes_count.cc index c18e8db5e..28c95f171 100644 --- a/tools/codes_count.cc +++ b/tools/codes_count.cc @@ -18,28 +18,79 @@ static void usage(const char* prog) printf("Usage: %s [-v] [-f] infile1 infile2 ... \n", prog); exit(1); } +static int count_messages_slow(FILE* in, int message_type, unsigned long* count) +{ + void* mesg = NULL; + size_t size = 0; + off_t offset = 0; + int err = GRIB_SUCCESS; + typedef void* (*wmo_read_proc)(FILE*, int, size_t*, off_t*, int*); + wmo_read_proc wmo_read = NULL; + grib_context* c = grib_context_get_default(); + + if (!in) + return 1; + + if (message_type == CODES_GRIB) + wmo_read = wmo_read_grib_from_file_malloc; + else if (message_type == CODES_BUFR) + wmo_read = wmo_read_bufr_from_file_malloc; + else if (message_type == CODES_GTS) + wmo_read = wmo_read_gts_from_file_malloc; + else + wmo_read = wmo_read_any_from_file_malloc; -static int count_messages(FILE* in, int message_type, unsigned long* count) + if (fail_on_error) { + while ((mesg = wmo_read(in, 0, &size, &offset, &err)) != NULL && err == GRIB_SUCCESS) { + grib_context_free(c, mesg); + (*count)++; + } + } + else { + int done = 0; + while (!done) { + mesg = wmo_read(in, 0, &size, &offset, &err); + /*printf("Count so far=%ld, mesg=%x, err=%d (%s)\n", *count, mesg, err, grib_get_error_message(err));*/ + if (!mesg) { + if (err == GRIB_END_OF_FILE || err == GRIB_PREMATURE_END_OF_FILE) { + done = 1; /* reached the end */ + } + } + if (mesg && !err) { + (*count)++; + } + grib_context_free(c, mesg); + } + } + + if (err == GRIB_END_OF_FILE) + err = GRIB_SUCCESS; + + if (mesg) grib_context_free(c, mesg); + + return err; +} + +static int count_messages_fast(FILE* in, int message_type, unsigned long* count) { size_t size = 0; int err = GRIB_SUCCESS; typedef int (*wmo_read_proc)(FILE* , void* , size_t*); wmo_read_proc wmo_read = NULL; - //grib_context* c = grib_context_get_default(); unsigned char buff1[1000]; size = sizeof(buff1); if (!in) return 1; - /* printf("message_type=%d\n", message_type); */ + if (message_type == CODES_GRIB) - wmo_read = wmo_read_grib_from_file_noalloc; + wmo_read = wmo_read_grib_from_file_fast; else if (message_type == CODES_BUFR) - wmo_read = wmo_read_bufr_from_file_noalloc; + wmo_read = wmo_read_bufr_from_file_fast; else if (message_type == CODES_GTS) - wmo_read = NULL; + wmo_read = wmo_read_gts_from_file_fast; else - wmo_read = wmo_read_any_from_file_noalloc; + wmo_read = wmo_read_any_from_file_fast; if (fail_on_error) { while ((err = wmo_read(in, buff1, &size)) == GRIB_SUCCESS) { @@ -49,7 +100,7 @@ static int count_messages(FILE* in, int message_type, unsigned long* count) else { int done = 0; while (!done) { - err = wmo_read(in, 0, &size); + err = wmo_read(in, buff1, &size); /*printf("Count so far=%ld, mesg=%x, err=%d (%s)\n", *count, mesg, err, grib_get_error_message(err));*/ if (err) { if (err == GRIB_END_OF_FILE || err == GRIB_PREMATURE_END_OF_FILE) { @@ -76,6 +127,8 @@ int main(int argc, char* argv[]) int err = 0, files_processed = 0; unsigned long count_total = 0, count_curr = 0; int message_type = 0; /* GRIB, BUFR etc */ + typedef int (*count_proc)(FILE*, int, unsigned long*); + count_proc do_count = count_messages_fast; toolname = argv[0]; if (argc < 2) @@ -104,17 +157,22 @@ int main(int argc, char* argv[]) continue; } - if (strcmp(filename, "-") == 0) + if (strcmp(filename, "-") == 0) { infh = stdin; - else + do_count = count_messages_slow; // cannot do fseek on stdin + } else { infh = fopen(filename, "rb"); + } if (!infh) { perror(filename); exit(1); } + if (message_type == CODES_GTS) { + do_count = count_messages_slow; // not yet implemented + } files_processed = 1; /* At least one file processed */ count_curr = 0; - err = count_messages(infh, message_type, &count_curr); + err = do_count(infh, message_type, &count_curr); if (err && fail_on_error) { fprintf(stderr, "Invalid message(s) found in %s", filename); if (count_curr > 0) From 190c6635869b055fb05c31736b6fae0fbbc4f751 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sat, 17 Jun 2023 17:06:57 +0000 Subject: [PATCH 262/378] ECC-1614: Performance: Speedup grib_count and bufr_count --- src/grib_io.cc | 23 ++++++++++++++++++----- tools/codes_count.cc | 28 +++++++++++++--------------- 2 files changed, 31 insertions(+), 20 deletions(-) diff --git a/src/grib_io.cc b/src/grib_io.cc index fb12378c3..4c01dfa54 100644 --- a/src/grib_io.cc +++ b/src/grib_io.cc @@ -1203,17 +1203,30 @@ int wmo_read_bufr_from_file(FILE* f, void* buffer, size_t* len) return ecc_wmo_read_any_from_file(f, buffer, len, /*no_alloc=*/0, 0, 1, 0, 0); } -int wmo_read_any_from_file_fast(FILE* f, void* buffer, size_t* len) { +int wmo_read_any_from_file_fast(FILE* f, void* buffer, size_t* len) +{ return ecc_wmo_read_any_from_file(f, buffer, len, /*no_alloc=*/1, 1, 1, 1, 1); } -int wmo_read_grib_from_file_fast(FILE* f, void* buffer, size_t* len) { +int wmo_read_grib_from_file_fast(FILE* f, void* buffer, size_t* len) +{ return ecc_wmo_read_any_from_file(f, buffer, len, /*no_alloc=*/1, 1, 0, 0, 0); } -int wmo_read_bufr_from_file_fast(FILE* f, void* buffer, size_t* len) { +int wmo_read_bufr_from_file_fast(FILE* f, void* buffer, size_t* len) +{ return ecc_wmo_read_any_from_file(f, buffer, len, /*no_alloc=*/1, 0, 1, 0, 0); } -int wmo_read_gts_from_file_fast(FILE* f, void* buffer, size_t* len) { - return GRIB_NOT_IMPLEMENTED; +int wmo_read_gts_from_file_fast(FILE* f, void* buffer, size_t* len) +{ + //TODO(masn): Needs proper implementation; no malloc + void* mesg = NULL; + size_t size = 0; + off_t offset = 0; + int err = GRIB_SUCCESS; + grib_context* c = grib_context_get_default(); + + mesg = wmo_read_gts_from_file_malloc(f, 0, &size, &offset, &err); + grib_context_free(c, mesg); + return err; } int wmo_read_gts_from_file(FILE* f, void* buffer, size_t* len) diff --git a/tools/codes_count.cc b/tools/codes_count.cc index 28c95f171..89b767c5c 100644 --- a/tools/codes_count.cc +++ b/tools/codes_count.cc @@ -18,6 +18,8 @@ static void usage(const char* prog) printf("Usage: %s [-v] [-f] infile1 infile2 ... \n", prog); exit(1); } + +// This version uses malloc and reads the whole contents of each message static int count_messages_slow(FILE* in, int message_type, unsigned long* count) { void* mesg = NULL; @@ -28,8 +30,7 @@ static int count_messages_slow(FILE* in, int message_type, unsigned long* count) wmo_read_proc wmo_read = NULL; grib_context* c = grib_context_get_default(); - if (!in) - return 1; + if (!in) return 1; if (message_type == CODES_GRIB) wmo_read = wmo_read_grib_from_file_malloc; @@ -50,10 +51,10 @@ static int count_messages_slow(FILE* in, int message_type, unsigned long* count) int done = 0; while (!done) { mesg = wmo_read(in, 0, &size, &offset, &err); - /*printf("Count so far=%ld, mesg=%x, err=%d (%s)\n", *count, mesg, err, grib_get_error_message(err));*/ + // printf("Count so far=%ld, mesg=%x, err=%d (%s)\n", *count, mesg, err, grib_get_error_message(err)); if (!mesg) { if (err == GRIB_END_OF_FILE || err == GRIB_PREMATURE_END_OF_FILE) { - done = 1; /* reached the end */ + done = 1; // reached the end } } if (mesg && !err) { @@ -71,17 +72,17 @@ static int count_messages_slow(FILE* in, int message_type, unsigned long* count) return err; } +// This version does not store the message contents. Much faster static int count_messages_fast(FILE* in, int message_type, unsigned long* count) { size_t size = 0; int err = GRIB_SUCCESS; typedef int (*wmo_read_proc)(FILE* , void* , size_t*); wmo_read_proc wmo_read = NULL; - unsigned char buff1[1000]; + unsigned char buff1[1000] = {0,}; size = sizeof(buff1); - if (!in) - return 1; + if (!in) return 1; if (message_type == CODES_GRIB) wmo_read = wmo_read_grib_from_file_fast; @@ -101,10 +102,9 @@ static int count_messages_fast(FILE* in, int message_type, unsigned long* count) int done = 0; while (!done) { err = wmo_read(in, buff1, &size); - /*printf("Count so far=%ld, mesg=%x, err=%d (%s)\n", *count, mesg, err, grib_get_error_message(err));*/ if (err) { if (err == GRIB_END_OF_FILE || err == GRIB_PREMATURE_END_OF_FILE) { - done = 1; /* reached the end */ + done = 1; // reached the end } } else { @@ -126,7 +126,7 @@ int main(int argc, char* argv[]) int i, verbose = 0; int err = 0, files_processed = 0; unsigned long count_total = 0, count_curr = 0; - int message_type = 0; /* GRIB, BUFR etc */ + int message_type = 0; // GRIB, BUFR etc typedef int (*count_proc)(FILE*, int, unsigned long*); count_proc do_count = count_messages_fast; @@ -167,10 +167,8 @@ int main(int argc, char* argv[]) perror(filename); exit(1); } - if (message_type == CODES_GTS) { - do_count = count_messages_slow; // not yet implemented - } - files_processed = 1; /* At least one file processed */ + + files_processed = 1; // At least one file processed count_curr = 0; err = do_count(infh, message_type, &count_curr); if (err && fail_on_error) { @@ -180,7 +178,7 @@ int main(int argc, char* argv[]) fprintf(stderr, "\n"); exit(err); #ifdef DONT_EXIT_ON_BAD_APPLE - /* If we did not want to fail but warn and continue */ + // If we did not want to fail but warn and continue fclose(infh); continue; #endif From 57e0ce018dcd22b03cf7a6bf5b62ff088fc4c6bf Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sun, 18 Jun 2023 11:49:12 +0100 Subject: [PATCH 263/378] ECC-1614: Cleanup --- tools/codes_count.cc | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/tools/codes_count.cc b/tools/codes_count.cc index 89b767c5c..237620fdf 100644 --- a/tools/codes_count.cc +++ b/tools/codes_count.cc @@ -30,8 +30,6 @@ static int count_messages_slow(FILE* in, int message_type, unsigned long* count) wmo_read_proc wmo_read = NULL; grib_context* c = grib_context_get_default(); - if (!in) return 1; - if (message_type == CODES_GRIB) wmo_read = wmo_read_grib_from_file_malloc; else if (message_type == CODES_BUFR) @@ -72,17 +70,14 @@ static int count_messages_slow(FILE* in, int message_type, unsigned long* count) return err; } -// This version does not store the message contents. Much faster +// This version does not store the message contents (no malloc). Much faster static int count_messages_fast(FILE* in, int message_type, unsigned long* count) { - size_t size = 0; int err = GRIB_SUCCESS; typedef int (*wmo_read_proc)(FILE* , void* , size_t*); wmo_read_proc wmo_read = NULL; - unsigned char buff1[1000] = {0,}; - size = sizeof(buff1); - - if (!in) return 1; + unsigned char buffer[1000] = {0,}; + size_t size = sizeof(buffer); if (message_type == CODES_GRIB) wmo_read = wmo_read_grib_from_file_fast; @@ -94,14 +89,14 @@ static int count_messages_fast(FILE* in, int message_type, unsigned long* count) wmo_read = wmo_read_any_from_file_fast; if (fail_on_error) { - while ((err = wmo_read(in, buff1, &size)) == GRIB_SUCCESS) { + while ((err = wmo_read(in, buffer, &size)) == GRIB_SUCCESS) { (*count)++; } } else { int done = 0; while (!done) { - err = wmo_read(in, buff1, &size); + err = wmo_read(in, buffer, &size); if (err) { if (err == GRIB_END_OF_FILE || err == GRIB_PREMATURE_END_OF_FILE) { done = 1; // reached the end From ed54e2403a073fa96968f415b9d9db89e2f81511 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sun, 18 Jun 2023 18:38:54 +0100 Subject: [PATCH 264/378] Fix conversion of string to long --- src/grib_accessor_class_gen.cc | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/grib_accessor_class_gen.cc b/src/grib_accessor_class_gen.cc index ba85a8855..f5ca5c40c 100644 --- a/src/grib_accessor_class_gen.cc +++ b/src/grib_accessor_class_gen.cc @@ -542,8 +542,8 @@ static int pack_string(grib_accessor* a, const char* v, size_t* len) double val = strtod(v, &endPtr); if (*endPtr) { grib_context_log(a->context, GRIB_LOG_ERROR, - "pack_string: Invalid value (%s) for %s. String cannot be converted to a double", - v, a->name); + "%s: Invalid value (%s) for %s. String cannot be converted to a double", + __func__, v, a->name); return GRIB_WRONG_TYPE; } return grib_pack_double(a, &val, &l); @@ -551,7 +551,7 @@ static int pack_string(grib_accessor* a, const char* v, size_t* len) if (a->cclass->pack_long && a->cclass->pack_long != &pack_long) { size_t l = 1; - long val = atof(v); + long val = atol(v); return grib_pack_long(a, &val, &l); } From 20379383e4f29376f3209ab9d89751c1efbc8b9e Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sun, 18 Jun 2023 18:39:28 +0100 Subject: [PATCH 265/378] Testing: Add test to cover base-class pack_string call --- tests/grib_change_scanning.sh | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tests/grib_change_scanning.sh b/tests/grib_change_scanning.sh index 1f2f5ab29..2312c1ca3 100755 --- a/tests/grib_change_scanning.sh +++ b/tests/grib_change_scanning.sh @@ -128,6 +128,11 @@ grib_check_key_equals "$ECCODES_SAMPLES_PATH/GRIB1.tmpl" jScansNegatively,jScans grib_check_key_equals "$ECCODES_SAMPLES_PATH/GRIB2.tmpl" iScansNegatively,iScansPositively '0 1' grib_check_key_equals "$ECCODES_SAMPLES_PATH/GRIB2.tmpl" jScansNegatively,jScansPositively '1 0' +# Rare case of pack_string for an integer key +${tools_dir}/grib_set -s swapScanningX:s=1 $ECCODES_SAMPLES_PATH/GRIB2.tmpl $tempGribA 2>/dev/null +${tools_dir}/grib_set -s swapScanningX:i=1 $ECCODES_SAMPLES_PATH/GRIB2.tmpl $tempGribB 2>/dev/null +cmp $tempGribA $tempGribB + # Clean up rm -f $tempFilt $tempGribA $tempGribB $tempRef $tempText rm -f ${data_dir}/scan1.grib ${data_dir}/scan.grib From cf630743ab56f1c4177e67b00de46d7060500684 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 19 Jun 2023 12:54:43 +0100 Subject: [PATCH 266/378] Fast read: provide offset arguments --- src/grib_api.h | 8 ++++---- src/grib_io.cc | 31 +++++++++++++++++-------------- tools/codes_count.cc | 9 ++++++--- 3 files changed, 27 insertions(+), 21 deletions(-) diff --git a/src/grib_api.h b/src/grib_api.h index 007485d2f..c347efc31 100644 --- a/src/grib_api.h +++ b/src/grib_api.h @@ -1377,10 +1377,10 @@ int wmo_read_bufr_from_file(FILE* f, void* buffer, size_t* len); int wmo_read_gts_from_file(FILE* f, void* buffer, size_t* len); int wmo_read_any_from_stream(void* stream_data, long (*stream_proc)(void*, void* buffer, long len), void* buffer, size_t* len); -int wmo_read_any_from_file_fast(FILE* f, void* buffer, size_t* len); -int wmo_read_grib_from_file_fast(FILE* f, void* buffer, size_t* len); -int wmo_read_bufr_from_file_fast(FILE* f, void* buffer, size_t* len); -int wmo_read_gts_from_file_fast(FILE* f, void* buffer, size_t* len); +int wmo_read_any_from_file_fast(FILE* f, void* buffer, size_t* len, off_t* offset); +int wmo_read_grib_from_file_fast(FILE* f, void* buffer, size_t* len, off_t* offset); +int wmo_read_bufr_from_file_fast(FILE* f, void* buffer, size_t* len, off_t* offset); +int wmo_read_gts_from_file_fast(FILE* f, void* buffer, size_t* len, off_t* offset); /* These functions allocate memory for the result so the user is responsible for freeing it */ void* wmo_read_any_from_stream_malloc(void* stream_data, long (*stream_proc)(void*, void* buffer, long len), size_t* size, int* err); diff --git a/src/grib_io.cc b/src/grib_io.cc index 4c01dfa54..67f2b6975 100644 --- a/src/grib_io.cc +++ b/src/grib_io.cc @@ -1164,7 +1164,8 @@ static void* user_provider_buffer(void* data, size_t* length, int* err) return u->user_buffer; } -static int ecc_wmo_read_any_from_file(FILE* f, void* buffer, size_t* len, int no_alloc, int grib_ok, int bufr_ok, int hdf5_ok, int wrap_ok) +static int ecc_wmo_read_any_from_file(FILE* f, void* buffer, size_t* len, off_t* offset, + int no_alloc, int grib_ok, int bufr_ok, int hdf5_ok, int wrap_ok) { int err; user_buffer_t u; @@ -1186,45 +1187,47 @@ static int ecc_wmo_read_any_from_file(FILE* f, void* buffer, size_t* len, int no err = read_any(&r, no_alloc, grib_ok, bufr_ok, hdf5_ok, wrap_ok); *len = r.message_size; + *offset = r.offset; return err; } int wmo_read_any_from_file(FILE* f, void* buffer, size_t* len) { - return ecc_wmo_read_any_from_file(f, buffer, len, /*no_alloc=*/0, 1, 1, 1, 1); + off_t offset = 0; + return ecc_wmo_read_any_from_file(f, buffer, len, &offset, /*no_alloc=*/0, 1, 1, 1, 1); } int wmo_read_grib_from_file(FILE* f, void* buffer, size_t* len) { - return ecc_wmo_read_any_from_file(f, buffer, len, /*no_alloc=*/0, 1, 0, 0, 0); + off_t offset = 0; + return ecc_wmo_read_any_from_file(f, buffer, len, &offset, /*no_alloc=*/0, 1, 0, 0, 0); } int wmo_read_bufr_from_file(FILE* f, void* buffer, size_t* len) { - return ecc_wmo_read_any_from_file(f, buffer, len, /*no_alloc=*/0, 0, 1, 0, 0); + off_t offset = 0; + return ecc_wmo_read_any_from_file(f, buffer, len, &offset, /*no_alloc=*/0, 0, 1, 0, 0); } -int wmo_read_any_from_file_fast(FILE* f, void* buffer, size_t* len) +int wmo_read_any_from_file_fast(FILE* f, void* buffer, size_t* len, off_t* offset) { - return ecc_wmo_read_any_from_file(f, buffer, len, /*no_alloc=*/1, 1, 1, 1, 1); + return ecc_wmo_read_any_from_file(f, buffer, len, offset, /*no_alloc=*/1, 1, 1, 1, 1); } -int wmo_read_grib_from_file_fast(FILE* f, void* buffer, size_t* len) +int wmo_read_grib_from_file_fast(FILE* f, void* buffer, size_t* len, off_t* offset) { - return ecc_wmo_read_any_from_file(f, buffer, len, /*no_alloc=*/1, 1, 0, 0, 0); + return ecc_wmo_read_any_from_file(f, buffer, len, offset, /*no_alloc=*/1, 1, 0, 0, 0); } -int wmo_read_bufr_from_file_fast(FILE* f, void* buffer, size_t* len) +int wmo_read_bufr_from_file_fast(FILE* f, void* buffer, size_t* len, off_t* offset) { - return ecc_wmo_read_any_from_file(f, buffer, len, /*no_alloc=*/1, 0, 1, 0, 0); + return ecc_wmo_read_any_from_file(f, buffer, len, offset, /*no_alloc=*/1, 0, 1, 0, 0); } -int wmo_read_gts_from_file_fast(FILE* f, void* buffer, size_t* len) +int wmo_read_gts_from_file_fast(FILE* f, void* buffer, size_t* len, off_t* offset) { //TODO(masn): Needs proper implementation; no malloc void* mesg = NULL; - size_t size = 0; - off_t offset = 0; int err = GRIB_SUCCESS; grib_context* c = grib_context_get_default(); - mesg = wmo_read_gts_from_file_malloc(f, 0, &size, &offset, &err); + mesg = wmo_read_gts_from_file_malloc(f, 0, len, offset, &err); grib_context_free(c, mesg); return err; } diff --git a/tools/codes_count.cc b/tools/codes_count.cc index 237620fdf..cc9aa139f 100644 --- a/tools/codes_count.cc +++ b/tools/codes_count.cc @@ -74,10 +74,12 @@ static int count_messages_slow(FILE* in, int message_type, unsigned long* count) static int count_messages_fast(FILE* in, int message_type, unsigned long* count) { int err = GRIB_SUCCESS; - typedef int (*wmo_read_proc)(FILE* , void* , size_t*); + //Signature: FILE* f, void* buffer, size_t* len, off_t* offset + typedef int (*wmo_read_proc)(FILE* , void* , size_t*, off_t*); wmo_read_proc wmo_read = NULL; unsigned char buffer[1000] = {0,}; size_t size = sizeof(buffer); + off_t offset = 0; if (message_type == CODES_GRIB) wmo_read = wmo_read_grib_from_file_fast; @@ -89,14 +91,15 @@ static int count_messages_fast(FILE* in, int message_type, unsigned long* count) wmo_read = wmo_read_any_from_file_fast; if (fail_on_error) { - while ((err = wmo_read(in, buffer, &size)) == GRIB_SUCCESS) { + while ((err = wmo_read(in, buffer, &size, &offset)) == GRIB_SUCCESS) { + //printf("%zu %lld\n", size,offset); (*count)++; } } else { int done = 0; while (!done) { - err = wmo_read(in, buffer, &size); + err = wmo_read(in, buffer, &size, &offset); if (err) { if (err == GRIB_END_OF_FILE || err == GRIB_PREMATURE_END_OF_FILE) { done = 1; // reached the end From 16403faeca14fc3d361bcba9b4ae0a5deb17b0d8 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 19 Jun 2023 15:53:47 +0100 Subject: [PATCH 267/378] ECC-1615: Fortran API: Ability to read an array of double-precision integers --- examples/F90/grib_get_pl.f90 | 19 +++++++++++-------- fortran/eccodes_f90_int.f90 | 1 + fortran/eccodes_f90_long_int.f90 | 1 + fortran/grib_fortran.c | 1 - 4 files changed, 13 insertions(+), 9 deletions(-) diff --git a/examples/F90/grib_get_pl.f90 b/examples/F90/grib_get_pl.f90 index b07a6937f..834d86e49 100644 --- a/examples/F90/grib_get_pl.f90 +++ b/examples/F90/grib_get_pl.f90 @@ -16,10 +16,10 @@ program grib_get_pl integer :: infile integer :: igrib integer :: PLPresent, nb_pl - real, dimension(:), allocatable :: pl + integer(kind=8), dimension(:), allocatable :: pl_8 + integer(kind=4), dimension(:), allocatable :: pl_4 - call codes_open_file(infile, & - '../../data/reduced_gaussian_surface.grib1', 'r') + call codes_open_file(infile, '../../data/reduced_gaussian_surface.grib1', 'r') ! A new grib message is loaded from file ! igrib is the grib id to be used in subsequent calls @@ -31,12 +31,15 @@ program grib_get_pl if (PLPresent == 1) then call codes_get_size(igrib, 'pl', nb_pl) print *, "there are ", nb_pl, " PL values" - allocate (pl(nb_pl)) - call codes_get(igrib, 'pl', pl) - print *, "pl = ", pl - deallocate (pl) + allocate (pl_4(nb_pl)) + call codes_get(igrib, 'pl', pl_4) + allocate (pl_8(nb_pl)) + call codes_get(igrib, 'pl', pl_8) + ! print *, "pl = ", pl + deallocate (pl_4) + deallocate (pl_8) else - print *, "There is no PL values in your GRIB message!" + print *, "There are no PL values in your GRIB message!" end if call codes_release(igrib) diff --git a/fortran/eccodes_f90_int.f90 b/fortran/eccodes_f90_int.f90 index 6f1aa7964..5202aa4f7 100644 --- a/fortran/eccodes_f90_int.f90 +++ b/fortran/eccodes_f90_int.f90 @@ -100,6 +100,7 @@ codes_get_string, & codes_get_byte_array, & codes_get_int_array, & + codes_get_long_array, & codes_get_real4_array, & codes_get_real8_array end interface codes_get diff --git a/fortran/eccodes_f90_long_int.f90 b/fortran/eccodes_f90_long_int.f90 index 937e4aad8..5399b54be 100644 --- a/fortran/eccodes_f90_long_int.f90 +++ b/fortran/eccodes_f90_long_int.f90 @@ -101,6 +101,7 @@ codes_get_string, & codes_get_byte_array, & codes_get_int_array, & + codes_get_long_array, & codes_get_real4_array, & codes_get_real8_array end interface codes_get diff --git a/fortran/grib_fortran.c b/fortran/grib_fortran.c index 06d48f343..a8b10fda5 100644 --- a/fortran/grib_fortran.c +++ b/fortran/grib_fortran.c @@ -2351,7 +2351,6 @@ int grib_f_get_int_array_(int* gid, char* key, int *val, int* size, int len){ char buf[1024]; size_t lsize = *size; - if(!h) return GRIB_INVALID_GRIB; if(sizeof(long) == sizeof(int)){ From bf162920e9fba1d5a5e30d6b1b6f750e52b6be34 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 19 Jun 2023 16:59:10 +0100 Subject: [PATCH 268/378] Fast read: Interface --- src/eccodes_prototypes.h | 4 ++++ src/grib_api.h | 5 ----- src/grib_io.cc | 1 + 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/eccodes_prototypes.h b/src/eccodes_prototypes.h index 58b462538..f994c624f 100644 --- a/src/eccodes_prototypes.h +++ b/src/eccodes_prototypes.h @@ -1100,6 +1100,10 @@ int wmo_read_bufr_from_file(FILE* f, void* buffer, size_t* len); int wmo_read_gts_from_file(FILE* f, void* buffer, size_t* len); int wmo_read_taf_from_file(FILE* f, void* buffer, size_t* len); int wmo_read_metar_from_file(FILE* f, void* buffer, size_t* len); +int wmo_read_any_from_file_fast(FILE* f, void* buffer, size_t* len, off_t* offset); +int wmo_read_grib_from_file_fast(FILE* f, void* buffer, size_t* len, off_t* offset); +int wmo_read_bufr_from_file_fast(FILE* f, void* buffer, size_t* len, off_t* offset); +int wmo_read_gts_from_file_fast(FILE* f, void* buffer, size_t* len, off_t* offset); int wmo_read_any_from_stream(void* stream_data, long (*stream_proc)(void*, void* buffer, long len), void* buffer, size_t* len); void* wmo_read_any_from_stream_malloc(void* stream_data, long (*stream_proc)(void*, void* buffer, long len), size_t* size, int* err); void* wmo_read_gts_from_file_malloc(FILE* f, int headers_only, size_t* size, off_t* offset, int* err); diff --git a/src/grib_api.h b/src/grib_api.h index c347efc31..b06e854fc 100644 --- a/src/grib_api.h +++ b/src/grib_api.h @@ -1377,11 +1377,6 @@ int wmo_read_bufr_from_file(FILE* f, void* buffer, size_t* len); int wmo_read_gts_from_file(FILE* f, void* buffer, size_t* len); int wmo_read_any_from_stream(void* stream_data, long (*stream_proc)(void*, void* buffer, long len), void* buffer, size_t* len); -int wmo_read_any_from_file_fast(FILE* f, void* buffer, size_t* len, off_t* offset); -int wmo_read_grib_from_file_fast(FILE* f, void* buffer, size_t* len, off_t* offset); -int wmo_read_bufr_from_file_fast(FILE* f, void* buffer, size_t* len, off_t* offset); -int wmo_read_gts_from_file_fast(FILE* f, void* buffer, size_t* len, off_t* offset); - /* These functions allocate memory for the result so the user is responsible for freeing it */ void* wmo_read_any_from_stream_malloc(void* stream_data, long (*stream_proc)(void*, void* buffer, long len), size_t* size, int* err); void* wmo_read_any_from_file_malloc(FILE* f, int headers_only, size_t* size, off_t* offset, int* err); diff --git a/src/grib_io.cc b/src/grib_io.cc index 67f2b6975..41bc117b6 100644 --- a/src/grib_io.cc +++ b/src/grib_io.cc @@ -1208,6 +1208,7 @@ int wmo_read_bufr_from_file(FILE* f, void* buffer, size_t* len) return ecc_wmo_read_any_from_file(f, buffer, len, &offset, /*no_alloc=*/0, 0, 1, 0, 0); } +// Fast versions int wmo_read_any_from_file_fast(FILE* f, void* buffer, size_t* len, off_t* offset) { return ecc_wmo_read_any_from_file(f, buffer, len, offset, /*no_alloc=*/1, 1, 1, 1, 1); From 5139e091873651a616c97b5b3b0f18b41f6d9143 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 19 Jun 2023 16:31:14 +0000 Subject: [PATCH 269/378] Fast read: Simplify interface --- src/eccodes_prototypes.h | 8 ++++---- src/grib_io.cc | 24 ++++++++++++++++-------- tools/codes_count.cc | 15 +++++++-------- 3 files changed, 27 insertions(+), 20 deletions(-) diff --git a/src/eccodes_prototypes.h b/src/eccodes_prototypes.h index f994c624f..946343664 100644 --- a/src/eccodes_prototypes.h +++ b/src/eccodes_prototypes.h @@ -1100,10 +1100,10 @@ int wmo_read_bufr_from_file(FILE* f, void* buffer, size_t* len); int wmo_read_gts_from_file(FILE* f, void* buffer, size_t* len); int wmo_read_taf_from_file(FILE* f, void* buffer, size_t* len); int wmo_read_metar_from_file(FILE* f, void* buffer, size_t* len); -int wmo_read_any_from_file_fast(FILE* f, void* buffer, size_t* len, off_t* offset); -int wmo_read_grib_from_file_fast(FILE* f, void* buffer, size_t* len, off_t* offset); -int wmo_read_bufr_from_file_fast(FILE* f, void* buffer, size_t* len, off_t* offset); -int wmo_read_gts_from_file_fast(FILE* f, void* buffer, size_t* len, off_t* offset); +int wmo_read_any_from_file_fast(FILE* f, size_t* msg_len, off_t* msg_offset); +int wmo_read_grib_from_file_fast(FILE* f, size_t* msg_len, off_t* msg_offset); +int wmo_read_bufr_from_file_fast(FILE* f, size_t* msg_len, off_t* msg_offset); +int wmo_read_gts_from_file_fast(FILE* f, size_t* msg_len, off_t* msg_offset); int wmo_read_any_from_stream(void* stream_data, long (*stream_proc)(void*, void* buffer, long len), void* buffer, size_t* len); void* wmo_read_any_from_stream_malloc(void* stream_data, long (*stream_proc)(void*, void* buffer, long len), size_t* size, int* err); void* wmo_read_gts_from_file_malloc(FILE* f, int headers_only, size_t* size, off_t* offset, int* err); diff --git a/src/grib_io.cc b/src/grib_io.cc index 41bc117b6..0dee58dd7 100644 --- a/src/grib_io.cc +++ b/src/grib_io.cc @@ -1209,26 +1209,34 @@ int wmo_read_bufr_from_file(FILE* f, void* buffer, size_t* len) } // Fast versions -int wmo_read_any_from_file_fast(FILE* f, void* buffer, size_t* len, off_t* offset) +int wmo_read_any_from_file_fast(FILE* f, size_t* msg_len, off_t* msg_offset) { - return ecc_wmo_read_any_from_file(f, buffer, len, offset, /*no_alloc=*/1, 1, 1, 1, 1); + unsigned char buffer[64] = {0,}; + *msg_len = sizeof(buffer); + return ecc_wmo_read_any_from_file(f, buffer, msg_len, msg_offset, /*no_alloc=*/1, 1, 1, 1, 1); } -int wmo_read_grib_from_file_fast(FILE* f, void* buffer, size_t* len, off_t* offset) +int wmo_read_grib_from_file_fast(FILE* f, size_t* msg_len, off_t* msg_offset) { - return ecc_wmo_read_any_from_file(f, buffer, len, offset, /*no_alloc=*/1, 1, 0, 0, 0); + unsigned char buffer[64] = {0,}; + *msg_len = sizeof(buffer); + return ecc_wmo_read_any_from_file(f, buffer, msg_len, msg_offset, /*no_alloc=*/1, 1, 0, 0, 0); } -int wmo_read_bufr_from_file_fast(FILE* f, void* buffer, size_t* len, off_t* offset) +int wmo_read_bufr_from_file_fast(FILE* f, size_t* msg_len, off_t* msg_offset) { - return ecc_wmo_read_any_from_file(f, buffer, len, offset, /*no_alloc=*/1, 0, 1, 0, 0); + unsigned char buffer[64] = {0,}; + *msg_len = sizeof(buffer); + return ecc_wmo_read_any_from_file(f, buffer, msg_len, msg_offset, /*no_alloc=*/1, 0, 1, 0, 0); } -int wmo_read_gts_from_file_fast(FILE* f, void* buffer, size_t* len, off_t* offset) +int wmo_read_gts_from_file_fast(FILE* f, size_t* msg_len, off_t* msg_offset) { //TODO(masn): Needs proper implementation; no malloc + unsigned char buffer[1024] = {0,}; void* mesg = NULL; int err = GRIB_SUCCESS; grib_context* c = grib_context_get_default(); - mesg = wmo_read_gts_from_file_malloc(f, 0, len, offset, &err); + *msg_len = sizeof(buffer); + mesg = wmo_read_gts_from_file_malloc(f, 0, msg_len, msg_offset, &err); grib_context_free(c, mesg); return err; } diff --git a/tools/codes_count.cc b/tools/codes_count.cc index cc9aa139f..c96ba374d 100644 --- a/tools/codes_count.cc +++ b/tools/codes_count.cc @@ -74,12 +74,11 @@ static int count_messages_slow(FILE* in, int message_type, unsigned long* count) static int count_messages_fast(FILE* in, int message_type, unsigned long* count) { int err = GRIB_SUCCESS; - //Signature: FILE* f, void* buffer, size_t* len, off_t* offset - typedef int (*wmo_read_proc)(FILE* , void* , size_t*, off_t*); + // Signature: FILE* f, size_t* msg_len, off_t* msg_offset + typedef int (*wmo_read_proc)(FILE* , size_t*, off_t*); wmo_read_proc wmo_read = NULL; - unsigned char buffer[1000] = {0,}; - size_t size = sizeof(buffer); - off_t offset = 0; + size_t msg_len = 0; + off_t msg_offset = 0; if (message_type == CODES_GRIB) wmo_read = wmo_read_grib_from_file_fast; @@ -91,15 +90,15 @@ static int count_messages_fast(FILE* in, int message_type, unsigned long* count) wmo_read = wmo_read_any_from_file_fast; if (fail_on_error) { - while ((err = wmo_read(in, buffer, &size, &offset)) == GRIB_SUCCESS) { - //printf("%zu %lld\n", size,offset); + while ((err = wmo_read(in, &msg_len, &msg_offset)) == GRIB_SUCCESS) { + //printf("%zu %ld\n", msg_len,msg_offset); (*count)++; } } else { int done = 0; while (!done) { - err = wmo_read(in, buffer, &size, &offset); + err = wmo_read(in, &msg_len, &msg_offset); if (err) { if (err == GRIB_END_OF_FILE || err == GRIB_PREMATURE_END_OF_FILE) { done = 1; // reached the end From 07ff3bcbce8bdaea4049c6f948031eccd58913b6 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 19 Jun 2023 17:50:19 +0100 Subject: [PATCH 270/378] Testing: grib_count --- tests/CMakeLists.txt | 1 + tests/grib_count.sh | 30 ++++++++++++++++++++++++++++++ 2 files changed, 31 insertions(+) create mode 100755 tests/grib_count.sh diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 0d78ab997..08deb84d5 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -145,6 +145,7 @@ if( HAVE_BUILD_TOOLS ) grib_double_cmp grib_change_packing grib_grid_space_view + grib_count bufr_templates bufr_dump_data bufr_dump_descriptors diff --git a/tests/grib_count.sh b/tests/grib_count.sh new file mode 100755 index 000000000..43b4c2246 --- /dev/null +++ b/tests/grib_count.sh @@ -0,0 +1,30 @@ +#!/bin/sh +# (C) Copyright 2005- ECMWF. +# +# This software is licensed under the terms of the Apache Licence Version 2.0 +# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. +# +# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by +# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. +# + +. ./include.ctest.sh + +label="grib_count_test" + +grib_files=`cat ${data_dir}/grib_data_files.txt` +for file in ${grib_files}; do + if [ "$file" = "bad.grib" -o "$file" = "budg" ]; then continue; fi + input=${data_dir}/$file + ${tools_dir}/grib_count $input +done + +# Specific files +count=`${tools_dir}/grib_count ${data_dir}/test.grib1` +[ $count -eq 42 ] + +count=`${tools_dir}/grib_count ${data_dir}/mixed.grib` +[ $count -eq 14 ] + +count=`${tools_dir}/grib_count ${data_dir}/tigge_ecmwf.grib2` +[ $count -eq 248 ] From dc34a5f0a515a2cc48996a5550945d67d90f9f52 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 20 Jun 2023 12:36:04 +0000 Subject: [PATCH 271/378] ECC-1603: Revisited (added 3 new params) --- definitions/grib2/cfVarName.def | 33 +++++++++++++++++++++++++++++++++ definitions/grib2/name.def | 33 +++++++++++++++++++++++++++++++++ definitions/grib2/paramId.def | 33 +++++++++++++++++++++++++++++++++ definitions/grib2/shortName.def | 33 +++++++++++++++++++++++++++++++++ definitions/grib2/units.def | 33 +++++++++++++++++++++++++++++++++ 5 files changed, 165 insertions(+) diff --git a/definitions/grib2/cfVarName.def b/definitions/grib2/cfVarName.def index be3db0c1d..620617c20 100644 --- a/definitions/grib2/cfVarName.def +++ b/definitions/grib2/cfVarName.def @@ -4793,6 +4793,18 @@ parameterCategory = 3 ; parameterNumber = 20 ; } +#Average sea water potential temperature in the upper 300m +'pt300m' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 18 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 160 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = 300 ; + scaleFactorOfSecondFixedSurface = 0 ; + } #Sea water practical salinity 'so' = { discipline = 10 ; @@ -4921,6 +4933,14 @@ typeOfFirstFixedSurface = 168 ; typeOfSecondFixedSurface = 168 ; } +#Sea water salinity +'salo' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 3 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; + } #Net short wave radiation rate at sea surface 'ssr_sea' = { discipline = 0 ; @@ -5860,6 +5880,19 @@ scaleFactorOfSecondFixedSurface = missing() ; typeOfStatisticalProcessing = 0 ; } +#Time-mean average sea water potential temperature in the upper 300m +'avg_pt300m' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 18 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 160 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = 300 ; + scaleFactorOfSecondFixedSurface = 0 ; + typeOfStatisticalProcessing = 0 ; + } #Time-mean sea water practical salinity 'avg_so' = { discipline = 10 ; diff --git a/definitions/grib2/name.def b/definitions/grib2/name.def index 96b414f4d..eeb1207cc 100644 --- a/definitions/grib2/name.def +++ b/definitions/grib2/name.def @@ -4793,6 +4793,18 @@ parameterCategory = 3 ; parameterNumber = 20 ; } +#Average sea water potential temperature in the upper 300m +'Average sea water potential temperature in the upper 300m' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 18 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 160 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = 300 ; + scaleFactorOfSecondFixedSurface = 0 ; + } #Sea water practical salinity 'Sea water practical salinity' = { discipline = 10 ; @@ -4921,6 +4933,14 @@ typeOfFirstFixedSurface = 168 ; typeOfSecondFixedSurface = 168 ; } +#Sea water salinity +'Sea water salinity' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 3 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; + } #Net short wave radiation rate at sea surface 'Net short wave radiation rate at sea surface' = { discipline = 0 ; @@ -5860,6 +5880,19 @@ scaleFactorOfSecondFixedSurface = missing() ; typeOfStatisticalProcessing = 0 ; } +#Time-mean average sea water potential temperature in the upper 300m +'Time-mean average sea water potential temperature in the upper 300m' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 18 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 160 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = 300 ; + scaleFactorOfSecondFixedSurface = 0 ; + typeOfStatisticalProcessing = 0 ; + } #Time-mean sea water practical salinity 'Time-mean sea water practical salinity' = { discipline = 10 ; diff --git a/definitions/grib2/paramId.def b/definitions/grib2/paramId.def index 1aad3620f..d713b93b9 100644 --- a/definitions/grib2/paramId.def +++ b/definitions/grib2/paramId.def @@ -4793,6 +4793,18 @@ parameterCategory = 3 ; parameterNumber = 20 ; } +#Average sea water potential temperature in the upper 300m +'262144' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 18 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 160 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = 300 ; + scaleFactorOfSecondFixedSurface = 0 ; + } #Sea water practical salinity '262500' = { discipline = 10 ; @@ -4921,6 +4933,14 @@ typeOfFirstFixedSurface = 168 ; typeOfSecondFixedSurface = 168 ; } +#Sea water salinity +'262516' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 3 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; + } #Net short wave radiation rate at sea surface '262900' = { discipline = 0 ; @@ -5860,6 +5880,19 @@ scaleFactorOfSecondFixedSurface = missing() ; typeOfStatisticalProcessing = 0 ; } +#Time-mean average sea water potential temperature in the upper 300m +'263144' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 18 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 160 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = 300 ; + scaleFactorOfSecondFixedSurface = 0 ; + typeOfStatisticalProcessing = 0 ; + } #Time-mean sea water practical salinity '263500' = { discipline = 10 ; diff --git a/definitions/grib2/shortName.def b/definitions/grib2/shortName.def index 7e55a29b8..14204fedb 100644 --- a/definitions/grib2/shortName.def +++ b/definitions/grib2/shortName.def @@ -4793,6 +4793,18 @@ parameterCategory = 3 ; parameterNumber = 20 ; } +#Average sea water potential temperature in the upper 300m +'pt300m' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 18 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 160 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = 300 ; + scaleFactorOfSecondFixedSurface = 0 ; + } #Sea water practical salinity 'so' = { discipline = 10 ; @@ -4921,6 +4933,14 @@ typeOfFirstFixedSurface = 168 ; typeOfSecondFixedSurface = 168 ; } +#Sea water salinity +'salo' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 3 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; + } #Net short wave radiation rate at sea surface 'ssr_sea' = { discipline = 0 ; @@ -5860,6 +5880,19 @@ scaleFactorOfSecondFixedSurface = missing() ; typeOfStatisticalProcessing = 0 ; } +#Time-mean average sea water potential temperature in the upper 300m +'avg_pt300m' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 18 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 160 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = 300 ; + scaleFactorOfSecondFixedSurface = 0 ; + typeOfStatisticalProcessing = 0 ; + } #Time-mean sea water practical salinity 'avg_so' = { discipline = 10 ; diff --git a/definitions/grib2/units.def b/definitions/grib2/units.def index 8e3aa7ba7..b808349aa 100644 --- a/definitions/grib2/units.def +++ b/definitions/grib2/units.def @@ -4793,6 +4793,18 @@ parameterCategory = 3 ; parameterNumber = 20 ; } +#Average sea water potential temperature in the upper 300m +'K' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 18 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 160 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = 300 ; + scaleFactorOfSecondFixedSurface = 0 ; + } #Sea water practical salinity 'g kg**-1' = { discipline = 10 ; @@ -4921,6 +4933,14 @@ typeOfFirstFixedSurface = 168 ; typeOfSecondFixedSurface = 168 ; } +#Sea water salinity +'kg kg**-1' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 3 ; + typeOfFirstFixedSurface = 168 ; + typeOfSecondFixedSurface = 168 ; + } #Net short wave radiation rate at sea surface 'W m**-2' = { discipline = 0 ; @@ -5860,6 +5880,19 @@ scaleFactorOfSecondFixedSurface = missing() ; typeOfStatisticalProcessing = 0 ; } +#Time-mean average sea water potential temperature in the upper 300m +'K' = { + discipline = 10 ; + parameterCategory = 4 ; + parameterNumber = 18 ; + typeOfFirstFixedSurface = 160 ; + typeOfSecondFixedSurface = 160 ; + scaledValueOfFirstFixedSurface = 0 ; + scaleFactorOfFirstFixedSurface = 0 ; + scaledValueOfSecondFixedSurface = 300 ; + scaleFactorOfSecondFixedSurface = 0 ; + typeOfStatisticalProcessing = 0 ; + } #Time-mean sea water practical salinity 'g kg**-1' = { discipline = 10 ; From ad04ad4cd162eaa774ece32ec1360908477842ff Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 20 Jun 2023 13:56:08 +0000 Subject: [PATCH 272/378] ECC-1603 and ECC-1616: Ocean parameters --- definitions/grib2/cfName.def | 2 +- definitions/grib2/cfVarName.def | 16 ++++++++-------- definitions/grib2/name.def | 32 ++++++++++++++++---------------- definitions/grib2/paramId.def | 16 ++++++++-------- definitions/grib2/shortName.def | 16 ++++++++-------- definitions/grib2/units.def | 32 ++++++++++++++++---------------- 6 files changed, 57 insertions(+), 57 deletions(-) diff --git a/definitions/grib2/cfName.def b/definitions/grib2/cfName.def index 5eda6ba1c..c21d5b9ae 100644 --- a/definitions/grib2/cfName.def +++ b/definitions/grib2/cfName.def @@ -150,7 +150,7 @@ constituentType = 11 ; is_chemical = 1 ; } -#Sea surface salinity +#Sea surface practical salinity 'sea_surface_salinity' = { discipline = 10 ; parameterCategory = 3 ; diff --git a/definitions/grib2/cfVarName.def b/definitions/grib2/cfVarName.def index 620617c20..3999fdb34 100644 --- a/definitions/grib2/cfVarName.def +++ b/definitions/grib2/cfVarName.def @@ -4271,7 +4271,7 @@ scaledValueOfSecondFixedSurface = missing() ; scaleFactorOfSecondFixedSurface = missing() ; } -#Sea surface salinity +#Sea surface practical salinity 'sos' = { discipline = 10 ; parameterCategory = 3 ; @@ -4487,7 +4487,7 @@ scaledValueOfSecondFixedSurface = missing() ; scaleFactorOfSecondFixedSurface = missing() ; } -#Vertically-integrated sea water practical salinity in the upper 300 m +#Average sea water practical salinity in the upper 300 m 'sc300m' = { discipline = 10 ; parameterCategory = 4 ; @@ -4499,7 +4499,7 @@ scaledValueOfSecondFixedSurface = 300 ; scaleFactorOfSecondFixedSurface = 0 ; } -#Vertically-integrated sea water practical salinity in the upper 700 m +#Average sea water practical salinity in the upper 700 m 'sc700m' = { discipline = 10 ; parameterCategory = 4 ; @@ -4511,7 +4511,7 @@ scaledValueOfSecondFixedSurface = 700 ; scaleFactorOfSecondFixedSurface = 0 ; } -#Total column sea water practical salinity +#Total column average sea water practical salinity 'scbtm' = { discipline = 10 ; parameterCategory = 4 ; @@ -5321,7 +5321,7 @@ scaleFactorOfSecondFixedSurface = missing() ; typeOfStatisticalProcessing = 0 ; } -#Time-mean sea surface salinity +#Time-mean sea surface practical salinity 'avg_sos' = { discipline = 10 ; parameterCategory = 3 ; @@ -5555,7 +5555,7 @@ scaleFactorOfSecondFixedSurface = missing() ; typeOfStatisticalProcessing = 0 ; } -#Time-mean vertically-integrated sea water practical salinity in the upper 300 m +#Time-mean average sea water practical salinity in the upper 300 m 'avg_sc300m' = { discipline = 10 ; parameterCategory = 4 ; @@ -5568,7 +5568,7 @@ scaleFactorOfSecondFixedSurface = 0 ; typeOfStatisticalProcessing = 0 ; } -#Time-mean vertically-integrated sea water practical salinity in the upper 700 m +#Time-mean average sea water practical salinity in the upper 700 m 'avg_sc700m' = { discipline = 10 ; parameterCategory = 4 ; @@ -5581,7 +5581,7 @@ scaleFactorOfSecondFixedSurface = 0 ; typeOfStatisticalProcessing = 0 ; } -#Time-mean total column sea water practical salinity +#Time-mean total column average sea water practical salinity 'avg_scbtm' = { discipline = 10 ; parameterCategory = 4 ; diff --git a/definitions/grib2/name.def b/definitions/grib2/name.def index eeb1207cc..d98e04708 100644 --- a/definitions/grib2/name.def +++ b/definitions/grib2/name.def @@ -4271,8 +4271,8 @@ scaledValueOfSecondFixedSurface = missing() ; scaleFactorOfSecondFixedSurface = missing() ; } -#Sea surface salinity -'Sea surface salinity' = { +#Sea surface practical salinity +'Sea surface practical salinity' = { discipline = 10 ; parameterCategory = 3 ; parameterNumber = 3 ; @@ -4487,8 +4487,8 @@ scaledValueOfSecondFixedSurface = missing() ; scaleFactorOfSecondFixedSurface = missing() ; } -#Vertically-integrated sea water practical salinity in the upper 300 m -'Vertically-integrated sea water practical salinity in the upper 300 m' = { +#Average sea water practical salinity in the upper 300 m +'Average sea water practical salinity in the upper 300 m' = { discipline = 10 ; parameterCategory = 4 ; parameterNumber = 21 ; @@ -4499,8 +4499,8 @@ scaledValueOfSecondFixedSurface = 300 ; scaleFactorOfSecondFixedSurface = 0 ; } -#Vertically-integrated sea water practical salinity in the upper 700 m -'Vertically-integrated sea water practical salinity in the upper 700 m' = { +#Average sea water practical salinity in the upper 700 m +'Average sea water practical salinity in the upper 700 m' = { discipline = 10 ; parameterCategory = 4 ; parameterNumber = 21 ; @@ -4511,8 +4511,8 @@ scaledValueOfSecondFixedSurface = 700 ; scaleFactorOfSecondFixedSurface = 0 ; } -#Total column sea water practical salinity -'Total column sea water practical salinity' = { +#Total column average sea water practical salinity +'Total column average sea water practical salinity' = { discipline = 10 ; parameterCategory = 4 ; parameterNumber = 21 ; @@ -5321,8 +5321,8 @@ scaleFactorOfSecondFixedSurface = missing() ; typeOfStatisticalProcessing = 0 ; } -#Time-mean sea surface salinity -'Time-mean sea surface salinity' = { +#Time-mean sea surface practical salinity +'Time-mean sea surface practical salinity' = { discipline = 10 ; parameterCategory = 3 ; parameterNumber = 3 ; @@ -5555,8 +5555,8 @@ scaleFactorOfSecondFixedSurface = missing() ; typeOfStatisticalProcessing = 0 ; } -#Time-mean vertically-integrated sea water practical salinity in the upper 300 m -'Time-mean vertically-integrated sea water practical salinity in the upper 300 m' = { +#Time-mean average sea water practical salinity in the upper 300 m +'Time-mean average sea water practical salinity in the upper 300 m' = { discipline = 10 ; parameterCategory = 4 ; parameterNumber = 21 ; @@ -5568,8 +5568,8 @@ scaleFactorOfSecondFixedSurface = 0 ; typeOfStatisticalProcessing = 0 ; } -#Time-mean vertically-integrated sea water practical salinity in the upper 700 m -'Time-mean vertically-integrated sea water practical salinity in the upper 700 m' = { +#Time-mean average sea water practical salinity in the upper 700 m +'Time-mean average sea water practical salinity in the upper 700 m' = { discipline = 10 ; parameterCategory = 4 ; parameterNumber = 21 ; @@ -5581,8 +5581,8 @@ scaleFactorOfSecondFixedSurface = 0 ; typeOfStatisticalProcessing = 0 ; } -#Time-mean total column sea water practical salinity -'Time-mean total column sea water practical salinity' = { +#Time-mean total column average sea water practical salinity +'Time-mean total column average sea water practical salinity' = { discipline = 10 ; parameterCategory = 4 ; parameterNumber = 21 ; diff --git a/definitions/grib2/paramId.def b/definitions/grib2/paramId.def index d713b93b9..41eed1a1b 100644 --- a/definitions/grib2/paramId.def +++ b/definitions/grib2/paramId.def @@ -4271,7 +4271,7 @@ scaledValueOfSecondFixedSurface = missing() ; scaleFactorOfSecondFixedSurface = missing() ; } -#Sea surface salinity +#Sea surface practical salinity '262100' = { discipline = 10 ; parameterCategory = 3 ; @@ -4487,7 +4487,7 @@ scaledValueOfSecondFixedSurface = missing() ; scaleFactorOfSecondFixedSurface = missing() ; } -#Vertically-integrated sea water practical salinity in the upper 300 m +#Average sea water practical salinity in the upper 300 m '262118' = { discipline = 10 ; parameterCategory = 4 ; @@ -4499,7 +4499,7 @@ scaledValueOfSecondFixedSurface = 300 ; scaleFactorOfSecondFixedSurface = 0 ; } -#Vertically-integrated sea water practical salinity in the upper 700 m +#Average sea water practical salinity in the upper 700 m '262119' = { discipline = 10 ; parameterCategory = 4 ; @@ -4511,7 +4511,7 @@ scaledValueOfSecondFixedSurface = 700 ; scaleFactorOfSecondFixedSurface = 0 ; } -#Total column sea water practical salinity +#Total column average sea water practical salinity '262120' = { discipline = 10 ; parameterCategory = 4 ; @@ -5321,7 +5321,7 @@ scaleFactorOfSecondFixedSurface = missing() ; typeOfStatisticalProcessing = 0 ; } -#Time-mean sea surface salinity +#Time-mean sea surface practical salinity '263100' = { discipline = 10 ; parameterCategory = 3 ; @@ -5555,7 +5555,7 @@ scaleFactorOfSecondFixedSurface = missing() ; typeOfStatisticalProcessing = 0 ; } -#Time-mean vertically-integrated sea water practical salinity in the upper 300 m +#Time-mean average sea water practical salinity in the upper 300 m '263118' = { discipline = 10 ; parameterCategory = 4 ; @@ -5568,7 +5568,7 @@ scaleFactorOfSecondFixedSurface = 0 ; typeOfStatisticalProcessing = 0 ; } -#Time-mean vertically-integrated sea water practical salinity in the upper 700 m +#Time-mean average sea water practical salinity in the upper 700 m '263119' = { discipline = 10 ; parameterCategory = 4 ; @@ -5581,7 +5581,7 @@ scaleFactorOfSecondFixedSurface = 0 ; typeOfStatisticalProcessing = 0 ; } -#Time-mean total column sea water practical salinity +#Time-mean total column average sea water practical salinity '263120' = { discipline = 10 ; parameterCategory = 4 ; diff --git a/definitions/grib2/shortName.def b/definitions/grib2/shortName.def index 14204fedb..b775445b8 100644 --- a/definitions/grib2/shortName.def +++ b/definitions/grib2/shortName.def @@ -4271,7 +4271,7 @@ scaledValueOfSecondFixedSurface = missing() ; scaleFactorOfSecondFixedSurface = missing() ; } -#Sea surface salinity +#Sea surface practical salinity 'sos' = { discipline = 10 ; parameterCategory = 3 ; @@ -4487,7 +4487,7 @@ scaledValueOfSecondFixedSurface = missing() ; scaleFactorOfSecondFixedSurface = missing() ; } -#Vertically-integrated sea water practical salinity in the upper 300 m +#Average sea water practical salinity in the upper 300 m 'sc300m' = { discipline = 10 ; parameterCategory = 4 ; @@ -4499,7 +4499,7 @@ scaledValueOfSecondFixedSurface = 300 ; scaleFactorOfSecondFixedSurface = 0 ; } -#Vertically-integrated sea water practical salinity in the upper 700 m +#Average sea water practical salinity in the upper 700 m 'sc700m' = { discipline = 10 ; parameterCategory = 4 ; @@ -4511,7 +4511,7 @@ scaledValueOfSecondFixedSurface = 700 ; scaleFactorOfSecondFixedSurface = 0 ; } -#Total column sea water practical salinity +#Total column average sea water practical salinity 'scbtm' = { discipline = 10 ; parameterCategory = 4 ; @@ -5321,7 +5321,7 @@ scaleFactorOfSecondFixedSurface = missing() ; typeOfStatisticalProcessing = 0 ; } -#Time-mean sea surface salinity +#Time-mean sea surface practical salinity 'avg_sos' = { discipline = 10 ; parameterCategory = 3 ; @@ -5555,7 +5555,7 @@ scaleFactorOfSecondFixedSurface = missing() ; typeOfStatisticalProcessing = 0 ; } -#Time-mean vertically-integrated sea water practical salinity in the upper 300 m +#Time-mean average sea water practical salinity in the upper 300 m 'avg_sc300m' = { discipline = 10 ; parameterCategory = 4 ; @@ -5568,7 +5568,7 @@ scaleFactorOfSecondFixedSurface = 0 ; typeOfStatisticalProcessing = 0 ; } -#Time-mean vertically-integrated sea water practical salinity in the upper 700 m +#Time-mean average sea water practical salinity in the upper 700 m 'avg_sc700m' = { discipline = 10 ; parameterCategory = 4 ; @@ -5581,7 +5581,7 @@ scaleFactorOfSecondFixedSurface = 0 ; typeOfStatisticalProcessing = 0 ; } -#Time-mean total column sea water practical salinity +#Time-mean total column average sea water practical salinity 'avg_scbtm' = { discipline = 10 ; parameterCategory = 4 ; diff --git a/definitions/grib2/units.def b/definitions/grib2/units.def index b808349aa..4224109ca 100644 --- a/definitions/grib2/units.def +++ b/definitions/grib2/units.def @@ -4271,8 +4271,8 @@ scaledValueOfSecondFixedSurface = missing() ; scaleFactorOfSecondFixedSurface = missing() ; } -#Sea surface salinity -'Numeric' = { +#Sea surface practical salinity +'g kg**-1' = { discipline = 10 ; parameterCategory = 3 ; parameterNumber = 3 ; @@ -4487,8 +4487,8 @@ scaledValueOfSecondFixedSurface = missing() ; scaleFactorOfSecondFixedSurface = missing() ; } -#Vertically-integrated sea water practical salinity in the upper 300 m -'g kg**-1 m' = { +#Average sea water practical salinity in the upper 300 m +'g kg**-1' = { discipline = 10 ; parameterCategory = 4 ; parameterNumber = 21 ; @@ -4499,8 +4499,8 @@ scaledValueOfSecondFixedSurface = 300 ; scaleFactorOfSecondFixedSurface = 0 ; } -#Vertically-integrated sea water practical salinity in the upper 700 m -'g kg**-1 m' = { +#Average sea water practical salinity in the upper 700 m +'g kg**-1' = { discipline = 10 ; parameterCategory = 4 ; parameterNumber = 21 ; @@ -4511,8 +4511,8 @@ scaledValueOfSecondFixedSurface = 700 ; scaleFactorOfSecondFixedSurface = 0 ; } -#Total column sea water practical salinity -'g kg**-1 m' = { +#Total column average sea water practical salinity +'g kg**-1' = { discipline = 10 ; parameterCategory = 4 ; parameterNumber = 21 ; @@ -5321,8 +5321,8 @@ scaleFactorOfSecondFixedSurface = missing() ; typeOfStatisticalProcessing = 0 ; } -#Time-mean sea surface salinity -'Numeric' = { +#Time-mean sea surface practical salinity +'g kg**-1' = { discipline = 10 ; parameterCategory = 3 ; parameterNumber = 3 ; @@ -5555,8 +5555,8 @@ scaleFactorOfSecondFixedSurface = missing() ; typeOfStatisticalProcessing = 0 ; } -#Time-mean vertically-integrated sea water practical salinity in the upper 300 m -'g kg**-1 m' = { +#Time-mean average sea water practical salinity in the upper 300 m +'g kg**-1' = { discipline = 10 ; parameterCategory = 4 ; parameterNumber = 21 ; @@ -5568,8 +5568,8 @@ scaleFactorOfSecondFixedSurface = 0 ; typeOfStatisticalProcessing = 0 ; } -#Time-mean vertically-integrated sea water practical salinity in the upper 700 m -'g kg**-1 m' = { +#Time-mean average sea water practical salinity in the upper 700 m +'g kg**-1' = { discipline = 10 ; parameterCategory = 4 ; parameterNumber = 21 ; @@ -5581,8 +5581,8 @@ scaleFactorOfSecondFixedSurface = 0 ; typeOfStatisticalProcessing = 0 ; } -#Time-mean total column sea water practical salinity -'g kg**-1 m' = { +#Time-mean total column average sea water practical salinity +'g kg**-1' = { discipline = 10 ; parameterCategory = 4 ; parameterNumber = 21 ; From 57c54a8b8e494bac099b99235f64a057b6d2dcad Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 20 Jun 2023 16:18:14 +0000 Subject: [PATCH 273/378] ECC-1617: GRIB2: Merging of GRIB2 encodings into pre-existing GRIB1 parameters --- definitions/grib2/cfVarName.def | 27 ++++++++++++++------------- definitions/grib2/name.def | 27 ++++++++++++++------------- definitions/grib2/paramId.def | 27 ++++++++++++++------------- definitions/grib2/shortName.def | 27 ++++++++++++++------------- definitions/grib2/units.def | 27 ++++++++++++++------------- 5 files changed, 70 insertions(+), 65 deletions(-) diff --git a/definitions/grib2/cfVarName.def b/definitions/grib2/cfVarName.def index 3999fdb34..506171129 100644 --- a/definitions/grib2/cfVarName.def +++ b/definitions/grib2/cfVarName.def @@ -2561,6 +2561,20 @@ parameterNumber = 77 ; typeOfFirstFixedSurface = 1 ; } +#Convective snowfall rate water equivalent +'csfr' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 55 ; + typeOfFirstFixedSurface = 1 ; + } +#Large scale snowfall rate water equivalent +'lssfr' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 56 ; + typeOfFirstFixedSurface = 1 ; + } #Mixed-layer CAPE in the lowest 50 hPa 'mlcape50' = { discipline = 0 ; @@ -7434,19 +7448,6 @@ parameterCategory = 1 ; parameterNumber = 54 ; } -#Convective snowfall rate water equivalent -'csrwe' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 55 ; - } -#Large scale snowfall rate water equivalent -'lssrwe' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 56 ; - typeOfFirstFixedSurface = 1 ; - } #Total snowfall rate 'tsrate' = { discipline = 0 ; diff --git a/definitions/grib2/name.def b/definitions/grib2/name.def index d98e04708..8da8212d8 100644 --- a/definitions/grib2/name.def +++ b/definitions/grib2/name.def @@ -2561,6 +2561,20 @@ parameterNumber = 77 ; typeOfFirstFixedSurface = 1 ; } +#Convective snowfall rate water equivalent +'Convective snowfall rate water equivalent' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 55 ; + typeOfFirstFixedSurface = 1 ; + } +#Large scale snowfall rate water equivalent +'Large scale snowfall rate water equivalent' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 56 ; + typeOfFirstFixedSurface = 1 ; + } #Mixed-layer CAPE in the lowest 50 hPa 'Mixed-layer CAPE in the lowest 50 hPa' = { discipline = 0 ; @@ -7434,19 +7448,6 @@ parameterCategory = 1 ; parameterNumber = 54 ; } -#Convective snowfall rate water equivalent -'Convective snowfall rate water equivalent' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 55 ; - } -#Large scale snowfall rate water equivalent -'Large scale snowfall rate water equivalent' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 56 ; - typeOfFirstFixedSurface = 1 ; - } #Total snowfall rate 'Total snowfall rate' = { discipline = 0 ; diff --git a/definitions/grib2/paramId.def b/definitions/grib2/paramId.def index 41eed1a1b..d9e7b6fe2 100644 --- a/definitions/grib2/paramId.def +++ b/definitions/grib2/paramId.def @@ -2561,6 +2561,20 @@ parameterNumber = 77 ; typeOfFirstFixedSurface = 1 ; } +#Convective snowfall rate water equivalent +'228220' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 55 ; + typeOfFirstFixedSurface = 1 ; + } +#Large scale snowfall rate water equivalent +'228221' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 56 ; + typeOfFirstFixedSurface = 1 ; + } #Mixed-layer CAPE in the lowest 50 hPa '228231' = { discipline = 0 ; @@ -7434,19 +7448,6 @@ parameterCategory = 1 ; parameterNumber = 54 ; } -#Convective snowfall rate water equivalent -'260051' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 55 ; - } -#Large scale snowfall rate water equivalent -'260052' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 56 ; - typeOfFirstFixedSurface = 1 ; - } #Total snowfall rate '260053' = { discipline = 0 ; diff --git a/definitions/grib2/shortName.def b/definitions/grib2/shortName.def index b775445b8..145510db1 100644 --- a/definitions/grib2/shortName.def +++ b/definitions/grib2/shortName.def @@ -2561,6 +2561,20 @@ parameterNumber = 77 ; typeOfFirstFixedSurface = 1 ; } +#Convective snowfall rate water equivalent +'csfr' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 55 ; + typeOfFirstFixedSurface = 1 ; + } +#Large scale snowfall rate water equivalent +'lssfr' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 56 ; + typeOfFirstFixedSurface = 1 ; + } #Mixed-layer CAPE in the lowest 50 hPa 'mlcape50' = { discipline = 0 ; @@ -7434,19 +7448,6 @@ parameterCategory = 1 ; parameterNumber = 54 ; } -#Convective snowfall rate water equivalent -'csrwe' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 55 ; - } -#Large scale snowfall rate water equivalent -'lssrwe' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 56 ; - typeOfFirstFixedSurface = 1 ; - } #Total snowfall rate 'tsrate' = { discipline = 0 ; diff --git a/definitions/grib2/units.def b/definitions/grib2/units.def index 4224109ca..ddcec20ce 100644 --- a/definitions/grib2/units.def +++ b/definitions/grib2/units.def @@ -2561,6 +2561,20 @@ parameterNumber = 77 ; typeOfFirstFixedSurface = 1 ; } +#Convective snowfall rate water equivalent +'kg m**-2 s**-1' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 55 ; + typeOfFirstFixedSurface = 1 ; + } +#Large scale snowfall rate water equivalent +'kg m**-2 s**-1' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 56 ; + typeOfFirstFixedSurface = 1 ; + } #Mixed-layer CAPE in the lowest 50 hPa 'J kg**-1' = { discipline = 0 ; @@ -7434,19 +7448,6 @@ parameterCategory = 1 ; parameterNumber = 54 ; } -#Convective snowfall rate water equivalent -'kg m**-2 s**-1' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 55 ; - } -#Large scale snowfall rate water equivalent -'kg m**-2 s**-1' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 56 ; - typeOfFirstFixedSurface = 1 ; - } #Total snowfall rate 'm s**-1' = { discipline = 0 ; From 76fc1bb0f7949151ab1ea9882e66b5ae1f24297c Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 20 Jun 2023 18:02:45 +0100 Subject: [PATCH 274/378] Cleanup --- src/action.cc | 46 ++-- src/action_class_alias.cc | 25 +- src/action_class_gen.cc | 91 ++++--- src/action_class_section.cc | 31 +-- src/action_class_set_iarray.cc | 33 ++- src/action_class_trigger.cc | 119 ++++----- src/action_class_while.cc | 153 ++++++------ src/bufr_util.cc | 2 +- src/codes_util.cc | 20 +- src/functions.cc | 132 +++++----- src/grib_dumper_class_grib_encode_C.cc | 43 ++-- src/grib_dumper_class_keys.cc | 325 ++++++++++++------------- src/grib_dumper_class_serialize.cc | 57 ++--- src/grib_iarray.cc | 32 ++- src/grib_util.cc | 2 +- src/md5.cc | 13 - 16 files changed, 515 insertions(+), 609 deletions(-) diff --git a/src/action.cc b/src/action.cc index afc002077..a5a8679d1 100644 --- a/src/action.cc +++ b/src/action.cc @@ -60,30 +60,28 @@ static void init(grib_action_class* c) GRIB_MUTEX_UNLOCK(&mutex1); } -#if 0 -/* A non-recursive version */ -static void init(grib_action_class *c) -{ - if (!c) return; - - GRIB_MUTEX_INIT_ONCE(&once,&init_mutex); - GRIB_MUTEX_LOCK(&mutex1); - if(!c->inited) - { - if(c->super) { - grib_action_class *g = *(c->super); - if (g && !g->inited) { - Assert(g->super == NULL); - g->init_class(g); - g->inited = 1; - } - } - c->init_class(c); - c->inited = 1; - } - GRIB_MUTEX_UNLOCK(&mutex1); -} -#endif +// A non-recursive version +// static void init(grib_action_class *c) +// { +// if (!c) return; + +// GRIB_MUTEX_INIT_ONCE(&once,&init_mutex); +// GRIB_MUTEX_LOCK(&mutex1); +// if(!c->inited) +// { +// if(c->super) { +// grib_action_class *g = *(c->super); +// if (g && !g->inited) { +// Assert(g->super == NULL); +// g->init_class(g); +// g->inited = 1; +// } +// } +// c->init_class(c); +// c->inited = 1; +// } +// GRIB_MUTEX_UNLOCK(&mutex1); +// } void grib_dump(grib_action* a, FILE* f, int l) { diff --git a/src/action_class_alias.cc b/src/action_class_alias.cc index 68d8ffff4..945d3aa7a 100644 --- a/src/action_class_alias.cc +++ b/src/action_class_alias.cc @@ -271,19 +271,18 @@ static void dump(grib_action* act, FILE* f, int lvl) static void xref(grib_action* act, FILE* f, const char* path) { Assert(!"xref is disabled"); -#if 0 - grib_action_alias* a = (grib_action_alias*)act; - if (a->target) { - fprintf(f, "bless({name=>'%s', target=>'%s', path=>'%s'},'xref::alias'),\n", act->name, a->target, path); - if (act->name_space) - fprintf(f, "bless({name=>'%s.%s', target=>'%s', path=>'%s'},'xref::alias'),\n", act->name_space, act->name, a->target, path); - } - else { - fprintf(f, "bless({name=>'%s', path=>'%s'},'xref::unalias'),\n", act->name, path); - if (act->name_space) - fprintf(f, "bless({name=>'%s.%s', path=>'%s'},'xref::unalias'),\n", act->name_space, act->name, path); - } -#endif + + // grib_action_alias* a = (grib_action_alias*)act; + // if (a->target) { + // fprintf(f, "bless({name=>'%s', target=>'%s', path=>'%s'},'xref::alias'),\n", act->name, a->target, path); + // if (act->name_space) + // fprintf(f, "bless({name=>'%s.%s', target=>'%s', path=>'%s'},'xref::alias'),\n", act->name_space, act->name, a->target, path); + // } + // else { + // fprintf(f, "bless({name=>'%s', path=>'%s'},'xref::unalias'),\n", act->name, path); + // if (act->name_space) + // fprintf(f, "bless({name=>'%s.%s', path=>'%s'},'xref::unalias'),\n", act->name_space, act->name, path); + // } } static void destroy(grib_context* context, grib_action* act) diff --git a/src/action_class_gen.cc b/src/action_class_gen.cc index 30f2e0332..64348a428 100644 --- a/src/action_class_gen.cc +++ b/src/action_class_gen.cc @@ -127,53 +127,52 @@ static void dump(grib_action* act, FILE* f, int lvl) grib_context_print(act->context, f, "%s[%d] %s \n", act->op, a->len, act->name); } -#if 0 -#define F(x) \ - if (flg & x) { \ - fprintf(f, "%s=>1,", #x); \ - flg &= !x; \ - } -static int count = 0; -static void xref(grib_action* act, FILE* f, const char* path) -{ - grib_action_gen* a = (grib_action_gen*)act; - unsigned long flg = act->flags; - int position = a->len > 0 ? count++ : -1; - - fprintf(f, "bless({path=>'%s',size => %ld, name=> '%s', position=> %d, ", path, (long)a->len, act->name, position); - - fprintf(f, " params=> ["); - grib_arguments_print(act->context, a->params, NULL); - fprintf(f, "], flags=> {"); - - F(GRIB_ACCESSOR_FLAG_READ_ONLY); - F(GRIB_ACCESSOR_FLAG_DUMP); - F(GRIB_ACCESSOR_FLAG_EDITION_SPECIFIC); - F(GRIB_ACCESSOR_FLAG_CAN_BE_MISSING); - F(GRIB_ACCESSOR_FLAG_HIDDEN); - F(GRIB_ACCESSOR_FLAG_CONSTRAINT); - F(GRIB_ACCESSOR_FLAG_NO_COPY); - F(GRIB_ACCESSOR_FLAG_COPY_OK); - F(GRIB_ACCESSOR_FLAG_FUNCTION); - F(GRIB_ACCESSOR_FLAG_DATA); - F(GRIB_ACCESSOR_FLAG_NO_FAIL); - F(GRIB_ACCESSOR_FLAG_TRANSIENT); - F(GRIB_ACCESSOR_FLAG_STRING_TYPE); - F(GRIB_ACCESSOR_FLAG_LONG_TYPE); - F(GRIB_ACCESSOR_FLAG_DOUBLE_TYPE); - - /* make sure all flags are processed */ - if (flg) { - printf("FLG = %ld\n", (long)flg); - } - Assert(flg == 0); - - fprintf(f, "}, defaults=> ["); - grib_arguments_print(act->context, act->default_value, NULL); +// #define F(x) \ +// if (flg & x) { \ +// fprintf(f, "%s=>1,", #x); \ +// flg &= !x; \ +// } +// static int count = 0; +// static void xref(grib_action* act, FILE* f, const char* path) +// { +// grib_action_gen* a = (grib_action_gen*)act; +// unsigned long flg = act->flags; +// int position = a->len > 0 ? count++ : -1; + +// fprintf(f, "bless({path=>'%s',size => %ld, name=> '%s', position=> %d, ", path, (long)a->len, act->name, position); + +// fprintf(f, " params=> ["); +// grib_arguments_print(act->context, a->params, NULL); +// fprintf(f, "], flags=> {"); + +// F(GRIB_ACCESSOR_FLAG_READ_ONLY); +// F(GRIB_ACCESSOR_FLAG_DUMP); +// F(GRIB_ACCESSOR_FLAG_EDITION_SPECIFIC); +// F(GRIB_ACCESSOR_FLAG_CAN_BE_MISSING); +// F(GRIB_ACCESSOR_FLAG_HIDDEN); +// F(GRIB_ACCESSOR_FLAG_CONSTRAINT); +// F(GRIB_ACCESSOR_FLAG_NO_COPY); +// F(GRIB_ACCESSOR_FLAG_COPY_OK); +// F(GRIB_ACCESSOR_FLAG_FUNCTION); +// F(GRIB_ACCESSOR_FLAG_DATA); +// F(GRIB_ACCESSOR_FLAG_NO_FAIL); +// F(GRIB_ACCESSOR_FLAG_TRANSIENT); +// F(GRIB_ACCESSOR_FLAG_STRING_TYPE); +// F(GRIB_ACCESSOR_FLAG_LONG_TYPE); +// F(GRIB_ACCESSOR_FLAG_DOUBLE_TYPE); + +// /* make sure all flags are processed */ +// if (flg) { +// printf("FLG = %ld\n", (long)flg); +// } +// Assert(flg == 0); + +// fprintf(f, "}, defaults=> ["); +// grib_arguments_print(act->context, act->default_value, NULL); + +// fprintf(f, "]}, 'xref::%s'),\n", act->op); +// } - fprintf(f, "]}, 'xref::%s'),\n", act->op); -} -#endif static void xref(grib_action* act, FILE* f, const char* path) { Assert(!"xref is disabled"); diff --git a/src/action_class_section.cc b/src/action_class_section.cc index 6692175c8..fc64351df 100644 --- a/src/action_class_section.cc +++ b/src/action_class_section.cc @@ -74,20 +74,17 @@ static void init_class(grib_action_class* c) } /* END_CLASS_IMP */ -#if 0 -/* new GCC compiler v4.5.0 complains function is defined but not used*/ -static void check_sections(grib_section *s,grib_handle* h) -{ - grib_accessor *a = s?s->block->first:NULL; - if(s) Assert(s->h == h); - while(a) - { - Assert(grib_handle_of_accessor(a) == h); - check_sections(a->sub_section,h); - a = a->next; - } -} -#endif +// static void check_sections(grib_section *s,grib_handle* h) +// { +// grib_accessor *a = s?s->block->first:NULL; +// if(s) Assert(s->h == h); +// while(a) +// { +// Assert(grib_handle_of_accessor(a) == h); +// check_sections(a->sub_section,h); +// a = a->next; +// } +// } static int notify_change(grib_action* act, grib_accessor* notified, grib_accessor* changed) @@ -196,10 +193,8 @@ static int notify_change(grib_action* act, grib_accessor* notified, grib_get_block_length(tmp_handle->root, &len); grib_context_log(h->context, GRIB_LOG_DEBUG, "------------- TMP BLOCK IS sectlen=%d buffer=%d", len, tmp_handle->buffer->ulength); -#if 0 - if(h->context->debug > 10) - grib_dump_content(tmp_handle,stdout,NULL,0,NULL); -#endif + //if(h->context->debug > 10) + // grib_dump_content(tmp_handle,stdout,NULL,0,NULL); /* Assert(tmp_handle->buffer->ulength == len); */ /* grib_empty_section(h->context,old_section); */ diff --git a/src/action_class_set_iarray.cc b/src/action_class_set_iarray.cc index 84becfd8c..5862cef86 100644 --- a/src/action_class_set_iarray.cc +++ b/src/action_class_set_iarray.cc @@ -76,26 +76,21 @@ grib_action* grib_action_create_set_iarray(grib_context* context, { Assert(!"grib_action_create_set_iarray: Not implemented"); return NULL; -#if 0 - char buf[1024]; - grib_action_set_iarray* a; - grib_action_class* c = grib_action_class_set_iarray; - grib_action* act = (grib_action*)grib_context_malloc_clear_persistent(context, c->size); - act->op = grib_context_strdup_persistent(context, "section"); - act->cclass = c; - a = (grib_action_set_iarray*)act; - act->context = context; - - a->iarray = iarray; - a->name = grib_context_strdup_persistent(context, name); - - snprintf(buf, 1024, "set_iarray%p", (void*)iarray); - - act->name = grib_context_strdup_persistent(context, buf); - - return act; -#endif +// char buf[1024]; +// grib_action_set_iarray* a; +// grib_action_class* c = grib_action_class_set_iarray; +// grib_action* act = (grib_action*)grib_context_malloc_clear_persistent(context, c->size); +// act->op = grib_context_strdup_persistent(context, "section"); + +// act->cclass = c; +// a = (grib_action_set_iarray*)act; +// act->context = context; +// a->iarray = iarray; +// a->name = grib_context_strdup_persistent(context, name); +// snprintf(buf, 1024, "set_iarray%p", (void*)iarray); +// act->name = grib_context_strdup_persistent(context, buf); +// return act; } static int execute(grib_action* a, grib_handle* h) diff --git a/src/action_class_trigger.cc b/src/action_class_trigger.cc index fc483fc27..82e4e9e43 100644 --- a/src/action_class_trigger.cc +++ b/src/action_class_trigger.cc @@ -89,72 +89,58 @@ grib_action* grib_action_create_trigger(grib_context* context, grib_arguments* a { Assert(!"action_class_trigger::grib_action_create_trigger: 'trigger' statement is deprecated"); return NULL; -#if 0 - char name[1024]; - const size_t nameLen = sizeof(name); - grib_action_trigger* a = 0; - grib_action_class* c = grib_action_class_trigger; - grib_action* act = (grib_action*)grib_context_malloc_clear_persistent(context, c->size); - - snprintf(name, nameLen, "_trigger%p", (void*)act); - - act->name = grib_context_strdup_persistent(context, name); - act->op = grib_context_strdup_persistent(context, "section"); - act->cclass = c; - act->next = NULL; - act->context = context; - - a = (grib_action_trigger*)act; - a->trigger_on = args; - a->block = block; - - return act; -#endif +// char name[1024]; +// const size_t nameLen = sizeof(name); +// grib_action_trigger* a = 0; +// grib_action_class* c = grib_action_class_trigger; +// grib_action* act = (grib_action*)grib_context_malloc_clear_persistent(context, c->size); +// snprintf(name, nameLen, "_trigger%p", (void*)act); +// act->name = grib_context_strdup_persistent(context, name); +// act->op = grib_context_strdup_persistent(context, "section"); +// act->cclass = c; +// act->next = NULL; +// act->context = context; +// a = (grib_action_trigger*)act; +// a->trigger_on = args; +// a->block = block; +// return act; } static void dump(grib_action* act, FILE* f, int lvl) { Assert(!"action_class_trigger::dump: 'trigger' statement is deprecated"); -#if 0 - int i = 0; - for (i = 0; i < lvl; i++) - grib_context_print(act->context, f, " "); - grib_context_print(act->context, f, "Trigger\n"); -#endif + + // int i = 0; + // for (i = 0; i < lvl; i++) + // grib_context_print(act->context, f, " "); + // grib_context_print(act->context, f, "Trigger\n"); } static int create_accessor(grib_section* p, grib_action* act, grib_loader* h) { Assert(!"action_class_trigger::create_accessor: 'trigger' statement is deprecated"); -#if 0 - int ret = GRIB_SUCCESS; - grib_action_trigger* a = (grib_action_trigger*)act; - grib_action* next = NULL; - grib_accessor* as = NULL; - grib_section* gs = NULL; - - as = grib_accessor_factory(p, act, 0, NULL); - - if (!as) - return GRIB_INTERNAL_ERROR; - - gs = as->sub_section; - gs->branch = 0; /* Force a reparse each time */ - - grib_push_accessor(as, p->block); - grib_dependency_observe_arguments(as, a->trigger_on); - - next = a->block; - - while (next) { - ret = grib_create_accessor(gs, next, h); - if (ret != GRIB_SUCCESS) - return ret; - next = next->next; - } -#endif +// int ret = GRIB_SUCCESS; +// grib_action_trigger* a = (grib_action_trigger*)act; +// grib_action* next = NULL; +// grib_accessor* as = NULL; +// grib_section* gs = NULL; +// as = grib_accessor_factory(p, act, 0, NULL); +// if (!as) +// return GRIB_INTERNAL_ERROR; + +// gs = as->sub_section; +// gs->branch = 0; /* Force a reparse each time */ +// grib_push_accessor(as, p->block); +// grib_dependency_observe_arguments(as, a->trigger_on); +// next = a->block; +// while (next) { +// ret = grib_create_accessor(gs, next, h); +// if (ret != GRIB_SUCCESS) +// return ret; +// next = next->next; +// } return GRIB_SUCCESS; } @@ -164,23 +150,18 @@ static grib_action* reparse(grib_action* a, grib_accessor* acc, int* doit) return self->block; } -/* COMEBACK */ static void destroy(grib_context* context, grib_action* act) { Assert(!"action_class_trigger::destroy: 'trigger' statement is deprecated"); -#if 0 - grib_action_trigger* a = (grib_action_trigger*)act; - grib_action* b = a->block; - - while (b) { - grib_action* n = b->next; - grib_action_delete(context, b); - b = n; - } - - grib_arguments_free(context, a->trigger_on); - grib_context_free_persistent(context, act->name); - grib_context_free_persistent(context, act->op); -#endif +// grib_action_trigger* a = (grib_action_trigger*)act; +// grib_action* b = a->block; +// while (b) { +// grib_action* n = b->next; +// grib_action_delete(context, b); +// b = n; +// } +// grib_arguments_free(context, a->trigger_on); +// grib_context_free_persistent(context, act->name); +// grib_context_free_persistent(context, act->op); } diff --git a/src/action_class_while.cc b/src/action_class_while.cc index ec17ef65b..0b5c7ca4c 100644 --- a/src/action_class_while.cc +++ b/src/action_class_while.cc @@ -84,62 +84,51 @@ static void dump(grib_action* act, FILE* f, int lvl) { Assert(!"action_class_while::dump: 'while' statement is deprecated"); -#if 0 - grib_action_while* a = (grib_action_while*)act; - int i = 0; - for (i = 0; i < lvl; i++) - grib_context_print(act->context, f, " "); - grib_context_print(act->context, f, "Loop %s\n", act->name); - grib_dump_action_branch(f, a->block_while, lvl + 1); -#endif +// grib_action_while* a = (grib_action_while*)act; +// int i = 0; +// for (i = 0; i < lvl; i++) +// grib_context_print(act->context, f, " "); +// grib_context_print(act->context, f, "Loop %s\n", act->name); +// grib_dump_action_branch(f, a->block_while, lvl + 1); } static int create_accessor(grib_section* p, grib_action* act, grib_loader* h) { Assert(!"action_class_while::create_accessor: 'while' statement is deprecated"); -#if 0 - grib_action_while* a = (grib_action_while*)act; +// grib_action_while* a = (grib_action_while*)act; +// grib_accessor* ga = NULL; +// grib_section* gs = NULL; +// grib_action* la = NULL; +// grib_action* next = NULL; +// int ret = 0; +// ga = grib_accessor_factory(p, act, 0, NULL); +// if (!ga) +// return GRIB_BUFFER_TOO_SMALL; +// gs = ga->sub_section; + +// grib_push_accessor(ga, p->block); +// la = a->block_while; + +// for (;;) { +// long val = 0; + +// if ((ret = grib_expression_evaluate_long(p->h, a->expression, &val)) != GRIB_SUCCESS) { +// grib_context_log(p->h->context, GRIB_LOG_DEBUG, " List %s creating %d values unable to evaluate long \n", act->name, val); +// return ret; +// } +// if (!val) +// break; + +// next = la; +// while (next) { +// ret = grib_create_accessor(gs, next, h); +// if (ret != GRIB_SUCCESS) +// return ret; +// next = next->next; +// } +// } - grib_accessor* ga = NULL; - grib_section* gs = NULL; - grib_action* la = NULL; - grib_action* next = NULL; - int ret = 0; - /* long n = 0; */ - - ga = grib_accessor_factory(p, act, 0, NULL); - if (!ga) - return GRIB_BUFFER_TOO_SMALL; - gs = ga->sub_section; - - grib_push_accessor(ga, p->block); - - la = a->block_while; - - for (;;) { - long val = 0; - - if ((ret = grib_expression_evaluate_long(p->h, a->expression, &val)) != GRIB_SUCCESS) { - grib_context_log(p->h->context, GRIB_LOG_DEBUG, " List %s creating %d values unable to evaluate long \n", act->name, val); - return ret; - } - - /* printf("val=%ld %ld\n",val,n++); */ - - if (!val) - break; - - - next = la; - while (next) { - ret = grib_create_accessor(gs, next, h); - if (ret != GRIB_SUCCESS) - return ret; - next = next->next; - } - } -#endif return GRIB_SUCCESS; } @@ -147,43 +136,41 @@ grib_action* grib_action_create_while(grib_context* context, grib_expression* ex { Assert(!"action_class_while::grib_action_create_while: 'while' statement is deprecated"); return NULL; -#if 0 - char name[80]; - const size_t nameLen = sizeof(name); - grib_action_while* a; - grib_action_class* c = grib_action_class_while; - grib_action* act = (grib_action*)grib_context_malloc_clear_persistent(context, c->size); - act->cclass = c; - act->context = context; - a = (grib_action_while*)act; - act->next = NULL; - - snprintf(name, nameLen, "_while%p", (void*)a); - act->name = grib_context_strdup_persistent(context, name); - act->op = grib_context_strdup_persistent(context, "section"); - a->expression = expression; - - a->block_while = block; - - grib_context_log(context, GRIB_LOG_DEBUG, " Action List %s is created \n", act->name); - return act; -#endif + +// char name[80]; +// const size_t nameLen = sizeof(name); +// grib_action_while* a; +// grib_action_class* c = grib_action_class_while; +// grib_action* act = (grib_action*)grib_context_malloc_clear_persistent(context, c->size); +// act->cclass = c; +// act->context = context; +// a = (grib_action_while*)act; +// act->next = NULL; + +// snprintf(name, nameLen, "_while%p", (void*)a); +// act->name = grib_context_strdup_persistent(context, name); +// act->op = grib_context_strdup_persistent(context, "section"); +// a->expression = expression; + +// a->block_while = block; + +// grib_context_log(context, GRIB_LOG_DEBUG, " Action List %s is created \n", act->name); +// return act; } static void destroy(grib_context* context, grib_action* act) { Assert(!"action_class_while::destroy: 'while' statement is deprecated"); -#if 0 - grib_action_while* self = (grib_action_while*)act; - grib_action* a = self->block_while; - - while (a) { - grib_action* na = a->next; - grib_action_delete(context, a); - a = na; - } - grib_context_free_persistent(context, act->name); - grib_context_free_persistent(context, act->op); - grib_expression_free(context, self->expression); -#endif + + // grib_action_while* self = (grib_action_while*)act; + // grib_action* a = self->block_while; + + // while (a) { + // grib_action* na = a->next; + // grib_action_delete(context, a); + // a = na; + // } + // grib_context_free_persistent(context, act->name); + // grib_context_free_persistent(context, act->op); + // grib_expression_free(context, self->expression); } diff --git a/src/bufr_util.cc b/src/bufr_util.cc index 4f008c228..3a81a3ef8 100644 --- a/src/bufr_util.cc +++ b/src/bufr_util.cc @@ -783,7 +783,7 @@ static const char* codes_bufr_header_get_centre_name(long edition, long centre_c } } -#if 0 +#if defined(BUFR_PROCESS_CODE_TABLE) // TODO: Not efficient as it opens the code table every time static char* codes_bufr_header_get_centre_name(long edition, long centre_code) { diff --git a/src/codes_util.cc b/src/codes_util.cc index b7ef41ae1..61174f2f9 100644 --- a/src/codes_util.cc +++ b/src/codes_util.cc @@ -155,19 +155,17 @@ int codes_flush_sync_close_file(FILE* f) return GRIB_IO_PROBLEM; } -#if 0 #ifdef HAVE_FCNTL_H // Heavy handed way of getting the file access mode: only proceed if writing - val = fcntl(fd, F_GETFL, 0); - if (val < 0) { - grib_context_log(c, GRIB_LOG_PERROR, "Call to fcntl failed"); - return err; - } - if ((val & O_ACCMODE) != O_WRONLY) { - // File is not being written - return GRIB_SUCCESS; - } -#endif + //val = fcntl(fd, F_GETFL, 0); + //if (val < 0) { + // grib_context_log(c, GRIB_LOG_PERROR, "Call to fcntl failed"); + // return err; + //} + //if ((val & O_ACCMODE) != O_WRONLY) { + // // File is not being written + // return GRIB_SUCCESS; + //} #endif err = fflush(f); diff --git a/src/functions.cc b/src/functions.cc index ed749c159..9109ecfaf 100644 --- a/src/functions.cc +++ b/src/functions.cc @@ -136,73 +136,71 @@ double grib_op_le_d(double a, double b) return a <= b; } -#if 0 -#define LOOKUP(a) \ - if (proc == a) { \ - return "&" #a; \ - } -const char* grib_binop_long_proc_name(const grib_binop_long_proc proc) -{ - if (!proc) - return "NULL"; - LOOKUP(grib_op_eq); - LOOKUP(grib_op_ne); - LOOKUP(grib_op_lt); - LOOKUP(grib_op_gt); - LOOKUP(grib_op_and); - LOOKUP(grib_op_or); - LOOKUP(grib_op_ge); - LOOKUP(grib_op_le); - LOOKUP(grib_op_bit); - LOOKUP(grib_op_bitoff); - LOOKUP(grib_op_pow); - LOOKUP(grib_op_add); - LOOKUP(grib_op_sub); - LOOKUP(grib_op_div); - LOOKUP(grib_op_mul); - LOOKUP(grib_op_modulo); - fprintf(stderr, "Cannot find grib_binop_long_proc\n"); - Assert(0); - return NULL; -} +// #define LOOKUP(a) \ +// if (proc == a) { \ +// return "&" #a; \ +// } +// const char* grib_binop_long_proc_name(const grib_binop_long_proc proc) +// { +// if (!proc) +// return "NULL"; +// LOOKUP(grib_op_eq); +// LOOKUP(grib_op_ne); +// LOOKUP(grib_op_lt); +// LOOKUP(grib_op_gt); +// LOOKUP(grib_op_and); +// LOOKUP(grib_op_or); +// LOOKUP(grib_op_ge); +// LOOKUP(grib_op_le); +// LOOKUP(grib_op_bit); +// LOOKUP(grib_op_bitoff); +// LOOKUP(grib_op_pow); +// LOOKUP(grib_op_add); +// LOOKUP(grib_op_sub); +// LOOKUP(grib_op_div); +// LOOKUP(grib_op_mul); +// LOOKUP(grib_op_modulo); +// fprintf(stderr, "Cannot find grib_binop_long_proc\n"); +// Assert(0); +// return NULL; +// } -const char* grib_binop_double_proc_name(const grib_binop_double_proc proc) -{ - if (!proc) - return "NULL"; - LOOKUP(grib_op_mul_d); - LOOKUP(grib_op_div_d); - LOOKUP(grib_op_add_d); - LOOKUP(grib_op_sub_d); - LOOKUP(grib_op_eq_d); - LOOKUP(grib_op_ne_d); - LOOKUP(grib_op_lt_d); - LOOKUP(grib_op_gt_d); - LOOKUP(grib_op_ge_d); - LOOKUP(grib_op_le_d); - fprintf(stderr, "Cannot find grib_binop_double_proc_name\n"); - Assert(0); - return NULL; -} +// const char* grib_binop_double_proc_name(const grib_binop_double_proc proc) +// { +// if (!proc) +// return "NULL"; +// LOOKUP(grib_op_mul_d); +// LOOKUP(grib_op_div_d); +// LOOKUP(grib_op_add_d); +// LOOKUP(grib_op_sub_d); +// LOOKUP(grib_op_eq_d); +// LOOKUP(grib_op_ne_d); +// LOOKUP(grib_op_lt_d); +// LOOKUP(grib_op_gt_d); +// LOOKUP(grib_op_ge_d); +// LOOKUP(grib_op_le_d); +// fprintf(stderr, "Cannot find grib_binop_double_proc_name\n"); +// Assert(0); +// return NULL; +// } -const char* grib_unop_long_proc_name(const grib_unop_long_proc proc) -{ - if (!proc) - return "NULL"; - LOOKUP(grib_op_not); - LOOKUP(grib_op_neg); - fprintf(stderr, "Cannot find grib_unop_long_proc_name\n"); - Assert(0); - return NULL; -} +// const char* grib_unop_long_proc_name(const grib_unop_long_proc proc) +// { +// if (!proc) +// return "NULL"; +// LOOKUP(grib_op_not); +// LOOKUP(grib_op_neg); +// fprintf(stderr, "Cannot find grib_unop_long_proc_name\n"); +// Assert(0); +// return NULL; +// } -const char* grib_unop_double_proc_name(const grib_unop_double_proc proc) -{ - if (!proc) - return "NULL"; - LOOKUP(grib_op_neg_d); - fprintf(stderr, "Cannot find grib_unop_double_proc_name\n"); - Assert(0); - return NULL; -} -#endif +// const char* grib_unop_double_proc_name(const grib_unop_double_proc proc) +// { +// if (!proc) +// return "NULL"; +// LOOKUP(grib_op_neg_d); +// fprintf(stderr, "Cannot find grib_unop_double_proc_name\n"); +// Assert(0); +// return NULL; +// } diff --git a/src/grib_dumper_class_grib_encode_C.cc b/src/grib_dumper_class_grib_encode_C.cc index b9c06653a..e6af382db 100644 --- a/src/grib_dumper_class_grib_encode_C.cc +++ b/src/grib_dumper_class_grib_encode_C.cc @@ -210,9 +210,7 @@ static void dump_double(grib_dumper* d, grib_accessor* a, const char* comment) if (a->length == 0) return; -#if 0 - if(comment) fprintf(self->dumper.out,"/* %s */\n",comment); -#endif + //if(comment) fprintf(self->dumper.out,"/* %s */\n",comment); fprintf(self->dumper.out, " GRIB_CHECK(grib_set_double(h,\"%s\",%g),%d);\n", a->name, value, 0); @@ -273,27 +271,26 @@ static void dump_bytes(grib_dumper* d, grib_accessor* a, const char* comment) return; } -#if 0 - if(size > 100) { - more = size - 100; - size = 100; - } + // if(size > 100) { + // more = size - 100; + // size = 100; + // } + + // k = 0; + // //if(size > 100) size = 100; + // while(k < size) + // { + // int j; + // for(i = 0; i < d->depth + 3 ; i++) fprintf(self->dumper.out," "); + // for(j = 0; j < 16 && k < size; j++, k++) + // { + // fprintf(self->dumper.out,"%02x",buf[k]); + // if(k != size-1) + // fprintf(self->dumper.out,", "); + // } + // fprintf(self->dumper.out,"\n"); + // } - k = 0; - /* if(size > 100) size = 100; */ - while(k < size) - { - int j; - for(i = 0; i < d->depth + 3 ; i++) fprintf(self->dumper.out," "); - for(j = 0; j < 16 && k < size; j++, k++) - { - fprintf(self->dumper.out,"%02x",buf[k]); - if(k != size-1) - fprintf(self->dumper.out,", "); - } - fprintf(self->dumper.out,"\n"); - } -#endif grib_context_free(d->context, buf); } diff --git a/src/grib_dumper_class_keys.cc b/src/grib_dumper_class_keys.cc index fd74f715c..3d85ddaee 100644 --- a/src/grib_dumper_class_keys.cc +++ b/src/grib_dumper_class_keys.cc @@ -99,65 +99,58 @@ static int destroy(grib_dumper* d) return GRIB_SUCCESS; } -#if 0 -static void aliases(grib_dumper* d, grib_accessor* a) -{ - int i; - grib_dumper_keys* self = (grib_dumper_keys*)d; - - if ((d->option_flags & GRIB_DUMP_FLAG_ALIASES) == 0) - return; - - if (a->all_names[1]) { - const char* sep = ""; - fprintf(self->dumper.out, " ( ALIASES: "); - - for (i = 1; i < MAX_ACCESSOR_NAMES; i++) { - if (a->all_names[i]) { - if (a->all_name_spaces[i]) - fprintf(self->dumper.out, "%s%s.%s", sep, a->all_name_spaces[i], a->all_names[i]); - else - fprintf(self->dumper.out, "%s%s", sep, a->all_names[i]); - } - sep = ", "; - } - printf(") "); - } -} -#endif +// static void aliases(grib_dumper* d, grib_accessor* a) +// { +// int i; +// grib_dumper_keys* self = (grib_dumper_keys*)d; + +// if ((d->option_flags & GRIB_DUMP_FLAG_ALIASES) == 0) +// return; + +// if (a->all_names[1]) { +// const char* sep = ""; +// fprintf(self->dumper.out, " ( ALIASES: "); + +// for (i = 1; i < MAX_ACCESSOR_NAMES; i++) { +// if (a->all_names[i]) { +// if (a->all_name_spaces[i]) +// fprintf(self->dumper.out, "%s%s.%s", sep, a->all_name_spaces[i], a->all_names[i]); +// else +// fprintf(self->dumper.out, "%s%s", sep, a->all_names[i]); +// } +// sep = ", "; +// } +// printf(") "); +// } +// } static void dump_name_only(grib_dumper* d, grib_accessor* a, const char* comment) { -#if 0 - grib_dumper_keys* self = (grib_dumper_keys*)d; - - print_offset(self->dumper.out, d, a); - - if (a->flags & GRIB_ACCESSOR_FLAG_HIDDEN) { - return; - } - - if (a->length == 0 && - (d->option_flags & GRIB_DUMP_FLAG_CODED) != 0) - return; - - if ((a->flags & GRIB_ACCESSOR_FLAG_DUMP) == 0 && - (d->option_flags & GRIB_DUMP_FLAG_DUMP_OK) != 0) - return; - - fprintf(self->dumper.out, "%s", a->name); - - if (a->flags & GRIB_ACCESSOR_FLAG_READ_ONLY) { - fprintf(self->dumper.out, " (read only)"); - } - if ((d->option_flags & GRIB_DUMP_FLAG_TYPE) != 0) { - fprintf(self->dumper.out, " (type %s) ", a->creator->op); - } - - aliases(d, a); - - fprintf(self->dumper.out, "\n"); -#endif +// grib_dumper_keys* self = (grib_dumper_keys*)d; +// print_offset(self->dumper.out, d, a); + +// if (a->flags & GRIB_ACCESSOR_FLAG_HIDDEN) { +// return; +// } + +// if (a->length == 0 && +// (d->option_flags & GRIB_DUMP_FLAG_CODED) != 0) +// return; + +// if ((a->flags & GRIB_ACCESSOR_FLAG_DUMP) == 0 && +// (d->option_flags & GRIB_DUMP_FLAG_DUMP_OK) != 0) +// return; + +// fprintf(self->dumper.out, "%s", a->name); + +// if (a->flags & GRIB_ACCESSOR_FLAG_READ_ONLY) { +// fprintf(self->dumper.out, " (read only)"); +// } +// if ((d->option_flags & GRIB_DUMP_FLAG_TYPE) != 0) { +// fprintf(self->dumper.out, " (type %s) ", a->creator->op); +// } +// aliases(d, a); +// fprintf(self->dumper.out, "\n"); } static void dump_long(grib_dumper* d, grib_accessor* a, const char* comment) @@ -182,77 +175,74 @@ static void dump_string(grib_dumper* d, grib_accessor* a, const char* comment) static void dump_bytes(grib_dumper* d, grib_accessor* a, const char* comment) { -#if 0 - grib_dumper_keys *self = (grib_dumper_keys*)d; - int i,k,err =0; - size_t more = 0; - size_t size = a->length; - unsigned char* buf = grib_context_malloc(d->handle->context,size); - - if ( (a->flags & GRIB_ACCESSOR_FLAG_DUMP) == 0) - return; - - - if (a->flags & GRIB_ACCESSOR_FLAG_READ_ONLY) - fprintf(self->dumper.out,"-READ ONLY- "); - - /*for(i = 0; i < d->depth ; i++) fprintf(self->dumper.out," ");*/ - /*print_offset(self->dumper.out,self->begin,self->theEnd);*/ - if ((d->option_flags & GRIB_DUMP_FLAG_TYPE) != 0) - fprintf(self->dumper.out,"%s ",a->creator->op); - - fprintf(self->dumper.out,"%s = %ld",a->name,a->length); - aliases(d,a); - fprintf(self->dumper.out," {"); - - if(!buf) - { - if(size == 0) - fprintf(self->dumper.out,"}\n"); - else - fprintf(self->dumper.out," *** ERR cannot malloc(%ld) }\n",(long)size); - return; - } - - fprintf(self->dumper.out,"\n"); - - err = grib_unpack_bytes(a,buf,&size); - if(err){ - grib_context_free(d->handle->context,buf); - fprintf(self->dumper.out," *** ERR=%d (%s) \n}",err,grib_get_error_message(err)); - return ; - } - - if(size > 100) { - more = size - 100; - size = 100; - } - - k = 0; - /* if(size > 100) size = 100; */ - while(k < size) - { - int j; - for(i = 0; i < d->depth + 3 ; i++) fprintf(self->dumper.out," "); - for(j = 0; j < 16 && k < size; j++, k++) - { - fprintf(self->dumper.out,"%02x",buf[k]); - if(k != size-1) - fprintf(self->dumper.out,", "); - } - fprintf(self->dumper.out,"\n"); - } - - if(more) - { - for(i = 0; i < d->depth + 3 ; i++) fprintf(self->dumper.out," "); - fprintf(self->dumper.out,"... %lu more values\n", (unsigned long)more); - } - - for(i = 0; i < d->depth ; i++) fprintf(self->dumper.out," "); - fprintf(self->dumper.out,"} # %s %s \n",a->creator->op, a->name); - grib_context_free(d->handle->context,buf); -#endif +// grib_dumper_keys *self = (grib_dumper_keys*)d; +// int i,k,err =0; +// size_t more = 0; +// size_t size = a->length; +// unsigned char* buf = grib_context_malloc(d->handle->context,size); + +// if ( (a->flags & GRIB_ACCESSOR_FLAG_DUMP) == 0) +// return; + +// if (a->flags & GRIB_ACCESSOR_FLAG_READ_ONLY) +// fprintf(self->dumper.out,"-READ ONLY- "); + +// /*for(i = 0; i < d->depth ; i++) fprintf(self->dumper.out," ");*/ +// /*print_offset(self->dumper.out,self->begin,self->theEnd);*/ +// if ((d->option_flags & GRIB_DUMP_FLAG_TYPE) != 0) +// fprintf(self->dumper.out,"%s ",a->creator->op); + +// fprintf(self->dumper.out,"%s = %ld",a->name,a->length); +// aliases(d,a); +// fprintf(self->dumper.out," {"); + +// if(!buf) +// { +// if(size == 0) +// fprintf(self->dumper.out,"}\n"); +// else +// fprintf(self->dumper.out," *** ERR cannot malloc(%ld) }\n",(long)size); +// return; +// } + +// fprintf(self->dumper.out,"\n"); + +// err = grib_unpack_bytes(a,buf,&size); +// if(err){ +// grib_context_free(d->handle->context,buf); +// fprintf(self->dumper.out," *** ERR=%d (%s) \n}",err,grib_get_error_message(err)); +// return ; +// } + +// if(size > 100) { +// more = size - 100; +// size = 100; +// } + +// k = 0; +// /* if(size > 100) size = 100; */ +// while(k < size) +// { +// int j; +// for(i = 0; i < d->depth + 3 ; i++) fprintf(self->dumper.out," "); +// for(j = 0; j < 16 && k < size; j++, k++) +// { +// fprintf(self->dumper.out,"%02x",buf[k]); +// if(k != size-1) +// fprintf(self->dumper.out,", "); +// } +// fprintf(self->dumper.out,"\n"); +// } + +// if(more) +// { +// for(i = 0; i < d->depth + 3 ; i++) fprintf(self->dumper.out," "); +// fprintf(self->dumper.out,"... %lu more values\n", (unsigned long)more); +// } + +// for(i = 0; i < d->depth ; i++) fprintf(self->dumper.out," "); +// fprintf(self->dumper.out,"} # %s %s \n",a->creator->op, a->name); +// grib_context_free(d->handle->context,buf); } static void dump_values(grib_dumper* d, grib_accessor* a) @@ -270,46 +260,43 @@ static void dump_label(grib_dumper* d, grib_accessor* a, const char* comment) static void dump_section(grib_dumper* d, grib_accessor* a, grib_block_of_accessors* block) { -#if 0 - grib_dumper_keys* self = (grib_dumper_keys*)d; - /*grib_section* s = grib_get_sub_section(a);*/ - int is_default_section = 0; - char* upper = NULL; - char *p = NULL, *q = NULL; - if (!strncmp(a->name, "section", 7)) - is_default_section = 1; - - /*for(i = 0; i < d->depth ; i++) fprintf(self->dumper.out," ");*/ - if (is_default_section) { - upper = (char*)malloc(strlen(a->name) + 1); - Assert(upper); - p = (char*)a->name; - q = upper; - while (*p != '\0') { - *q = toupper(*p); - if (*q == '_') - *q = ' '; - q++; - p++; - } - *q = '\0'; - - /*snprintf(tmp,1024,"%s ",upper,(long)s->length,(long)s->padding);*/ - - fprintf(self->dumper.out, "====> %s <==== \n", upper); - - free(upper); - self->section_offset = a->offset; - } - else { - } - - /*printf("------------- section_offset = %ld\n",self->section_offset);*/ - d->depth += 3; - grib_dump_accessors_block(d, block); - d->depth -= 3; - - /*for(i = 0; i < d->depth ; i++) fprintf(self->dumper.out," ");*/ - /*fprintf(self->dumper.out,"<===== %s %s\n",a->creator->op, a->name);*/ -#endif +// grib_dumper_keys* self = (grib_dumper_keys*)d; +// /*grib_section* s = grib_get_sub_section(a);*/ +// int is_default_section = 0; +// char* upper = NULL; +// char *p = NULL, *q = NULL; +// if (!strncmp(a->name, "section", 7)) +// is_default_section = 1; + +// /*for(i = 0; i < d->depth ; i++) fprintf(self->dumper.out," ");*/ +// if (is_default_section) { +// upper = (char*)malloc(strlen(a->name) + 1); +// Assert(upper); +// p = (char*)a->name; +// q = upper; +// while (*p != '\0') { +// *q = toupper(*p); +// if (*q == '_') +// *q = ' '; +// q++; +// p++; +// } +// *q = '\0'; + +// /*snprintf(tmp,1024,"%s ",upper,(long)s->length,(long)s->padding);*/ +// fprintf(self->dumper.out, "====> %s <==== \n", upper); + +// free(upper); +// self->section_offset = a->offset; +// } +// else { +// } + +// /*printf("------------- section_offset = %ld\n",self->section_offset);*/ +// d->depth += 3; +// grib_dump_accessors_block(d, block); +// d->depth -= 3; + +// /*for(i = 0; i < d->depth ; i++) fprintf(self->dumper.out," ");*/ +// /*fprintf(self->dumper.out,"<===== %s %s\n",a->creator->op, a->name);*/ } diff --git a/src/grib_dumper_class_serialize.cc b/src/grib_dumper_class_serialize.cc index bc7424fc9..e826a846a 100644 --- a/src/grib_dumper_class_serialize.cc +++ b/src/grib_dumper_class_serialize.cc @@ -121,18 +121,15 @@ static void dump_long(grib_dumper* d, grib_accessor* a, const char* comment) (strcmp(a->cclass->name, "lookup") != 0)) fprintf(self->dumper.out, " (read_only)"); -#if 0 - if(comment) fprintf(self->dumper.out," [%s]",comment); -#endif + //if(comment) fprintf(self->dumper.out," [%s]",comment); + if (err) fprintf(self->dumper.out, " *** ERR=%d (%s) [grib_dumper_serialize::dump_long]", err, grib_get_error_message(err)); fprintf(self->dumper.out, "\n"); } -#if 0 -static int test_bit(long a, long b) {return a&(1<dumper.out, "%s = %ld ", a->name, value); -#if 0 + // fprintf(self->dumper.out,"["); + // for(i=0;i<(a->length*8);i++) { + // if(test_bit(value,a->length*8-i-1)) + // fprintf(self->dumper.out,"1"); + // else + // fprintf(self->dumper.out,"0"); + // } - fprintf(self->dumper.out,"["); - for(i=0;i<(a->length*8);i++) { - if(test_bit(value,a->length*8-i-1)) - fprintf(self->dumper.out,"1"); - else - fprintf(self->dumper.out,"0"); - } + // if(comment) + // fprintf(self->dumper.out,":%s]",comment); + // else + // fprintf(self->dumper.out,"]"); - if(comment) - fprintf(self->dumper.out,":%s]",comment); - else - fprintf(self->dumper.out,"]"); -#endif if (err) fprintf(self->dumper.out, " *** ERR=%d (%s)", err, grib_get_error_message(err)); @@ -193,9 +188,8 @@ static void dump_double(grib_dumper* d, grib_accessor* a, const char* comment) if ((a->flags & GRIB_ACCESSOR_FLAG_READ_ONLY) != 0) fprintf(self->dumper.out, " (read_only)"); -#if 0 - if(comment) fprintf(self->dumper.out," [%s]",comment); -#endif + //if (comment) fprintf(self->dumper.out," [%s]",comment); + if (err) fprintf(self->dumper.out, " *** ERR=%d (%s) [grib_dumper_serialize::dump_double]", err, grib_get_error_message(err)); fprintf(self->dumper.out, "\n"); @@ -231,9 +225,8 @@ static void dump_string(grib_dumper* d, grib_accessor* a, const char* comment) if ((a->flags & GRIB_ACCESSOR_FLAG_READ_ONLY) != 0) fprintf(self->dumper.out, " (read_only)"); -#if 0 - if(comment) fprintf(self->dumper.out," [%s]",comment); -#endif + // if(comment) fprintf(self->dumper.out," [%s]",comment); + if (err) fprintf(self->dumper.out, " *** ERR=%d (%s) [grib_dumper_serialize::dump_string]", err, grib_get_error_message(err)); fprintf(self->dumper.out, "\n"); @@ -407,12 +400,10 @@ static void dump_values(grib_dumper* d, grib_accessor* a) static void dump_label(grib_dumper* d, grib_accessor* a, const char* comment) { -#if 0 - grib_dumper_serialize *self = (grib_dumper_serialize*)d; - int i; - for(i = 0; i < d->depth ; i++) fprintf(self->dumper.out," "); - fprintf(self->dumper.out,"----> %s %s %s\n",a->creator->op, a->name,comment?comment:""); -#endif + // grib_dumper_serialize *self = (grib_dumper_serialize*)d; + // int i; + // for(i = 0; i < d->depth ; i++) fprintf(self->dumper.out," "); + // fprintf(self->dumper.out,"----> %s %s %s\n",a->creator->op, a->name,comment?comment:""); } static void dump_section(grib_dumper* d, grib_accessor* a, grib_block_of_accessors* block) @@ -433,7 +424,5 @@ static void dump_section(grib_dumper* d, grib_accessor* a, grib_block_of_accesso grib_dump_accessors_block(d, block); -#if 0 - fprintf(self->dumper.out,"<------ %s %s\n",a->creator->op, a->name); -#endif + //fprintf(self->dumper.out,"<------ %s %s\n",a->creator->op, a->name); } diff --git a/src/grib_iarray.cc b/src/grib_iarray.cc index 39f1439e1..4429703d4 100644 --- a/src/grib_iarray.cc +++ b/src/grib_iarray.cc @@ -26,24 +26,20 @@ void grib_iarray_print(const char* title, const grib_iarray* iarray) printf("\n"); } -#if 0 -grib_iarray* grib_iarray_new_from_array(grib_context* c, long* src_array, size_t size) -{ - size_t i; - grib_iarray* v; - - if (!c) - c = grib_context_get_default(); - - v = grib_iarray_new(c, size, 100); - for (i = 0; i < size; i++) - v->v[i] = src_array[i]; - v->n = size; - v->number_of_pop_front = 0; - v->context = c; - return v; -} -#endif +// grib_iarray* grib_iarray_new_from_array(grib_context* c, long* src_array, size_t size) +// { +// size_t i; +// grib_iarray* v; +// if (!c) +// c = grib_context_get_default(); +// v = grib_iarray_new(c, size, 100); +// for (i = 0; i < size; i++) +// v->v[i] = src_array[i]; +// v->n = size; +// v->number_of_pop_front = 0; +// v->context = c; +// return v; +// } grib_iarray* grib_iarray_new(grib_context* c, size_t size, size_t incsize) { diff --git a/src/grib_util.cc b/src/grib_util.cc index ec14ba8d6..56581e90f 100644 --- a/src/grib_util.cc +++ b/src/grib_util.cc @@ -636,7 +636,7 @@ static int check_geometry(grib_handle* handle, const grib_util_grid_spec2* spec, return err; } -#if 0 +#if defined(CHECK_HANDLE_AGAINST_SPEC) /* Check what is coded in the handle is what is requested by the spec. */ /* Return GRIB_SUCCESS if the geometry matches, otherwise the error code */ static int check_handle_against_spec(grib_handle* handle, const long edition, diff --git a/src/md5.cc b/src/md5.cc index 7bf2279e3..b039fa477 100644 --- a/src/md5.cc +++ b/src/md5.cc @@ -37,19 +37,6 @@ static const unsigned long k[] = { 0x6fa87e4f, 0xfe2ce6e0, 0xa3014314, 0x4e0811a1, 0xf7537e82, 0xbd3af235, 0x2ad7d2bb, 0xeb86d391 }; -#if 0 -static const unsigned long t = 32; - -static unsigned long rotate(unsigned long x,unsigned long c) { return (x << c) | (x >> (t-c)); } - - -static unsigned long F(unsigned long x,unsigned long y,unsigned long z) { return (x&y)|((~x)&z); } -static unsigned long G(unsigned long x,unsigned long y,unsigned long z) { return (x&z)|(y&(~z)); } -static unsigned long H(unsigned long x,unsigned long y,unsigned long z) { return x^y^z; } -static unsigned long I(unsigned long x,unsigned long y,unsigned long z) { return y^(x|(~z)); } -#endif - - #define ROT(x, c) ((x << c) | (x >> (32 - c))) #define ECC_F(x, y, z) ((x & y) | ((~x) & z)) From fb4060cab0b98bdee4c67993532cf6a16bdefc87 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 20 Jun 2023 20:09:10 +0100 Subject: [PATCH 275/378] Get rid of macros and replace with STL algorithms --- ...rib_accessor_class_data_complex_packing.cc | 13 +++++------ ...accessor_class_data_g2bifourier_packing.cc | 12 ++++------ src/grib_geography.cc | 17 ++++---------- src/grib_header_compute.cc | 23 ------------------- 4 files changed, 16 insertions(+), 49 deletions(-) diff --git a/src/grib_accessor_class_data_complex_packing.cc b/src/grib_accessor_class_data_complex_packing.cc index 364ef0b13..9f4573e0e 100644 --- a/src/grib_accessor_class_data_complex_packing.cc +++ b/src/grib_accessor_class_data_complex_packing.cc @@ -10,6 +10,7 @@ #include "grib_api_internal_cpp.h" #include +#include /* This is used by make_class.pl @@ -201,8 +202,6 @@ static int value_count(grib_accessor* a, long* count) return ret; } -#define MAXVAL(a, b) a > b ? a : b - static double calculate_pfactor(grib_context* ctx, const double* spectralField, long fieldTruncation, long subsetTruncation) { /*long n_vals = ((fieldTruncation+1)*(fieldTruncation+2));*/ @@ -243,8 +242,8 @@ static double calculate_pfactor(grib_context* ctx, const double* spectralField, for (n = m; n <= fieldTruncation; n++) { index += 2; if (n >= subsetTruncation) { - norms[n] = MAXVAL(norms[n], fabs(spectralField[index])); - norms[n] = MAXVAL(norms[n], fabs(spectralField[index + 1])); + norms[n] = std::max(norms[n], fabs(spectralField[index])); + norms[n] = std::max(norms[n], fabs(spectralField[index + 1])); } } } @@ -256,8 +255,8 @@ static double calculate_pfactor(grib_context* ctx, const double* spectralField, for (m = subsetTruncation; m <= fieldTruncation; m++) { for (n = m; n <= fieldTruncation; n++) { index += 2; - norms[n] = MAXVAL(norms[n], fabs(spectralField[index])); - norms[n] = MAXVAL(norms[n], fabs(spectralField[index + 1])); + norms[n] = std::max(norms[n], fabs(spectralField[index])); + norms[n] = std::max(norms[n], fabs(spectralField[index + 1])); } } @@ -266,7 +265,7 @@ static double calculate_pfactor(grib_context* ctx, const double* spectralField, * problems with math functions (e.g. LOG). */ for (loop = ismin; loop <= ismax; loop++) { - norms[loop] = MAXVAL(norms[loop], zeps); + norms[loop] = std::max(norms[loop], zeps); if (norms[loop] == zeps) weights[loop] = 100.0 * zeps; } diff --git a/src/grib_accessor_class_data_g2bifourier_packing.cc b/src/grib_accessor_class_data_g2bifourier_packing.cc index 662c9005c..8e698098c 100644 --- a/src/grib_accessor_class_data_g2bifourier_packing.cc +++ b/src/grib_accessor_class_data_g2bifourier_packing.cc @@ -15,6 +15,7 @@ #include "grib_api_internal.h" #include "grib_optimize_decimal_factor.h" #include +#include /* This is used by make_class.pl @@ -192,9 +193,6 @@ static int value_count(grib_accessor* a, long* numberOfValues) return grib_get_long_internal(gh, self->number_of_values, numberOfValues); } -#define MAX(x, y) ((x) > (y) ? (x) : (y)) -#define MIN(x, y) ((x) < (y) ? (x) : (y)) - static void ellipse(long ni, long nj, long itrunc[], long jtrunc[]) { const double zeps = 1.E-10; @@ -207,7 +205,7 @@ static void ellipse(long ni, long nj, long itrunc[], long jtrunc[]) */ for (j = 1; j < nj; j++) { - zi = (double)ni / (double)nj * sqrt(MAX(zauxil, (double)(nj * nj - j * j))); + zi = (double)ni / (double)nj * sqrt(std::max(zauxil, (double)(nj * nj - j * j))); itrunc[j] = (int)(zi + zeps); } @@ -224,7 +222,7 @@ static void ellipse(long ni, long nj, long itrunc[], long jtrunc[]) */ for (i = 1; i < ni; i++) { - zj = (double)nj / (double)ni * sqrt(MAX(zauxil, (double)(ni * ni - i * i))); + zj = (double)nj / (double)ni * sqrt(std::max(zauxil, (double)(ni * ni - i * i))); jtrunc[i] = (int)(zj + zeps); } @@ -422,7 +420,7 @@ static double laplam(bif_trunc_t* bt, const double val[]) DebugAssertAccess(znorm, (long)ll, (long)lmax); DebugAssertAccess(val, (long)isp, (long)bt->n_vals_bif); if (ll < lmax && isp < bt->n_vals_bif) { - znorm[ll] = MAX(znorm[ll], fabs(val[isp])); + znorm[ll] = std::max(znorm[ll], fabs(val[isp])); } } } @@ -471,7 +469,7 @@ static double laplam(bif_trunc_t* bt, const double val[]) zbeta1 = zsum1 / zsum2; zp = -zbeta1; - zp = MAX(-9.999, MIN(9.999, zp)); + zp = std::max(-9.999, std::min(9.999, zp)); free(itab1); free(itab2); diff --git a/src/grib_geography.cc b/src/grib_geography.cc index 5afbec4a8..84b1029f3 100644 --- a/src/grib_geography.cc +++ b/src/grib_geography.cc @@ -9,12 +9,12 @@ */ /*************************************************************************** - * Jean Baptiste Filippi - 01.11.2005 * - * * + * Jean Baptiste Filippi - 01.11.2005 * ***************************************************************************/ #include "grib_api_internal.h" #include +#include #define NUMBER(x) (sizeof(x) / sizeof(x[0])) #define MAXITER 10 @@ -22,13 +22,6 @@ #define RAD2DEG 57.29577951308232087684 /* 180 over pi */ #define DEG2RAD 0.01745329251994329576 /* pi over 180 */ -#ifndef MAX -#define MAX(a, b) (((a) > (b)) ? (a) : (b)) -#endif -#ifndef MIN -#define MIN(a, b) (((a) < (b)) ? (a) : (b)) -#endif - #ifndef M_PI #define M_PI 3.14159265358979323846 #endif @@ -4067,15 +4060,15 @@ void rotate(const double inlat, const double inlon, const double ZCXMXC = cos(ZXMXC); const double ZSYREG = sin(DEG2RAD * inlat); const double ZCYREG = cos(DEG2RAD * inlat); - double ZSYROT = ZCYCEN * ZSYREG - ZSYCEN * ZCYREG * ZCXMXC; + double ZSYROT = ZCYCEN * ZSYREG - ZSYCEN * ZCYREG * ZCXMXC; - ZSYROT = MAX(MIN(ZSYROT, +1.0), -1.0); + ZSYROT = std::max(std::min(ZSYROT, +1.0), -1.0); PYROT = asin(ZSYROT) * RAD2DEG; ZCYROT = cos(PYROT * DEG2RAD); ZCXROT = (ZCYCEN * ZCYREG * ZCXMXC + ZSYCEN * ZSYREG) / ZCYROT; - ZCXROT = MAX(MIN(ZCXROT, +1.0), -1.0); + ZCXROT = std::max(std::min(ZCXROT, +1.0), -1.0); ZSXROT = ZCYREG * ZSXMXC / ZCYROT; PXROT = acos(ZCXROT) * RAD2DEG; diff --git a/src/grib_header_compute.cc b/src/grib_header_compute.cc index da68f004e..616c21a15 100644 --- a/src/grib_header_compute.cc +++ b/src/grib_header_compute.cc @@ -20,29 +20,6 @@ #include #include -#if 0 -GRIB_INLINE static int strcmp(const char* a,const char* b) { - if (*a != *b) return 1; - while((*a!=0 && *b!=0) && *(a) == *(b) ) {a++;b++;} - return (*a==0 && *b==0) ? 0 : 1; -} -#endif - -#ifndef NUMBER -#define NUMBER(a) (sizeof(a) / sizeof(a[0])) /* number of elem. of an array */ -#endif -#ifndef MAX -#define MAX(a, b) (((a) > (b)) ? (a) : (b)) -#endif -#ifndef MIN -#define MIN(a, b) (((a) < (b)) ? (a) : (b)) -#endif -#define ABS(a) ((a) < 0 ? -(a) : (a)) -#define ROUND(a) ((long)((a) + 0.5)) -#define EQ(a, b) ((*(a) == *(b)) && (strcmp(a, b) == 0)) -#define LT(a, b) ((*(a) < *(b)) || (strcmp(a, b) < 0)) - - static grib_math* readpower(grib_context* c, char** form, int* err); static grib_math* readatom(grib_context* c, char** form, int* err); static grib_math* readfactor(grib_context* c, char** form, int* err); From 1544f3062c33b706fb368c2c3509b28822617bd9 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 20 Jun 2023 21:22:48 +0100 Subject: [PATCH 276/378] Remove unused accessor 'apply_operators' --- src/CMakeLists.txt | 1 - src/accessor_class_hierarchy.txt | 1 - src/accessor_class_list.gperf | 228 +++++++++ src/action_class_gen.cc | 6 +- .../grib_accessor_class_apply_operators.cc | 2 +- src/eccodes_prototypes.h | 3 - src/grib_accessor_class.h | 1 - src/grib_accessor_classes_hash.cc | 481 +++++++++--------- src/grib_accessor_factory.h | 1 - src/grib_accessor_factory_hash_list | 1 - 10 files changed, 469 insertions(+), 256 deletions(-) create mode 100644 src/accessor_class_list.gperf rename src/{ => deprecated}/grib_accessor_class_apply_operators.cc (99%) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 46172de97..f607360b5 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -71,7 +71,6 @@ list( APPEND eccodes_src_files grib_accessor_class_bufr_string_values.cc grib_accessor_class_pack_bufr_values.cc grib_accessor_class_unpack_bufr_values.cc - grib_accessor_class_apply_operators.cc grib_accessor_class_group.cc grib_accessor_class_non_alpha.cc grib_accessor_class_g1bitmap.cc diff --git a/src/accessor_class_hierarchy.txt b/src/accessor_class_hierarchy.txt index 2fdf983e3..a85526afc 100644 --- a/src/accessor_class_hierarchy.txt +++ b/src/accessor_class_hierarchy.txt @@ -105,7 +105,6 @@ Generated by src/make_accessor_class_hierarchy_dirs.sh |---grib_accessor_class_iterator |---grib_accessor_class_label |---grib_accessor_class_long - |-----grib_accessor_class_apply_operators |-----grib_accessor_class_bit |-----grib_accessor_class_bits_per_value |-----grib_accessor_class_budgdate diff --git a/src/accessor_class_list.gperf b/src/accessor_class_list.gperf new file mode 100644 index 000000000..f4b2f0c78 --- /dev/null +++ b/src/accessor_class_list.gperf @@ -0,0 +1,228 @@ +%{ +#include "grib_api_internal.h" +#include "grib_accessor_class.h" + +%} +struct accessor_class_hash { char *name; grib_accessor_class **cclass;}; +%% +# This file is automatically generated by ./make_class.pl, do not edit */ + +abstract_long_vector, &grib_accessor_class_abstract_long_vector +abstract_vector, &grib_accessor_class_abstract_vector +array, &grib_accessor_class_array +ascii, &grib_accessor_class_ascii +assert, &grib_accessor_class_assert +bit, &grib_accessor_class_bit +bitmap, &grib_accessor_class_bitmap +bits, &grib_accessor_class_bits +bits_per_value, &grib_accessor_class_bits_per_value +blob, &grib_accessor_class_blob +box, &grib_accessor_class_box +budgdate, &grib_accessor_class_budgdate +bufr_data_array, &grib_accessor_class_bufr_data_array +bufr_data_element, &grib_accessor_class_bufr_data_element +bufr_elements_table, &grib_accessor_class_bufr_elements_table +bufr_extract_area_subsets, &grib_accessor_class_bufr_extract_area_subsets +bufr_extract_datetime_subsets, &grib_accessor_class_bufr_extract_datetime_subsets +bufr_extract_subsets, &grib_accessor_class_bufr_extract_subsets +bufr_group, &grib_accessor_class_bufr_group +bufr_simple_thinning, &grib_accessor_class_bufr_simple_thinning +bufr_string_values, &grib_accessor_class_bufr_string_values +bufrdc_expanded_descriptors, &grib_accessor_class_bufrdc_expanded_descriptors +bytes, &grib_accessor_class_bytes +change_alternative_row_scanning, &grib_accessor_class_change_alternative_row_scanning +change_scanning_direction, &grib_accessor_class_change_scanning_direction +check_internal_version, &grib_accessor_class_check_internal_version +closest_date, &grib_accessor_class_closest_date +codeflag, &grib_accessor_class_codeflag +codetable, &grib_accessor_class_codetable +codetable_title, &grib_accessor_class_codetable_title +codetable_units, &grib_accessor_class_codetable_units +concept, &grib_accessor_class_concept +constant, &grib_accessor_class_constant +count_file, &grib_accessor_class_count_file +count_missing, &grib_accessor_class_count_missing +count_total, &grib_accessor_class_count_total +data_2order_packing, &grib_accessor_class_data_2order_packing +data_apply_bitmap, &grib_accessor_class_data_apply_bitmap +data_apply_boustrophedonic, &grib_accessor_class_data_apply_boustrophedonic +data_apply_boustrophedonic_bitmap, &grib_accessor_class_data_apply_boustrophedonic_bitmap +data_apply_gdsnotpresent, &grib_accessor_class_data_apply_gdsnotpresent +data_ccsds_packing, &grib_accessor_class_data_ccsds_packing +data_complex_packing, &grib_accessor_class_data_complex_packing +data_dummy_field, &grib_accessor_class_data_dummy_field +data_g1complex_packing, &grib_accessor_class_data_g1complex_packing +data_g1second_order_constant_width_packing, &grib_accessor_class_data_g1second_order_constant_width_packing +data_g1second_order_general_extended_packing, &grib_accessor_class_data_g1second_order_general_extended_packing +data_g1second_order_general_packing, &grib_accessor_class_data_g1second_order_general_packing +data_g1second_order_row_by_row_packing, &grib_accessor_class_data_g1second_order_row_by_row_packing +data_g1secondary_bitmap, &grib_accessor_class_data_g1secondary_bitmap +data_g1shsimple_packing, &grib_accessor_class_data_g1shsimple_packing +data_g1simple_packing, &grib_accessor_class_data_g1simple_packing +data_g22order_packing, &grib_accessor_class_data_g22order_packing +data_g2bifourier_packing, &grib_accessor_class_data_g2bifourier_packing +data_g2complex_packing, &grib_accessor_class_data_g2complex_packing +data_g2secondary_bitmap, &grib_accessor_class_data_g2secondary_bitmap +data_g2shsimple_packing, &grib_accessor_class_data_g2shsimple_packing +data_g2simple_packing, &grib_accessor_class_data_g2simple_packing +data_g2simple_packing_with_preprocessing, &grib_accessor_class_data_g2simple_packing_with_preprocessing +data_jpeg2000_packing, &grib_accessor_class_data_jpeg2000_packing +data_png_packing, &grib_accessor_class_data_png_packing +data_raw_packing, &grib_accessor_class_data_raw_packing +data_run_length_packing, &grib_accessor_class_data_run_length_packing +data_secondary_bitmap, &grib_accessor_class_data_secondary_bitmap +data_sh_packed, &grib_accessor_class_data_sh_packed +data_sh_unpacked, &grib_accessor_class_data_sh_unpacked +data_shsimple_packing, &grib_accessor_class_data_shsimple_packing +data_simple_packing, &grib_accessor_class_data_simple_packing +decimal_precision, &grib_accessor_class_decimal_precision +dictionary, &grib_accessor_class_dictionary +dirty, &grib_accessor_class_dirty +divdouble, &grib_accessor_class_divdouble +double, &grib_accessor_class_double +element, &grib_accessor_class_element +evaluate, &grib_accessor_class_evaluate +expanded_descriptors, &grib_accessor_class_expanded_descriptors +forward, &grib_accessor_class_forward +from_scale_factor_scaled_value, &grib_accessor_class_from_scale_factor_scaled_value +g1_half_byte_codeflag, &grib_accessor_class_g1_half_byte_codeflag +g1_message_length, &grib_accessor_class_g1_message_length +g1_section4_length, &grib_accessor_class_g1_section4_length +g1area, &grib_accessor_class_g1area +g1bitmap, &grib_accessor_class_g1bitmap +g1date, &grib_accessor_class_g1date +g1day_of_the_year_date, &grib_accessor_class_g1day_of_the_year_date +g1end_of_interval_monthly, &grib_accessor_class_g1end_of_interval_monthly +g1fcperiod, &grib_accessor_class_g1fcperiod +g1forecastmonth, &grib_accessor_class_g1forecastmonth +g1monthlydate, &grib_accessor_class_g1monthlydate +g1number_of_coded_values_sh_complex, &grib_accessor_class_g1number_of_coded_values_sh_complex +g1number_of_coded_values_sh_simple, &grib_accessor_class_g1number_of_coded_values_sh_simple +g1step_range, &grib_accessor_class_g1step_range +g1verificationdate, &grib_accessor_class_g1verificationdate +g2_aerosol, &grib_accessor_class_g2_aerosol +g2_chemical, &grib_accessor_class_g2_chemical +g2_eps, &grib_accessor_class_g2_eps +g2_mars_labeling, &grib_accessor_class_g2_mars_labeling +g2bitmap, &grib_accessor_class_g2bitmap +g2bitmap_present, &grib_accessor_class_g2bitmap_present +g2date, &grib_accessor_class_g2date +g2end_step, &grib_accessor_class_g2end_step +g2grid, &grib_accessor_class_g2grid +g2latlon, &grib_accessor_class_g2latlon +g2level, &grib_accessor_class_g2level +g2lon, &grib_accessor_class_g2lon +g2step_range, &grib_accessor_class_g2step_range +gaussian_grid_name, &grib_accessor_class_gaussian_grid_name +gds_is_present, &grib_accessor_class_gds_is_present +gds_not_present_bitmap, &grib_accessor_class_gds_not_present_bitmap +gen, &grib_accessor_class_gen +getenv, &grib_accessor_class_getenv +global_gaussian, &grib_accessor_class_global_gaussian +group, &grib_accessor_class_group +gts_header, &grib_accessor_class_gts_header +hash_array, &grib_accessor_class_hash_array +headers_only, &grib_accessor_class_headers_only +ibmfloat, &grib_accessor_class_ibmfloat +ieeefloat, &grib_accessor_class_ieeefloat +ifs_param, &grib_accessor_class_ifs_param +int16, &grib_accessor_class_int16 +int16_little_endian, &grib_accessor_class_int16_little_endian +int32, &grib_accessor_class_int32 +int32_little_endian, &grib_accessor_class_int32_little_endian +int64, &grib_accessor_class_int64 +int64_little_endian, &grib_accessor_class_int64_little_endian +int8, &grib_accessor_class_int8 +iterator, &grib_accessor_class_iterator +julian_date, &grib_accessor_class_julian_date +julian_day, &grib_accessor_class_julian_day +ksec1expver, &grib_accessor_class_ksec1expver +label, &grib_accessor_class_label +laplacian, &grib_accessor_class_laplacian +latitudes, &grib_accessor_class_latitudes +latlon_increment, &grib_accessor_class_latlon_increment +latlonvalues, &grib_accessor_class_latlonvalues +library_version, &grib_accessor_class_library_version +local_definition, &grib_accessor_class_local_definition +long, &grib_accessor_class_long +long_vector, &grib_accessor_class_long_vector +longitudes, &grib_accessor_class_longitudes +lookup, &grib_accessor_class_lookup +mars_param, &grib_accessor_class_mars_param +mars_step, &grib_accessor_class_mars_step +md5, &grib_accessor_class_md5 +message, &grib_accessor_class_message +message_copy, &grib_accessor_class_message_copy +missing, &grib_accessor_class_missing +nearest, &grib_accessor_class_nearest +non_alpha, &grib_accessor_class_non_alpha +number_of_coded_values, &grib_accessor_class_number_of_coded_values +number_of_points, &grib_accessor_class_number_of_points +number_of_points_gaussian, &grib_accessor_class_number_of_points_gaussian +number_of_values, &grib_accessor_class_number_of_values +number_of_values_data_raw_packing, &grib_accessor_class_number_of_values_data_raw_packing +octahedral_gaussian, &grib_accessor_class_octahedral_gaussian +octet_number, &grib_accessor_class_octet_number +offset_file, &grib_accessor_class_offset_file +offset_values, &grib_accessor_class_offset_values +pack_bufr_values, &grib_accessor_class_pack_bufr_values +pad, &grib_accessor_class_pad +padding, &grib_accessor_class_padding +padto, &grib_accessor_class_padto +padtoeven, &grib_accessor_class_padtoeven +padtomultiple, &grib_accessor_class_padtomultiple +position, &grib_accessor_class_position +proj_string, &grib_accessor_class_proj_string +raw, &grib_accessor_class_raw +rdbtime_guess_date, &grib_accessor_class_rdbtime_guess_date +reference_value_error, &grib_accessor_class_reference_value_error +round, &grib_accessor_class_round +scale, &grib_accessor_class_scale +scale_values, &grib_accessor_class_scale_values +second_order_bits_per_value, &grib_accessor_class_second_order_bits_per_value +section, &grib_accessor_class_section +section_length, &grib_accessor_class_section_length +section_padding, &grib_accessor_class_section_padding +section_pointer, &grib_accessor_class_section_pointer +select_step_template, &grib_accessor_class_select_step_template +sexagesimal2decimal, &grib_accessor_class_sexagesimal2decimal +signed, &grib_accessor_class_signed +signed_bits, &grib_accessor_class_signed_bits +simple_packing_error, &grib_accessor_class_simple_packing_error +size, &grib_accessor_class_size +smart_table, &grib_accessor_class_smart_table +smart_table_column, &grib_accessor_class_smart_table_column +spd, &grib_accessor_class_spd +spectral_truncation, &grib_accessor_class_spectral_truncation +sprintf, &grib_accessor_class_sprintf +statistics, &grib_accessor_class_statistics +statistics_spectral, &grib_accessor_class_statistics_spectral +step_human_readable, &grib_accessor_class_step_human_readable +step_in_units, &grib_accessor_class_step_in_units +sum, &grib_accessor_class_sum +suppressed, &grib_accessor_class_suppressed +time, &grib_accessor_class_time +times, &grib_accessor_class_times +to_double, &grib_accessor_class_to_double +to_integer, &grib_accessor_class_to_integer +to_string, &grib_accessor_class_to_string +transient, &grib_accessor_class_transient +transient_darray, &grib_accessor_class_transient_darray +trim, &grib_accessor_class_trim +uint16, &grib_accessor_class_uint16 +uint16_little_endian, &grib_accessor_class_uint16_little_endian +uint32, &grib_accessor_class_uint32 +uint32_little_endian, &grib_accessor_class_uint32_little_endian +uint64, &grib_accessor_class_uint64 +uint64_little_endian, &grib_accessor_class_uint64_little_endian +uint8, &grib_accessor_class_uint8 +unexpanded_descriptors, &grib_accessor_class_unexpanded_descriptors +unpack_bufr_values, &grib_accessor_class_unpack_bufr_values +unsigned, &grib_accessor_class_unsigned +unsigned_bits, &grib_accessor_class_unsigned_bits +validity_date, &grib_accessor_class_validity_date +validity_time, &grib_accessor_class_validity_time +values, &grib_accessor_class_values +variable, &grib_accessor_class_variable +vector, &grib_accessor_class_vector +when, &grib_accessor_class_when diff --git a/src/action_class_gen.cc b/src/action_class_gen.cc index 64348a428..0eec6fdd5 100644 --- a/src/action_class_gen.cc +++ b/src/action_class_gen.cc @@ -127,11 +127,7 @@ static void dump(grib_action* act, FILE* f, int lvl) grib_context_print(act->context, f, "%s[%d] %s \n", act->op, a->len, act->name); } -// #define F(x) \ -// if (flg & x) { \ -// fprintf(f, "%s=>1,", #x); \ -// flg &= !x; \ -// } +// #define F(x) if (flg & x) { fprintf(f, "%s=>1,", #x); flg &= !x; } // static int count = 0; // static void xref(grib_action* act, FILE* f, const char* path) // { diff --git a/src/grib_accessor_class_apply_operators.cc b/src/deprecated/grib_accessor_class_apply_operators.cc similarity index 99% rename from src/grib_accessor_class_apply_operators.cc rename to src/deprecated/grib_accessor_class_apply_operators.cc index 57bfb3bf2..0b372ac93 100644 --- a/src/grib_accessor_class_apply_operators.cc +++ b/src/deprecated/grib_accessor_class_apply_operators.cc @@ -390,7 +390,7 @@ static int apply_operators(grib_accessor* a) self->types = (char**)grib_context_malloc_clear(c, sizeof(char*) * sizeAO); self->names = (char**)grib_context_malloc_clear(c, sizeof(char*) * sizeAO); self->units = (char**)grib_context_malloc_clear(c, sizeof(char*) * sizeAO); - +Assert(0); j = 0; ielement = 0; iassociatedInfoNumber = 0; diff --git a/src/eccodes_prototypes.h b/src/eccodes_prototypes.h index 946343664..db932912d 100644 --- a/src/eccodes_prototypes.h +++ b/src/eccodes_prototypes.h @@ -319,9 +319,6 @@ bufr_descriptor* accessor_bufr_elements_table_get_descriptor(grib_accessor* a, i /* grib_accessor_class_unpack_bufr_values.cc*/ -/* grib_accessor_class_apply_operators.cc*/ -size_t compute_size_AO(const long* descriptors, size_t numberOfDescriptors); - /* grib_accessor_class_non_alpha.cc*/ /* grib_accessor_class_g1bitmap.cc*/ diff --git a/src/grib_accessor_class.h b/src/grib_accessor_class.h index a86c2a71d..de7fe7e15 100644 --- a/src/grib_accessor_class.h +++ b/src/grib_accessor_class.h @@ -1,7 +1,6 @@ /* This file is automatically generated by ./make_class.pl, do not edit */ extern grib_accessor_class* grib_accessor_class_abstract_long_vector; extern grib_accessor_class* grib_accessor_class_abstract_vector; -extern grib_accessor_class* grib_accessor_class_apply_operators; extern grib_accessor_class* grib_accessor_class_array; extern grib_accessor_class* grib_accessor_class_ascii; extern grib_accessor_class* grib_accessor_class_assert; diff --git a/src/grib_accessor_classes_hash.cc b/src/grib_accessor_classes_hash.cc index e4a8483d2..5586b028d 100644 --- a/src/grib_accessor_classes_hash.cc +++ b/src/grib_accessor_classes_hash.cc @@ -37,7 +37,7 @@ #line 6 "accessor_class_list.gperf" struct accessor_class_hash { char *name; grib_accessor_class **cclass;}; -#define TOTAL_KEYWORDS 221 +#define TOTAL_KEYWORDS 220 #define MIN_WORD_LENGTH 1 #define MAX_WORD_LENGTH 44 #define MIN_HASH_VALUE 1 @@ -61,14 +61,14 @@ grib_accessor_classes_get_id (const char *str, size_t len) 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 0, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 0, 196, - 41, 6, 25, 832, 12, 832, 0, 832, 832, 832, + 41, 0, 25, 832, 12, 832, 4, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 1, 832, 7, 89, 154, 0, 0, 200, 14, 198, 23, 2, 0, 112, 279, 0, 48, 39, 832, 173, 6, 3, 76, 205, 0, - 2, 23, 832, 832, 832, 832, 832, 832, 832, 832, + 2, 4, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, @@ -118,557 +118,554 @@ static const struct accessor_class_hash classes[] = #line 9 "accessor_class_list.gperf" {" "}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 158 "accessor_class_list.gperf" +#line 157 "accessor_class_list.gperf" {"nearest", &grib_accessor_class_nearest}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 120 "accessor_class_list.gperf" +#line 119 "accessor_class_list.gperf" {"gen", &grib_accessor_class_gen}, {""}, {""}, -#line 121 "accessor_class_list.gperf" +#line 120 "accessor_class_list.gperf" {"getenv", &grib_accessor_class_getenv}, {""}, -#line 86 "accessor_class_list.gperf" +#line 85 "accessor_class_list.gperf" {"expanded_descriptors", &grib_accessor_class_expanded_descriptors}, {""}, {""}, {""}, {""}, -#line 136 "accessor_class_list.gperf" +#line 135 "accessor_class_list.gperf" {"int8", &grib_accessor_class_int8}, {""}, -#line 74 "accessor_class_list.gperf" +#line 73 "accessor_class_list.gperf" {"data_secondary_bitmap", &grib_accessor_class_data_secondary_bitmap}, -#line 205 "accessor_class_list.gperf" +#line 204 "accessor_class_list.gperf" {"time", &grib_accessor_class_time}, -#line 71 "accessor_class_list.gperf" +#line 70 "accessor_class_list.gperf" {"data_png_packing", &grib_accessor_class_data_png_packing}, - {""}, -#line 193 "accessor_class_list.gperf" +#line 80 "accessor_class_list.gperf" + {"dirty", &grib_accessor_class_dirty}, +#line 192 "accessor_class_list.gperf" {"size", &grib_accessor_class_size}, -#line 183 "accessor_class_list.gperf" +#line 182 "accessor_class_list.gperf" {"second_order_bits_per_value", &grib_accessor_class_second_order_bits_per_value}, -#line 190 "accessor_class_list.gperf" +#line 189 "accessor_class_list.gperf" {"signed", &grib_accessor_class_signed}, -#line 184 "accessor_class_list.gperf" +#line 183 "accessor_class_list.gperf" {"section", &grib_accessor_class_section}, -#line 206 "accessor_class_list.gperf" +#line 205 "accessor_class_list.gperf" {"times", &grib_accessor_class_times}, -#line 72 "accessor_class_list.gperf" +#line 71 "accessor_class_list.gperf" {"data_raw_packing", &grib_accessor_class_data_raw_packing}, -#line 119 "accessor_class_list.gperf" +#line 118 "accessor_class_list.gperf" {"gds_not_present_bitmap", &grib_accessor_class_gds_not_present_bitmap}, -#line 130 "accessor_class_list.gperf" +#line 129 "accessor_class_list.gperf" {"int16", &grib_accessor_class_int16}, -#line 14 "accessor_class_list.gperf" +#line 13 "accessor_class_list.gperf" {"ascii", &grib_accessor_class_ascii}, {""}, -#line 185 "accessor_class_list.gperf" +#line 184 "accessor_class_list.gperf" {"section_length", &grib_accessor_class_section_length}, -#line 186 "accessor_class_list.gperf" +#line 185 "accessor_class_list.gperf" {"section_padding", &grib_accessor_class_section_padding}, -#line 199 "accessor_class_list.gperf" +#line 198 "accessor_class_list.gperf" {"statistics", &grib_accessor_class_statistics}, -#line 202 "accessor_class_list.gperf" +#line 201 "accessor_class_list.gperf" {"step_in_units", &grib_accessor_class_step_in_units}, -#line 191 "accessor_class_list.gperf" +#line 190 "accessor_class_list.gperf" {"signed_bits", &grib_accessor_class_signed_bits}, -#line 196 "accessor_class_list.gperf" +#line 195 "accessor_class_list.gperf" {"spd", &grib_accessor_class_spd}, -#line 170 "accessor_class_list.gperf" +#line 169 "accessor_class_list.gperf" {"pad", &grib_accessor_class_pad}, -#line 78 "accessor_class_list.gperf" +#line 77 "accessor_class_list.gperf" {"data_simple_packing", &grib_accessor_class_data_simple_packing}, -#line 81 "accessor_class_list.gperf" - {"dirty", &grib_accessor_class_dirty}, - {""}, -#line 134 "accessor_class_list.gperf" + {""}, {""}, +#line 133 "accessor_class_list.gperf" {"int64", &grib_accessor_class_int64}, {""}, -#line 200 "accessor_class_list.gperf" +#line 199 "accessor_class_list.gperf" {"statistics_spectral", &grib_accessor_class_statistics_spectral}, -#line 80 "accessor_class_list.gperf" +#line 79 "accessor_class_list.gperf" {"dictionary", &grib_accessor_class_dictionary}, {""}, -#line 118 "accessor_class_list.gperf" +#line 117 "accessor_class_list.gperf" {"gds_is_present", &grib_accessor_class_gds_is_present}, {""}, -#line 115 "accessor_class_list.gperf" +#line 114 "accessor_class_list.gperf" {"g2lon", &grib_accessor_class_g2lon}, -#line 208 "accessor_class_list.gperf" +#line 207 "accessor_class_list.gperf" {"to_integer", &grib_accessor_class_to_integer}, {""}, {""}, -#line 110 "accessor_class_list.gperf" +#line 109 "accessor_class_list.gperf" {"g2date", &grib_accessor_class_g2date}, -#line 48 "accessor_class_list.gperf" +#line 47 "accessor_class_list.gperf" {"data_apply_bitmap", &grib_accessor_class_data_apply_bitmap}, {""}, -#line 187 "accessor_class_list.gperf" +#line 186 "accessor_class_list.gperf" {"section_pointer", &grib_accessor_class_section_pointer}, -#line 70 "accessor_class_list.gperf" +#line 69 "accessor_class_list.gperf" {"data_jpeg2000_packing", &grib_accessor_class_data_jpeg2000_packing}, -#line 132 "accessor_class_list.gperf" +#line 131 "accessor_class_list.gperf" {"int32", &grib_accessor_class_int32}, -#line 63 "accessor_class_list.gperf" +#line 62 "accessor_class_list.gperf" {"data_g22order_packing", &grib_accessor_class_data_g22order_packing}, -#line 111 "accessor_class_list.gperf" +#line 110 "accessor_class_list.gperf" {"g2end_step", &grib_accessor_class_g2end_step}, -#line 51 "accessor_class_list.gperf" +#line 50 "accessor_class_list.gperf" {"data_apply_gdsnotpresent", &grib_accessor_class_data_apply_gdsnotpresent}, -#line 108 "accessor_class_list.gperf" +#line 107 "accessor_class_list.gperf" {"g2bitmap", &grib_accessor_class_g2bitmap}, -#line 49 "accessor_class_list.gperf" +#line 48 "accessor_class_list.gperf" {"data_apply_boustrophedonic", &grib_accessor_class_data_apply_boustrophedonic}, {""}, -#line 53 "accessor_class_list.gperf" +#line 52 "accessor_class_list.gperf" {"data_complex_packing", &grib_accessor_class_data_complex_packing}, {""}, {""}, {""}, {""}, -#line 50 "accessor_class_list.gperf" +#line 49 "accessor_class_list.gperf" {"data_apply_boustrophedonic_bitmap", &grib_accessor_class_data_apply_boustrophedonic_bitmap}, -#line 116 "accessor_class_list.gperf" +#line 115 "accessor_class_list.gperf" {"g2step_range", &grib_accessor_class_g2step_range}, {""}, -#line 112 "accessor_class_list.gperf" +#line 111 "accessor_class_list.gperf" {"g2grid", &grib_accessor_class_g2grid}, -#line 203 "accessor_class_list.gperf" +#line 202 "accessor_class_list.gperf" {"sum", &grib_accessor_class_sum}, -#line 209 "accessor_class_list.gperf" +#line 208 "accessor_class_list.gperf" {"to_string", &grib_accessor_class_to_string}, {""}, {""}, -#line 137 "accessor_class_list.gperf" +#line 136 "accessor_class_list.gperf" {"iterator", &grib_accessor_class_iterator}, -#line 171 "accessor_class_list.gperf" +#line 170 "accessor_class_list.gperf" {"padding", &grib_accessor_class_padding}, {""}, {""}, {""}, {""}, -#line 67 "accessor_class_list.gperf" +#line 66 "accessor_class_list.gperf" {"data_g2shsimple_packing", &grib_accessor_class_data_g2shsimple_packing}, -#line 139 "accessor_class_list.gperf" - {"julian_day", &grib_accessor_class_julian_day}, #line 138 "accessor_class_list.gperf" + {"julian_day", &grib_accessor_class_julian_day}, +#line 137 "accessor_class_list.gperf" {"julian_date", &grib_accessor_class_julian_date}, -#line 222 "accessor_class_list.gperf" +#line 221 "accessor_class_list.gperf" {"unsigned", &grib_accessor_class_unsigned}, -#line 172 "accessor_class_list.gperf" +#line 171 "accessor_class_list.gperf" {"padto", &grib_accessor_class_padto}, -#line 106 "accessor_class_list.gperf" +#line 105 "accessor_class_list.gperf" {"g2_eps", &grib_accessor_class_g2_eps}, -#line 54 "accessor_class_list.gperf" +#line 53 "accessor_class_list.gperf" {"data_dummy_field", &grib_accessor_class_data_dummy_field}, {""}, -#line 159 "accessor_class_list.gperf" +#line 158 "accessor_class_list.gperf" {"non_alpha", &grib_accessor_class_non_alpha}, -#line 219 "accessor_class_list.gperf" - {"uint8", &grib_accessor_class_uint8}, - {""}, -#line 201 "accessor_class_list.gperf" +#line 32 "accessor_class_list.gperf" + {"bytes", &grib_accessor_class_bytes}, +#line 214 "accessor_class_list.gperf" + {"uint32", &grib_accessor_class_uint32}, +#line 200 "accessor_class_list.gperf" {"step_human_readable", &grib_accessor_class_step_human_readable}, -#line 73 "accessor_class_list.gperf" +#line 72 "accessor_class_list.gperf" {"data_run_length_packing", &grib_accessor_class_data_run_length_packing}, - {""}, -#line 68 "accessor_class_list.gperf" +#line 218 "accessor_class_list.gperf" + {"uint8", &grib_accessor_class_uint8}, +#line 67 "accessor_class_list.gperf" {"data_g2simple_packing", &grib_accessor_class_data_g2simple_packing}, -#line 65 "accessor_class_list.gperf" +#line 64 "accessor_class_list.gperf" {"data_g2complex_packing", &grib_accessor_class_data_g2complex_packing}, -#line 215 "accessor_class_list.gperf" - {"uint32", &grib_accessor_class_uint32}, - {""}, -#line 104 "accessor_class_list.gperf" + {""}, {""}, +#line 103 "accessor_class_list.gperf" {"g2_aerosol", &grib_accessor_class_g2_aerosol}, -#line 113 "accessor_class_list.gperf" +#line 112 "accessor_class_list.gperf" {"g2latlon", &grib_accessor_class_g2latlon}, -#line 16 "accessor_class_list.gperf" +#line 15 "accessor_class_list.gperf" {"bit", &grib_accessor_class_bit}, -#line 18 "accessor_class_list.gperf" +#line 17 "accessor_class_list.gperf" {"bits", &grib_accessor_class_bits}, -#line 217 "accessor_class_list.gperf" +#line 216 "accessor_class_list.gperf" {"uint64", &grib_accessor_class_uint64}, {""}, {""}, -#line 66 "accessor_class_list.gperf" +#line 65 "accessor_class_list.gperf" {"data_g2secondary_bitmap", &grib_accessor_class_data_g2secondary_bitmap}, -#line 64 "accessor_class_list.gperf" +#line 63 "accessor_class_list.gperf" {"data_g2bifourier_packing", &grib_accessor_class_data_g2bifourier_packing}, -#line 84 "accessor_class_list.gperf" +#line 83 "accessor_class_list.gperf" {"element", &grib_accessor_class_element}, -#line 33 "accessor_class_list.gperf" - {"bytes", &grib_accessor_class_bytes}, +#line 215 "accessor_class_list.gperf" + {"uint32_little_endian", &grib_accessor_class_uint32_little_endian}, {""}, -#line 17 "accessor_class_list.gperf" +#line 16 "accessor_class_list.gperf" {"bitmap", &grib_accessor_class_bitmap}, -#line 223 "accessor_class_list.gperf" +#line 222 "accessor_class_list.gperf" {"unsigned_bits", &grib_accessor_class_unsigned_bits}, {""}, -#line 69 "accessor_class_list.gperf" +#line 68 "accessor_class_list.gperf" {"data_g2simple_packing_with_preprocessing", &grib_accessor_class_data_g2simple_packing_with_preprocessing}, -#line 216 "accessor_class_list.gperf" - {"uint32_little_endian", &grib_accessor_class_uint32_little_endian}, - {""}, -#line 143 "accessor_class_list.gperf" + {""}, {""}, +#line 142 "accessor_class_list.gperf" {"latitudes", &grib_accessor_class_latitudes}, -#line 161 "accessor_class_list.gperf" +#line 160 "accessor_class_list.gperf" {"number_of_points", &grib_accessor_class_number_of_points}, {""}, -#line 19 "accessor_class_list.gperf" +#line 18 "accessor_class_list.gperf" {"bits_per_value", &grib_accessor_class_bits_per_value}, -#line 218 "accessor_class_list.gperf" +#line 217 "accessor_class_list.gperf" {"uint64_little_endian", &grib_accessor_class_uint64_little_endian}, {""}, {""}, -#line 220 "accessor_class_list.gperf" +#line 219 "accessor_class_list.gperf" {"unexpanded_descriptors", &grib_accessor_class_unexpanded_descriptors}, -#line 12 "accessor_class_list.gperf" - {"apply_operators", &grib_accessor_class_apply_operators}, -#line 21 "accessor_class_list.gperf" + {""}, +#line 20 "accessor_class_list.gperf" {"box", &grib_accessor_class_box}, -#line 162 "accessor_class_list.gperf" +#line 161 "accessor_class_list.gperf" {"number_of_points_gaussian", &grib_accessor_class_number_of_points_gaussian}, {""}, {""}, {""}, {""}, -#line 175 "accessor_class_list.gperf" +#line 174 "accessor_class_list.gperf" {"position", &grib_accessor_class_position}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 122 "accessor_class_list.gperf" +#line 121 "accessor_class_list.gperf" {"global_gaussian", &grib_accessor_class_global_gaussian}, {""}, -#line 189 "accessor_class_list.gperf" +#line 188 "accessor_class_list.gperf" {"sexagesimal2decimal", &grib_accessor_class_sexagesimal2decimal}, -#line 142 "accessor_class_list.gperf" +#line 141 "accessor_class_list.gperf" {"laplacian", &grib_accessor_class_laplacian}, {""}, {""}, {""}, -#line 192 "accessor_class_list.gperf" +#line 191 "accessor_class_list.gperf" {"simple_packing_error", &grib_accessor_class_simple_packing_error}, {""}, -#line 148 "accessor_class_list.gperf" +#line 147 "accessor_class_list.gperf" {"long", &grib_accessor_class_long}, -#line 181 "accessor_class_list.gperf" +#line 180 "accessor_class_list.gperf" {"scale", &grib_accessor_class_scale}, -#line 83 "accessor_class_list.gperf" +#line 82 "accessor_class_list.gperf" {"double", &grib_accessor_class_double}, {""}, {""}, -#line 82 "accessor_class_list.gperf" +#line 81 "accessor_class_list.gperf" {"divdouble", &grib_accessor_class_divdouble}, {""}, {""}, {""}, -#line 107 "accessor_class_list.gperf" +#line 106 "accessor_class_list.gperf" {"g2_mars_labeling", &grib_accessor_class_g2_mars_labeling}, {""}, {""}, -#line 22 "accessor_class_list.gperf" +#line 21 "accessor_class_list.gperf" {"budgdate", &grib_accessor_class_budgdate}, {""}, {""}, {""}, -#line 212 "accessor_class_list.gperf" +#line 211 "accessor_class_list.gperf" {"trim", &grib_accessor_class_trim}, -#line 52 "accessor_class_list.gperf" +#line 51 "accessor_class_list.gperf" {"data_ccsds_packing", &grib_accessor_class_data_ccsds_packing}, {""}, -#line 177 "accessor_class_list.gperf" +#line 176 "accessor_class_list.gperf" {"raw", &grib_accessor_class_raw}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 24 "accessor_class_list.gperf" + {""}, {""}, {""}, {""}, {""}, +#line 12 "accessor_class_list.gperf" + {"array", &grib_accessor_class_array}, +#line 23 "accessor_class_list.gperf" {"bufr_data_element", &grib_accessor_class_bufr_data_element}, -#line 210 "accessor_class_list.gperf" +#line 209 "accessor_class_list.gperf" {"transient", &grib_accessor_class_transient}, -#line 15 "accessor_class_list.gperf" +#line 14 "accessor_class_list.gperf" {"assert", &grib_accessor_class_assert}, {""}, {""}, -#line 23 "accessor_class_list.gperf" +#line 22 "accessor_class_list.gperf" {"bufr_data_array", &grib_accessor_class_bufr_data_array}, {""}, -#line 207 "accessor_class_list.gperf" +#line 206 "accessor_class_list.gperf" {"to_double", &grib_accessor_class_to_double}, -#line 211 "accessor_class_list.gperf" +#line 210 "accessor_class_list.gperf" {"transient_darray", &grib_accessor_class_transient_darray}, {""}, -#line 32 "accessor_class_list.gperf" - {"bufrdc_expanded_descriptors", &grib_accessor_class_bufrdc_expanded_descriptors}, #line 31 "accessor_class_list.gperf" + {"bufrdc_expanded_descriptors", &grib_accessor_class_bufrdc_expanded_descriptors}, +#line 30 "accessor_class_list.gperf" {"bufr_string_values", &grib_accessor_class_bufr_string_values}, -#line 229 "accessor_class_list.gperf" +#line 228 "accessor_class_list.gperf" {"when", &grib_accessor_class_when}, {""}, {""}, -#line 20 "accessor_class_list.gperf" +#line 19 "accessor_class_list.gperf" {"blob", &grib_accessor_class_blob}, - {""}, {""}, -#line 13 "accessor_class_list.gperf" - {"array", &grib_accessor_class_array}, -#line 30 "accessor_class_list.gperf" + {""}, {""}, {""}, +#line 29 "accessor_class_list.gperf" {"bufr_simple_thinning", &grib_accessor_class_bufr_simple_thinning}, {""}, {""}, -#line 42 "accessor_class_list.gperf" +#line 41 "accessor_class_list.gperf" {"concept", &grib_accessor_class_concept}, -#line 43 "accessor_class_list.gperf" +#line 42 "accessor_class_list.gperf" {"constant", &grib_accessor_class_constant}, -#line 178 "accessor_class_list.gperf" +#line 177 "accessor_class_list.gperf" {"rdbtime_guess_date", &grib_accessor_class_rdbtime_guess_date}, {""}, -#line 92 "accessor_class_list.gperf" +#line 91 "accessor_class_list.gperf" {"g1area", &grib_accessor_class_g1area}, -#line 166 "accessor_class_list.gperf" +#line 165 "accessor_class_list.gperf" {"octet_number", &grib_accessor_class_octet_number}, -#line 226 "accessor_class_list.gperf" +#line 225 "accessor_class_list.gperf" {"values", &grib_accessor_class_values}, -#line 94 "accessor_class_list.gperf" +#line 93 "accessor_class_list.gperf" {"g1date", &grib_accessor_class_g1date}, -#line 188 "accessor_class_list.gperf" +#line 187 "accessor_class_list.gperf" {"select_step_template", &grib_accessor_class_select_step_template}, {""}, -#line 174 "accessor_class_list.gperf" +#line 173 "accessor_class_list.gperf" {"padtomultiple", &grib_accessor_class_padtomultiple}, {""}, {""}, -#line 117 "accessor_class_list.gperf" +#line 116 "accessor_class_list.gperf" {"gaussian_grid_name", &grib_accessor_class_gaussian_grid_name}, -#line 180 "accessor_class_list.gperf" +#line 179 "accessor_class_list.gperf" {"round", &grib_accessor_class_round}, {""}, -#line 93 "accessor_class_list.gperf" +#line 92 "accessor_class_list.gperf" {"g1bitmap", &grib_accessor_class_g1bitmap}, {""}, {""}, -#line 123 "accessor_class_list.gperf" +#line 122 "accessor_class_list.gperf" {"group", &grib_accessor_class_group}, -#line 124 "accessor_class_list.gperf" +#line 123 "accessor_class_list.gperf" {"gts_header", &grib_accessor_class_gts_header}, {""}, -#line 90 "accessor_class_list.gperf" +#line 89 "accessor_class_list.gperf" {"g1_message_length", &grib_accessor_class_g1_message_length}, -#line 224 "accessor_class_list.gperf" +#line 223 "accessor_class_list.gperf" {"validity_date", &grib_accessor_class_validity_date}, -#line 141 "accessor_class_list.gperf" +#line 140 "accessor_class_list.gperf" {"label", &grib_accessor_class_label}, -#line 102 "accessor_class_list.gperf" +#line 101 "accessor_class_list.gperf" {"g1step_range", &grib_accessor_class_g1step_range}, {""}, -#line 127 "accessor_class_list.gperf" +#line 126 "accessor_class_list.gperf" {"ibmfloat", &grib_accessor_class_ibmfloat}, {""}, -#line 176 "accessor_class_list.gperf" +#line 175 "accessor_class_list.gperf" {"proj_string", &grib_accessor_class_proj_string}, -#line 151 "accessor_class_list.gperf" +#line 150 "accessor_class_list.gperf" {"lookup", &grib_accessor_class_lookup}, {""}, {""}, {""}, {""}, -#line 197 "accessor_class_list.gperf" +#line 196 "accessor_class_list.gperf" {"spectral_truncation", &grib_accessor_class_spectral_truncation}, -#line 47 "accessor_class_list.gperf" +#line 46 "accessor_class_list.gperf" {"data_2order_packing", &grib_accessor_class_data_2order_packing}, {""}, -#line 61 "accessor_class_list.gperf" +#line 60 "accessor_class_list.gperf" {"data_g1shsimple_packing", &grib_accessor_class_data_g1shsimple_packing}, -#line 225 "accessor_class_list.gperf" +#line 224 "accessor_class_list.gperf" {"validity_time", &grib_accessor_class_validity_time}, -#line 198 "accessor_class_list.gperf" +#line 197 "accessor_class_list.gperf" {"sprintf", &grib_accessor_class_sprintf}, -#line 160 "accessor_class_list.gperf" +#line 159 "accessor_class_list.gperf" {"number_of_coded_values", &grib_accessor_class_number_of_coded_values}, -#line 109 "accessor_class_list.gperf" +#line 108 "accessor_class_list.gperf" {"g2bitmap_present", &grib_accessor_class_g2bitmap_present}, {""}, -#line 91 "accessor_class_list.gperf" +#line 90 "accessor_class_list.gperf" {"g1_section4_length", &grib_accessor_class_g1_section4_length}, {""}, {""}, -#line 228 "accessor_class_list.gperf" +#line 227 "accessor_class_list.gperf" {"vector", &grib_accessor_class_vector}, -#line 167 "accessor_class_list.gperf" +#line 166 "accessor_class_list.gperf" {"offset_file", &grib_accessor_class_offset_file}, -#line 76 "accessor_class_list.gperf" +#line 75 "accessor_class_list.gperf" {"data_sh_unpacked", &grib_accessor_class_data_sh_unpacked}, -#line 87 "accessor_class_list.gperf" +#line 86 "accessor_class_list.gperf" {"forward", &grib_accessor_class_forward}, {""}, -#line 62 "accessor_class_list.gperf" +#line 61 "accessor_class_list.gperf" {"data_g1simple_packing", &grib_accessor_class_data_g1simple_packing}, -#line 55 "accessor_class_list.gperf" +#line 54 "accessor_class_list.gperf" {"data_g1complex_packing", &grib_accessor_class_data_g1complex_packing}, -#line 77 "accessor_class_list.gperf" +#line 76 "accessor_class_list.gperf" {"data_shsimple_packing", &grib_accessor_class_data_shsimple_packing}, {""}, {""}, -#line 150 "accessor_class_list.gperf" +#line 149 "accessor_class_list.gperf" {"longitudes", &grib_accessor_class_longitudes}, {""}, -#line 204 "accessor_class_list.gperf" +#line 203 "accessor_class_list.gperf" {"suppressed", &grib_accessor_class_suppressed}, {""}, {""}, {""}, -#line 60 "accessor_class_list.gperf" +#line 59 "accessor_class_list.gperf" {"data_g1secondary_bitmap", &grib_accessor_class_data_g1secondary_bitmap}, {""}, {""}, -#line 131 "accessor_class_list.gperf" +#line 130 "accessor_class_list.gperf" {"int16_little_endian", &grib_accessor_class_int16_little_endian}, {""}, -#line 128 "accessor_class_list.gperf" +#line 127 "accessor_class_list.gperf" {"ieeefloat", &grib_accessor_class_ieeefloat}, {""}, -#line 154 "accessor_class_list.gperf" +#line 153 "accessor_class_list.gperf" {"md5", &grib_accessor_class_md5}, -#line 96 "accessor_class_list.gperf" +#line 95 "accessor_class_list.gperf" {"g1end_of_interval_monthly", &grib_accessor_class_g1end_of_interval_monthly}, -#line 37 "accessor_class_list.gperf" +#line 36 "accessor_class_list.gperf" {"closest_date", &grib_accessor_class_closest_date}, {""}, {""}, -#line 58 "accessor_class_list.gperf" +#line 57 "accessor_class_list.gperf" {"data_g1second_order_general_packing", &grib_accessor_class_data_g1second_order_general_packing}, -#line 147 "accessor_class_list.gperf" +#line 146 "accessor_class_list.gperf" {"local_definition", &grib_accessor_class_local_definition}, {""}, -#line 59 "accessor_class_list.gperf" +#line 58 "accessor_class_list.gperf" {"data_g1second_order_row_by_row_packing", &grib_accessor_class_data_g1second_order_row_by_row_packing}, -#line 135 "accessor_class_list.gperf" +#line 134 "accessor_class_list.gperf" {"int64_little_endian", &grib_accessor_class_int64_little_endian}, -#line 85 "accessor_class_list.gperf" +#line 84 "accessor_class_list.gperf" {"evaluate", &grib_accessor_class_evaluate}, -#line 155 "accessor_class_list.gperf" +#line 154 "accessor_class_list.gperf" {"message", &grib_accessor_class_message}, -#line 56 "accessor_class_list.gperf" +#line 55 "accessor_class_list.gperf" {"data_g1second_order_constant_width_packing", &grib_accessor_class_data_g1second_order_constant_width_packing}, {""}, -#line 57 "accessor_class_list.gperf" +#line 56 "accessor_class_list.gperf" {"data_g1second_order_general_extended_packing", &grib_accessor_class_data_g1second_order_general_extended_packing}, -#line 25 "accessor_class_list.gperf" +#line 24 "accessor_class_list.gperf" {"bufr_elements_table", &grib_accessor_class_bufr_elements_table}, -#line 163 "accessor_class_list.gperf" +#line 162 "accessor_class_list.gperf" {"number_of_values", &grib_accessor_class_number_of_values}, -#line 153 "accessor_class_list.gperf" +#line 152 "accessor_class_list.gperf" {"mars_step", &grib_accessor_class_mars_step}, {""}, -#line 213 "accessor_class_list.gperf" +#line 212 "accessor_class_list.gperf" {"uint16", &grib_accessor_class_uint16}, -#line 194 "accessor_class_list.gperf" +#line 193 "accessor_class_list.gperf" {"smart_table", &grib_accessor_class_smart_table}, -#line 39 "accessor_class_list.gperf" +#line 38 "accessor_class_list.gperf" {"codetable", &grib_accessor_class_codetable}, -#line 152 "accessor_class_list.gperf" +#line 151 "accessor_class_list.gperf" {"mars_param", &grib_accessor_class_mars_param}, {""}, {""}, -#line 133 "accessor_class_list.gperf" +#line 132 "accessor_class_list.gperf" {"int32_little_endian", &grib_accessor_class_int32_little_endian}, -#line 173 "accessor_class_list.gperf" +#line 172 "accessor_class_list.gperf" {"padtoeven", &grib_accessor_class_padtoeven}, -#line 195 "accessor_class_list.gperf" +#line 194 "accessor_class_list.gperf" {"smart_table_column", &grib_accessor_class_smart_table_column}, {""}, {""}, -#line 40 "accessor_class_list.gperf" +#line 39 "accessor_class_list.gperf" {"codetable_title", &grib_accessor_class_codetable_title}, {""}, {""}, -#line 164 "accessor_class_list.gperf" +#line 163 "accessor_class_list.gperf" {"number_of_values_data_raw_packing", &grib_accessor_class_number_of_values_data_raw_packing}, {""}, {""}, {""}, -#line 214 "accessor_class_list.gperf" +#line 213 "accessor_class_list.gperf" {"uint16_little_endian", &grib_accessor_class_uint16_little_endian}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 126 "accessor_class_list.gperf" +#line 125 "accessor_class_list.gperf" {"headers_only", &grib_accessor_class_headers_only}, {""}, {""}, -#line 46 "accessor_class_list.gperf" +#line 45 "accessor_class_list.gperf" {"count_total", &grib_accessor_class_count_total}, - {""}, {""}, {""}, {""}, {""}, -#line 156 "accessor_class_list.gperf" + {""}, {""}, +#line 145 "accessor_class_list.gperf" + {"library_version", &grib_accessor_class_library_version}, + {""}, {""}, +#line 155 "accessor_class_list.gperf" {"message_copy", &grib_accessor_class_message_copy}, -#line 168 "accessor_class_list.gperf" +#line 167 "accessor_class_list.gperf" {"offset_values", &grib_accessor_class_offset_values}, -#line 227 "accessor_class_list.gperf" +#line 226 "accessor_class_list.gperf" {"variable", &grib_accessor_class_variable}, {""}, {""}, -#line 28 "accessor_class_list.gperf" +#line 27 "accessor_class_list.gperf" {"bufr_extract_subsets", &grib_accessor_class_bufr_extract_subsets}, {""}, -#line 169 "accessor_class_list.gperf" +#line 168 "accessor_class_list.gperf" {"pack_bufr_values", &grib_accessor_class_pack_bufr_values}, -#line 149 "accessor_class_list.gperf" +#line 148 "accessor_class_list.gperf" {"long_vector", &grib_accessor_class_long_vector}, -#line 157 "accessor_class_list.gperf" +#line 156 "accessor_class_list.gperf" {"missing", &grib_accessor_class_missing}, -#line 26 "accessor_class_list.gperf" +#line 25 "accessor_class_list.gperf" {"bufr_extract_area_subsets", &grib_accessor_class_bufr_extract_area_subsets}, {""}, -#line 29 "accessor_class_list.gperf" +#line 28 "accessor_class_list.gperf" {"bufr_group", &grib_accessor_class_bufr_group}, {""}, -#line 27 "accessor_class_list.gperf" +#line 26 "accessor_class_list.gperf" {"bufr_extract_datetime_subsets", &grib_accessor_class_bufr_extract_datetime_subsets}, - {""}, -#line 146 "accessor_class_list.gperf" - {"library_version", &grib_accessor_class_library_version}, - {""}, {""}, {""}, -#line 144 "accessor_class_list.gperf" + {""}, {""}, {""}, {""}, {""}, +#line 143 "accessor_class_list.gperf" {"latlon_increment", &grib_accessor_class_latlon_increment}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 75 "accessor_class_list.gperf" +#line 74 "accessor_class_list.gperf" {"data_sh_packed", &grib_accessor_class_data_sh_packed}, {""}, {""}, -#line 182 "accessor_class_list.gperf" +#line 181 "accessor_class_list.gperf" {"scale_values", &grib_accessor_class_scale_values}, {""}, -#line 114 "accessor_class_list.gperf" +#line 113 "accessor_class_list.gperf" {"g2level", &grib_accessor_class_g2level}, {""}, {""}, {""}, {""}, -#line 145 "accessor_class_list.gperf" +#line 144 "accessor_class_list.gperf" {"latlonvalues", &grib_accessor_class_latlonvalues}, -#line 41 "accessor_class_list.gperf" +#line 40 "accessor_class_list.gperf" {"codetable_units", &grib_accessor_class_codetable_units}, {""}, {""}, -#line 140 "accessor_class_list.gperf" +#line 139 "accessor_class_list.gperf" {"ksec1expver", &grib_accessor_class_ksec1expver}, -#line 125 "accessor_class_list.gperf" +#line 124 "accessor_class_list.gperf" {"hash_array", &grib_accessor_class_hash_array}, {""}, {""}, -#line 35 "accessor_class_list.gperf" +#line 34 "accessor_class_list.gperf" {"change_scanning_direction", &grib_accessor_class_change_scanning_direction}, {""}, {""}, {""}, {""}, {""}, -#line 34 "accessor_class_list.gperf" +#line 33 "accessor_class_list.gperf" {"change_alternative_row_scanning", &grib_accessor_class_change_alternative_row_scanning}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 79 "accessor_class_list.gperf" +#line 78 "accessor_class_list.gperf" {"decimal_precision", &grib_accessor_class_decimal_precision}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 44 "accessor_class_list.gperf" +#line 43 "accessor_class_list.gperf" {"count_file", &grib_accessor_class_count_file}, {""}, -#line 38 "accessor_class_list.gperf" +#line 37 "accessor_class_list.gperf" {"codeflag", &grib_accessor_class_codeflag}, {""}, {""}, -#line 165 "accessor_class_list.gperf" +#line 164 "accessor_class_list.gperf" {"octahedral_gaussian", &grib_accessor_class_octahedral_gaussian}, {""}, -#line 221 "accessor_class_list.gperf" +#line 220 "accessor_class_list.gperf" {"unpack_bufr_values", &grib_accessor_class_unpack_bufr_values}, {""}, {""}, {""}, {""}, {""}, -#line 99 "accessor_class_list.gperf" +#line 98 "accessor_class_list.gperf" {"g1monthlydate", &grib_accessor_class_g1monthlydate}, {""}, {""}, {""}, -#line 97 "accessor_class_list.gperf" +#line 96 "accessor_class_list.gperf" {"g1fcperiod", &grib_accessor_class_g1fcperiod}, {""}, {""}, {""}, {""}, {""}, #line 11 "accessor_class_list.gperf" {"abstract_vector", &grib_accessor_class_abstract_vector}, {""}, {""}, -#line 89 "accessor_class_list.gperf" +#line 88 "accessor_class_list.gperf" {"g1_half_byte_codeflag", &grib_accessor_class_g1_half_byte_codeflag}, {""}, {""}, -#line 129 "accessor_class_list.gperf" +#line 128 "accessor_class_list.gperf" {"ifs_param", &grib_accessor_class_ifs_param}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 94 "accessor_class_list.gperf" + {"g1day_of_the_year_date", &grib_accessor_class_g1day_of_the_year_date}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, #line 10 "accessor_class_list.gperf" {"abstract_long_vector", &grib_accessor_class_abstract_long_vector}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 95 "accessor_class_list.gperf" - {"g1day_of_the_year_date", &grib_accessor_class_g1day_of_the_year_date}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 45 "accessor_class_list.gperf" + {""}, +#line 44 "accessor_class_list.gperf" {"count_missing", &grib_accessor_class_count_missing}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 88 "accessor_class_list.gperf" +#line 87 "accessor_class_list.gperf" {"from_scale_factor_scaled_value", &grib_accessor_class_from_scale_factor_scaled_value}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 36 "accessor_class_list.gperf" +#line 35 "accessor_class_list.gperf" {"check_internal_version", &grib_accessor_class_check_internal_version}, {""}, -#line 179 "accessor_class_list.gperf" +#line 178 "accessor_class_list.gperf" {"reference_value_error", &grib_accessor_class_reference_value_error}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 103 "accessor_class_list.gperf" +#line 102 "accessor_class_list.gperf" {"g1verificationdate", &grib_accessor_class_g1verificationdate}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -676,7 +673,7 @@ static const struct accessor_class_hash classes[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 105 "accessor_class_list.gperf" +#line 104 "accessor_class_list.gperf" {"g2_chemical", &grib_accessor_class_g2_chemical}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -686,9 +683,9 @@ static const struct accessor_class_hash classes[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 101 "accessor_class_list.gperf" - {"g1number_of_coded_values_sh_simple", &grib_accessor_class_g1number_of_coded_values_sh_simple}, #line 100 "accessor_class_list.gperf" + {"g1number_of_coded_values_sh_simple", &grib_accessor_class_g1number_of_coded_values_sh_simple}, +#line 99 "accessor_class_list.gperf" {"g1number_of_coded_values_sh_complex", &grib_accessor_class_g1number_of_coded_values_sh_complex}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -702,7 +699,7 @@ static const struct accessor_class_hash classes[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 98 "accessor_class_list.gperf" +#line 97 "accessor_class_list.gperf" {"g1forecastmonth", &grib_accessor_class_g1forecastmonth} }; diff --git a/src/grib_accessor_factory.h b/src/grib_accessor_factory.h index 5a2a8db43..c090d3977 100644 --- a/src/grib_accessor_factory.h +++ b/src/grib_accessor_factory.h @@ -1,7 +1,6 @@ /* This file is automatically generated by ./make_class.pl, do not edit */ { "abstract_long_vector", &grib_accessor_class_abstract_long_vector, }, { "abstract_vector", &grib_accessor_class_abstract_vector, }, -{ "apply_operators", &grib_accessor_class_apply_operators, }, { "array", &grib_accessor_class_array, }, { "ascii", &grib_accessor_class_ascii, }, { "assert", &grib_accessor_class_assert, }, diff --git a/src/grib_accessor_factory_hash_list b/src/grib_accessor_factory_hash_list index f5b01c828..09addab41 100644 --- a/src/grib_accessor_factory_hash_list +++ b/src/grib_accessor_factory_hash_list @@ -2,7 +2,6 @@ abstract_long_vector, &grib_accessor_class_abstract_long_vector abstract_vector, &grib_accessor_class_abstract_vector -apply_operators, &grib_accessor_class_apply_operators array, &grib_accessor_class_array ascii, &grib_accessor_class_ascii assert, &grib_accessor_class_assert From 7f2d5a19103f02471f31927261d39b750d93809b Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 20 Jun 2023 21:25:36 +0100 Subject: [PATCH 277/378] Remove multi-line comment --- src/functions.cc | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/functions.cc b/src/functions.cc index 9109ecfaf..28ae46cf9 100644 --- a/src/functions.cc +++ b/src/functions.cc @@ -136,10 +136,7 @@ double grib_op_le_d(double a, double b) return a <= b; } -// #define LOOKUP(a) \ -// if (proc == a) { \ -// return "&" #a; \ -// } +// #define LOOKUP(a) if (proc == a) { return "&" #a; } // const char* grib_binop_long_proc_name(const grib_binop_long_proc proc) // { // if (!proc) From e2887044994f2914ca41e55bd4b9ebf907076ac4 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 21 Jun 2023 10:45:16 +0100 Subject: [PATCH 278/378] Dead code removal --- tools/bufr_compare.cc | 2 +- tools/bufr_copy.cc | 9 --------- tools/bufr_set.cc | 17 ++++++++--------- tools/grib_copy.cc | 9 --------- 4 files changed, 9 insertions(+), 28 deletions(-) diff --git a/tools/bufr_compare.cc b/tools/bufr_compare.cc index fd332aa94..57707b13b 100644 --- a/tools/bufr_compare.cc +++ b/tools/bufr_compare.cc @@ -1398,7 +1398,7 @@ static int compare_handles(grib_handle* handle1, grib_handle* handle2, grib_runt if (size1 == size2 && !(memcmp_ret = memcmp(msg1, msg2, size1))) { return 0; } -#if 0 +#if defined(BUFR_COMPARE_BYTES) else { int lcount=count,ii; if (options->current_infile) lcount=options->current_infile->filter_handle_count; diff --git a/tools/bufr_copy.cc b/tools/bufr_copy.cc index 7b91cab1a..af1bc712c 100644 --- a/tools/bufr_copy.cc +++ b/tools/bufr_copy.cc @@ -61,15 +61,6 @@ int grib_tool_before_getopt(grib_runtime_options* options) int grib_tool_init(grib_runtime_options* options) { -#if 0 - if (options->outfile && options->outfile->name) { - options->outfile->file = fopen(options->outfile->name,"w"); - if(!options->outfile->file) { - perror(options->outfile->name); - exit(1); - } - } -#endif /* ECC-657: If user supplied -p to print some keys, turn on verbose */ if (grib_options_on("p:")) { if (grib_options_get_option("p:")) { diff --git a/tools/bufr_set.cc b/tools/bufr_set.cc index 272e78592..38c41dd1b 100644 --- a/tools/bufr_set.cc +++ b/tools/bufr_set.cc @@ -76,15 +76,14 @@ int grib_tool_init(grib_runtime_options* options) exit(1); } -#if 0 - if (options->outfile && options->outfile->name) { - options->outfile->file = fopen(options->outfile->name,"w"); - if(!options->outfile->file) { - perror(options->outfile->name); - exit(1); - } - } -#endif + // if (options->outfile && options->outfile->name) { + // options->outfile->file = fopen(options->outfile->name,"w"); + // if(!options->outfile->file) { + // perror(options->outfile->name); + // exit(1); + // } + // } + return 0; } diff --git a/tools/grib_copy.cc b/tools/grib_copy.cc index c80cdd62c..20823e2a5 100644 --- a/tools/grib_copy.cc +++ b/tools/grib_copy.cc @@ -65,15 +65,6 @@ int grib_tool_before_getopt(grib_runtime_options* options) int grib_tool_init(grib_runtime_options* options) { -#if 0 - if (options->outfile && options->outfile->name) { - options->outfile->file = fopen(options->outfile->name,"w"); - if(!options->outfile->file) { - perror(options->outfile->name); - exit(1); - } - } -#endif /* ECC-657: If user supplied -p to print some keys, turn on verbose */ if (grib_options_on("p:")) { if (grib_options_get_option("p:")) { From 1ebeb6f22cfb824a11ad3ec02ba8e59cc7055fe4 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 21 Jun 2023 11:09:16 +0100 Subject: [PATCH 279/378] Dead code removal: grib_accessor_class_box --- src/CMakeLists.txt | 1 - src/accessor_class_hierarchy.txt | 1 - src/accessor_class_list.gperf | 228 ----- .../grib_accessor_class_box.cc | 0 src/grib_accessor.cc | 12 - src/grib_accessor_class.h | 1 - src/grib_accessor_classes_hash.cc | 866 +++++++++--------- src/grib_accessor_factory.h | 1 - src/grib_accessor_factory_hash_list | 1 - 9 files changed, 425 insertions(+), 686 deletions(-) delete mode 100644 src/accessor_class_list.gperf rename src/{ => deprecated}/grib_accessor_class_box.cc (100%) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index f607360b5..86cd63d5d 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -145,7 +145,6 @@ list( APPEND eccodes_src_files grib_accessor_class_iterator.cc grib_accessor_class_message.cc grib_accessor_class_nearest.cc - grib_accessor_class_box.cc grib_accessor_class_ksec1expver.cc grib_accessor_class_laplacian.cc grib_accessor_class_label.cc diff --git a/src/accessor_class_hierarchy.txt b/src/accessor_class_hierarchy.txt index a85526afc..c65364598 100644 --- a/src/accessor_class_hierarchy.txt +++ b/src/accessor_class_hierarchy.txt @@ -22,7 +22,6 @@ Generated by src/make_accessor_class_hierarchy_dirs.sh |---grib_accessor_class_assert |---grib_accessor_class_bits |---grib_accessor_class_blob - |---grib_accessor_class_box |---grib_accessor_class_bufr_data_array |---grib_accessor_class_bufr_data_element |---grib_accessor_class_bufr_elements_table diff --git a/src/accessor_class_list.gperf b/src/accessor_class_list.gperf deleted file mode 100644 index f4b2f0c78..000000000 --- a/src/accessor_class_list.gperf +++ /dev/null @@ -1,228 +0,0 @@ -%{ -#include "grib_api_internal.h" -#include "grib_accessor_class.h" - -%} -struct accessor_class_hash { char *name; grib_accessor_class **cclass;}; -%% -# This file is automatically generated by ./make_class.pl, do not edit */ - -abstract_long_vector, &grib_accessor_class_abstract_long_vector -abstract_vector, &grib_accessor_class_abstract_vector -array, &grib_accessor_class_array -ascii, &grib_accessor_class_ascii -assert, &grib_accessor_class_assert -bit, &grib_accessor_class_bit -bitmap, &grib_accessor_class_bitmap -bits, &grib_accessor_class_bits -bits_per_value, &grib_accessor_class_bits_per_value -blob, &grib_accessor_class_blob -box, &grib_accessor_class_box -budgdate, &grib_accessor_class_budgdate -bufr_data_array, &grib_accessor_class_bufr_data_array -bufr_data_element, &grib_accessor_class_bufr_data_element -bufr_elements_table, &grib_accessor_class_bufr_elements_table -bufr_extract_area_subsets, &grib_accessor_class_bufr_extract_area_subsets -bufr_extract_datetime_subsets, &grib_accessor_class_bufr_extract_datetime_subsets -bufr_extract_subsets, &grib_accessor_class_bufr_extract_subsets -bufr_group, &grib_accessor_class_bufr_group -bufr_simple_thinning, &grib_accessor_class_bufr_simple_thinning -bufr_string_values, &grib_accessor_class_bufr_string_values -bufrdc_expanded_descriptors, &grib_accessor_class_bufrdc_expanded_descriptors -bytes, &grib_accessor_class_bytes -change_alternative_row_scanning, &grib_accessor_class_change_alternative_row_scanning -change_scanning_direction, &grib_accessor_class_change_scanning_direction -check_internal_version, &grib_accessor_class_check_internal_version -closest_date, &grib_accessor_class_closest_date -codeflag, &grib_accessor_class_codeflag -codetable, &grib_accessor_class_codetable -codetable_title, &grib_accessor_class_codetable_title -codetable_units, &grib_accessor_class_codetable_units -concept, &grib_accessor_class_concept -constant, &grib_accessor_class_constant -count_file, &grib_accessor_class_count_file -count_missing, &grib_accessor_class_count_missing -count_total, &grib_accessor_class_count_total -data_2order_packing, &grib_accessor_class_data_2order_packing -data_apply_bitmap, &grib_accessor_class_data_apply_bitmap -data_apply_boustrophedonic, &grib_accessor_class_data_apply_boustrophedonic -data_apply_boustrophedonic_bitmap, &grib_accessor_class_data_apply_boustrophedonic_bitmap -data_apply_gdsnotpresent, &grib_accessor_class_data_apply_gdsnotpresent -data_ccsds_packing, &grib_accessor_class_data_ccsds_packing -data_complex_packing, &grib_accessor_class_data_complex_packing -data_dummy_field, &grib_accessor_class_data_dummy_field -data_g1complex_packing, &grib_accessor_class_data_g1complex_packing -data_g1second_order_constant_width_packing, &grib_accessor_class_data_g1second_order_constant_width_packing -data_g1second_order_general_extended_packing, &grib_accessor_class_data_g1second_order_general_extended_packing -data_g1second_order_general_packing, &grib_accessor_class_data_g1second_order_general_packing -data_g1second_order_row_by_row_packing, &grib_accessor_class_data_g1second_order_row_by_row_packing -data_g1secondary_bitmap, &grib_accessor_class_data_g1secondary_bitmap -data_g1shsimple_packing, &grib_accessor_class_data_g1shsimple_packing -data_g1simple_packing, &grib_accessor_class_data_g1simple_packing -data_g22order_packing, &grib_accessor_class_data_g22order_packing -data_g2bifourier_packing, &grib_accessor_class_data_g2bifourier_packing -data_g2complex_packing, &grib_accessor_class_data_g2complex_packing -data_g2secondary_bitmap, &grib_accessor_class_data_g2secondary_bitmap -data_g2shsimple_packing, &grib_accessor_class_data_g2shsimple_packing -data_g2simple_packing, &grib_accessor_class_data_g2simple_packing -data_g2simple_packing_with_preprocessing, &grib_accessor_class_data_g2simple_packing_with_preprocessing -data_jpeg2000_packing, &grib_accessor_class_data_jpeg2000_packing -data_png_packing, &grib_accessor_class_data_png_packing -data_raw_packing, &grib_accessor_class_data_raw_packing -data_run_length_packing, &grib_accessor_class_data_run_length_packing -data_secondary_bitmap, &grib_accessor_class_data_secondary_bitmap -data_sh_packed, &grib_accessor_class_data_sh_packed -data_sh_unpacked, &grib_accessor_class_data_sh_unpacked -data_shsimple_packing, &grib_accessor_class_data_shsimple_packing -data_simple_packing, &grib_accessor_class_data_simple_packing -decimal_precision, &grib_accessor_class_decimal_precision -dictionary, &grib_accessor_class_dictionary -dirty, &grib_accessor_class_dirty -divdouble, &grib_accessor_class_divdouble -double, &grib_accessor_class_double -element, &grib_accessor_class_element -evaluate, &grib_accessor_class_evaluate -expanded_descriptors, &grib_accessor_class_expanded_descriptors -forward, &grib_accessor_class_forward -from_scale_factor_scaled_value, &grib_accessor_class_from_scale_factor_scaled_value -g1_half_byte_codeflag, &grib_accessor_class_g1_half_byte_codeflag -g1_message_length, &grib_accessor_class_g1_message_length -g1_section4_length, &grib_accessor_class_g1_section4_length -g1area, &grib_accessor_class_g1area -g1bitmap, &grib_accessor_class_g1bitmap -g1date, &grib_accessor_class_g1date -g1day_of_the_year_date, &grib_accessor_class_g1day_of_the_year_date -g1end_of_interval_monthly, &grib_accessor_class_g1end_of_interval_monthly -g1fcperiod, &grib_accessor_class_g1fcperiod -g1forecastmonth, &grib_accessor_class_g1forecastmonth -g1monthlydate, &grib_accessor_class_g1monthlydate -g1number_of_coded_values_sh_complex, &grib_accessor_class_g1number_of_coded_values_sh_complex -g1number_of_coded_values_sh_simple, &grib_accessor_class_g1number_of_coded_values_sh_simple -g1step_range, &grib_accessor_class_g1step_range -g1verificationdate, &grib_accessor_class_g1verificationdate -g2_aerosol, &grib_accessor_class_g2_aerosol -g2_chemical, &grib_accessor_class_g2_chemical -g2_eps, &grib_accessor_class_g2_eps -g2_mars_labeling, &grib_accessor_class_g2_mars_labeling -g2bitmap, &grib_accessor_class_g2bitmap -g2bitmap_present, &grib_accessor_class_g2bitmap_present -g2date, &grib_accessor_class_g2date -g2end_step, &grib_accessor_class_g2end_step -g2grid, &grib_accessor_class_g2grid -g2latlon, &grib_accessor_class_g2latlon -g2level, &grib_accessor_class_g2level -g2lon, &grib_accessor_class_g2lon -g2step_range, &grib_accessor_class_g2step_range -gaussian_grid_name, &grib_accessor_class_gaussian_grid_name -gds_is_present, &grib_accessor_class_gds_is_present -gds_not_present_bitmap, &grib_accessor_class_gds_not_present_bitmap -gen, &grib_accessor_class_gen -getenv, &grib_accessor_class_getenv -global_gaussian, &grib_accessor_class_global_gaussian -group, &grib_accessor_class_group -gts_header, &grib_accessor_class_gts_header -hash_array, &grib_accessor_class_hash_array -headers_only, &grib_accessor_class_headers_only -ibmfloat, &grib_accessor_class_ibmfloat -ieeefloat, &grib_accessor_class_ieeefloat -ifs_param, &grib_accessor_class_ifs_param -int16, &grib_accessor_class_int16 -int16_little_endian, &grib_accessor_class_int16_little_endian -int32, &grib_accessor_class_int32 -int32_little_endian, &grib_accessor_class_int32_little_endian -int64, &grib_accessor_class_int64 -int64_little_endian, &grib_accessor_class_int64_little_endian -int8, &grib_accessor_class_int8 -iterator, &grib_accessor_class_iterator -julian_date, &grib_accessor_class_julian_date -julian_day, &grib_accessor_class_julian_day -ksec1expver, &grib_accessor_class_ksec1expver -label, &grib_accessor_class_label -laplacian, &grib_accessor_class_laplacian -latitudes, &grib_accessor_class_latitudes -latlon_increment, &grib_accessor_class_latlon_increment -latlonvalues, &grib_accessor_class_latlonvalues -library_version, &grib_accessor_class_library_version -local_definition, &grib_accessor_class_local_definition -long, &grib_accessor_class_long -long_vector, &grib_accessor_class_long_vector -longitudes, &grib_accessor_class_longitudes -lookup, &grib_accessor_class_lookup -mars_param, &grib_accessor_class_mars_param -mars_step, &grib_accessor_class_mars_step -md5, &grib_accessor_class_md5 -message, &grib_accessor_class_message -message_copy, &grib_accessor_class_message_copy -missing, &grib_accessor_class_missing -nearest, &grib_accessor_class_nearest -non_alpha, &grib_accessor_class_non_alpha -number_of_coded_values, &grib_accessor_class_number_of_coded_values -number_of_points, &grib_accessor_class_number_of_points -number_of_points_gaussian, &grib_accessor_class_number_of_points_gaussian -number_of_values, &grib_accessor_class_number_of_values -number_of_values_data_raw_packing, &grib_accessor_class_number_of_values_data_raw_packing -octahedral_gaussian, &grib_accessor_class_octahedral_gaussian -octet_number, &grib_accessor_class_octet_number -offset_file, &grib_accessor_class_offset_file -offset_values, &grib_accessor_class_offset_values -pack_bufr_values, &grib_accessor_class_pack_bufr_values -pad, &grib_accessor_class_pad -padding, &grib_accessor_class_padding -padto, &grib_accessor_class_padto -padtoeven, &grib_accessor_class_padtoeven -padtomultiple, &grib_accessor_class_padtomultiple -position, &grib_accessor_class_position -proj_string, &grib_accessor_class_proj_string -raw, &grib_accessor_class_raw -rdbtime_guess_date, &grib_accessor_class_rdbtime_guess_date -reference_value_error, &grib_accessor_class_reference_value_error -round, &grib_accessor_class_round -scale, &grib_accessor_class_scale -scale_values, &grib_accessor_class_scale_values -second_order_bits_per_value, &grib_accessor_class_second_order_bits_per_value -section, &grib_accessor_class_section -section_length, &grib_accessor_class_section_length -section_padding, &grib_accessor_class_section_padding -section_pointer, &grib_accessor_class_section_pointer -select_step_template, &grib_accessor_class_select_step_template -sexagesimal2decimal, &grib_accessor_class_sexagesimal2decimal -signed, &grib_accessor_class_signed -signed_bits, &grib_accessor_class_signed_bits -simple_packing_error, &grib_accessor_class_simple_packing_error -size, &grib_accessor_class_size -smart_table, &grib_accessor_class_smart_table -smart_table_column, &grib_accessor_class_smart_table_column -spd, &grib_accessor_class_spd -spectral_truncation, &grib_accessor_class_spectral_truncation -sprintf, &grib_accessor_class_sprintf -statistics, &grib_accessor_class_statistics -statistics_spectral, &grib_accessor_class_statistics_spectral -step_human_readable, &grib_accessor_class_step_human_readable -step_in_units, &grib_accessor_class_step_in_units -sum, &grib_accessor_class_sum -suppressed, &grib_accessor_class_suppressed -time, &grib_accessor_class_time -times, &grib_accessor_class_times -to_double, &grib_accessor_class_to_double -to_integer, &grib_accessor_class_to_integer -to_string, &grib_accessor_class_to_string -transient, &grib_accessor_class_transient -transient_darray, &grib_accessor_class_transient_darray -trim, &grib_accessor_class_trim -uint16, &grib_accessor_class_uint16 -uint16_little_endian, &grib_accessor_class_uint16_little_endian -uint32, &grib_accessor_class_uint32 -uint32_little_endian, &grib_accessor_class_uint32_little_endian -uint64, &grib_accessor_class_uint64 -uint64_little_endian, &grib_accessor_class_uint64_little_endian -uint8, &grib_accessor_class_uint8 -unexpanded_descriptors, &grib_accessor_class_unexpanded_descriptors -unpack_bufr_values, &grib_accessor_class_unpack_bufr_values -unsigned, &grib_accessor_class_unsigned -unsigned_bits, &grib_accessor_class_unsigned_bits -validity_date, &grib_accessor_class_validity_date -validity_time, &grib_accessor_class_validity_time -values, &grib_accessor_class_values -variable, &grib_accessor_class_variable -vector, &grib_accessor_class_vector -when, &grib_accessor_class_when diff --git a/src/grib_accessor_class_box.cc b/src/deprecated/grib_accessor_class_box.cc similarity index 100% rename from src/grib_accessor_class_box.cc rename to src/deprecated/grib_accessor_class_box.cc diff --git a/src/grib_accessor.cc b/src/grib_accessor.cc index 44e5fe0ea..568f5c0fe 100644 --- a/src/grib_accessor.cc +++ b/src/grib_accessor.cc @@ -11,7 +11,6 @@ /*************************************************************************** * Jean Baptiste Filippi - 01.11.2005 * Enrico Fucile - * * ***************************************************************************/ #include "grib_accessor.h" @@ -551,17 +550,6 @@ void grib_init_accessor(grib_accessor* a, const long len, grib_arguments* args) init_accessor(a->cclass, a, len, args); } -#if 0 -static void post_init_accessor(grib_accessor_class* c,grib_accessor* a) -{ - if(c) { - grib_accessor_class *s = c->super ? *(c->super) : NULL; - post_init_accessor(s,a); - if(c->post_init) c->post_init(a); - } -} -#endif - /* For this one, ALL destroy are called */ void grib_accessor_delete(grib_context* ct, grib_accessor* a) diff --git a/src/grib_accessor_class.h b/src/grib_accessor_class.h index de7fe7e15..8ba1bedb5 100644 --- a/src/grib_accessor_class.h +++ b/src/grib_accessor_class.h @@ -9,7 +9,6 @@ extern grib_accessor_class* grib_accessor_class_bitmap; extern grib_accessor_class* grib_accessor_class_bits; extern grib_accessor_class* grib_accessor_class_bits_per_value; extern grib_accessor_class* grib_accessor_class_blob; -extern grib_accessor_class* grib_accessor_class_box; extern grib_accessor_class* grib_accessor_class_budgdate; extern grib_accessor_class* grib_accessor_class_bufr_data_array; extern grib_accessor_class* grib_accessor_class_bufr_data_element; diff --git a/src/grib_accessor_classes_hash.cc b/src/grib_accessor_classes_hash.cc index 5586b028d..90cfde106 100644 --- a/src/grib_accessor_classes_hash.cc +++ b/src/grib_accessor_classes_hash.cc @@ -37,12 +37,12 @@ #line 6 "accessor_class_list.gperf" struct accessor_class_hash { char *name; grib_accessor_class **cclass;}; -#define TOTAL_KEYWORDS 220 +#define TOTAL_KEYWORDS 219 #define MIN_WORD_LENGTH 1 #define MAX_WORD_LENGTH 44 #define MIN_HASH_VALUE 1 -#define MAX_HASH_VALUE 831 -/* maximum key range = 831, duplicates = 0 */ +#define MAX_HASH_VALUE 679 +/* maximum key range = 679, duplicates = 0 */ #ifdef __GNUC__ @@ -56,32 +56,32 @@ grib_accessor_classes_get_id (const char *str, size_t len) { static const unsigned short asso_values[] = { - 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, - 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, - 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, - 832, 832, 0, 832, 832, 832, 832, 832, 832, 832, - 832, 832, 832, 832, 832, 832, 832, 832, 0, 196, - 41, 0, 25, 832, 12, 832, 4, 832, 832, 832, - 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, - 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, - 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, - 832, 832, 832, 832, 832, 1, 832, 7, 89, 154, - 0, 0, 200, 14, 198, 23, 2, 0, 112, 279, - 0, 48, 39, 832, 173, 6, 3, 76, 205, 0, - 2, 4, 832, 832, 832, 832, 832, 832, 832, 832, - 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, - 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, - 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, - 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, - 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, - 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, - 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, - 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, - 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, - 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, - 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, - 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, - 832, 832, 832, 832, 832, 832 + 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, + 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, + 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, + 680, 680, 0, 680, 680, 680, 680, 680, 680, 680, + 680, 680, 680, 680, 680, 680, 680, 680, 0, 162, + 41, 7, 0, 680, 34, 680, 7, 680, 680, 680, + 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, + 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, + 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, + 680, 680, 680, 680, 680, 1, 680, 7, 129, 148, + 0, 0, 118, 14, 202, 23, 2, 5, 88, 254, + 0, 48, 39, 680, 86, 6, 3, 127, 212, 4, + 1, 24, 680, 680, 680, 680, 680, 680, 680, 680, + 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, + 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, + 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, + 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, + 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, + 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, + 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, + 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, + 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, + 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, + 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, + 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, + 680, 680, 680, 680, 680, 680 }; unsigned int hval = len; @@ -118,563 +118,547 @@ static const struct accessor_class_hash classes[] = #line 9 "accessor_class_list.gperf" {" "}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 157 "accessor_class_list.gperf" +#line 156 "accessor_class_list.gperf" {"nearest", &grib_accessor_class_nearest}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 119 "accessor_class_list.gperf" +#line 118 "accessor_class_list.gperf" {"gen", &grib_accessor_class_gen}, {""}, {""}, -#line 120 "accessor_class_list.gperf" +#line 119 "accessor_class_list.gperf" {"getenv", &grib_accessor_class_getenv}, - {""}, -#line 85 "accessor_class_list.gperf" +#line 84 "accessor_class_list.gperf" {"expanded_descriptors", &grib_accessor_class_expanded_descriptors}, - {""}, {""}, {""}, {""}, -#line 135 "accessor_class_list.gperf" + {""}, {""}, {""}, {""}, {""}, +#line 134 "accessor_class_list.gperf" {"int8", &grib_accessor_class_int8}, - {""}, -#line 73 "accessor_class_list.gperf" +#line 132 "accessor_class_list.gperf" + {"int64", &grib_accessor_class_int64}, +#line 72 "accessor_class_list.gperf" {"data_secondary_bitmap", &grib_accessor_class_data_secondary_bitmap}, -#line 204 "accessor_class_list.gperf" +#line 203 "accessor_class_list.gperf" {"time", &grib_accessor_class_time}, -#line 70 "accessor_class_list.gperf" +#line 69 "accessor_class_list.gperf" {"data_png_packing", &grib_accessor_class_data_png_packing}, -#line 80 "accessor_class_list.gperf" - {"dirty", &grib_accessor_class_dirty}, -#line 192 "accessor_class_list.gperf" + {""}, +#line 191 "accessor_class_list.gperf" {"size", &grib_accessor_class_size}, -#line 182 "accessor_class_list.gperf" +#line 181 "accessor_class_list.gperf" {"second_order_bits_per_value", &grib_accessor_class_second_order_bits_per_value}, -#line 189 "accessor_class_list.gperf" +#line 188 "accessor_class_list.gperf" {"signed", &grib_accessor_class_signed}, -#line 183 "accessor_class_list.gperf" +#line 182 "accessor_class_list.gperf" {"section", &grib_accessor_class_section}, -#line 205 "accessor_class_list.gperf" +#line 204 "accessor_class_list.gperf" {"times", &grib_accessor_class_times}, -#line 71 "accessor_class_list.gperf" +#line 70 "accessor_class_list.gperf" {"data_raw_packing", &grib_accessor_class_data_raw_packing}, -#line 118 "accessor_class_list.gperf" +#line 117 "accessor_class_list.gperf" {"gds_not_present_bitmap", &grib_accessor_class_gds_not_present_bitmap}, -#line 129 "accessor_class_list.gperf" - {"int16", &grib_accessor_class_int16}, + {""}, #line 13 "accessor_class_list.gperf" {"ascii", &grib_accessor_class_ascii}, {""}, -#line 184 "accessor_class_list.gperf" +#line 183 "accessor_class_list.gperf" {"section_length", &grib_accessor_class_section_length}, -#line 185 "accessor_class_list.gperf" +#line 184 "accessor_class_list.gperf" {"section_padding", &grib_accessor_class_section_padding}, -#line 198 "accessor_class_list.gperf" +#line 197 "accessor_class_list.gperf" {"statistics", &grib_accessor_class_statistics}, -#line 201 "accessor_class_list.gperf" +#line 200 "accessor_class_list.gperf" {"step_in_units", &grib_accessor_class_step_in_units}, -#line 190 "accessor_class_list.gperf" +#line 189 "accessor_class_list.gperf" {"signed_bits", &grib_accessor_class_signed_bits}, -#line 195 "accessor_class_list.gperf" +#line 194 "accessor_class_list.gperf" {"spd", &grib_accessor_class_spd}, -#line 169 "accessor_class_list.gperf" +#line 168 "accessor_class_list.gperf" {"pad", &grib_accessor_class_pad}, -#line 77 "accessor_class_list.gperf" +#line 76 "accessor_class_list.gperf" {"data_simple_packing", &grib_accessor_class_data_simple_packing}, - {""}, {""}, -#line 133 "accessor_class_list.gperf" - {"int64", &grib_accessor_class_int64}, {""}, -#line 199 "accessor_class_list.gperf" - {"statistics_spectral", &grib_accessor_class_statistics_spectral}, #line 79 "accessor_class_list.gperf" + {"dirty", &grib_accessor_class_dirty}, + {""}, {""}, +#line 198 "accessor_class_list.gperf" + {"statistics_spectral", &grib_accessor_class_statistics_spectral}, +#line 78 "accessor_class_list.gperf" {"dictionary", &grib_accessor_class_dictionary}, {""}, -#line 117 "accessor_class_list.gperf" +#line 116 "accessor_class_list.gperf" {"gds_is_present", &grib_accessor_class_gds_is_present}, {""}, -#line 114 "accessor_class_list.gperf" +#line 113 "accessor_class_list.gperf" {"g2lon", &grib_accessor_class_g2lon}, -#line 207 "accessor_class_list.gperf" +#line 206 "accessor_class_list.gperf" {"to_integer", &grib_accessor_class_to_integer}, - {""}, {""}, -#line 109 "accessor_class_list.gperf" +#line 128 "accessor_class_list.gperf" + {"int16", &grib_accessor_class_int16}, + {""}, +#line 108 "accessor_class_list.gperf" {"g2date", &grib_accessor_class_g2date}, -#line 47 "accessor_class_list.gperf" +#line 46 "accessor_class_list.gperf" {"data_apply_bitmap", &grib_accessor_class_data_apply_bitmap}, {""}, -#line 186 "accessor_class_list.gperf" +#line 185 "accessor_class_list.gperf" {"section_pointer", &grib_accessor_class_section_pointer}, -#line 69 "accessor_class_list.gperf" +#line 68 "accessor_class_list.gperf" {"data_jpeg2000_packing", &grib_accessor_class_data_jpeg2000_packing}, -#line 131 "accessor_class_list.gperf" +#line 130 "accessor_class_list.gperf" {"int32", &grib_accessor_class_int32}, -#line 62 "accessor_class_list.gperf" +#line 61 "accessor_class_list.gperf" {"data_g22order_packing", &grib_accessor_class_data_g22order_packing}, -#line 110 "accessor_class_list.gperf" +#line 109 "accessor_class_list.gperf" {"g2end_step", &grib_accessor_class_g2end_step}, -#line 50 "accessor_class_list.gperf" +#line 49 "accessor_class_list.gperf" {"data_apply_gdsnotpresent", &grib_accessor_class_data_apply_gdsnotpresent}, -#line 107 "accessor_class_list.gperf" +#line 106 "accessor_class_list.gperf" {"g2bitmap", &grib_accessor_class_g2bitmap}, -#line 48 "accessor_class_list.gperf" +#line 47 "accessor_class_list.gperf" {"data_apply_boustrophedonic", &grib_accessor_class_data_apply_boustrophedonic}, {""}, -#line 52 "accessor_class_list.gperf" +#line 51 "accessor_class_list.gperf" {"data_complex_packing", &grib_accessor_class_data_complex_packing}, {""}, {""}, {""}, {""}, -#line 49 "accessor_class_list.gperf" +#line 48 "accessor_class_list.gperf" {"data_apply_boustrophedonic_bitmap", &grib_accessor_class_data_apply_boustrophedonic_bitmap}, -#line 115 "accessor_class_list.gperf" +#line 114 "accessor_class_list.gperf" {"g2step_range", &grib_accessor_class_g2step_range}, {""}, -#line 111 "accessor_class_list.gperf" +#line 110 "accessor_class_list.gperf" {"g2grid", &grib_accessor_class_g2grid}, -#line 202 "accessor_class_list.gperf" - {"sum", &grib_accessor_class_sum}, -#line 208 "accessor_class_list.gperf" + {""}, +#line 207 "accessor_class_list.gperf" {"to_string", &grib_accessor_class_to_string}, {""}, {""}, -#line 136 "accessor_class_list.gperf" +#line 135 "accessor_class_list.gperf" {"iterator", &grib_accessor_class_iterator}, -#line 170 "accessor_class_list.gperf" +#line 169 "accessor_class_list.gperf" {"padding", &grib_accessor_class_padding}, - {""}, {""}, {""}, {""}, -#line 66 "accessor_class_list.gperf" + {""}, {""}, +#line 210 "accessor_class_list.gperf" + {"trim", &grib_accessor_class_trim}, + {""}, +#line 65 "accessor_class_list.gperf" {"data_g2shsimple_packing", &grib_accessor_class_data_g2shsimple_packing}, -#line 138 "accessor_class_list.gperf" - {"julian_day", &grib_accessor_class_julian_day}, -#line 137 "accessor_class_list.gperf" - {"julian_date", &grib_accessor_class_julian_date}, -#line 221 "accessor_class_list.gperf" - {"unsigned", &grib_accessor_class_unsigned}, -#line 171 "accessor_class_list.gperf" +#line 175 "accessor_class_list.gperf" + {"raw", &grib_accessor_class_raw}, + {""}, +#line 82 "accessor_class_list.gperf" + {"element", &grib_accessor_class_element}, +#line 170 "accessor_class_list.gperf" {"padto", &grib_accessor_class_padto}, -#line 105 "accessor_class_list.gperf" +#line 104 "accessor_class_list.gperf" {"g2_eps", &grib_accessor_class_g2_eps}, -#line 53 "accessor_class_list.gperf" - {"data_dummy_field", &grib_accessor_class_data_dummy_field}, - {""}, -#line 158 "accessor_class_list.gperf" + {""}, {""}, +#line 157 "accessor_class_list.gperf" {"non_alpha", &grib_accessor_class_non_alpha}, -#line 32 "accessor_class_list.gperf" - {"bytes", &grib_accessor_class_bytes}, -#line 214 "accessor_class_list.gperf" - {"uint32", &grib_accessor_class_uint32}, -#line 200 "accessor_class_list.gperf" - {"step_human_readable", &grib_accessor_class_step_human_readable}, -#line 72 "accessor_class_list.gperf" - {"data_run_length_packing", &grib_accessor_class_data_run_length_packing}, -#line 218 "accessor_class_list.gperf" - {"uint8", &grib_accessor_class_uint8}, -#line 67 "accessor_class_list.gperf" +#line 208 "accessor_class_list.gperf" + {"transient", &grib_accessor_class_transient}, +#line 14 "accessor_class_list.gperf" + {"assert", &grib_accessor_class_assert}, + {""}, +#line 141 "accessor_class_list.gperf" + {"latitudes", &grib_accessor_class_latitudes}, + {""}, +#line 66 "accessor_class_list.gperf" {"data_g2simple_packing", &grib_accessor_class_data_g2simple_packing}, -#line 64 "accessor_class_list.gperf" +#line 63 "accessor_class_list.gperf" {"data_g2complex_packing", &grib_accessor_class_data_g2complex_packing}, - {""}, {""}, -#line 103 "accessor_class_list.gperf" +#line 209 "accessor_class_list.gperf" + {"transient_darray", &grib_accessor_class_transient_darray}, + {""}, +#line 102 "accessor_class_list.gperf" {"g2_aerosol", &grib_accessor_class_g2_aerosol}, -#line 112 "accessor_class_list.gperf" +#line 111 "accessor_class_list.gperf" {"g2latlon", &grib_accessor_class_g2latlon}, -#line 15 "accessor_class_list.gperf" - {"bit", &grib_accessor_class_bit}, -#line 17 "accessor_class_list.gperf" - {"bits", &grib_accessor_class_bits}, -#line 216 "accessor_class_list.gperf" - {"uint64", &grib_accessor_class_uint64}, - {""}, {""}, -#line 65 "accessor_class_list.gperf" + {""}, {""}, {""}, {""}, {""}, +#line 64 "accessor_class_list.gperf" {"data_g2secondary_bitmap", &grib_accessor_class_data_g2secondary_bitmap}, -#line 63 "accessor_class_list.gperf" +#line 62 "accessor_class_list.gperf" {"data_g2bifourier_packing", &grib_accessor_class_data_g2bifourier_packing}, -#line 83 "accessor_class_list.gperf" - {"element", &grib_accessor_class_element}, -#line 215 "accessor_class_list.gperf" - {"uint32_little_endian", &grib_accessor_class_uint32_little_endian}, - {""}, -#line 16 "accessor_class_list.gperf" - {"bitmap", &grib_accessor_class_bitmap}, -#line 222 "accessor_class_list.gperf" - {"unsigned_bits", &grib_accessor_class_unsigned_bits}, - {""}, -#line 68 "accessor_class_list.gperf" +#line 12 "accessor_class_list.gperf" + {"array", &grib_accessor_class_array}, + {""}, {""}, {""}, {""}, +#line 176 "accessor_class_list.gperf" + {"rdbtime_guess_date", &grib_accessor_class_rdbtime_guess_date}, +#line 67 "accessor_class_list.gperf" {"data_g2simple_packing_with_preprocessing", &grib_accessor_class_data_g2simple_packing_with_preprocessing}, {""}, {""}, -#line 142 "accessor_class_list.gperf" - {"latitudes", &grib_accessor_class_latitudes}, -#line 160 "accessor_class_list.gperf" - {"number_of_points", &grib_accessor_class_number_of_points}, - {""}, -#line 18 "accessor_class_list.gperf" - {"bits_per_value", &grib_accessor_class_bits_per_value}, -#line 217 "accessor_class_list.gperf" - {"uint64_little_endian", &grib_accessor_class_uint64_little_endian}, - {""}, {""}, -#line 219 "accessor_class_list.gperf" - {"unexpanded_descriptors", &grib_accessor_class_unexpanded_descriptors}, - {""}, -#line 20 "accessor_class_list.gperf" - {"box", &grib_accessor_class_box}, -#line 161 "accessor_class_list.gperf" - {"number_of_points_gaussian", &grib_accessor_class_number_of_points_gaussian}, - {""}, {""}, {""}, {""}, -#line 174 "accessor_class_list.gperf" - {"position", &grib_accessor_class_position}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 121 "accessor_class_list.gperf" +#line 120 "accessor_class_list.gperf" {"global_gaussian", &grib_accessor_class_global_gaussian}, {""}, -#line 188 "accessor_class_list.gperf" +#line 187 "accessor_class_list.gperf" {"sexagesimal2decimal", &grib_accessor_class_sexagesimal2decimal}, -#line 141 "accessor_class_list.gperf" +#line 140 "accessor_class_list.gperf" {"laplacian", &grib_accessor_class_laplacian}, - {""}, {""}, {""}, -#line 191 "accessor_class_list.gperf" - {"simple_packing_error", &grib_accessor_class_simple_packing_error}, {""}, -#line 147 "accessor_class_list.gperf" +#line 201 "accessor_class_list.gperf" + {"sum", &grib_accessor_class_sum}, + {""}, +#line 115 "accessor_class_list.gperf" + {"gaussian_grid_name", &grib_accessor_class_gaussian_grid_name}, +#line 178 "accessor_class_list.gperf" + {"round", &grib_accessor_class_round}, +#line 146 "accessor_class_list.gperf" {"long", &grib_accessor_class_long}, -#line 180 "accessor_class_list.gperf" - {"scale", &grib_accessor_class_scale}, -#line 82 "accessor_class_list.gperf" - {"double", &grib_accessor_class_double}, - {""}, {""}, + {""}, #line 81 "accessor_class_list.gperf" - {"divdouble", &grib_accessor_class_divdouble}, - {""}, {""}, {""}, -#line 106 "accessor_class_list.gperf" - {"g2_mars_labeling", &grib_accessor_class_g2_mars_labeling}, - {""}, {""}, -#line 21 "accessor_class_list.gperf" - {"budgdate", &grib_accessor_class_budgdate}, - {""}, {""}, {""}, -#line 211 "accessor_class_list.gperf" - {"trim", &grib_accessor_class_trim}, -#line 51 "accessor_class_list.gperf" - {"data_ccsds_packing", &grib_accessor_class_data_ccsds_packing}, + {"double", &grib_accessor_class_double}, +#line 190 "accessor_class_list.gperf" + {"simple_packing_error", &grib_accessor_class_simple_packing_error}, +#line 121 "accessor_class_list.gperf" + {"group", &grib_accessor_class_group}, {""}, -#line 176 "accessor_class_list.gperf" - {"raw", &grib_accessor_class_raw}, - {""}, {""}, {""}, {""}, {""}, -#line 12 "accessor_class_list.gperf" - {"array", &grib_accessor_class_array}, -#line 23 "accessor_class_list.gperf" - {"bufr_data_element", &grib_accessor_class_bufr_data_element}, -#line 209 "accessor_class_list.gperf" - {"transient", &grib_accessor_class_transient}, -#line 14 "accessor_class_list.gperf" - {"assert", &grib_accessor_class_assert}, +#line 173 "accessor_class_list.gperf" + {"position", &grib_accessor_class_position}, +#line 137 "accessor_class_list.gperf" + {"julian_day", &grib_accessor_class_julian_day}, +#line 136 "accessor_class_list.gperf" + {"julian_date", &grib_accessor_class_julian_date}, +#line 220 "accessor_class_list.gperf" + {"unsigned", &grib_accessor_class_unsigned}, {""}, {""}, -#line 22 "accessor_class_list.gperf" - {"bufr_data_array", &grib_accessor_class_bufr_data_array}, - {""}, -#line 206 "accessor_class_list.gperf" - {"to_double", &grib_accessor_class_to_double}, -#line 210 "accessor_class_list.gperf" - {"transient_darray", &grib_accessor_class_transient_darray}, +#line 52 "accessor_class_list.gperf" + {"data_dummy_field", &grib_accessor_class_data_dummy_field}, {""}, +#line 174 "accessor_class_list.gperf" + {"proj_string", &grib_accessor_class_proj_string}, +#line 15 "accessor_class_list.gperf" + {"bit", &grib_accessor_class_bit}, +#line 17 "accessor_class_list.gperf" + {"bits", &grib_accessor_class_bits}, +#line 199 "accessor_class_list.gperf" + {"step_human_readable", &grib_accessor_class_step_human_readable}, +#line 71 "accessor_class_list.gperf" + {"data_run_length_packing", &grib_accessor_class_data_run_length_packing}, +#line 179 "accessor_class_list.gperf" + {"scale", &grib_accessor_class_scale}, +#line 195 "accessor_class_list.gperf" + {"spectral_truncation", &grib_accessor_class_spectral_truncation}, +#line 45 "accessor_class_list.gperf" + {"data_2order_packing", &grib_accessor_class_data_2order_packing}, +#line 217 "accessor_class_list.gperf" + {"uint8", &grib_accessor_class_uint8}, +#line 213 "accessor_class_list.gperf" + {"uint32", &grib_accessor_class_uint32}, #line 31 "accessor_class_list.gperf" - {"bufrdc_expanded_descriptors", &grib_accessor_class_bufrdc_expanded_descriptors}, -#line 30 "accessor_class_list.gperf" - {"bufr_string_values", &grib_accessor_class_bufr_string_values}, -#line 228 "accessor_class_list.gperf" - {"when", &grib_accessor_class_when}, + {"bytes", &grib_accessor_class_bytes}, +#line 16 "accessor_class_list.gperf" + {"bitmap", &grib_accessor_class_bitmap}, + {""}, +#line 107 "accessor_class_list.gperf" + {"g2bitmap_present", &grib_accessor_class_g2bitmap_present}, {""}, {""}, -#line 19 "accessor_class_list.gperf" - {"blob", &grib_accessor_class_blob}, +#line 196 "accessor_class_list.gperf" + {"sprintf", &grib_accessor_class_sprintf}, {""}, {""}, {""}, -#line 29 "accessor_class_list.gperf" - {"bufr_simple_thinning", &grib_accessor_class_bufr_simple_thinning}, - {""}, {""}, -#line 41 "accessor_class_list.gperf" - {"concept", &grib_accessor_class_concept}, -#line 42 "accessor_class_list.gperf" - {"constant", &grib_accessor_class_constant}, -#line 177 "accessor_class_list.gperf" - {"rdbtime_guess_date", &grib_accessor_class_rdbtime_guess_date}, +#line 18 "accessor_class_list.gperf" + {"bits_per_value", &grib_accessor_class_bits_per_value}, +#line 50 "accessor_class_list.gperf" + {"data_ccsds_packing", &grib_accessor_class_data_ccsds_packing}, {""}, -#line 91 "accessor_class_list.gperf" - {"g1area", &grib_accessor_class_g1area}, +#line 221 "accessor_class_list.gperf" + {"unsigned_bits", &grib_accessor_class_unsigned_bits}, #line 165 "accessor_class_list.gperf" - {"octet_number", &grib_accessor_class_octet_number}, -#line 225 "accessor_class_list.gperf" - {"values", &grib_accessor_class_values}, -#line 93 "accessor_class_list.gperf" - {"g1date", &grib_accessor_class_g1date}, -#line 187 "accessor_class_list.gperf" - {"select_step_template", &grib_accessor_class_select_step_template}, + {"offset_file", &grib_accessor_class_offset_file}, {""}, -#line 173 "accessor_class_list.gperf" - {"padtomultiple", &grib_accessor_class_padtomultiple}, - {""}, {""}, -#line 116 "accessor_class_list.gperf" - {"gaussian_grid_name", &grib_accessor_class_gaussian_grid_name}, -#line 179 "accessor_class_list.gperf" - {"round", &grib_accessor_class_round}, +#line 85 "accessor_class_list.gperf" + {"forward", &grib_accessor_class_forward}, +#line 214 "accessor_class_list.gperf" + {"uint32_little_endian", &grib_accessor_class_uint32_little_endian}, +#line 90 "accessor_class_list.gperf" + {"g1area", &grib_accessor_class_g1area}, +#line 159 "accessor_class_list.gperf" + {"number_of_points", &grib_accessor_class_number_of_points}, {""}, #line 92 "accessor_class_list.gperf" - {"g1bitmap", &grib_accessor_class_g1bitmap}, + {"g1date", &grib_accessor_class_g1date}, {""}, {""}, -#line 122 "accessor_class_list.gperf" - {"group", &grib_accessor_class_group}, -#line 123 "accessor_class_list.gperf" - {"gts_header", &grib_accessor_class_gts_header}, +#line 139 "accessor_class_list.gperf" + {"label", &grib_accessor_class_label}, +#line 218 "accessor_class_list.gperf" + {"unexpanded_descriptors", &grib_accessor_class_unexpanded_descriptors}, +#line 215 "accessor_class_list.gperf" + {"uint64", &grib_accessor_class_uint64}, {""}, +#line 160 "accessor_class_list.gperf" + {"number_of_points_gaussian", &grib_accessor_class_number_of_points_gaussian}, + {""}, +#line 91 "accessor_class_list.gperf" + {"g1bitmap", &grib_accessor_class_g1bitmap}, + {""}, {""}, #line 89 "accessor_class_list.gperf" + {"g1_section4_length", &grib_accessor_class_g1_section4_length}, +#line 126 "accessor_class_list.gperf" + {"ieeefloat", &grib_accessor_class_ieeefloat}, + {""}, +#line 88 "accessor_class_list.gperf" {"g1_message_length", &grib_accessor_class_g1_message_length}, -#line 223 "accessor_class_list.gperf" - {"validity_date", &grib_accessor_class_validity_date}, -#line 140 "accessor_class_list.gperf" - {"label", &grib_accessor_class_label}, -#line 101 "accessor_class_list.gperf" + {""}, {""}, +#line 100 "accessor_class_list.gperf" {"g1step_range", &grib_accessor_class_g1step_range}, + {""}, {""}, +#line 40 "accessor_class_list.gperf" + {"concept", &grib_accessor_class_concept}, +#line 41 "accessor_class_list.gperf" + {"constant", &grib_accessor_class_constant}, +#line 216 "accessor_class_list.gperf" + {"uint64_little_endian", &grib_accessor_class_uint64_little_endian}, +#line 80 "accessor_class_list.gperf" + {"divdouble", &grib_accessor_class_divdouble}, +#line 227 "accessor_class_list.gperf" + {"when", &grib_accessor_class_when}, +#line 164 "accessor_class_list.gperf" + {"octet_number", &grib_accessor_class_octet_number}, {""}, -#line 126 "accessor_class_list.gperf" - {"ibmfloat", &grib_accessor_class_ibmfloat}, - {""}, -#line 175 "accessor_class_list.gperf" - {"proj_string", &grib_accessor_class_proj_string}, -#line 150 "accessor_class_list.gperf" - {"lookup", &grib_accessor_class_lookup}, - {""}, {""}, {""}, {""}, -#line 196 "accessor_class_list.gperf" - {"spectral_truncation", &grib_accessor_class_spectral_truncation}, -#line 46 "accessor_class_list.gperf" - {"data_2order_packing", &grib_accessor_class_data_2order_packing}, +#line 105 "accessor_class_list.gperf" + {"g2_mars_labeling", &grib_accessor_class_g2_mars_labeling}, +#line 186 "accessor_class_list.gperf" + {"select_step_template", &grib_accessor_class_select_step_template}, {""}, -#line 60 "accessor_class_list.gperf" +#line 59 "accessor_class_list.gperf" {"data_g1shsimple_packing", &grib_accessor_class_data_g1shsimple_packing}, -#line 224 "accessor_class_list.gperf" - {"validity_time", &grib_accessor_class_validity_time}, -#line 197 "accessor_class_list.gperf" - {"sprintf", &grib_accessor_class_sprintf}, -#line 159 "accessor_class_list.gperf" - {"number_of_coded_values", &grib_accessor_class_number_of_coded_values}, -#line 108 "accessor_class_list.gperf" - {"g2bitmap_present", &grib_accessor_class_g2bitmap_present}, {""}, -#line 90 "accessor_class_list.gperf" - {"g1_section4_length", &grib_accessor_class_g1_section4_length}, +#line 133 "accessor_class_list.gperf" + {"int64_little_endian", &grib_accessor_class_int64_little_endian}, {""}, {""}, -#line 227 "accessor_class_list.gperf" - {"vector", &grib_accessor_class_vector}, -#line 166 "accessor_class_list.gperf" - {"offset_file", &grib_accessor_class_offset_file}, -#line 75 "accessor_class_list.gperf" - {"data_sh_unpacked", &grib_accessor_class_data_sh_unpacked}, -#line 86 "accessor_class_list.gperf" - {"forward", &grib_accessor_class_forward}, - {""}, -#line 61 "accessor_class_list.gperf" +#line 19 "accessor_class_list.gperf" + {"blob", &grib_accessor_class_blob}, + {""}, {""}, {""}, +#line 224 "accessor_class_list.gperf" + {"values", &grib_accessor_class_values}, + {""}, {""}, {""}, {""}, +#line 60 "accessor_class_list.gperf" {"data_g1simple_packing", &grib_accessor_class_data_g1simple_packing}, -#line 54 "accessor_class_list.gperf" +#line 53 "accessor_class_list.gperf" {"data_g1complex_packing", &grib_accessor_class_data_g1complex_packing}, -#line 76 "accessor_class_list.gperf" - {"data_shsimple_packing", &grib_accessor_class_data_shsimple_packing}, {""}, {""}, -#line 149 "accessor_class_list.gperf" - {"longitudes", &grib_accessor_class_longitudes}, - {""}, -#line 203 "accessor_class_list.gperf" +#line 147 "accessor_class_list.gperf" + {"long_vector", &grib_accessor_class_long_vector}, +#line 202 "accessor_class_list.gperf" {"suppressed", &grib_accessor_class_suppressed}, - {""}, {""}, {""}, -#line 59 "accessor_class_list.gperf" +#line 122 "accessor_class_list.gperf" + {"gts_header", &grib_accessor_class_gts_header}, +#line 205 "accessor_class_list.gperf" + {"to_double", &grib_accessor_class_to_double}, + {""}, {""}, +#line 145 "accessor_class_list.gperf" + {"local_definition", &grib_accessor_class_local_definition}, +#line 58 "accessor_class_list.gperf" {"data_g1secondary_bitmap", &grib_accessor_class_data_g1secondary_bitmap}, +#line 222 "accessor_class_list.gperf" + {"validity_date", &grib_accessor_class_validity_date}, +#line 144 "accessor_class_list.gperf" + {"library_version", &grib_accessor_class_library_version}, {""}, {""}, -#line 130 "accessor_class_list.gperf" - {"int16_little_endian", &grib_accessor_class_int16_little_endian}, - {""}, -#line 127 "accessor_class_list.gperf" - {"ieeefloat", &grib_accessor_class_ieeefloat}, - {""}, -#line 153 "accessor_class_list.gperf" - {"md5", &grib_accessor_class_md5}, -#line 95 "accessor_class_list.gperf" +#line 142 "accessor_class_list.gperf" + {"latlon_increment", &grib_accessor_class_latlon_increment}, + {""}, {""}, +#line 94 "accessor_class_list.gperf" {"g1end_of_interval_monthly", &grib_accessor_class_g1end_of_interval_monthly}, -#line 36 "accessor_class_list.gperf" - {"closest_date", &grib_accessor_class_closest_date}, {""}, {""}, -#line 57 "accessor_class_list.gperf" +#line 129 "accessor_class_list.gperf" + {"int16_little_endian", &grib_accessor_class_int16_little_endian}, +#line 56 "accessor_class_list.gperf" {"data_g1second_order_general_packing", &grib_accessor_class_data_g1second_order_general_packing}, -#line 146 "accessor_class_list.gperf" - {"local_definition", &grib_accessor_class_local_definition}, - {""}, -#line 58 "accessor_class_list.gperf" +#line 35 "accessor_class_list.gperf" + {"closest_date", &grib_accessor_class_closest_date}, +#line 125 "accessor_class_list.gperf" + {"ibmfloat", &grib_accessor_class_ibmfloat}, +#line 57 "accessor_class_list.gperf" {"data_g1second_order_row_by_row_packing", &grib_accessor_class_data_g1second_order_row_by_row_packing}, -#line 134 "accessor_class_list.gperf" - {"int64_little_endian", &grib_accessor_class_int64_little_endian}, -#line 84 "accessor_class_list.gperf" - {"evaluate", &grib_accessor_class_evaluate}, -#line 154 "accessor_class_list.gperf" - {"message", &grib_accessor_class_message}, -#line 55 "accessor_class_list.gperf" +#line 152 "accessor_class_list.gperf" + {"md5", &grib_accessor_class_md5}, +#line 223 "accessor_class_list.gperf" + {"validity_time", &grib_accessor_class_validity_time}, +#line 131 "accessor_class_list.gperf" + {"int32_little_endian", &grib_accessor_class_int32_little_endian}, +#line 54 "accessor_class_list.gperf" {"data_g1second_order_constant_width_packing", &grib_accessor_class_data_g1second_order_constant_width_packing}, {""}, -#line 56 "accessor_class_list.gperf" +#line 55 "accessor_class_list.gperf" {"data_g1second_order_general_extended_packing", &grib_accessor_class_data_g1second_order_general_extended_packing}, -#line 24 "accessor_class_list.gperf" - {"bufr_elements_table", &grib_accessor_class_bufr_elements_table}, -#line 162 "accessor_class_list.gperf" - {"number_of_values", &grib_accessor_class_number_of_values}, -#line 152 "accessor_class_list.gperf" + {""}, {""}, +#line 74 "accessor_class_list.gperf" + {"data_sh_unpacked", &grib_accessor_class_data_sh_unpacked}, +#line 226 "accessor_class_list.gperf" + {"vector", &grib_accessor_class_vector}, +#line 20 "accessor_class_list.gperf" + {"budgdate", &grib_accessor_class_budgdate}, +#line 153 "accessor_class_list.gperf" + {"message", &grib_accessor_class_message}, +#line 149 "accessor_class_list.gperf" + {"lookup", &grib_accessor_class_lookup}, +#line 75 "accessor_class_list.gperf" + {"data_shsimple_packing", &grib_accessor_class_data_shsimple_packing}, +#line 138 "accessor_class_list.gperf" + {"ksec1expver", &grib_accessor_class_ksec1expver}, + {""}, +#line 172 "accessor_class_list.gperf" + {"padtomultiple", &grib_accessor_class_padtomultiple}, +#line 151 "accessor_class_list.gperf" {"mars_step", &grib_accessor_class_mars_step}, +#line 127 "accessor_class_list.gperf" + {"ifs_param", &grib_accessor_class_ifs_param}, {""}, -#line 212 "accessor_class_list.gperf" - {"uint16", &grib_accessor_class_uint16}, -#line 193 "accessor_class_list.gperf" +#line 192 "accessor_class_list.gperf" {"smart_table", &grib_accessor_class_smart_table}, -#line 38 "accessor_class_list.gperf" - {"codetable", &grib_accessor_class_codetable}, -#line 151 "accessor_class_list.gperf" + {""}, +#line 150 "accessor_class_list.gperf" {"mars_param", &grib_accessor_class_mars_param}, + {""}, +#line 22 "accessor_class_list.gperf" + {"bufr_data_element", &grib_accessor_class_bufr_data_element}, {""}, {""}, -#line 132 "accessor_class_list.gperf" - {"int32_little_endian", &grib_accessor_class_int32_little_endian}, -#line 172 "accessor_class_list.gperf" - {"padtoeven", &grib_accessor_class_padtoeven}, -#line 194 "accessor_class_list.gperf" +#line 193 "accessor_class_list.gperf" {"smart_table_column", &grib_accessor_class_smart_table_column}, - {""}, {""}, -#line 39 "accessor_class_list.gperf" - {"codetable_title", &grib_accessor_class_codetable_title}, - {""}, {""}, -#line 163 "accessor_class_list.gperf" - {"number_of_values_data_raw_packing", &grib_accessor_class_number_of_values_data_raw_packing}, + {""}, +#line 21 "accessor_class_list.gperf" + {"bufr_data_array", &grib_accessor_class_bufr_data_array}, + {""}, {""}, {""}, {""}, +#line 30 "accessor_class_list.gperf" + {"bufrdc_expanded_descriptors", &grib_accessor_class_bufrdc_expanded_descriptors}, +#line 29 "accessor_class_list.gperf" + {"bufr_string_values", &grib_accessor_class_bufr_string_values}, {""}, {""}, {""}, -#line 213 "accessor_class_list.gperf" - {"uint16_little_endian", &grib_accessor_class_uint16_little_endian}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 125 "accessor_class_list.gperf" +#line 148 "accessor_class_list.gperf" + {"longitudes", &grib_accessor_class_longitudes}, + {""}, +#line 158 "accessor_class_list.gperf" + {"number_of_coded_values", &grib_accessor_class_number_of_coded_values}, + {""}, +#line 28 "accessor_class_list.gperf" + {"bufr_simple_thinning", &grib_accessor_class_bufr_simple_thinning}, +#line 44 "accessor_class_list.gperf" + {"count_total", &grib_accessor_class_count_total}, + {""}, {""}, {""}, {""}, +#line 123 "accessor_class_list.gperf" + {"hash_array", &grib_accessor_class_hash_array}, +#line 166 "accessor_class_list.gperf" + {"offset_values", &grib_accessor_class_offset_values}, +#line 124 "accessor_class_list.gperf" {"headers_only", &grib_accessor_class_headers_only}, {""}, {""}, -#line 45 "accessor_class_list.gperf" - {"count_total", &grib_accessor_class_count_total}, +#line 95 "accessor_class_list.gperf" + {"g1fcperiod", &grib_accessor_class_g1fcperiod}, +#line 154 "accessor_class_list.gperf" + {"message_copy", &grib_accessor_class_message_copy}, {""}, {""}, -#line 145 "accessor_class_list.gperf" - {"library_version", &grib_accessor_class_library_version}, +#line 171 "accessor_class_list.gperf" + {"padtoeven", &grib_accessor_class_padtoeven}, + {""}, {""}, +#line 211 "accessor_class_list.gperf" + {"uint16", &grib_accessor_class_uint16}, {""}, {""}, #line 155 "accessor_class_list.gperf" - {"message_copy", &grib_accessor_class_message_copy}, -#line 167 "accessor_class_list.gperf" - {"offset_values", &grib_accessor_class_offset_values}, -#line 226 "accessor_class_list.gperf" + {"missing", &grib_accessor_class_missing}, +#line 225 "accessor_class_list.gperf" {"variable", &grib_accessor_class_variable}, {""}, {""}, -#line 27 "accessor_class_list.gperf" - {"bufr_extract_subsets", &grib_accessor_class_bufr_extract_subsets}, +#line 87 "accessor_class_list.gperf" + {"g1_half_byte_codeflag", &grib_accessor_class_g1_half_byte_codeflag}, {""}, -#line 168 "accessor_class_list.gperf" - {"pack_bufr_values", &grib_accessor_class_pack_bufr_values}, -#line 148 "accessor_class_list.gperf" - {"long_vector", &grib_accessor_class_long_vector}, -#line 156 "accessor_class_list.gperf" - {"missing", &grib_accessor_class_missing}, -#line 25 "accessor_class_list.gperf" - {"bufr_extract_area_subsets", &grib_accessor_class_bufr_extract_area_subsets}, +#line 42 "accessor_class_list.gperf" + {"count_file", &grib_accessor_class_count_file}, {""}, -#line 28 "accessor_class_list.gperf" +#line 36 "accessor_class_list.gperf" + {"codeflag", &grib_accessor_class_codeflag}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 212 "accessor_class_list.gperf" + {"uint16_little_endian", &grib_accessor_class_uint16_little_endian}, +#line 37 "accessor_class_list.gperf" + {"codetable", &grib_accessor_class_codetable}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 38 "accessor_class_list.gperf" + {"codetable_title", &grib_accessor_class_codetable_title}, + {""}, {""}, {""}, +#line 83 "accessor_class_list.gperf" + {"evaluate", &grib_accessor_class_evaluate}, + {""}, {""}, +#line 27 "accessor_class_list.gperf" {"bufr_group", &grib_accessor_class_bufr_group}, + {""}, {""}, +#line 161 "accessor_class_list.gperf" + {"number_of_values", &grib_accessor_class_number_of_values}, + {""}, {""}, +#line 77 "accessor_class_list.gperf" + {"decimal_precision", &grib_accessor_class_decimal_precision}, + {""}, {""}, +#line 112 "accessor_class_list.gperf" + {"g2level", &grib_accessor_class_g2level}, {""}, -#line 26 "accessor_class_list.gperf" - {"bufr_extract_datetime_subsets", &grib_accessor_class_bufr_extract_datetime_subsets}, - {""}, {""}, {""}, {""}, {""}, +#line 23 "accessor_class_list.gperf" + {"bufr_elements_table", &grib_accessor_class_bufr_elements_table}, + {""}, {""}, #line 143 "accessor_class_list.gperf" - {"latlon_increment", &grib_accessor_class_latlon_increment}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 74 "accessor_class_list.gperf" + {"latlonvalues", &grib_accessor_class_latlonvalues}, + {""}, {""}, {""}, {""}, +#line 73 "accessor_class_list.gperf" {"data_sh_packed", &grib_accessor_class_data_sh_packed}, - {""}, {""}, -#line 181 "accessor_class_list.gperf" +#line 162 "accessor_class_list.gperf" + {"number_of_values_data_raw_packing", &grib_accessor_class_number_of_values_data_raw_packing}, + {""}, {""}, {""}, {""}, +#line 180 "accessor_class_list.gperf" {"scale_values", &grib_accessor_class_scale_values}, {""}, -#line 113 "accessor_class_list.gperf" - {"g2level", &grib_accessor_class_g2level}, +#line 219 "accessor_class_list.gperf" + {"unpack_bufr_values", &grib_accessor_class_unpack_bufr_values}, + {""}, {""}, {""}, +#line 86 "accessor_class_list.gperf" + {"from_scale_factor_scaled_value", &grib_accessor_class_from_scale_factor_scaled_value}, +#line 11 "accessor_class_list.gperf" + {"abstract_vector", &grib_accessor_class_abstract_vector}, {""}, {""}, {""}, {""}, -#line 144 "accessor_class_list.gperf" - {"latlonvalues", &grib_accessor_class_latlonvalues}, -#line 40 "accessor_class_list.gperf" - {"codetable_units", &grib_accessor_class_codetable_units}, - {""}, {""}, -#line 139 "accessor_class_list.gperf" - {"ksec1expver", &grib_accessor_class_ksec1expver}, -#line 124 "accessor_class_list.gperf" - {"hash_array", &grib_accessor_class_hash_array}, - {""}, {""}, -#line 34 "accessor_class_list.gperf" +#line 33 "accessor_class_list.gperf" {"change_scanning_direction", &grib_accessor_class_change_scanning_direction}, {""}, {""}, {""}, {""}, {""}, -#line 33 "accessor_class_list.gperf" +#line 32 "accessor_class_list.gperf" {"change_alternative_row_scanning", &grib_accessor_class_change_alternative_row_scanning}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 78 "accessor_class_list.gperf" - {"decimal_precision", &grib_accessor_class_decimal_precision}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 43 "accessor_class_list.gperf" - {"count_file", &grib_accessor_class_count_file}, - {""}, -#line 37 "accessor_class_list.gperf" - {"codeflag", &grib_accessor_class_codeflag}, - {""}, {""}, -#line 164 "accessor_class_list.gperf" - {"octahedral_gaussian", &grib_accessor_class_octahedral_gaussian}, {""}, -#line 220 "accessor_class_list.gperf" - {"unpack_bufr_values", &grib_accessor_class_unpack_bufr_values}, - {""}, {""}, {""}, {""}, {""}, -#line 98 "accessor_class_list.gperf" +#line 97 "accessor_class_list.gperf" {"g1monthlydate", &grib_accessor_class_g1monthlydate}, - {""}, {""}, {""}, -#line 96 "accessor_class_list.gperf" - {"g1fcperiod", &grib_accessor_class_g1fcperiod}, - {""}, {""}, {""}, {""}, {""}, -#line 11 "accessor_class_list.gperf" - {"abstract_vector", &grib_accessor_class_abstract_vector}, {""}, {""}, -#line 88 "accessor_class_list.gperf" - {"g1_half_byte_codeflag", &grib_accessor_class_g1_half_byte_codeflag}, +#line 101 "accessor_class_list.gperf" + {"g1verificationdate", &grib_accessor_class_g1verificationdate}, +#line 167 "accessor_class_list.gperf" + {"pack_bufr_values", &grib_accessor_class_pack_bufr_values}, {""}, {""}, -#line 128 "accessor_class_list.gperf" - {"ifs_param", &grib_accessor_class_ifs_param}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 177 "accessor_class_list.gperf" + {"reference_value_error", &grib_accessor_class_reference_value_error}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, -#line 94 "accessor_class_list.gperf" - {"g1day_of_the_year_date", &grib_accessor_class_g1day_of_the_year_date}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, +#line 163 "accessor_class_list.gperf" + {"octahedral_gaussian", &grib_accessor_class_octahedral_gaussian}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 26 "accessor_class_list.gperf" + {"bufr_extract_subsets", &grib_accessor_class_bufr_extract_subsets}, + {""}, {""}, {""}, {""}, +#line 24 "accessor_class_list.gperf" + {"bufr_extract_area_subsets", &grib_accessor_class_bufr_extract_area_subsets}, + {""}, {""}, {""}, +#line 25 "accessor_class_list.gperf" + {"bufr_extract_datetime_subsets", &grib_accessor_class_bufr_extract_datetime_subsets}, + {""}, {""}, #line 10 "accessor_class_list.gperf" {"abstract_long_vector", &grib_accessor_class_abstract_long_vector}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, +#line 39 "accessor_class_list.gperf" + {"codetable_units", &grib_accessor_class_codetable_units}, {""}, -#line 44 "accessor_class_list.gperf" - {"count_missing", &grib_accessor_class_count_missing}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, -#line 87 "accessor_class_list.gperf" - {"from_scale_factor_scaled_value", &grib_accessor_class_from_scale_factor_scaled_value}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, -#line 35 "accessor_class_list.gperf" - {"check_internal_version", &grib_accessor_class_check_internal_version}, - {""}, -#line 178 "accessor_class_list.gperf" - {"reference_value_error", &grib_accessor_class_reference_value_error}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 93 "accessor_class_list.gperf" + {"g1day_of_the_year_date", &grib_accessor_class_g1day_of_the_year_date}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 102 "accessor_class_list.gperf" - {"g1verificationdate", &grib_accessor_class_g1verificationdate}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 34 "accessor_class_list.gperf" + {"check_internal_version", &grib_accessor_class_check_internal_version}, + {""}, {""}, +#line 43 "accessor_class_list.gperf" + {"count_missing", &grib_accessor_class_count_missing}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, -#line 104 "accessor_class_list.gperf" - {"g2_chemical", &grib_accessor_class_g2_chemical}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -682,13 +666,16 @@ static const struct accessor_class_hash classes[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, -#line 100 "accessor_class_list.gperf" - {"g1number_of_coded_values_sh_simple", &grib_accessor_class_g1number_of_coded_values_sh_simple}, + {""}, {""}, #line 99 "accessor_class_list.gperf" + {"g1number_of_coded_values_sh_simple", &grib_accessor_class_g1number_of_coded_values_sh_simple}, +#line 98 "accessor_class_list.gperf" {"g1number_of_coded_values_sh_complex", &grib_accessor_class_g1number_of_coded_values_sh_complex}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 103 "accessor_class_list.gperf" + {"g2_chemical", &grib_accessor_class_g2_chemical}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -696,10 +683,8 @@ static const struct accessor_class_hash classes[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 97 "accessor_class_list.gperf" + {""}, {""}, {""}, {""}, {""}, +#line 96 "accessor_class_list.gperf" {"g1forecastmonth", &grib_accessor_class_g1forecastmonth} }; @@ -719,5 +704,4 @@ grib_accessor_classes_hash (const char *str, size_t len) #endif return &classes[key]; - } diff --git a/src/grib_accessor_factory.h b/src/grib_accessor_factory.h index c090d3977..3f5495342 100644 --- a/src/grib_accessor_factory.h +++ b/src/grib_accessor_factory.h @@ -9,7 +9,6 @@ { "bits", &grib_accessor_class_bits, }, { "bits_per_value", &grib_accessor_class_bits_per_value, }, { "blob", &grib_accessor_class_blob, }, -{ "box", &grib_accessor_class_box, }, { "budgdate", &grib_accessor_class_budgdate, }, { "bufr_data_array", &grib_accessor_class_bufr_data_array, }, { "bufr_data_element", &grib_accessor_class_bufr_data_element, }, diff --git a/src/grib_accessor_factory_hash_list b/src/grib_accessor_factory_hash_list index 09addab41..7a238c7d2 100644 --- a/src/grib_accessor_factory_hash_list +++ b/src/grib_accessor_factory_hash_list @@ -10,7 +10,6 @@ bitmap, &grib_accessor_class_bitmap bits, &grib_accessor_class_bits bits_per_value, &grib_accessor_class_bits_per_value blob, &grib_accessor_class_blob -box, &grib_accessor_class_box budgdate, &grib_accessor_class_budgdate bufr_data_array, &grib_accessor_class_bufr_data_array bufr_data_element, &grib_accessor_class_bufr_data_element From 7d86e7f606adcc28d1c9b17d511b0966324d39ab Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 21 Jun 2023 11:47:11 +0100 Subject: [PATCH 280/378] Dead code removal: more boxes! --- src/CMakeLists.txt | 5 ---- src/eccodes_prototypes.h | 9 -------- src/grib_api_internal.h | 50 ++++++++++++++++++++-------------------- 3 files changed, 25 insertions(+), 39 deletions(-) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 86cd63d5d..7b8568d46 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -325,9 +325,6 @@ list( APPEND eccodes_src_files grib_expression_class_double.cc grib_expression_class_string.cc grib_expression_class_sub_string.cc - grib_box.cc - grib_box_class.cc - grib_box_class_gen.cc grib_nearest.cc grib_nearest_class.cc grib_nearest_class_gen.cc @@ -363,8 +360,6 @@ list( APPEND eccodes_src_files grib_accessor_factory.h grib_api_internal.h eccodes_prototypes.h - grib_box_class.h - grib_box_factory.h grib_dumper_class.h grib_dumper_factory.h grib_emoslib.h diff --git a/src/eccodes_prototypes.h b/src/eccodes_prototypes.h index db932912d..cb36c732f 100644 --- a/src/eccodes_prototypes.h +++ b/src/eccodes_prototypes.h @@ -1347,15 +1347,6 @@ grib_expression* new_string_expression(grib_context* c, const char* value); /* grib_expression_class_sub_string.cc*/ grib_expression* new_sub_string_expression(grib_context* c, const char* value, size_t start, size_t length); -/* grib_box.cc*/ -int grib_box_init(grib_box* box, grib_handle* h, grib_arguments* args); -void grib_points_delete(grib_points* points); - -/* grib_box_class.cc*/ -grib_box* grib_box_factory(grib_handle* h, grib_arguments* args); - -/* grib_box_class_gen.cc*/ - /* grib_nearest.cc*/ int grib_nearest_find(grib_nearest* nearest, const grib_handle* h, double inlat, double inlon, unsigned long flags, double* outlats, double* outlons, double* values, double* distances, int* indexes, size_t* len); int grib_nearest_init(grib_nearest* i, grib_handle* h, grib_arguments* args); diff --git a/src/grib_api_internal.h b/src/grib_api_internal.h index 8b947819e..57c460c17 100644 --- a/src/grib_api_internal.h +++ b/src/grib_api_internal.h @@ -272,7 +272,7 @@ typedef struct grib_smart_table grib_smart_table; typedef struct grib_accessor grib_accessor; typedef struct grib_iterator_class grib_iterator_class; typedef struct grib_nearest_class grib_nearest_class; -typedef struct grib_box_class grib_box_class; +// typedef struct grib_box_class grib_box_class; typedef struct grib_dumper grib_dumper; typedef struct grib_dumper_class grib_dumper_class; typedef struct grib_dependency grib_dependency; @@ -292,10 +292,10 @@ typedef int (*nearest_find_proc)(grib_nearest* nearest, grib_handle* h, double* distances, int* indexes, size_t* len); typedef int (*nearest_destroy_proc)(grib_nearest* nearest); -typedef void (*box_init_class_proc)(grib_box_class*); -typedef int (*box_destroy_proc)(grib_box*); -typedef int (*box_init_proc)(grib_box*, grib_handle*, grib_arguments*); -typedef grib_points* (*box_get_points_proc)(grib_box*, double, double, double, double, int*); +// typedef void (*box_init_class_proc)(grib_box_class*); +// typedef int (*box_destroy_proc)(grib_box*); +// typedef int (*box_init_proc)(grib_box*, grib_handle*, grib_arguments*); +// typedef grib_points* (*box_get_points_proc)(grib_box*, double, double, double, double, int*); typedef void (*iterator_init_class_proc)(grib_iterator_class*); typedef int (*iterator_init_proc)(grib_iterator* i, grib_handle*, grib_arguments*); @@ -631,17 +631,17 @@ struct grib_nearest_class nearest_find_proc find; }; -struct grib_box_class -{ - grib_box_class** super; - const char* name; - size_t size; - int inited; - box_init_class_proc init_class; - box_init_proc init; - box_destroy_proc destroy; - box_get_points_proc get_points; -}; +// struct grib_box_class +// { +// grib_box_class** super; +// const char* name; +// size_t size; +// int inited; +// box_init_class_proc init_class; +// box_init_proc init; +// box_destroy_proc destroy; +// box_get_points_proc get_points; +// }; /* --------------- */ /* --------------- */ @@ -712,15 +712,15 @@ struct grib_nearest unsigned long flags; }; -struct grib_box -{ - grib_box_class* cclass; - grib_context* context; - grib_arguments* args; - grib_handle* h; - unsigned long flags; - grib_points* points; -}; +// struct grib_box +// { +// grib_box_class* cclass; +// grib_context* context; +// grib_arguments* args; +// grib_handle* h; +// unsigned long flags; +// grib_points* points; +// }; struct grib_dependency { From ccf84034df556013d769cc8c3bed0fe4cae99d4a Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 21 Jun 2023 11:56:35 +0100 Subject: [PATCH 281/378] Dead code removal: all boxes! --- src/{ => deprecated}/box.class | 0 src/{ => deprecated}/grib_box.cc | 0 src/{ => deprecated}/grib_box_class.cc | 0 src/{ => deprecated}/grib_box_class.h | 0 src/{ => deprecated}/grib_box_class_gen.cc | 0 src/{ => deprecated}/grib_box_factory.h | 0 src/grib_api.h | 4 ---- src/grib_api_internal.h | 28 ---------------------- 8 files changed, 32 deletions(-) rename src/{ => deprecated}/box.class (100%) rename src/{ => deprecated}/grib_box.cc (100%) rename src/{ => deprecated}/grib_box_class.cc (100%) rename src/{ => deprecated}/grib_box_class.h (100%) rename src/{ => deprecated}/grib_box_class_gen.cc (100%) rename src/{ => deprecated}/grib_box_factory.h (100%) diff --git a/src/box.class b/src/deprecated/box.class similarity index 100% rename from src/box.class rename to src/deprecated/box.class diff --git a/src/grib_box.cc b/src/deprecated/grib_box.cc similarity index 100% rename from src/grib_box.cc rename to src/deprecated/grib_box.cc diff --git a/src/grib_box_class.cc b/src/deprecated/grib_box_class.cc similarity index 100% rename from src/grib_box_class.cc rename to src/deprecated/grib_box_class.cc diff --git a/src/grib_box_class.h b/src/deprecated/grib_box_class.h similarity index 100% rename from src/grib_box_class.h rename to src/deprecated/grib_box_class.h diff --git a/src/grib_box_class_gen.cc b/src/deprecated/grib_box_class_gen.cc similarity index 100% rename from src/grib_box_class_gen.cc rename to src/deprecated/grib_box_class_gen.cc diff --git a/src/grib_box_factory.h b/src/deprecated/grib_box_factory.h similarity index 100% rename from src/grib_box_factory.h rename to src/deprecated/grib_box_factory.h diff --git a/src/grib_api.h b/src/grib_api.h index b06e854fc..6494acd22 100644 --- a/src/grib_api.h +++ b/src/grib_api.h @@ -204,10 +204,6 @@ typedef struct grib_iterator grib_iterator; */ typedef struct grib_nearest grib_nearest; -/*! Grib box, structure used to crop a box given north/west/south/east boundaries. - \ingroup grib_box -*/ -typedef struct grib_box grib_box; typedef struct grib_points grib_points; /*! Grib keys iterator. Iterator over keys. diff --git a/src/grib_api_internal.h b/src/grib_api_internal.h index 57c460c17..940b3e238 100644 --- a/src/grib_api_internal.h +++ b/src/grib_api_internal.h @@ -272,7 +272,6 @@ typedef struct grib_smart_table grib_smart_table; typedef struct grib_accessor grib_accessor; typedef struct grib_iterator_class grib_iterator_class; typedef struct grib_nearest_class grib_nearest_class; -// typedef struct grib_box_class grib_box_class; typedef struct grib_dumper grib_dumper; typedef struct grib_dumper_class grib_dumper_class; typedef struct grib_dependency grib_dependency; @@ -292,11 +291,6 @@ typedef int (*nearest_find_proc)(grib_nearest* nearest, grib_handle* h, double* distances, int* indexes, size_t* len); typedef int (*nearest_destroy_proc)(grib_nearest* nearest); -// typedef void (*box_init_class_proc)(grib_box_class*); -// typedef int (*box_destroy_proc)(grib_box*); -// typedef int (*box_init_proc)(grib_box*, grib_handle*, grib_arguments*); -// typedef grib_points* (*box_get_points_proc)(grib_box*, double, double, double, double, int*); - typedef void (*iterator_init_class_proc)(grib_iterator_class*); typedef int (*iterator_init_proc)(grib_iterator* i, grib_handle*, grib_arguments*); @@ -631,18 +625,6 @@ struct grib_nearest_class nearest_find_proc find; }; -// struct grib_box_class -// { -// grib_box_class** super; -// const char* name; -// size_t size; -// int inited; -// box_init_class_proc init_class; -// box_init_proc init; -// box_destroy_proc destroy; -// box_get_points_proc get_points; -// }; - /* --------------- */ /* --------------- */ typedef void (*search_all_callback_proc)(grib_accessor*, void* data); @@ -712,16 +694,6 @@ struct grib_nearest unsigned long flags; }; -// struct grib_box -// { -// grib_box_class* cclass; -// grib_context* context; -// grib_arguments* args; -// grib_handle* h; -// unsigned long flags; -// grib_points* points; -// }; - struct grib_dependency { grib_dependency* next; From 651a494f95c579e9346e02fa6e7b82800ea9b9ea Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 21 Jun 2023 13:11:25 +0100 Subject: [PATCH 282/378] Dead code removal: old templates/structs --- src/{ => deprecated}/grib_templates.h | 0 src/grib_api_internal.h | 24 ------------------------ src/grib_bits_any_endian_simple.h | 2 +- src/grib_templates.cc | 2 -- 4 files changed, 1 insertion(+), 27 deletions(-) rename src/{ => deprecated}/grib_templates.h (100%) diff --git a/src/grib_templates.h b/src/deprecated/grib_templates.h similarity index 100% rename from src/grib_templates.h rename to src/deprecated/grib_templates.h diff --git a/src/grib_api_internal.h b/src/grib_api_internal.h index 940b3e238..8b1517f5a 100644 --- a/src/grib_api_internal.h +++ b/src/grib_api_internal.h @@ -1269,30 +1269,6 @@ struct grib_fieldset }; #endif -#if 0 -/* grib db */ -struct grib_db -{ - grib_context* context; - size_t size; - size_t fields_array_size; - grib_column* columns; - size_t columns_size; - grib_field** fields; -}; - -struct grib_fieldset -{ - grib_context* context; - grib_db* db; - grib_int_array* filter; - grib_int_array* order; - size_t size; - grib_query* query; - long current; -}; -#endif - /* concept index structures */ typedef struct grib_concept_index_key grib_concept_index_key; diff --git a/src/grib_bits_any_endian_simple.h b/src/grib_bits_any_endian_simple.h index 93ed509a5..6a628e515 100644 --- a/src/grib_bits_any_endian_simple.h +++ b/src/grib_bits_any_endian_simple.h @@ -27,7 +27,7 @@ int grib_decode_array(const unsigned char* p, long* bitp, long bitsPerValue, unsigned long lvalue = 0; T x; -#if 0 +#ifdef SLOW_OLD_CODE /* slow reference code */ int j=0; for(i=0; i < n_vals; i++) { diff --git a/src/grib_templates.cc b/src/grib_templates.cc index 24648d61f..8a76900c9 100644 --- a/src/grib_templates.cc +++ b/src/grib_templates.cc @@ -26,8 +26,6 @@ typedef struct grib_templates { size_t size; } grib_templates; -#include "grib_templates.h" - #define NUMBER(x) (sizeof(x) / sizeof(x[0])) grib_handle* grib_internal_sample(grib_context* c,const char* name) From 8858b0f437f488afbd7b587fcc8a1e8894ab88f4 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 21 Jun 2023 13:30:25 +0100 Subject: [PATCH 283/378] cpplint warnings --- src/bufr_util.cc | 2 +- src/minmax_val.cc | 27 ++++++++++++--------------- 2 files changed, 13 insertions(+), 16 deletions(-) diff --git a/src/bufr_util.cc b/src/bufr_util.cc index 3a81a3ef8..b1eb90b33 100644 --- a/src/bufr_util.cc +++ b/src/bufr_util.cc @@ -784,7 +784,7 @@ static const char* codes_bufr_header_get_centre_name(long edition, long centre_c } #if defined(BUFR_PROCESS_CODE_TABLE) -// TODO: Not efficient as it opens the code table every time +// TODO(masn): Not efficient as it opens the code table every time static char* codes_bufr_header_get_centre_name(long edition, long centre_code) { char full_path[2014] = {0,}; diff --git a/src/minmax_val.cc b/src/minmax_val.cc index 097747991..4cf1e8117 100644 --- a/src/minmax_val.cc +++ b/src/minmax_val.cc @@ -8,6 +8,9 @@ * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. */ +#include +#include +#include #ifdef __PGI #undef __AVX__ @@ -20,18 +23,12 @@ #endif #ifdef __AVX__ -#include -#include -#include #include #ifdef _GET_X86_COUNTER #include #endif #else #ifdef __SSE2__ -#include -#include -#include #include #ifdef _GET_X86_COUNTER #include @@ -229,7 +226,7 @@ static void minmax_val(const double* restrict data, long datasize, double* fmin, #else #ifdef _ARCH_PWR6 -#define __UNROLL_DEPTH_1 6 +#define kUNROLL_DEPTH_1 6 /* to allow pipelining we have to unroll */ @@ -238,18 +235,18 @@ static void minmax_val(const double* restrict data, long datasize, double* fmin, #endif { long i, j; - long residual = datasize % __UNROLL_DEPTH_1; + long residual = datasize % kUNROLL_DEPTH_1; long ofs = datasize - residual; - double dmin[__UNROLL_DEPTH_1]; - double dmax[__UNROLL_DEPTH_1]; + double dmin[kUNROLL_DEPTH_1]; + double dmax[kUNROLL_DEPTH_1]; - for (j = 0; j < __UNROLL_DEPTH_1; j++) { + for (j = 0; j < kUNROLL_DEPTH_1; j++) { dmin[j] = data[0]; dmax[j] = data[0]; } - for (i = 0; i < datasize - residual; i += __UNROLL_DEPTH_1) { - for (j = 0; j < __UNROLL_DEPTH_1; j++) { + for (i = 0; i < datasize - residual; i += kUNROLL_DEPTH_1) { + for (j = 0; j < kUNROLL_DEPTH_1; j++) { dmin[j] = __fsel(dmin[j] - data[i + j], data[i + j], dmin[j]); dmax[j] = __fsel(data[i + j] - dmax[j], data[i + j], dmax[j]); } @@ -260,7 +257,7 @@ static void minmax_val(const double* restrict data, long datasize, double* fmin, dmax[j] = __fsel(data[ofs + j] - dmax[j], data[ofs + j], dmax[j]); } - for (j = 0; j < __UNROLL_DEPTH_1; j++) { + for (j = 0; j < kUNROLL_DEPTH_1; j++) { *fmin = __fsel(*fmin - dmin[j], dmin[j], *fmin); *fmax = __fsel(dmax[j] - *fmax, dmax[j], *fmax); } @@ -269,7 +266,7 @@ static void minmax_val(const double* restrict data, long datasize, double* fmin, hpmStop(1); #endif -#undef __UNROLL_DEPTH_1 +#undef kUNROLL_DEPTH_1 #else #ifdef _GET_IBM_COUNTER From a8983f5e66ef966063b4848cdb55c05e36806250 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 21 Jun 2023 13:45:05 +0100 Subject: [PATCH 284/378] Dead code removal --- src/grib_accessor_class_concept.cc | 126 ++++++++++---------- src/grib_accessor_class_forward.cc | 19 ++- src/grib_accessor_class_latlon_increment.cc | 19 --- src/grib_index.cc | 2 +- src/grib_trie_with_rank.cc | 2 +- 5 files changed, 70 insertions(+), 98 deletions(-) diff --git a/src/grib_accessor_class_concept.cc b/src/grib_accessor_class_concept.cc index 18c65db23..1238081ce 100644 --- a/src/grib_accessor_class_concept.cc +++ b/src/grib_accessor_class_concept.cc @@ -455,10 +455,10 @@ static int pack_long(grib_accessor* a, const long* val, size_t* len) char buf[80]; size_t s; snprintf(buf, sizeof(buf), "%ld", *val); -#if 0 - if(*len > 1) - return GRIB_NOT_IMPLEMENTED; -#endif + + //if(*len > 1) + // return GRIB_NOT_IMPLEMENTED; + s = strlen(buf) + 1; return pack_string(a, buf, &s); } @@ -589,62 +589,56 @@ static int get_native_type(grib_accessor* a) static void destroy(grib_context* c, grib_accessor* a) { - /* - * grib_accessor_concept *self = (grib_accessor_concept*)a; - * grib_context_free(c,self->cval); - */ + //grib_accessor_concept *self = (grib_accessor_concept*)a; + //grib_context_free(c,self->cval); } -#if 0 -static int is_local_ecmwf_grib2_param_key(grib_accessor* a, long edition, long centre) -{ - if (edition == 2 && centre == 98) { - if (a->parent->owner && a->parent->owner->name && strcmp(a->parent->owner->name, "parameters") == 0) - return 1; - } - return 0; -} -#endif - -#if 0 -/* Try to get the name, shortName, units etc for a GRIB2 message with - * local ECMWF coding i.e. discipline=192 etc - */ -static const char* get_ECMWF_local_parameter(grib_accessor* a, grib_handle* h) -{ - int err = 0; - const char* key_name = a->name; /*this is the key whose value we want*/ - long edition, centre; - if (h->product_kind != PRODUCT_GRIB) - return NULL; - err = grib_get_long(h, "centre", ¢re); - if (err) - return NULL; - err = grib_get_long(h, "edition", &edition); - if (err) - return NULL; - if (is_local_ecmwf_grib2_param_key(a, edition, centre)) { - /* Must be one of: 'name', 'shortName', 'units', 'cfName' etc */ - grib_accessor* a2 = NULL; - const long pid_guess = guess_paramId(h); - if (pid_guess == -1) - return NULL; - - /* Change the paramId so we can get the other string key*/ - err = grib_set_long(h, "paramId", pid_guess); - if (err) - return NULL; - /* Get the string value of key. Do not call grib_get_string() to avoid - * dangers of infinite recursion as that calls unpack_string()! - */ - a2 = grib_find_accessor(h, key_name); - if (!a2) - return NULL; - return concept_evaluate(a2); - } - return NULL; -} -#endif +// static int is_local_ecmwf_grib2_param_key(grib_accessor* a, long edition, long centre) +// { +// if (edition == 2 && centre == 98) { +// if (a->parent->owner && a->parent->owner->name && strcmp(a->parent->owner->name, "parameters") == 0) +// return 1; +// } +// return 0; +// } + +// /* Try to get the name, shortName, units etc for a GRIB2 message with +// * local ECMWF coding i.e. discipline=192 etc +// */ +// static const char* get_ECMWF_local_parameter(grib_accessor* a, grib_handle* h) +// { +// int err = 0; +// const char* key_name = a->name; /*this is the key whose value we want*/ +// long edition, centre; +// if (h->product_kind != PRODUCT_GRIB) +// return NULL; +// err = grib_get_long(h, "centre", ¢re); +// if (err) +// return NULL; +// err = grib_get_long(h, "edition", &edition); +// if (err) +// return NULL; +// if (is_local_ecmwf_grib2_param_key(a, edition, centre)) { +// /* Must be one of: 'name', 'shortName', 'units', 'cfName' etc */ +// grib_accessor* a2 = NULL; +// const long pid_guess = guess_paramId(h); +// if (pid_guess == -1) +// return NULL; + +// /* Change the paramId so we can get the other string key*/ +// err = grib_set_long(h, "paramId", pid_guess); +// if (err) +// return NULL; +// /* Get the string value of key. Do not call grib_get_string() to avoid +// * dangers of infinite recursion as that calls unpack_string()! +// */ +// a2 = grib_find_accessor(h, key_name); +// if (!a2) +// return NULL; +// return concept_evaluate(a2); +// } +// return NULL; +// } static int unpack_string(grib_accessor* a, char* val, size_t* len) { @@ -669,14 +663,14 @@ static int unpack_string(grib_accessor* a, char* val, size_t* len) } strcpy(val, p); /* NOLINT: CWE-119 clang-analyzer-security.insecureAPI.strcpy */ *len = slen; -#if 0 - if (a->context->debug==1) { - int err = 0; - char result[1024] = {0,}; - err = get_concept_condition_string(grib_handle_of_accessor(a), a->name, val, result); - if (!err) fprintf(stderr, "ECCODES DEBUG concept name=%s, value=%s, conditions=%s\n", a->name, val, result); - } -#endif + +// if (a->context->debug==1) { +// int err = 0; +// char result[1024] = {0,}; +// err = get_concept_condition_string(grib_handle_of_accessor(a), a->name, val, result); +// if (!err) fprintf(stderr, "ECCODES DEBUG concept name=%s, value=%s, conditions=%s\n", a->name, val, result); +// } + return GRIB_SUCCESS; } diff --git a/src/grib_accessor_class_forward.cc b/src/grib_accessor_class_forward.cc index bd4033084..72a494ae6 100644 --- a/src/grib_accessor_class_forward.cc +++ b/src/grib_accessor_class_forward.cc @@ -105,15 +105,12 @@ grib_accessor_class* grib_accessor_class_forward = &_grib_accessor_class_forward static void dump(grib_accessor* a, grib_dumper* dumper) { -#if 0 - /* grib_accessor_forward* self = (grib_accessor_forward*)a; */ - grib_accessor *target = grib_find_accessor(grib_handle_of_accessor(a),a->alias); - if(target) { - grib_dump_label(dumper,a,"is:"); - dumper->depth += 2; - grib_accessor_dump(target, dumper); - dumper->depth -= 2; - } - else grib_dump_label(dumper,a," undefined "); -#endif + // grib_accessor *target = grib_find_accessor(grib_handle_of_accessor(a),a->alias); + // if(target) { + // grib_dump_label(dumper,a,"is:"); + // dumper->depth += 2; + // grib_accessor_dump(target, dumper); + // dumper->depth -= 2; + // } + // else grib_dump_label(dumper,a," undefined "); } diff --git a/src/grib_accessor_class_latlon_increment.cc b/src/grib_accessor_class_latlon_increment.cc index 7716072bd..faf62d864 100644 --- a/src/grib_accessor_class_latlon_increment.cc +++ b/src/grib_accessor_class_latlon_increment.cc @@ -222,15 +222,6 @@ static int unpack_double(grib_accessor* a, double* val, size_t* len) *val = (double)directionIncrement / angleDivisor * angleMultiplier; } -#if 0 - printf("unpack -- %s=%ld %s=%ld %s=%f %s=%f %s=%ld %s=%f\n", - self->directionIncrementGiven,directionIncrementGiven, - self->directionIncrement,directionIncrement, - self->last,last, - self->first,first, - self->numberOfPoints,numberOfPoints, - a->name,*val); -#endif if (ret == GRIB_SUCCESS) *len = 1; @@ -317,16 +308,6 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) if (ret) return ret; -#if 0 - printf("pack -- %s=%ld %s=%ld \n ------- %s=%f %s=%f \n ------- %s=%ld codedNumberOfPoints=%ld %s=%f\n", - self->directionIncrementGiven,directionIncrementGiven, - self->directionIncrement,directionIncrement, - self->last,last, - self->first,first, - self->numberOfPoints,numberOfPoints, - codedNumberOfPoints, - a->name,*val); -#endif if (ret == GRIB_SUCCESS) *len = 1; diff --git a/src/grib_index.cc b/src/grib_index.cc index 4091f4379..87a9762a0 100644 --- a/src/grib_index.cc +++ b/src/grib_index.cc @@ -1750,7 +1750,7 @@ static void grib_dump_index_keys(FILE* fout, grib_index_key* keys) grib_dump_key_values(fout, keys->values); grib_dump_index_keys(fout, keys->next); } -#if 0 +#ifdef INDEX_DUMPS static void grib_dump_files(FILE* fout, grib_file* files) { if (!files) return; diff --git a/src/grib_trie_with_rank.cc b/src/grib_trie_with_rank.cc index c02e3e35a..eeee669d5 100644 --- a/src/grib_trie_with_rank.cc +++ b/src/grib_trie_with_rank.cc @@ -382,7 +382,7 @@ void grib_trie_with_rank_delete_container(grib_trie_with_rank* t) GRIB_MUTEX_UNLOCK(&mutex); } -#if 0 +#ifdef TRIE_WITH_RANK_OLD static void grib_trie_with_rank_delete_list(grib_context* c,grib_trie_with_rank_list *list) { grib_trie_with_rank_list* next=list; From 075bc925ed5cc2c8d9a985bd09ebe518627044e0 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 21 Jun 2023 13:55:32 +0100 Subject: [PATCH 285/378] Dead code removal --- src/eccodes.h | 1 - src/eccodes_prototypes.h | 1 - src/grib_api.h | 15 --------------- src/grib_value.cc | 17 ----------------- 4 files changed, 34 deletions(-) diff --git a/src/eccodes.h b/src/eccodes.h index 7f8fd1941..f0e670775 100644 --- a/src/eccodes.h +++ b/src/eccodes.h @@ -156,7 +156,6 @@ typedef struct grib_iterator codes_iterator; \struct codes_nearest */ typedef struct grib_nearest codes_nearest; -typedef struct grib_points codes_points; /*! Codes keys iterator. Iterator over keys. \ingroup keys_iterator diff --git a/src/eccodes_prototypes.h b/src/eccodes_prototypes.h index cb36c732f..8078c64a5 100644 --- a/src/eccodes_prototypes.h +++ b/src/eccodes_prototypes.h @@ -1256,7 +1256,6 @@ int grib_get_double_element_set(const grib_handle* h, const char* name, const si int grib_get_float_element_set_internal(grib_handle* h, const char* name, const size_t* index_array, size_t len, float* val_array); int grib_get_float_element_set(const grib_handle* h, const char* name, const size_t* index_array, size_t len, float* val_array); -int grib_points_get_values(grib_handle* h, grib_points* points, double* val); int grib_get_double_elements(const grib_handle* h, const char* name, const int* index_array, long len, double* val_array); int grib_get_float_elements(const grib_handle* h, const char* name, const int* index_array, long len, float* val_array); int grib_get_string_internal(grib_handle* h, const char* name, char* val, size_t* length); diff --git a/src/grib_api.h b/src/grib_api.h index 6494acd22..718a1bb57 100644 --- a/src/grib_api.h +++ b/src/grib_api.h @@ -204,8 +204,6 @@ typedef struct grib_iterator grib_iterator; */ typedef struct grib_nearest grib_nearest; -typedef struct grib_points grib_points; - /*! Grib keys iterator. Iterator over keys. \ingroup keys_iterator */ @@ -1384,19 +1382,6 @@ int grib_read_any_from_file(grib_context* ctx, FILE* f, void* buffer, size_t* le int grib_get_message_offset(const grib_handle* h, off_t* offset); int grib_get_message_size(const grib_handle* h, size_t* size); -struct grib_points -{ - grib_context* context; - double* latitudes; - double* longitudes; - size_t* indexes; - size_t* group_start; - size_t* group_len; - size_t n_groups; - size_t n; - size_t size; -}; - /* --------------------------------------- */ #define GRIB_UTIL_GRID_SPEC_REGULAR_LL 1 diff --git a/src/grib_value.cc b/src/grib_value.cc index 1c557a12d..37caca6b2 100644 --- a/src/grib_value.cc +++ b/src/grib_value.cc @@ -1125,23 +1125,6 @@ int grib_get_float_element_set(const grib_handle* h, const char* name, const siz return GRIB_NOT_FOUND; } -int grib_points_get_values(grib_handle* h, grib_points* points, double* val) -{ - int i, ret; - grib_accessor* a = NULL; - fprintf(stderr, "Warning: The grib_points_get_values function is deprecated and will be removed later."); - - a = grib_find_accessor(h, "values"); - - for (i = 0; i < points->n_groups; i++) { - ret = grib_unpack_double_subarray(a, val, points->group_start[i], points->group_len[i]); - if (ret) - return ret; - val += points->group_len[i]; - } - return GRIB_SUCCESS; -} - int grib_get_double_elements(const grib_handle* h, const char* name, const int* index_array, long len, double* val_array) { double* values = 0; From 14ad8e58c4a36ad5d24559bca5ae1708db5bf51b Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 21 Jun 2023 16:31:40 +0100 Subject: [PATCH 286/378] Dead code removal: dumper class keys --- src/CMakeLists.txt | 1 - src/{ => deprecated}/grib_dumper_class_keys.cc | 0 src/eccodes_prototypes.h | 2 -- src/grib_dumper_class.h | 1 - src/grib_dumper_factory.h | 1 - 5 files changed, 5 deletions(-) rename src/{ => deprecated}/grib_dumper_class_keys.cc (100%) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 7b8568d46..a732029ec 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -273,7 +273,6 @@ list( APPEND eccodes_src_files grib_dumper_class_serialize.cc grib_dumper_class_debug.cc grib_dumper_class_default.cc - grib_dumper_class_keys.cc grib_dumper_class_bufr_encode_C.cc grib_dumper_class_bufr_encode_filter.cc grib_dumper_class_bufr_encode_fortran.cc diff --git a/src/grib_dumper_class_keys.cc b/src/deprecated/grib_dumper_class_keys.cc similarity index 100% rename from src/grib_dumper_class_keys.cc rename to src/deprecated/grib_dumper_class_keys.cc diff --git a/src/eccodes_prototypes.h b/src/eccodes_prototypes.h index 8078c64a5..7b0a10038 100644 --- a/src/eccodes_prototypes.h +++ b/src/eccodes_prototypes.h @@ -886,8 +886,6 @@ void grib_dump_footer(grib_dumper* d, const grib_handle* h); /* grib_dumper_class_default.cc*/ -/* grib_dumper_class_keys.cc*/ - /* grib_dumper_class_bufr_encode_C.cc*/ /* grib_dumper_class_bufr_encode_filter.cc*/ diff --git a/src/grib_dumper_class.h b/src/grib_dumper_class.h index 0728c7395..6ccf0c046 100644 --- a/src/grib_dumper_class.h +++ b/src/grib_dumper_class.h @@ -13,7 +13,6 @@ extern grib_dumper_class* grib_dumper_class_default; extern grib_dumper_class* grib_dumper_class_file; extern grib_dumper_class* grib_dumper_class_grib_encode_C; extern grib_dumper_class* grib_dumper_class_json; -extern grib_dumper_class* grib_dumper_class_keys; extern grib_dumper_class* grib_dumper_class_serialize; extern grib_dumper_class* grib_dumper_class_string; extern grib_dumper_class* grib_dumper_class_wmo; diff --git a/src/grib_dumper_factory.h b/src/grib_dumper_factory.h index a7373a999..0b4135077 100644 --- a/src/grib_dumper_factory.h +++ b/src/grib_dumper_factory.h @@ -12,6 +12,5 @@ { "default", &grib_dumper_class_default, }, { "grib_encode_C", &grib_dumper_class_grib_encode_C, }, { "json", &grib_dumper_class_json, }, -{ "keys", &grib_dumper_class_keys, }, { "serialize", &grib_dumper_class_serialize, }, { "wmo", &grib_dumper_class_wmo, }, From 5ae5b4931dcb9dc1cea1bc8822531e3e8f1556a1 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 21 Jun 2023 18:55:04 +0100 Subject: [PATCH 287/378] Testing: count for pseudo GRIBs --- tests/pseudo_budg.sh | 3 +++ tests/pseudo_diag.sh | 4 ++++ 2 files changed, 7 insertions(+) diff --git a/tests/pseudo_budg.sh b/tests/pseudo_budg.sh index 033b51e07..4c50789d8 100755 --- a/tests/pseudo_budg.sh +++ b/tests/pseudo_budg.sh @@ -56,5 +56,8 @@ cat > $tempRef << EOF EOF diff $tempRef $tempOut +# Count +count=`${tools_dir}/grib_count ${data_dir}/budg` +[ $count -eq 1 ] rm -f $tempRef $tempOut $tempBud diff --git a/tests/pseudo_diag.sh b/tests/pseudo_diag.sh index 6b830be01..50208a45e 100755 --- a/tests/pseudo_diag.sh +++ b/tests/pseudo_diag.sh @@ -25,6 +25,10 @@ sample=$ECCODES_SAMPLES_PATH/diag.tmpl ${tools_dir}/grib_ls $sample > $REDIRECT ${tools_dir}/grib_dump $sample > $REDIRECT +count=`${tools_dir}/grib_count $sample` +[ $count -eq 1 ] + + echo "Check setting integer keys..." # ---------------------------------- echo 'set numberOfIntegers=3; set integerValues={55, 44, 66}; write;' | ${tools_dir}/grib_filter -o $tempOut - $sample From ce116a2e98464b9a2dda48df526fc687c2c1143a Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 21 Jun 2023 18:58:08 +0100 Subject: [PATCH 288/378] ECC-1614: Fix pseudo gribs --- src/grib_io.cc | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/src/grib_io.cc b/src/grib_io.cc index 0dee58dd7..a23b24cc9 100644 --- a/src/grib_io.cc +++ b/src/grib_io.cc @@ -434,7 +434,7 @@ static int read_GRIB(reader* r, int no_alloc) return err; } -static int read_PSEUDO(reader* r, const char* type) +static int read_PSEUDO(reader* r, const char* type, int no_alloc) { unsigned char tmp[32]; /* Should be enough */ size_t sec1len = 0; @@ -480,7 +480,7 @@ static int read_PSEUDO(reader* r, const char* type) /* fprintf(stderr,"%s sec4len=%d i=%d l=%d\n",type,sec4len,i,4+sec1len+sec4len+4); */ Assert(i <= sizeof(tmp)); - return read_the_rest(r, 4 + sec1len + sec4len + 4, tmp, i, /*check7777=*/1, /*no_alloc=*/0); + return read_the_rest(r, 4 + sec1len + sec4len + 4, tmp, i, /*check7777=*/1, no_alloc); } static int read_HDF5_offset(reader* r, int length, unsigned long* v, unsigned char* tmp, int* i) @@ -899,19 +899,19 @@ static int ecc_read_any(reader* r, int no_alloc, int grib_ok, int bufr_ok, int h case BUDG: if (grib_ok) { - err = read_PSEUDO(r, "BUDG"); + err = read_PSEUDO(r, "BUDG", no_alloc); return err == GRIB_END_OF_FILE ? GRIB_PREMATURE_END_OF_FILE : err; /* Premature EOF */ } break; case DIAG: if (grib_ok) { - err = read_PSEUDO(r, "DIAG"); + err = read_PSEUDO(r, "DIAG", no_alloc); return err == GRIB_END_OF_FILE ? GRIB_PREMATURE_END_OF_FILE : err; /* Premature EOF */ } break; case TIDE: if (grib_ok) { - err = read_PSEUDO(r, "TIDE"); + err = read_PSEUDO(r, "TIDE", no_alloc); return err == GRIB_END_OF_FILE ? GRIB_PREMATURE_END_OF_FILE : err; /* Premature EOF */ } break; @@ -1754,11 +1754,9 @@ int grib_count_in_file(grib_context* c, FILE* f, int* n) } } else { - void* mesg = NULL; size_t size = 0; off_t offset = 0; - while ((mesg = wmo_read_any_from_file_malloc(f, 0, &size, &offset, &err)) != NULL && err == GRIB_SUCCESS) { - grib_context_free(c, mesg); + while ((err = wmo_read_any_from_file_fast(f, &size, &offset)) == GRIB_SUCCESS) { (*n)++; } } From b57b79af78abdd855304ff32fde4091a8fdfef8a Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 22 Jun 2023 11:12:54 +0100 Subject: [PATCH 289/378] Compiler warning: Clang [-Werror,-Wimplicit-const-int-float-conversion] --- src/grib_gaussian_reduced.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/grib_gaussian_reduced.cc b/src/grib_gaussian_reduced.cc index 12f616c02..8ba2ed088 100644 --- a/src/grib_gaussian_reduced.cc +++ b/src/grib_gaussian_reduced.cc @@ -115,7 +115,7 @@ static Fraction_type fraction_construct_from_double(double x) x = 1.0 / (x - a); - if (x > LLONG_MAX) { + if (x > (double)LLONG_MAX) { break; } From 713e64eb4a2f4ccf3202a9b3526d50c156844168 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 22 Jun 2023 11:21:39 +0100 Subject: [PATCH 290/378] Dead code removal --- src/grib_accessor.cc | 15 --------- src/grib_accessor_class_bufr_data_array.cc | 33 +++++++++---------- src/grib_accessor_class_g1_section4_length.cc | 32 ++++++++---------- src/grib_accessor_class_padtoeven.cc | 9 ++--- src/grib_rules.cc | 13 -------- 5 files changed, 31 insertions(+), 71 deletions(-) diff --git a/src/grib_accessor.cc b/src/grib_accessor.cc index 568f5c0fe..6fa51d635 100644 --- a/src/grib_accessor.cc +++ b/src/grib_accessor.cc @@ -882,18 +882,3 @@ void grib_accessors_list_delete(grib_context* c, grib_accessors_list* al) al = tmp; } } - - -#if 0 -void grib_print_accessor_flags(const grib_accessor* acc) -{ - const unsigned long f = acc->flags; - if (f & GRIB_ACCESSOR_FLAG_READ_ONLY) printf("READ_ONLY "); - if (f & GRIB_ACCESSOR_FLAG_DUMP) printf("DUMP "); - if (f & GRIB_ACCESSOR_FLAG_EDITION_SPECIFIC) printf("EDITION_SPECIFIC "); - if (f & GRIB_ACCESSOR_FLAG_CAN_BE_MISSING) printf("CAN_BE_MISSING "); - if (f & GRIB_ACCESSOR_FLAG_LOWERCASE) printf("LOWERCASE "); - if (f & GRIB_ACCESSOR_FLAG_HIDDEN) printf("HIDDEN "); - /* TODO: the rest */ -} -#endif diff --git a/src/grib_accessor_class_bufr_data_array.cc b/src/grib_accessor_class_bufr_data_array.cc index 33bc8c68c..4469bad77 100644 --- a/src/grib_accessor_class_bufr_data_array.cc +++ b/src/grib_accessor_class_bufr_data_array.cc @@ -2322,11 +2322,9 @@ static int is_bitmap_start_descriptor(grib_accessors_list* al, int* err) case 237000: /*case 243000:*/ { -#if 0 - long index[1]; - grib_accessor* anindex=grib_accessor_get_attribute(al->accessor,"index"); - grib_unpack_long(anindex,index,&l); -#endif + //long index[1]; + //grib_accessor* anindex=grib_accessor_get_attribute(al->accessor,"index"); + //grib_unpack_long(anindex,index,&l); return 1; } } @@ -2412,20 +2410,19 @@ static grib_accessor* accessor_or_attribute_with_same_name(grib_accessor* a, con return ok; } } -#if 0 -static int get_key_rank(grib_trie* accessorsRank,grib_accessor* a) -{ - int* r=(int*)grib_trie_get(accessorsRank,a->name); - if (r) (*r)++; - else { - r=(int*)grib_context_malloc(a->context,sizeof(int)); - *r=1; - grib_trie_insert(accessorsRank,a->name,(void*)r); - } - return *r; -} -#endif +// static int get_key_rank(grib_trie* accessorsRank,grib_accessor* a) +// { +// int* r=(int*)grib_trie_get(accessorsRank,a->name); +// if (r) (*r)++; +// else { +// r=(int*)grib_context_malloc(a->context,sizeof(int)); +// *r=1; +// grib_trie_insert(accessorsRank,a->name,(void*)r); +// } +// return *r; +// } + static int grib_data_accessors_trie_push(grib_trie_with_rank* accessorsTrie, grib_accessor* a) { return grib_trie_with_rank_insert(accessorsTrie, a->name, a); diff --git a/src/grib_accessor_class_g1_section4_length.cc b/src/grib_accessor_class_g1_section4_length.cc index 878d770ae..3b22c010b 100644 --- a/src/grib_accessor_class_g1_section4_length.cc +++ b/src/grib_accessor_class_g1_section4_length.cc @@ -110,7 +110,6 @@ grib_accessor_class* grib_accessor_class_g1_section4_length = &_grib_accessor_cl /* END_CLASS_IMP */ - static void init(grib_accessor* a, const long len, grib_arguments* args) { grib_accessor_g1_section4_length* self = (grib_accessor_g1_section4_length*)a; @@ -119,36 +118,31 @@ static void init(grib_accessor* a, const long len, grib_arguments* args) static int pack_long(grib_accessor* a, const long* val, size_t* len) { -#if 0 - grib_accessor_class* super = *(a->cclass->super); - - /* Here we assume that the totalLength will be coded AFTER the section4 length, and - the section4 length will be overwritten by the totalLength accessor for large GRIBs */ - - /*printf("UPDATING sec4len %ld\n",*val);*/ - - return super->pack_long(a,val,len); -#endif - /* Do not directly call pack_long on base class */ - /* because in this special case we want to skip the checks. */ - /* So we call the helper function which has an extra argument */ + // Old implementation: + // Here we assume that the totalLength will be coded AFTER the section4 length, and + // the section4 length will be overwritten by the totalLength accessor for large GRIBs + // grib_accessor_class* super = *(a->cclass->super); + // return super->pack_long(a,val,len); + + // Note: Do not directly call pack_long on base class + // because in this special case we want to skip the checks. + // So we call the helper function which has an extra argument return pack_long_unsigned_helper(a, val, len, /*check=*/0); } static int unpack_long(grib_accessor* a, long* val, size_t* len) { grib_accessor_g1_section4_length* self = (grib_accessor_g1_section4_length*)a; - int ret; - - long total_length, sec4_length; + int ret = 0; + long total_length = 0, sec4_length = 0; if ((ret = grib_get_g1_message_size(grib_handle_of_accessor(a), grib_find_accessor(grib_handle_of_accessor(a), self->total_length), a, &total_length, - &sec4_length)) != GRIB_SUCCESS) + &sec4_length)) != GRIB_SUCCESS) { return ret; - + } *val = sec4_length; diff --git a/src/grib_accessor_class_padtoeven.cc b/src/grib_accessor_class_padtoeven.cc index f01e3a0b7..5defb7f96 100644 --- a/src/grib_accessor_class_padtoeven.cc +++ b/src/grib_accessor_class_padtoeven.cc @@ -12,7 +12,6 @@ * Enrico Fucile **************************************/ - #include "grib_api_internal.h" /* This is used by make_class.pl @@ -124,11 +123,9 @@ static size_t preferred_size(grib_accessor* a, int from_handle) grib_get_long_internal(grib_handle_of_accessor(a), self->section_length, &length); if ((length % 2) && from_handle) { -#if 0 - grib_context_log(a->context, - GRIB_LOG_ERROR,"GRIB message has an odd length section (%ld, %s)", - (long)length,a->name); -#endif + // grib_context_log(a->context, + // GRIB_LOG_ERROR,"GRIB message has an odd length section (%ld, %s)", + // (long)length,a->name); return 0; } diff --git a/src/grib_rules.cc b/src/grib_rules.cc index f6b0db81f..3f090d875 100644 --- a/src/grib_rules.cc +++ b/src/grib_rules.cc @@ -18,19 +18,6 @@ grib_rule_entry* grib_new_rule_entry(grib_context* c, const char* name, grib_exp return e; } -#if 0 -/* GCC compiler complains function is defined but not used*/ -static void grib_rule_entry_delete(grib_context* c,grib_rule_entry* e) -{ - if(e) { - grib_context_free_persistent(c,e->name); - grib_rule_entry_delete(c,e->next); - grib_context_free_persistent(c,e); - - } -} -#endif - grib_rule* grib_new_rule(grib_context* c, grib_expression* condition, grib_rule_entry* entries) { grib_rule* r = (grib_rule*)grib_context_malloc_clear_persistent(c, sizeof(grib_rule)); From 5031df4af91bfcaeac7c55e7086774804eb0056b Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 22 Jun 2023 11:44:41 +0100 Subject: [PATCH 291/378] Dead code removal --- ...b_accessor_class_gds_not_present_bitmap.cc | 273 ++++++++++++++++++ src/grib_accessor_class_codeflag.cc | 8 +- ...ib_accessor_class_data_g22order_packing.cc | 2 +- src/grib_accessor_class_gds_is_present.cc | 21 +- ...b_accessor_class_gds_not_present_bitmap.cc | 85 +----- src/grib_accessor_class_long.cc | 11 +- 6 files changed, 306 insertions(+), 94 deletions(-) create mode 100644 src/deprecated/grib_accessor_class_gds_not_present_bitmap.cc diff --git a/src/deprecated/grib_accessor_class_gds_not_present_bitmap.cc b/src/deprecated/grib_accessor_class_gds_not_present_bitmap.cc new file mode 100644 index 000000000..068c31138 --- /dev/null +++ b/src/deprecated/grib_accessor_class_gds_not_present_bitmap.cc @@ -0,0 +1,273 @@ +/* + * (C) Copyright 2005- ECMWF. + * + * This software is licensed under the terms of the Apache Licence Version 2.0 + * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. + * + * In applying this licence, ECMWF does not waive the privileges and immunities granted to it by + * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. + */ + +/****************************** + * Enrico Fucile + *****************************/ + +#include "grib_api_internal.h" + +/* + This is used by make_class.pl + + START_CLASS_DEF + CLASS = accessor + SUPER = grib_accessor_class_gen + IMPLEMENTS = init + IMPLEMENTS = unpack_double + IMPLEMENTS = pack_double + IMPLEMENTS = value_count + MEMBERS=const char* missing_value + MEMBERS=const char* number_of_values + MEMBERS=const char* number_of_points + MEMBERS=const char* latitude_of_first_point + MEMBERS=const char* ni + + END_CLASS_DEF + */ + +/* START_CLASS_IMP */ + +/* + +Don't edit anything between START_CLASS_IMP and END_CLASS_IMP +Instead edit values between START_CLASS_DEF and END_CLASS_DEF +or edit "accessor.class" and rerun ./make_class.pl + +*/ + +static int pack_double(grib_accessor*, const double* val, size_t* len); +static int unpack_double(grib_accessor*, double* val, size_t* len); +static int value_count(grib_accessor*, long*); +static void init(grib_accessor*, const long, grib_arguments*); +//static void init_class(grib_accessor_class*); + +typedef struct grib_accessor_gds_not_present_bitmap +{ + grib_accessor att; + /* Members defined in gen */ + /* Members defined in gds_not_present_bitmap */ + const char* missing_value; + const char* number_of_values; + const char* number_of_points; + const char* latitude_of_first_point; + const char* ni; +} grib_accessor_gds_not_present_bitmap; + +extern grib_accessor_class* grib_accessor_class_gen; + +static grib_accessor_class _grib_accessor_class_gds_not_present_bitmap = { + &grib_accessor_class_gen, /* super */ + "gds_not_present_bitmap", /* name */ + sizeof(grib_accessor_gds_not_present_bitmap), /* size */ + 0, /* inited */ + 0, /* init_class */ + &init, /* init */ + 0, /* post_init */ + 0, /* destroy */ + 0, /* dump */ + 0, /* next_offset */ + 0, /* get length of string */ + &value_count, /* get number of values */ + 0, /* get number of bytes */ + 0, /* get offset to bytes */ + 0, /* get native type */ + 0, /* get sub_section */ + 0, /* pack_missing */ + 0, /* is_missing */ + 0, /* pack_long */ + 0, /* unpack_long */ + &pack_double, /* pack_double */ + 0, /* pack_float */ + &unpack_double, /* unpack_double */ + 0, /* unpack_float */ + 0, /* pack_string */ + 0, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ + 0, /* pack_expression */ + 0, /* notify_change */ + 0, /* update_size */ + 0, /* preferred_size */ + 0, /* resize */ + 0, /* nearest_smaller_value */ + 0, /* next accessor */ + 0, /* compare vs. another accessor */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ + 0, /* unpack a subarray */ + 0, /* clear */ + 0, /* clone accessor */ +}; + + +grib_accessor_class* grib_accessor_class_gds_not_present_bitmap = &_grib_accessor_class_gds_not_present_bitmap; + + +//static void init_class(grib_accessor_class* c) +//{ +// INIT +//} + +/* END_CLASS_IMP */ + +static void init(grib_accessor* a, const long v, grib_arguments* args) +{ + int n = 0; + grib_accessor_gds_not_present_bitmap* self = (grib_accessor_gds_not_present_bitmap*)a; + + self->missing_value = grib_arguments_get_name(grib_handle_of_accessor(a), args, n++); + self->number_of_values = grib_arguments_get_name(grib_handle_of_accessor(a), args, n++); + self->number_of_points = grib_arguments_get_name(grib_handle_of_accessor(a), args, n++); + self->latitude_of_first_point = grib_arguments_get_name(grib_handle_of_accessor(a), args, n++); + self->ni = grib_arguments_get_name(grib_handle_of_accessor(a), args, n++); + a->length = 0; +} + +static int value_count(grib_accessor* a, long* number_of_points) +{ + grib_accessor_gds_not_present_bitmap* self = (grib_accessor_gds_not_present_bitmap*)a; + *number_of_points = 0; + return grib_get_long_internal(grib_handle_of_accessor(a), self->number_of_points, number_of_points); +} + +static int unpack_double(grib_accessor* a, double* val, size_t* len) +{ + grib_accessor_gds_not_present_bitmap* self = (grib_accessor_gds_not_present_bitmap*)a; + + long number_of_points = 0, number_of_values = 0, ni = 0; + long latitude_of_first_point = 0; + size_t i = 0; + size_t n_vals = 0; + long nn = 0; + long missing_value; + + int err = 0; + double* coded_vals = NULL; + err = grib_value_count(a, &nn); + n_vals = nn; + if (err) + return err; + + if ((err = grib_get_long(grib_handle_of_accessor(a), self->number_of_points, &number_of_points)) != GRIB_SUCCESS) + return err; + + if ((err = grib_get_long(grib_handle_of_accessor(a), self->number_of_values, &number_of_values)) != GRIB_SUCCESS) + return err; + + if ((err = grib_get_long(grib_handle_of_accessor(a), self->latitude_of_first_point, &latitude_of_first_point)) != GRIB_SUCCESS) + return err; + + if ((err = grib_get_long(grib_handle_of_accessor(a), self->missing_value, &missing_value)) != GRIB_SUCCESS) + return err; + + if ((err = grib_get_long(grib_handle_of_accessor(a), self->ni, &ni)) != GRIB_SUCCESS) + return err; + + if (*len < number_of_points) { + *len = n_vals; + return GRIB_ARRAY_TOO_SMALL; + } + + if (number_of_values > 0) { + coded_vals = (double*)grib_context_malloc(a->context, number_of_values * sizeof(double)); + + if (coded_vals == NULL) + return GRIB_OUT_OF_MEMORY; + } + + if (latitude_of_first_point == 0) { + for (i = 0; i < number_of_values; i++) + val[i] = 1; + for (i = number_of_values; i < number_of_points; i++) + val[i] = 0; + } + else { + for (i = 0; i < ni - 1; i++) + val[i] = 0; + for (i = ni - 1; i < number_of_points; i++) + val[i] = 1; + } + + *len = number_of_points; + + grib_context_free(a->context, coded_vals); + return err; +} + +#if 0 + +static void grib_set_bit_on( unsigned char* p, long *bitp){ + unsigned char o = 1; + p += (*bitp >> 3); + o <<= 7-((*bitp)%8); + *p |= o; + (*bitp)+=1; +} +static int pack_double(grib_accessor* a, const double* val,size_t *len) +{ + grib_accessor_gds_not_present_bitmap* self = (grib_accessor_gds_not_present_bitmap*)a; + + size_t tlen; + + unsigned char* buf = NULL; + long i; + int err = 0; + long pos = 0; + long bmaplen = 0; + const int bit_padding = 16; + double miss_values = 0; + tlen = ((*len+bit_padding-1)/bit_padding*bit_padding)/8; + + if((err = grib_get_double_internal(grib_handle_of_accessor(a), self->missing_value, &miss_values)) != GRIB_SUCCESS) + { + grib_context_log(a->context, GRIB_LOG_ERROR, "grib_accessor_class_bitmap : pack_double : Cannot unpack %s err=%d ",self->missing_value,err); + return err; + } + + buf = grib_context_malloc_clear(a->context,tlen); + if(!buf) return GRIB_OUT_OF_MEMORY; + pos=0; + for(i=0;i<*len;i++) + { + if (val[i] == miss_values) + pos++; + else{ + bmaplen++; + grib_set_bit_on(buf, &pos); + } + } + + if((err = grib_set_long_internal(grib_handle_of_accessor(a), self->unusedBits,tlen*8 - *len )) != GRIB_SUCCESS) { + grib_context_log(a->context, GRIB_LOG_ERROR, "grib_accessor_class_bitmap : pack_double : Cannot pack %s err=%d ",self->unusedBits,err); + grib_context_free(a->context,buf); + return err; + } + + + grib_buffer_replace(a, buf, tlen,1,1); + + grib_context_free(a->context,buf); + + return GRIB_SUCCESS; +} + +#else + +static int pack_double(grib_accessor* a, const double* val, size_t* len) +{ + return GRIB_NOT_IMPLEMENTED; +} + +#endif diff --git a/src/grib_accessor_class_codeflag.cc b/src/grib_accessor_class_codeflag.cc index 376e84e06..000611f88 100644 --- a/src/grib_accessor_class_codeflag.cc +++ b/src/grib_accessor_class_codeflag.cc @@ -160,11 +160,9 @@ static int grib_get_codeflag(grib_accessor* a, long code, char* codename) return GRIB_FILE_NOT_FOUND; } -#if 0 - strcpy(codename, self->tablename); - strcat(codename,": "); - j = strlen(codename); -#endif + // strcpy(codename, self->tablename); + // strcat(codename,": "); + // j = strlen(codename); while (fgets(line, sizeof(line) - 1, f)) { sscanf(line, "%49s %49s", num, bval); diff --git a/src/grib_accessor_class_data_g22order_packing.cc b/src/grib_accessor_class_data_g22order_packing.cc index 13cb49caa..93a9863d3 100644 --- a/src/grib_accessor_class_data_g22order_packing.cc +++ b/src/grib_accessor_class_data_g22order_packing.cc @@ -390,7 +390,7 @@ static void uint_char(unsigned int i, unsigned char* p) p[1] = (i >> 16) & 255; p[2] = (i >> 8) & 255; p[3] = (i)&255; - } +} static unsigned char* mk_bms(grib_accessor* a, double* data, unsigned int* ndata) { diff --git a/src/grib_accessor_class_gds_is_present.cc b/src/grib_accessor_class_gds_is_present.cc index 2601e3cd5..3addb0a43 100644 --- a/src/grib_accessor_class_gds_is_present.cc +++ b/src/grib_accessor_class_gds_is_present.cc @@ -121,10 +121,11 @@ static void init(grib_accessor* a, const long l, grib_arguments* c) { int n = 0; grib_accessor_gds_is_present* self = (grib_accessor_gds_is_present*)a; - self->gds_present = grib_arguments_get_name(grib_handle_of_accessor(a), c, n++); - self->grid_definition = grib_arguments_get_name(grib_handle_of_accessor(a), c, n++); - self->bitmap_present = grib_arguments_get_name(grib_handle_of_accessor(a), c, n++); - self->values = grib_arguments_get_name(grib_handle_of_accessor(a), c, n++); + grib_handle* h = grib_handle_of_accessor(a); + self->gds_present = grib_arguments_get_name(h, c, n++); + self->grid_definition = grib_arguments_get_name(h, c, n++); + self->bitmap_present = grib_arguments_get_name(h, c, n++); + self->values = grib_arguments_get_name(h, c, n++); a->flags |= GRIB_ACCESSOR_FLAG_FUNCTION; a->flags |= GRIB_ACCESSOR_FLAG_HIDDEN; @@ -133,13 +134,13 @@ static void init(grib_accessor* a, const long l, grib_arguments* c) static int pack_long(grib_accessor* a, const long* val, size_t* len) { - long missing = 255; - int ret = 0; - size_t size = 0; - double* values; - grib_context* c = a->context; - grib_handle* h = grib_handle_of_accessor(a); grib_accessor_gds_is_present* self = (grib_accessor_gds_is_present*)a; + long missing = 255; + int ret = 0; + size_t size = 0; + double* values = NULL; + grib_context* c = a->context; + grib_handle* h = grib_handle_of_accessor(a); if (*val != 1) return GRIB_NOT_IMPLEMENTED; diff --git a/src/grib_accessor_class_gds_not_present_bitmap.cc b/src/grib_accessor_class_gds_not_present_bitmap.cc index 95651ed35..dfee779ab 100644 --- a/src/grib_accessor_class_gds_not_present_bitmap.cc +++ b/src/grib_accessor_class_gds_not_present_bitmap.cc @@ -126,12 +126,13 @@ static void init(grib_accessor* a, const long v, grib_arguments* args) { int n = 0; grib_accessor_gds_not_present_bitmap* self = (grib_accessor_gds_not_present_bitmap*)a; + grib_handle* hand = grib_handle_of_accessor(a); - self->missing_value = grib_arguments_get_name(grib_handle_of_accessor(a), args, n++); - self->number_of_values = grib_arguments_get_name(grib_handle_of_accessor(a), args, n++); - self->number_of_points = grib_arguments_get_name(grib_handle_of_accessor(a), args, n++); - self->latitude_of_first_point = grib_arguments_get_name(grib_handle_of_accessor(a), args, n++); - self->ni = grib_arguments_get_name(grib_handle_of_accessor(a), args, n++); + self->missing_value = grib_arguments_get_name(hand, args, n++); + self->number_of_values = grib_arguments_get_name(hand, args, n++); + self->number_of_points = grib_arguments_get_name(hand, args, n++); + self->latitude_of_first_point = grib_arguments_get_name(hand, args, n++); + self->ni = grib_arguments_get_name(hand, args, n++); a->length = 0; } @@ -145,6 +146,7 @@ static int value_count(grib_accessor* a, long* number_of_points) static int unpack_double(grib_accessor* a, double* val, size_t* len) { grib_accessor_gds_not_present_bitmap* self = (grib_accessor_gds_not_present_bitmap*)a; + grib_handle* hand = grib_handle_of_accessor(a); long number_of_points = 0, number_of_values = 0, ni = 0; long latitude_of_first_point = 0; @@ -160,19 +162,19 @@ static int unpack_double(grib_accessor* a, double* val, size_t* len) if (err) return err; - if ((err = grib_get_long(grib_handle_of_accessor(a), self->number_of_points, &number_of_points)) != GRIB_SUCCESS) + if ((err = grib_get_long(hand, self->number_of_points, &number_of_points)) != GRIB_SUCCESS) return err; - if ((err = grib_get_long(grib_handle_of_accessor(a), self->number_of_values, &number_of_values)) != GRIB_SUCCESS) + if ((err = grib_get_long(hand, self->number_of_values, &number_of_values)) != GRIB_SUCCESS) return err; - if ((err = grib_get_long(grib_handle_of_accessor(a), self->latitude_of_first_point, &latitude_of_first_point)) != GRIB_SUCCESS) + if ((err = grib_get_long(hand, self->latitude_of_first_point, &latitude_of_first_point)) != GRIB_SUCCESS) return err; - if ((err = grib_get_long(grib_handle_of_accessor(a), self->missing_value, &missing_value)) != GRIB_SUCCESS) + if ((err = grib_get_long(hand, self->missing_value, &missing_value)) != GRIB_SUCCESS) return err; - if ((err = grib_get_long(grib_handle_of_accessor(a), self->ni, &ni)) != GRIB_SUCCESS) + if ((err = grib_get_long(hand, self->ni, &ni)) != GRIB_SUCCESS) return err; if (*len < number_of_points) { @@ -206,68 +208,9 @@ static int unpack_double(grib_accessor* a, double* val, size_t* len) return err; } -#if 0 - -static void grib_set_bit_on( unsigned char* p, long *bitp){ - unsigned char o = 1; - p += (*bitp >> 3); - o <<= 7-((*bitp)%8); - *p |= o; - (*bitp)+=1; -} - -static int pack_double(grib_accessor* a, const double* val,size_t *len){ - grib_accessor_gds_not_present_bitmap* self = (grib_accessor_gds_not_present_bitmap*)a; - - size_t tlen; - - unsigned char* buf = NULL; - long i; - int err = 0; - long pos = 0; - long bmaplen = 0; - const int bit_padding = 16; - double miss_values = 0; - tlen = ((*len+bit_padding-1)/bit_padding*bit_padding)/8; - - if((err = grib_get_double_internal(grib_handle_of_accessor(a), self->missing_value, &miss_values)) != GRIB_SUCCESS) - { - grib_context_log(a->context, GRIB_LOG_ERROR, "grib_accessor_class_bitmap : pack_double : Cannot unpack %s err=%d ",self->missing_value,err); - return err; - } - - buf = grib_context_malloc_clear(a->context,tlen); - if(!buf) return GRIB_OUT_OF_MEMORY; - pos=0; - for(i=0;i<*len;i++) - { - if (val[i] == miss_values) - pos++; - else{ - bmaplen++; - grib_set_bit_on(buf, &pos); - } - } - - if((err = grib_set_long_internal(grib_handle_of_accessor(a), self->unusedBits,tlen*8 - *len )) != GRIB_SUCCESS) { - grib_context_log(a->context, GRIB_LOG_ERROR, "grib_accessor_class_bitmap : pack_double : Cannot pack %s err=%d ",self->unusedBits,err); - grib_context_free(a->context,buf); - return err; - } - - - grib_buffer_replace(a, buf, tlen,1,1); - - grib_context_free(a->context,buf); - - return GRIB_SUCCESS; -} - -#else - static int pack_double(grib_accessor* a, const double* val, size_t* len) { + // See deprecated/grib_accessor_class_gds_not_present_bitmap.cc for + // a possible implementation return GRIB_NOT_IMPLEMENTED; } - -#endif diff --git a/src/grib_accessor_class_long.cc b/src/grib_accessor_class_long.cc index 7fbe9e0d6..5f32746e1 100644 --- a/src/grib_accessor_class_long.cc +++ b/src/grib_accessor_class_long.cc @@ -178,7 +178,6 @@ static int is_missing(grib_accessor* a){ Assert( ret == 0); return value == GRIB_MISSING_LONG; } - return 0; } */ @@ -277,12 +276,10 @@ static int pack_string(grib_accessor* a, const char* val, size_t* len) { long v = 0; /* The converted value */ -#if 0 - /* Requires more work e.g. filter */ - if (strcmp_nocase(val, "missing")==0) { - return pack_missing(a); - } -#endif + // Requires more work e.g. filter + //if (strcmp_nocase(val, "missing")==0) { + // return pack_missing(a); + //} if (string_to_long(val, &v) != GRIB_SUCCESS) { grib_context_log(a->context, GRIB_LOG_ERROR, From 3b7adfe33581b95d8086e8f7405e8a82c4268422 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 22 Jun 2023 12:59:17 +0100 Subject: [PATCH 292/378] Testing: offset extraction --- tests/extract_offsets.sh | 31 +++++++++++++++++++++---------- 1 file changed, 21 insertions(+), 10 deletions(-) diff --git a/tests/extract_offsets.sh b/tests/extract_offsets.sh index 243fcc7dd..ecd849384 100755 --- a/tests/extract_offsets.sh +++ b/tests/extract_offsets.sh @@ -11,31 +11,42 @@ . ./include.ctest.sh # Define a common label for all the tmp files -label="bufr_extract_offsets_test" +label="extract_offsets_test" temp1="temp.${label}.1" temp2="temp.${label}.2" +tempLog="temp.${label}.log" echo "Multi-message BUFR..." # --------------------------- input=${data_dir}/bufr/aeolus_wmo_26.bufr $EXEC ${test_dir}/extract_offsets $input > $temp1 -${tools_dir}/bufr_get -p offset:i $input > $temp2 +${tools_dir}/bufr_get -p offset:i $input > $temp2 diff $temp1 $temp2 -echo "Multi-message GRIB..." +echo "Multi-message GRIBs..." # -------------------------- -input=${data_dir}/mixed.grib -$EXEC ${test_dir}/extract_offsets $input > $temp1 -${tools_dir}/grib_get -p offset:i $input > $temp2 -diff $temp1 $temp2 - +inputs="${data_dir}/mixed.grib ${data_dir}/test.grib1 ${data_dir}/v.grib2" +for input in $inputs; do + $EXEC ${test_dir}/extract_offsets $input > $temp1 + ${tools_dir}/grib_get -p offset:i $input > $temp2 + diff $temp1 $temp2 +done echo "Test with invalid inputs..." # --------------------------------- set +e -$EXEC ${test_dir}/extract_offsets ${data_dir} +$EXEC ${test_dir}/extract_offsets ${data_dir} > $tempLog 2>&1 +status=$? +set -e +[ $status -ne 0 ] +grep -q "Input output problem" $tempLog + +set +e +$EXEC ${test_dir}/extract_offsets ${data_dir}/bad.grib > $tempLog 2>&1 status=$? set -e [ $status -ne 0 ] +grep -q "Wrong message length" $tempLog -rm -f $temp1 $temp2 +# Clean up +rm -f $temp1 $temp2 $tempLog From 9fb62bb84a017f27479115657e179526b2aa4e07 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 22 Jun 2023 13:00:00 +0100 Subject: [PATCH 293/378] ECC-1614: offset extraction --- src/grib_io.cc | 47 ++++++++++++++++------------------------------- 1 file changed, 16 insertions(+), 31 deletions(-) diff --git a/src/grib_io.cc b/src/grib_io.cc index a23b24cc9..32f007b68 100644 --- a/src/grib_io.cc +++ b/src/grib_io.cc @@ -1783,15 +1783,15 @@ int grib_count_in_filename(grib_context* c, const char* filename, int* n) return err; } -typedef void* (*decoder_proc)(FILE* f, int headers_only, size_t* size, off_t* offset, int* err); +typedef int (*decoder_proc)(FILE* f, size_t* size, off_t* offset); static decoder_proc get_reader_for_product(ProductKind product) { decoder_proc decoder = NULL; - if (product == PRODUCT_GRIB) decoder = &wmo_read_grib_from_file_malloc; - else if (product == PRODUCT_BUFR) decoder = &wmo_read_bufr_from_file_malloc; - else if (product == PRODUCT_GTS) decoder = &wmo_read_gts_from_file_malloc; - else if (product == PRODUCT_ANY) decoder = &wmo_read_any_from_file_malloc; + if (product == PRODUCT_GRIB) decoder = &wmo_read_grib_from_file_fast; + else if (product == PRODUCT_BUFR) decoder = &wmo_read_bufr_from_file_fast; + else if (product == PRODUCT_GTS) decoder = &wmo_read_gts_from_file_fast; + else if (product == PRODUCT_ANY) decoder = &wmo_read_any_from_file_fast; return decoder; } @@ -1805,20 +1805,18 @@ static int count_product_in_file(grib_context* c, FILE* f, ProductKind product, decoder = get_reader_for_product(product); if (!decoder) { - grib_context_log(c, GRIB_LOG_ERROR, "count_product_in_file: not supported for given product"); + grib_context_log(c, GRIB_LOG_ERROR, "%s: Not supported for given product", __func__); return GRIB_INVALID_ARGUMENT; } if (c->multi_support_on && product == PRODUCT_GRIB) { - grib_context_log(c, GRIB_LOG_ERROR, "count_product_in_file: Multi-field GRIBs not supported"); + grib_context_log(c, GRIB_LOG_ERROR, "%s: Multi-field GRIBs not supported", __func__); err = GRIB_NOT_IMPLEMENTED; } else { - void* mesg = NULL; size_t size = 0; off_t offset = 0; - while ((mesg = decoder(f, 0, &size, &offset, &err)) != NULL && err == GRIB_SUCCESS) { - grib_context_free(c, mesg); + while ((err = decoder(f, &size, &offset)) == GRIB_SUCCESS) { (*count)++; } rewind(f); @@ -1830,7 +1828,6 @@ static int count_product_in_file(grib_context* c, FILE* f, ProductKind product, int codes_extract_offsets_malloc(grib_context* c, const char* filename, ProductKind product, off_t** offsets, int* length, int strict_mode) { int err = 0; - void* mesg = NULL; size_t size = 0; off_t offset = 0; int num_messages = 0, i = 0; @@ -1839,26 +1836,26 @@ int codes_extract_offsets_malloc(grib_context* c, const char* filename, ProductK decoder = get_reader_for_product(product); if (!decoder) { - grib_context_log(c, GRIB_LOG_ERROR, "codes_extract_offsets_malloc: not supported for given product"); + grib_context_log(c, GRIB_LOG_ERROR, "%s: Not supported for given product", __func__); return GRIB_INVALID_ARGUMENT; } if (!c) c = grib_context_get_default(); f = fopen(filename, "rb"); if (!f) { - grib_context_log(c, GRIB_LOG_ERROR, "codes_extract_offsets_malloc: Unable to read file \"%s\"", filename); + grib_context_log(c, GRIB_LOG_ERROR, "%s: Unable to read file \"%s\"", __func__, filename); perror(filename); return GRIB_IO_PROBLEM; } err = count_product_in_file(c, f, product, &num_messages); if (err) { - grib_context_log(c, GRIB_LOG_ERROR, "codes_extract_offsets_malloc: Unable to count messages"); + grib_context_log(c, GRIB_LOG_ERROR, "%s: Unable to count messages (%s)", __func__, grib_get_error_message(err)); fclose(f); return err; } *length = num_messages; if (num_messages == 0) { - grib_context_log(c, GRIB_LOG_ERROR, "codes_extract_offsets_malloc: No messages in file"); + grib_context_log(c, GRIB_LOG_ERROR, "%s: No messages in file", __func__); fclose(f); return GRIB_INVALID_MESSAGE; } @@ -1873,28 +1870,16 @@ int codes_extract_offsets_malloc(grib_context* c, const char* filename, ProductK if (i >= num_messages) break; - mesg = decoder(f, 0, &size, &offset, &err); - if (mesg != NULL && err == 0) { + err = decoder(f, &size, &offset); + if (!err) { (*offsets)[i] = offset; - grib_context_free(c, mesg); } - if (mesg && err) { - if (strict_mode) { - grib_context_free(c, mesg); + else { + if (strict_mode && (err != GRIB_END_OF_FILE && err != GRIB_PREMATURE_END_OF_FILE)) { fclose(f); return GRIB_DECODING_ERROR; } } - if (!mesg) { - if (err != GRIB_END_OF_FILE && err != GRIB_PREMATURE_END_OF_FILE) { - /* An error occurred */ - grib_context_log(c, GRIB_LOG_ERROR, "codes_extract_offsets_malloc: Unable to read message"); - if (strict_mode) { - fclose(f); - return GRIB_DECODING_ERROR; - } - } - } ++i; } From e3ea8ecf1ad6d1ac9939b9abb3b8505a5bb58e75 Mon Sep 17 00:00:00 2001 From: Eugen Betke Date: Thu, 22 Jun 2023 12:04:28 +0000 Subject: [PATCH 294/378] ECC-1467: Use grib_power in unpack() --- src/grib_accessor_class_data_ccsds_packing.cc | 4 ++-- src/grib_accessor_class_data_g22order_packing.cc | 4 ++-- src/grib_accessor_class_data_simple_packing.cc | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/grib_accessor_class_data_ccsds_packing.cc b/src/grib_accessor_class_data_ccsds_packing.cc index 0d3858fbd..7b03e3083 100644 --- a/src/grib_accessor_class_data_ccsds_packing.cc +++ b/src/grib_accessor_class_data_ccsds_packing.cc @@ -514,8 +514,8 @@ static int unpack(grib_accessor* a, T* val, size_t* len) return GRIB_SUCCESS; } - bscale = grib_power(binary_scale_factor, 2); - dscale = grib_power(-decimal_scale_factor, 10); + bscale = grib_power(binary_scale_factor, 2); + dscale = grib_power(-decimal_scale_factor, 10); buflen = grib_byte_count(a); buf = (unsigned char*)hand->buffer->data; diff --git a/src/grib_accessor_class_data_g22order_packing.cc b/src/grib_accessor_class_data_g22order_packing.cc index 24d8d687d..f4de10f23 100644 --- a/src/grib_accessor_class_data_g22order_packing.cc +++ b/src/grib_accessor_class_data_g22order_packing.cc @@ -750,8 +750,8 @@ static int unpack(grib_accessor* a, T* val, const size_t* len) // de_spatial_difference (a->context, sec_val, n_vals, orderOfSpatialDifferencing, bias); } - binary_s = (T)grib_power(binary_scale_factor, 2); - decimal_s = (T)grib_power(-decimal_scale_factor, 10); + binary_s = (T)grib_power(binary_scale_factor, 2); + decimal_s = (T)grib_power(-decimal_scale_factor, 10); for (i = 0; i < n_vals; i++) { if (sec_val[i] == LONG_MAX) { diff --git a/src/grib_accessor_class_data_simple_packing.cc b/src/grib_accessor_class_data_simple_packing.cc index 80b632035..9db561ce4 100644 --- a/src/grib_accessor_class_data_simple_packing.cc +++ b/src/grib_accessor_class_data_simple_packing.cc @@ -369,8 +369,8 @@ static int unpack(grib_accessor* a, T* val, size_t* len) return GRIB_SUCCESS; } - s = grib_power(binary_scale_factor, 2); - d = grib_power(-decimal_scale_factor, 10); + s = grib_power(binary_scale_factor, 2); + d = grib_power(-decimal_scale_factor, 10); grib_context_log(a->context, GRIB_LOG_DEBUG, "%s %s: Creating %s, %zu values", cclass_name, __func__, a->name, n_vals); From c3e41cc950df1fc4429b45b7c9209b381573ae9c Mon Sep 17 00:00:00 2001 From: Eugen Betke Date: Thu, 22 Jun 2023 12:12:32 +0000 Subject: [PATCH 295/378] ECC-1467: Use grib_power in unpack() --- ...grib_accessor_class_data_g1second_order_general_packing.cc | 4 ++-- ...b_accessor_class_data_g1second_order_row_by_row_packing.cc | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/grib_accessor_class_data_g1second_order_general_packing.cc b/src/grib_accessor_class_data_g1second_order_general_packing.cc index f0f9f54b3..c0a17dccd 100644 --- a/src/grib_accessor_class_data_g1second_order_general_packing.cc +++ b/src/grib_accessor_class_data_g1second_order_general_packing.cc @@ -288,8 +288,8 @@ static int unpack(grib_accessor* a, T* values, size_t* len) } } - s = grib_power(binary_scale_factor, 2); - d = grib_power(-decimal_scale_factor, 10); + s = grib_power(binary_scale_factor, 2); + d = grib_power(-decimal_scale_factor, 10); for (i = 0; i < numberOfSecondOrderPackedValues; i++) { values[i] = (T)(((X[i] * s) + reference_value) * d); } diff --git a/src/grib_accessor_class_data_g1second_order_row_by_row_packing.cc b/src/grib_accessor_class_data_g1second_order_row_by_row_packing.cc index 19a9df467..f98a048c3 100644 --- a/src/grib_accessor_class_data_g1second_order_row_by_row_packing.cc +++ b/src/grib_accessor_class_data_g1second_order_row_by_row_packing.cc @@ -412,8 +412,8 @@ static int unpack(grib_accessor* a, T* values, size_t* len) k++; } - s = grib_power(binary_scale_factor, 2); - d = grib_power(-decimal_scale_factor, 10); + s = grib_power(binary_scale_factor, 2); + d = grib_power(-decimal_scale_factor, 10); for (i = 0; i < n; i++) { values[i] = (T)(((X[i] * s) + reference_value) * d); } From 07f537a02c8b5e379678fe373517509a479cca03 Mon Sep 17 00:00:00 2001 From: Eugen Betke Date: Thu, 22 Jun 2023 12:24:41 +0000 Subject: [PATCH 296/378] ECC-1467: Use grib_power in pack_double() --- src/grib_accessor_class_data_ccsds_packing.cc | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/grib_accessor_class_data_ccsds_packing.cc b/src/grib_accessor_class_data_ccsds_packing.cc index c7f57608c..5acce2a62 100644 --- a/src/grib_accessor_class_data_ccsds_packing.cc +++ b/src/grib_accessor_class_data_ccsds_packing.cc @@ -346,9 +346,9 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) range = (max - min); unscaled_min = min; unscaled_max = max; - f = (grib_power(bits_per_value, 2) - 1); - minrange = grib_power(-last, 2) * f; - maxrange = grib_power(last, 2) * f; + f = (grib_power(bits_per_value, 2) - 1); + minrange = grib_power(-last, 2) * f; + maxrange = grib_power(last, 2) * f; while (range < minrange) { decimal_scale_factor += 1; From 4cba81667f4af698654b81d0710a3be68930e7cd Mon Sep 17 00:00:00 2001 From: Eugen Betke Date: Thu, 22 Jun 2023 14:09:01 +0000 Subject: [PATCH 297/378] ECC-1467: Rename grid_power<>() to codes_power<>() --- src/eccodes_prototypes.h | 2 +- src/functions.cc | 2 +- src/grib_accessor_class_bufr_data_array.cc | 8 ++-- ...grib_accessor_class_bufr_elements_table.cc | 2 +- ...grib_accessor_class_data_2order_packing.cc | 8 ++-- src/grib_accessor_class_data_ccsds_packing.cc | 16 ++++---- ...rib_accessor_class_data_complex_packing.cc | 14 +++---- ...a_g1second_order_constant_width_packing.cc | 4 +- ...g1second_order_general_extended_packing.cc | 40 +++++++++---------- ...ass_data_g1second_order_general_packing.cc | 4 +- ..._data_g1second_order_row_by_row_packing.cc | 4 +- ...ib_accessor_class_data_g1simple_packing.cc | 4 +- ...ib_accessor_class_data_g22order_packing.cc | 4 +- ...accessor_class_data_g2bifourier_packing.cc | 8 ++-- ...ib_accessor_class_data_g2simple_packing.cc | 4 +- ...ib_accessor_class_data_jpeg2000_packing.cc | 8 ++-- src/grib_accessor_class_data_png_packing.cc | 8 ++-- ..._accessor_class_data_run_length_packing.cc | 2 +- src/grib_accessor_class_data_sh_packed.cc | 4 +- src/grib_accessor_class_data_sh_unpacked.cc | 4 +- ...grib_accessor_class_data_simple_packing.cc | 24 +++++------ ...rib_accessor_class_expanded_descriptors.cc | 2 +- ...essor_class_second_order_bits_per_value.cc | 4 +- ...rib_accessor_class_simple_packing_error.cc | 2 +- src/grib_bits_any_endian.cc | 4 +- src/grib_bufr_descriptor.cc | 2 +- src/grib_header_compute.cc | 2 +- src/grib_optimize_decimal_factor.cc | 20 +++++----- src/grib_scaling.cc | 16 +++++--- src/grib_scaling.h | 4 +- 30 files changed, 118 insertions(+), 112 deletions(-) diff --git a/src/eccodes_prototypes.h b/src/eccodes_prototypes.h index 9944f80e4..db932912d 100644 --- a/src/eccodes_prototypes.h +++ b/src/eccodes_prototypes.h @@ -1191,7 +1191,7 @@ grib_accessor* grib_find_attribute(grib_handle* h, const char* name, const char* grib_accessor* grib_find_accessor_fast(grib_handle* h, const char* name); /* grib_scaling.cc*/ -//double grib_power(long s, long n); +double grib_power(long s, long n); long grib_get_binary_scale_fact(double max, double min, long bpval, int* ret); long grib_get_bits_per_value(double max, double min, long binary_scale_factor); long grib_get_decimal_scale_fact(double max, double min, long bpval, long binary_scale); diff --git a/src/functions.cc b/src/functions.cc index 0f74ec41e..9680d07bd 100644 --- a/src/functions.cc +++ b/src/functions.cc @@ -70,7 +70,7 @@ double grib_op_neg_d(double a) long grib_op_pow(long a, long b) { /* Note: This is actually 'a' to the power 'b' */ - return grib_power(b, a); + return codes_power(b, a); } long grib_op_add(long a, long b) diff --git a/src/grib_accessor_class_bufr_data_array.cc b/src/grib_accessor_class_bufr_data_array.cc index c4d64fb43..aef3ceefd 100644 --- a/src/grib_accessor_class_bufr_data_array.cc +++ b/src/grib_accessor_class_bufr_data_array.cc @@ -803,7 +803,7 @@ static int encode_double_array(grib_context* c, grib_buffer* buff, long* pos, bu modifiedReference = bd->reference; modifiedFactor = bd->factor; - inverseFactor = grib_power(bd->scale, 10); + inverseFactor = codes_power(bd->scale, 10); modifiedWidth = bd->width; err = descriptor_get_min_max(bd, modifiedWidth, modifiedReference, modifiedFactor, &minAllowed, &maxAllowed); @@ -945,10 +945,10 @@ static int encode_double_array(grib_context* c, grib_buffer* buff, long* pos, bu localRange = (max - min) * inverseFactor + 1; localWidth = ceil(log(localRange) / log(2.0)); lval = round(max * inverseFactor) - reference; - allone = grib_power(localWidth, 2) - 1; + allone = codes_power(localWidth, 2) - 1; while (allone <= lval) { localWidth++; - allone = grib_power(localWidth, 2) - 1; + allone = codes_power(localWidth, 2) - 1; } if (localWidth == 1) localWidth++; @@ -3236,7 +3236,7 @@ static int process_elements(grib_accessor* a, int flag, long onlySubset, long st return err; } bd = grib_bufr_descriptor_clone(self->expanded->v[index]); - bd->reference = -grib_power(bd->width, 2); + bd->reference = -codes_power(bd->width, 2); bd->width++; err = codec_element(c, self, iss, buffer, data, &pos, index, bd, elementIndex, dval, sval); diff --git a/src/grib_accessor_class_bufr_elements_table.cc b/src/grib_accessor_class_bufr_elements_table.cc index 320c86f8e..a4d0b1d47 100644 --- a/src/grib_accessor_class_bufr_elements_table.cc +++ b/src/grib_accessor_class_bufr_elements_table.cc @@ -351,7 +351,7 @@ static int bufr_get_from_table(grib_accessor* a, bufr_descriptor* v) /* ECC-985: Scale and reference are often 0 so we can reduce calls to atol */ v->scale = atol_fast(list[5]); - v->factor = grib_power(-v->scale, 10); + v->factor = codes_power(-v->scale, 10); v->reference = atol_fast(list[6]); v->width = atol(list[7]); diff --git a/src/grib_accessor_class_data_2order_packing.cc b/src/grib_accessor_class_data_2order_packing.cc index f21d189e8..a501dbdf1 100644 --- a/src/grib_accessor_class_data_2order_packing.cc +++ b/src/grib_accessor_class_data_2order_packing.cc @@ -622,8 +622,8 @@ static int unpack_double(grib_accessor* a, double* val, size_t* len) if (boustrophedonic) reverse_rows(sec_val, n_vals, Ni, bitmap, bitmap_len); - s = grib_power(binary_scale_factor, 2); - d = grib_power(-decimal_scale_factor, 10); + s = codes_power(binary_scale_factor, 2); + d = codes_power(-decimal_scale_factor, 10); for (i = 0; i < n_vals; i++) val[i] = (double)((((double)sec_val[i]) * s) + reference_value) * d; @@ -765,7 +765,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) /* calculation of integer array */ sec_val = (unsigned long*)grib_context_malloc(a->context, (n_vals) * sizeof(long)); - d = grib_power(decimal_scale_factor, 10); + d = codes_power(decimal_scale_factor, 10); max = val[0]; min = max; for (i = 0; i < n_vals; i++) { @@ -787,7 +787,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) /* the scale factor in Grib 1 is adjusted in gribex, for "normalization purpose" ... ?*/ binary_scale_factor = grib_get_binary_scale_fact(max, reference_value, bits_per_value, &err); - divisor = grib_power(-binary_scale_factor, 2); + divisor = codes_power(-binary_scale_factor, 2); for (i = 0; i < n_vals; i++) diff --git a/src/grib_accessor_class_data_ccsds_packing.cc b/src/grib_accessor_class_data_ccsds_packing.cc index 5acce2a62..596a8b263 100644 --- a/src/grib_accessor_class_data_ccsds_packing.cc +++ b/src/grib_accessor_class_data_ccsds_packing.cc @@ -316,7 +316,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) return err; if (bits_per_value == 0 || (binary_scale_factor == 0 && decimal_scale_factor != 0)) { - d = grib_power(decimal_scale_factor, 10); + d = codes_power(decimal_scale_factor, 10); min *= d; max *= d; @@ -346,9 +346,9 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) range = (max - min); unscaled_min = min; unscaled_max = max; - f = (grib_power(bits_per_value, 2) - 1); - minrange = grib_power(-last, 2) * f; - maxrange = grib_power(last, 2) * f; + f = (codes_power(bits_per_value, 2) - 1); + minrange = codes_power(-last, 2) * f; + maxrange = codes_power(last, 2) * f; while (range < minrange) { decimal_scale_factor += 1; @@ -370,11 +370,11 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) "%s %s: unable to find nearest_smaller_value of %g for %s", cclass_name, __func__, min, self->reference_value); return GRIB_INTERNAL_ERROR; } - d = grib_power(decimal_scale_factor, 10); + d = codes_power(decimal_scale_factor, 10); } binary_scale_factor = grib_get_binary_scale_fact(max, reference_value, bits_per_value, &err); - divisor = grib_power(-binary_scale_factor, 2); + divisor = codes_power(-binary_scale_factor, 2); size_t nbytes = (bits_per_value + 7) / 8; // ECC-1602: use native a data type (4 bytes for uint32_t) for values that require only 3 bytes @@ -566,8 +566,8 @@ static int unpack(grib_accessor* a, T* val, size_t* len) return GRIB_SUCCESS; } - bscale = grib_power(binary_scale_factor, 2); - dscale = grib_power(-decimal_scale_factor, 10); + bscale = codes_power(binary_scale_factor, 2); + dscale = codes_power(-decimal_scale_factor, 10); buflen = grib_byte_count(a); buf = (unsigned char*)hand->buffer->data; diff --git a/src/grib_accessor_class_data_complex_packing.cc b/src/grib_accessor_class_data_complex_packing.cc index 8ead31bd0..06b2bcbb8 100644 --- a/src/grib_accessor_class_data_complex_packing.cc +++ b/src/grib_accessor_class_data_complex_packing.cc @@ -447,7 +447,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) if (pen_j == sub_j) { double* values; - d = grib_power(decimal_scale_factor, 10); + d = codes_power(decimal_scale_factor, 10); if (d) { values = (double*)grib_context_malloc_clear(a->context, sizeof(double) * n_vals); for (i = 0; i < n_vals; i++) @@ -547,10 +547,10 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) "%s: unable to find nearest_smaller_value of %g for %s", cclass_name, min, self->reference_value); return GRIB_INTERNAL_ERROR; } - d = grib_power(+decimal_scale_factor, 10); + d = codes_power(+decimal_scale_factor, 10); } else { - d = grib_power(+decimal_scale_factor, 10); + d = codes_power(+decimal_scale_factor, 10); if (grib_get_nearest_smaller_value(gh, self->reference_value, d * min, &reference_value) != GRIB_SUCCESS) { grib_context_log(gh->context, GRIB_LOG_ERROR, "%s: unable to find nearest_smaller_value of %g for %s", cclass_name, d * min, self->reference_value); @@ -570,7 +570,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) } } } - s = grib_power(-binary_scale_factor, 2); + s = codes_power(-binary_scale_factor, 2); i = 0; @@ -812,7 +812,7 @@ static int unpack(grib_accessor* a, T* val, size_t* len) if (pen_j == sub_j) { n_vals = (pen_j + 1) * (pen_j + 2); - d = grib_power(-decimal_scale_factor, 10); + d = codes_power(-decimal_scale_factor, 10); grib_ieee_decode_array(a->context, buf, n_vals, bytes, val); if (d) { @@ -826,8 +826,8 @@ static int unpack(grib_accessor* a, T* val, size_t* len) lpos = 8 * (packed_offset - offsetdata); - s = grib_power(binary_scale_factor, 2); - d = grib_power(-decimal_scale_factor, 10); + s = codes_power(binary_scale_factor, 2); + d = codes_power(-decimal_scale_factor, 10); scals = (T*)grib_context_malloc(a->context, maxv * sizeof(T)); if (!scals) return GRIB_OUT_OF_MEMORY; diff --git a/src/grib_accessor_class_data_g1second_order_constant_width_packing.cc b/src/grib_accessor_class_data_g1second_order_constant_width_packing.cc index fcd19f261..74a70b3ac 100644 --- a/src/grib_accessor_class_data_g1second_order_constant_width_packing.cc +++ b/src/grib_accessor_class_data_g1second_order_constant_width_packing.cc @@ -299,8 +299,8 @@ static int unpack_double(grib_accessor* a, double* values, size_t* len) printf("XXXXXXX extrabits=%ld pos=%ld\n",extrabits,pos); }*/ - s = grib_power(binary_scale_factor, 2); - d = grib_power(-decimal_scale_factor, 10); + s = codes_power(binary_scale_factor, 2); + d = codes_power(-decimal_scale_factor, 10); for (i = 0; i < numberOfSecondOrderPackedValues; i++) { values[i] = (double)(((X[i] * s) + reference_value) * d); } diff --git a/src/grib_accessor_class_data_g1second_order_general_extended_packing.cc b/src/grib_accessor_class_data_g1second_order_general_extended_packing.cc index f34a3ca4e..7161bdecf 100644 --- a/src/grib_accessor_class_data_g1second_order_general_extended_packing.cc +++ b/src/grib_accessor_class_data_g1second_order_general_extended_packing.cc @@ -532,8 +532,8 @@ static int unpack(grib_accessor* a, double* dvalues, float* fvalues, size_t* len self->dvalues = (double*)grib_context_malloc_clear(a->context, sizeof(double) * numberOfValues); } - double s = grib_power(binary_scale_factor, 2); - double d = grib_power(-decimal_scale_factor, 10); + double s = codes_power(binary_scale_factor, 2); + double d = codes_power(-decimal_scale_factor, 10); for (i = 0; i < numberOfValues; i++) { dvalues[i] = (double)(((X[i] * s) + reference_value) * d); self->dvalues[i] = dvalues[i]; @@ -551,8 +551,8 @@ static int unpack(grib_accessor* a, double* dvalues, float* fvalues, size_t* len self->fvalues = (float*)grib_context_malloc_clear(a->context, sizeof(float) * numberOfValues); } - float s = grib_power(binary_scale_factor, 2); - float d = grib_power(-decimal_scale_factor, 10); + float s = codes_power(binary_scale_factor, 2); + float d = codes_power(-decimal_scale_factor, 10); for (i = 0; i < numberOfValues; i++) { fvalues[i] = (float)(((X[i] * s) + reference_value) * d); self->fvalues[i] = fvalues[i]; @@ -756,7 +756,7 @@ static int pack_double_old(grib_accessor* a, const double* val, size_t *len) if((ret = grib_get_long_internal(handle,self->decimal_scale_factor, &decimal_scale_factor)) != GRIB_SUCCESS) return ret; - decimal = grib_power(decimal_scale_factor,10); + decimal = codes_power(decimal_scale_factor,10); max*=decimal; min*=decimal; @@ -790,7 +790,7 @@ static int pack_double_old(grib_accessor* a, const double* val, size_t *len) GRIB_SUCCESS) return ret; - divisor = grib_power(-binary_scale_factor,2); + divisor = codes_power(-binary_scale_factor,2); X=(long*)grib_context_malloc_clear(a->context,sizeof(long)*numberOfValues); for(i=0;i< numberOfValues;i++){ X[i] = (((val[i]*decimal)-reference_value)*divisor)+0.5; @@ -861,7 +861,7 @@ static int pack_double_old(grib_accessor* a, const double* val, size_t *len) } } groupWidthA=number_of_bits(handle, maxA-minA); - range=(long)grib_power(groupWidthA,2)-1; + range=(long)codes_power(groupWidthA,2)-1; offsetC=count+groupLengthA; if (offsetC==numberOfValues) { @@ -949,7 +949,7 @@ static int pack_double_old(grib_accessor* a, const double* val, size_t *len) if (minA>X[count+i]) minA=X[count+i]; } groupWidthA=number_of_bits(maxA-minA); - range=(long)grib_power(groupWidthA,2)-1; + range=(long)codes_power(groupWidthA,2)-1; groupLengths[numberOfGroups]=groupLengthA; groupWidths[numberOfGroups]=groupWidthA; firstOrderValues[numberOfGroups] = maxA-range > 0 ? maxA-range : 0; @@ -1013,7 +1013,7 @@ static int pack_double_old(grib_accessor* a, const double* val, size_t *len) if (minA>X[count+i]) minA=X[count+i]; } groupWidthA=number_of_bits(maxA-minA); - range=(long)grib_power(groupWidthA,2)-1; + range=(long)codes_power(groupWidthA,2)-1; groupLengths[numberOfGroups]=groupLengthA; groupWidths[numberOfGroups]=groupWidthA; firstOrderValues[numberOfGroups] = maxA-range > 0 ? maxA-range : 0; @@ -1055,7 +1055,7 @@ static int pack_double_old(grib_accessor* a, const double* val, size_t *len) if (min>firstOrderValues[i]) min=firstOrderValues[i]; } widthOfFirstOrderValues=number_of_bits(handle, max-min); - firstOrderValuesMax=(long)grib_power(widthOfFirstOrderValues,2)-1; + firstOrderValuesMax=(long)codes_power(widthOfFirstOrderValues,2)-1; if (numberOfGroups>2) { /* loop through all the groups except the last in reverse order to @@ -1079,7 +1079,7 @@ static int pack_double_old(grib_accessor* a, const double* val, size_t *len) if (min>X[offset+j]) min=X[offset+j]; } groupWidth=number_of_bits(handle, max-min); - range=(long)grib_power(groupWidth,2)-1; + range=(long)codes_power(groupWidth,2)-1; /* width of first order values has to be unchanged.*/ for (j=groupWidth;j(decimal_scale_factor, 10); - divisor = grib_power(-binary_scale_factor, 2); + decimal = codes_power(decimal_scale_factor, 10); + divisor = codes_power(-binary_scale_factor, 2); /*min = min * decimal;*/ /*max = max * decimal;*/ @@ -1410,7 +1410,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) if ((ret = grib_get_long_internal(handle, self->decimal_scale_factor, &decimal_scale_factor)) != GRIB_SUCCESS) return ret; - decimal = grib_power(decimal_scale_factor, 10); + decimal = codes_power(decimal_scale_factor, 10); min = min * decimal; max = max * decimal; @@ -1421,7 +1421,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) } binary_scale_factor = grib_get_binary_scale_fact(max, reference_value, bits_per_value, &ret); - divisor = grib_power(-binary_scale_factor, 2); + divisor = codes_power(-binary_scale_factor, 2); } if ((ret = grib_set_long_internal(handle, self->binary_scale_factor, binary_scale_factor)) != @@ -1515,7 +1515,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) } } groupWidthA = number_of_bits(handle, maxA - minA); - range = (long)grib_power(groupWidthA, 2) - 1; + range = (long)codes_power(groupWidthA, 2) - 1; offsetC = count + groupLengthA; if (offsetC == numberOfValues) { @@ -1608,7 +1608,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) if (minA>X[count+i]) minA=X[count+i]; } groupWidthA=number_of_bits(maxA-minA); - range=(long)grib_power(groupWidthA,2)-1; + range=(long)codes_power(groupWidthA,2)-1; groupLengths[numberOfGroups]=groupLengthA; groupWidths[numberOfGroups]=groupWidthA; firstOrderValues[numberOfGroups] = maxA-range > 0 ? maxA-range : 0; @@ -1673,7 +1673,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) if (minA>X[count+i]) minA=X[count+i]; } groupWidthA=number_of_bits(maxA-minA); - range=(long)grib_power(groupWidthA,2)-1; + range=(long)codes_power(groupWidthA,2)-1; groupLengths[numberOfGroups]=groupLengthA; groupWidths[numberOfGroups]=groupWidthA; firstOrderValues[numberOfGroups] = maxA-range > 0 ? maxA-range : 0; @@ -1717,7 +1717,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) min = firstOrderValues[i]; } widthOfFirstOrderValues = number_of_bits(handle, max - min); - firstOrderValuesMax = (long)grib_power(widthOfFirstOrderValues, 2) - 1; + firstOrderValuesMax = (long)codes_power(widthOfFirstOrderValues, 2) - 1; if (numberOfGroups > 2) { /* loop through all the groups except the last in reverse order to @@ -1745,7 +1745,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) min = X[offset + j]; } groupWidth = number_of_bits(handle, max - min); - range = (long)grib_power(groupWidth, 2) - 1; + range = (long)codes_power(groupWidth, 2) - 1; /* width of first order values has to be unchanged.*/ for (j = groupWidth; j < groupWidths[i]; j++) { diff --git a/src/grib_accessor_class_data_g1second_order_general_packing.cc b/src/grib_accessor_class_data_g1second_order_general_packing.cc index c0a17dccd..190220be5 100644 --- a/src/grib_accessor_class_data_g1second_order_general_packing.cc +++ b/src/grib_accessor_class_data_g1second_order_general_packing.cc @@ -288,8 +288,8 @@ static int unpack(grib_accessor* a, T* values, size_t* len) } } - s = grib_power(binary_scale_factor, 2); - d = grib_power(-decimal_scale_factor, 10); + s = codes_power(binary_scale_factor, 2); + d = codes_power(-decimal_scale_factor, 10); for (i = 0; i < numberOfSecondOrderPackedValues; i++) { values[i] = (T)(((X[i] * s) + reference_value) * d); } diff --git a/src/grib_accessor_class_data_g1second_order_row_by_row_packing.cc b/src/grib_accessor_class_data_g1second_order_row_by_row_packing.cc index f98a048c3..55e699aac 100644 --- a/src/grib_accessor_class_data_g1second_order_row_by_row_packing.cc +++ b/src/grib_accessor_class_data_g1second_order_row_by_row_packing.cc @@ -412,8 +412,8 @@ static int unpack(grib_accessor* a, T* values, size_t* len) k++; } - s = grib_power(binary_scale_factor, 2); - d = grib_power(-decimal_scale_factor, 10); + s = codes_power(binary_scale_factor, 2); + d = codes_power(-decimal_scale_factor, 10); for (i = 0; i < n; i++) { values[i] = (T)(((X[i] * s) + reference_value) * d); } diff --git a/src/grib_accessor_class_data_g1simple_packing.cc b/src/grib_accessor_class_data_g1simple_packing.cc index 4b98368cb..aeaf5f5c8 100644 --- a/src/grib_accessor_class_data_g1simple_packing.cc +++ b/src/grib_accessor_class_data_g1simple_packing.cc @@ -291,8 +291,8 @@ static int pack_double(grib_accessor* a, const double* cval, size_t* len) if ((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->offsetsection, &offsetsection)) != GRIB_SUCCESS) return ret; - decimal = grib_power(decimal_scale_factor, 10); - divisor = grib_power(-binary_scale_factor, 2); + decimal = codes_power(decimal_scale_factor, 10); + divisor = codes_power(-binary_scale_factor, 2); buflen = (((bits_per_value * n_vals) + 7) / 8) * sizeof(unsigned char); if ((buflen + (offsetdata - offsetsection)) % 2) { diff --git a/src/grib_accessor_class_data_g22order_packing.cc b/src/grib_accessor_class_data_g22order_packing.cc index f4de10f23..806197d9a 100644 --- a/src/grib_accessor_class_data_g22order_packing.cc +++ b/src/grib_accessor_class_data_g22order_packing.cc @@ -750,8 +750,8 @@ static int unpack(grib_accessor* a, T* val, const size_t* len) // de_spatial_difference (a->context, sec_val, n_vals, orderOfSpatialDifferencing, bias); } - binary_s = (T)grib_power(binary_scale_factor, 2); - decimal_s = (T)grib_power(-decimal_scale_factor, 10); + binary_s = (T)codes_power(binary_scale_factor, 2); + decimal_s = (T)codes_power(-decimal_scale_factor, 10); for (i = 0; i < n_vals; i++) { if (sec_val[i] == LONG_MAX) { diff --git a/src/grib_accessor_class_data_g2bifourier_packing.cc b/src/grib_accessor_class_data_g2bifourier_packing.cc index 46545dfe6..76980612e 100644 --- a/src/grib_accessor_class_data_g2bifourier_packing.cc +++ b/src/grib_accessor_class_data_g2bifourier_packing.cc @@ -666,8 +666,8 @@ static int unpack_double(grib_accessor* a, double* val, size_t* len) buf = (unsigned char*)gh->buffer->data; buf += grib_byte_offset(a); - s = grib_power(bt->binary_scale_factor, 2); - d = grib_power(-bt->decimal_scale_factor, 10); + s = codes_power(bt->binary_scale_factor, 2); + d = codes_power(-bt->decimal_scale_factor, 10); /* * Decode data @@ -816,8 +816,8 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) if (ret != GRIB_SUCCESS) goto cleanup; - s = grib_power(-bt->binary_scale_factor, 2); - d = grib_power(+bt->decimal_scale_factor, 10); + s = codes_power(-bt->binary_scale_factor, 2); + d = codes_power(+bt->decimal_scale_factor, 10); } else { bt->decimal_scale_factor = 0; diff --git a/src/grib_accessor_class_data_g2simple_packing.cc b/src/grib_accessor_class_data_g2simple_packing.cc index 8347a1549..d3323bbdf 100644 --- a/src/grib_accessor_class_data_g2simple_packing.cc +++ b/src/grib_accessor_class_data_g2simple_packing.cc @@ -245,8 +245,8 @@ static int pack_double(grib_accessor* a, const double* cval, size_t* len) if ((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->decimal_scale_factor, &decimal_scale_factor)) != GRIB_SUCCESS) return ret; - decimal = grib_power(decimal_scale_factor, 10); - divisor = grib_power(-binary_scale_factor, 2); + decimal = codes_power(decimal_scale_factor, 10); + divisor = codes_power(-binary_scale_factor, 2); buflen = (((bits_per_value * n_vals) + 7) / 8) * sizeof(unsigned char); buf = (unsigned char*)grib_context_buffer_malloc_clear(a->context, buflen); diff --git a/src/grib_accessor_class_data_jpeg2000_packing.cc b/src/grib_accessor_class_data_jpeg2000_packing.cc index b3fde5e49..a9d8c4410 100644 --- a/src/grib_accessor_class_data_jpeg2000_packing.cc +++ b/src/grib_accessor_class_data_jpeg2000_packing.cc @@ -272,8 +272,8 @@ static int unpack_double(grib_accessor* a, double* val, size_t* len) self->dirty = 0; - bscale = grib_power(binary_scale_factor, 2); - dscale = grib_power(-decimal_scale_factor, 10); + bscale = codes_power(binary_scale_factor, 2); + dscale = codes_power(-decimal_scale_factor, 10); /* TODO: This should be called upstream */ if (*len < n_vals) @@ -412,8 +412,8 @@ static int pack_double(grib_accessor* a, const double* cval, size_t* len) if ((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->decimal_scale_factor, &decimal_scale_factor)) != GRIB_SUCCESS) return ret; - decimal = grib_power(decimal_scale_factor, 10); - divisor = grib_power(-binary_scale_factor, 2); + decimal = codes_power(decimal_scale_factor, 10); + divisor = codes_power(-binary_scale_factor, 2); simple_packing_size = (((bits_per_value * n_vals) + 7) / 8) * sizeof(unsigned char); buf = (unsigned char*)grib_context_malloc_clear(a->context, simple_packing_size + EXTRA_BUFFER_SIZE); diff --git a/src/grib_accessor_class_data_png_packing.cc b/src/grib_accessor_class_data_png_packing.cc index 29ddcfe88..f8890c237 100644 --- a/src/grib_accessor_class_data_png_packing.cc +++ b/src/grib_accessor_class_data_png_packing.cc @@ -249,8 +249,8 @@ static int unpack_double(grib_accessor* a, double* val, size_t* len) if ((err = grib_get_long_internal(grib_handle_of_accessor(a), self->decimal_scale_factor, &decimal_scale_factor)) != GRIB_SUCCESS) return err; - bscale = grib_power(binary_scale_factor, 2); - dscale = grib_power(-decimal_scale_factor, 10); + bscale = codes_power(binary_scale_factor, 2); + dscale = codes_power(-decimal_scale_factor, 10); /* TODO: This should be called upstream */ if (*len < n_vals) @@ -503,7 +503,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) return GRIB_SUCCESS; } - d = grib_power(decimal_scale_factor, 10); + d = codes_power(decimal_scale_factor, 10); max = val[0]; min = max; @@ -527,7 +527,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) } binary_scale_factor = grib_get_binary_scale_fact(max, reference_value, bits_per_value, &err); - divisor = grib_power(-binary_scale_factor, 2); + divisor = codes_power(-binary_scale_factor, 2); #ifndef PNG_ANYBITS Assert(bits_per_value % 8 == 0); diff --git a/src/grib_accessor_class_data_run_length_packing.cc b/src/grib_accessor_class_data_run_length_packing.cc index d20697e1d..422675438 100644 --- a/src/grib_accessor_class_data_run_length_packing.cc +++ b/src/grib_accessor_class_data_run_length_packing.cc @@ -204,7 +204,7 @@ static int unpack_double(grib_accessor* a, double* val, size_t* len) if (decimal_scale_factor > 127) { decimal_scale_factor = -(decimal_scale_factor - 128); } - level_scale_factor = grib_power(-decimal_scale_factor, 10.0); + level_scale_factor = codes_power(-decimal_scale_factor, 10.0); levels = (double*)grib_context_malloc_clear(a->context, sizeof(double) * (number_of_level_values + 1)); levels[0] = missingValue; for (i = 0; i < number_of_level_values; i++) { diff --git a/src/grib_accessor_class_data_sh_packed.cc b/src/grib_accessor_class_data_sh_packed.cc index d5cdc5ccb..db2f63ce8 100644 --- a/src/grib_accessor_class_data_sh_packed.cc +++ b/src/grib_accessor_class_data_sh_packed.cc @@ -329,8 +329,8 @@ static int unpack_double(grib_accessor* a, double* val, size_t* len) lpos = 8 * (packed_offset - offsetdata); - s = grib_power(binary_scale_factor, 2); - d = grib_power(-decimal_scale_factor, 10); + s = codes_power(binary_scale_factor, 2); + d = codes_power(-decimal_scale_factor, 10); scals = (double*)grib_context_malloc(a->context, maxv * sizeof(double)); Assert(scals); diff --git a/src/grib_accessor_class_data_sh_unpacked.cc b/src/grib_accessor_class_data_sh_unpacked.cc index c0db2fa99..604c3947f 100644 --- a/src/grib_accessor_class_data_sh_unpacked.cc +++ b/src/grib_accessor_class_data_sh_unpacked.cc @@ -308,8 +308,8 @@ static int unpack_double(grib_accessor* a, double* val, size_t* len) lpos = 8 * (packed_offset - offsetdata); - s = grib_power(binary_scale_factor, 2); - d = grib_power(-decimal_scale_factor, 10); + s = codes_power(binary_scale_factor, 2); + d = codes_power(-decimal_scale_factor, 10); scals = (double*)grib_context_malloc(a->context, maxv * sizeof(double)); Assert(scals); diff --git a/src/grib_accessor_class_data_simple_packing.cc b/src/grib_accessor_class_data_simple_packing.cc index 2eaa5a96a..ba5d66131 100644 --- a/src/grib_accessor_class_data_simple_packing.cc +++ b/src/grib_accessor_class_data_simple_packing.cc @@ -236,8 +236,8 @@ static int unpack_double_element(grib_accessor* a, size_t idx, double* val) } Assert(idx < n_vals); - s = grib_power(binary_scale_factor, 2); - d = grib_power(-decimal_scale_factor, 10); + s = codes_power(binary_scale_factor, 2); + d = codes_power(-decimal_scale_factor, 10); grib_context_log(a->context, GRIB_LOG_DEBUG, "%s: %s: creating %s, %ld values (idx=%zu)", @@ -369,8 +369,8 @@ static int unpack(grib_accessor* a, T* val, size_t* len) return GRIB_SUCCESS; } - s = grib_power(binary_scale_factor, 2); - d = grib_power(-decimal_scale_factor, 10); + s = codes_power(binary_scale_factor, 2); + d = codes_power(-decimal_scale_factor, 10); grib_context_log(a->context, GRIB_LOG_DEBUG, "%s %s: Creating %s, %zu values", cclass_name, __func__, a->name, n_vals); @@ -507,8 +507,8 @@ static int _unpack_double(grib_accessor* a, double* val, size_t* len, unsigned c return GRIB_SUCCESS; } - s = grib_power(binary_scale_factor, 2); - d = grib_power(-decimal_scale_factor, 10); + s = codes_power(binary_scale_factor, 2); + d = codes_power(-decimal_scale_factor, 10); grib_context_log(a->context, GRIB_LOG_DEBUG, "%s %s: Creating %s, %zu values", cclass_name, __func__, a->name, n_vals); @@ -744,7 +744,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) /* decimal_scale_factor is given, binary_scale_factor=0 and bits_per_value is computed */ binary_scale_factor = 0; decimal_scale_factor = decimal_scale_factor_get; - decimal = grib_power(decimal_scale_factor, 10); + decimal = codes_power(decimal_scale_factor, 10); min *= decimal; max *= decimal; @@ -790,14 +790,14 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) return err; } else { - /* printf("max=%g reference_value=%g grib_power(-last,2)=%g decimal_scale_factor=%ld bits_per_value=%ld\n", - max,reference_value,grib_power(-last,2),decimal_scale_factor,bits_per_value);*/ + /* printf("max=%g reference_value=%g codes_power(-last,2)=%g decimal_scale_factor=%ld bits_per_value=%ld\n", + max,reference_value,codes_power(-last,2),decimal_scale_factor,bits_per_value);*/ range = (max - min); unscaled_min = min; unscaled_max = max; - f = (grib_power(bits_per_value, 2) - 1); - minrange = grib_power(-last, 2) * f; - maxrange = grib_power(last, 2) * f; + f = (codes_power(bits_per_value, 2) - 1); + minrange = codes_power(-last, 2) * f; + maxrange = codes_power(last, 2) * f; while (range < minrange) { decimal_scale_factor += 1; diff --git a/src/grib_accessor_class_expanded_descriptors.cc b/src/grib_accessor_class_expanded_descriptors.cc index 61e961396..b9fd65e3b 100644 --- a/src/grib_accessor_class_expanded_descriptors.cc +++ b/src/grib_accessor_class_expanded_descriptors.cc @@ -484,7 +484,7 @@ static void __expand(grib_accessor* a, bufr_descriptors_array* unexpanded, bufr_ case 7: if (us->Y) { ccp->extraScale = us->Y; - ccp->referenceFactor = grib_power(us->Y, 10); + ccp->referenceFactor = codes_power(us->Y, 10); ccp->extraWidth = ((10 * us->Y) + 2) / 3; } else { diff --git a/src/grib_accessor_class_second_order_bits_per_value.cc b/src/grib_accessor_class_second_order_bits_per_value.cc index 00d8f9958..5eb4cc27a 100644 --- a/src/grib_accessor_class_second_order_bits_per_value.cc +++ b/src/grib_accessor_class_second_order_bits_per_value.cc @@ -226,8 +226,8 @@ static int unpack_long(grib_accessor* a, long* val, size_t* len) min = values[i]; } - d = grib_power(decimalScaleFactor, 10); - b = grib_power(-binaryScaleFactor, 2); + d = codes_power(decimalScaleFactor, 10); + b = codes_power(-binaryScaleFactor, 2); /* self->bitsPerValue=(long)ceil(log((double)((max-min)*d+1))/log(2.0))-binaryScaleFactor; */ /* See GRIB-540 for why we use ceil */ diff --git a/src/grib_accessor_class_simple_packing_error.cc b/src/grib_accessor_class_simple_packing_error.cc index 50ea5be57..9118b4e59 100644 --- a/src/grib_accessor_class_simple_packing_error.cc +++ b/src/grib_accessor_class_simple_packing_error.cc @@ -167,7 +167,7 @@ static int unpack_double(grib_accessor* a, double* val, size_t* len) Assert(1 == 0); if (bitsPerValue != 0) - *val = (*val + grib_power(binaryScaleFactor, 2)) * grib_power(-decimalScaleFactor, 10) * 0.5; + *val = (*val + codes_power(binaryScaleFactor, 2)) * codes_power(-decimalScaleFactor, 10) * 0.5; if (ret == GRIB_SUCCESS) *len = 1; diff --git a/src/grib_bits_any_endian.cc b/src/grib_bits_any_endian.cc index 5fd706d9f..45992f26a 100644 --- a/src/grib_bits_any_endian.cc +++ b/src/grib_bits_any_endian.cc @@ -392,7 +392,7 @@ int grib_encode_unsigned_longb(unsigned char* p, unsigned long val, long* bitp, } #ifdef DEBUG { - unsigned long maxV = grib_power(nb, 2); + unsigned long maxV = codes_power(nb, 2); if (val > maxV) { fprintf(stderr, "grib_encode_unsigned_longb: Value=%lu, but number of bits=%ld!\n", val, nb); Assert(0); @@ -421,7 +421,7 @@ int grib_encode_size_tb(unsigned char* p, size_t val, long* bitp, long nb) } #ifdef DEBUG { - size_t maxV = grib_power(nb, 2); + size_t maxV = codes_power(nb, 2); if (val > maxV) { fprintf(stderr, "grib_encode_size_tb: Value=%lu, but number of bits=%ld!\n", val, nb); Assert(0); diff --git a/src/grib_bufr_descriptor.cc b/src/grib_bufr_descriptor.cc index 9d8516103..68aa7e290 100644 --- a/src/grib_bufr_descriptor.cc +++ b/src/grib_bufr_descriptor.cc @@ -110,7 +110,7 @@ void grib_bufr_descriptor_set_scale(bufr_descriptor* v, long scale) v->scale = scale; if (scale != 0) v->type = BUFR_DESCRIPTOR_TYPE_DOUBLE; - v->factor = grib_power(-scale, 10); + v->factor = codes_power(-scale, 10); } int grib_bufr_descriptor_can_be_missing(bufr_descriptor* v) diff --git a/src/grib_header_compute.cc b/src/grib_header_compute.cc index 45323fb1c..fab399e43 100644 --- a/src/grib_header_compute.cc +++ b/src/grib_header_compute.cc @@ -48,7 +48,7 @@ static long op_neg(long a) {return -a;} static double op_neg_d(double a) {return -a;} -static long op_pow(long a, long b) {return grib_power(a,b);} +static long op_pow(long a, long b) {return codes_power(a,b);} static long op_add(long a, long b) {return a+b;} static long op_sub(long a, long b) {return a-b;} static long op_div(long a, long b) {return a/b;} diff --git a/src/grib_optimize_decimal_factor.cc b/src/grib_optimize_decimal_factor.cc index 2e31e2c23..342bb974a 100644 --- a/src/grib_optimize_decimal_factor.cc +++ b/src/grib_optimize_decimal_factor.cc @@ -51,9 +51,9 @@ static void factec(int* krep, const double pa, const int knbit, const long kdec, } /* Binary scale factor associated to kdec */ - *ke = floor(log2((pa * grib_power(kdec, 10)) / (grib_power(knbit, 2) - 0.5))) + 1; + *ke = floor(log2((pa * codes_power(kdec, 10)) / (codes_power(knbit, 2) - 0.5))) + 1; /* Encoded value for pa = max - min */ - *knutil = floor(0.5 + pa * grib_power(kdec, 10) * grib_power(-*ke, 2)); + *knutil = floor(0.5 + pa * codes_power(kdec, 10) * codes_power(-*ke, 2)); end: return; @@ -99,14 +99,14 @@ int grib_optimize_decimal_factor(grib_accessor* a, const char* reference_value, xtinyr4 = FLT_MIN; xhuger4 = FLT_MAX; - inbint = grib_power(knbit, 2) - 1; + inbint = codes_power(knbit, 2) - 1; xnbint = (double)inbint; /* Test decimal scale factors; keep the most suitable */ for (jdec = idecmin; jdec <= idecmax; jdec++) { /* Fix a problem in GRIBEX */ if (compat_gribex) - if (pa * grib_power(jdec, 10) <= 1.E-12) + if (pa * codes_power(jdec, 10) <= 1.E-12) continue; /* Check it will be possible to decode reference value with 32bit floats */ @@ -126,7 +126,7 @@ int grib_optimize_decimal_factor(grib_accessor* a, const char* reference_value, /* Check it will be possible to decode the maximum value of the fields using 32bit floats */ if (compat_32bit) - if (pmin * grib_power(jdec, 10) + xnbint * grib_power(ie, 2) >= xhuger4) + if (pmin * codes_power(jdec, 10) + xnbint * codes_power(ie, 2) >= xhuger4) continue; /* GRIB1 demands that the binary scale factor be encoded in a single byte */ @@ -142,8 +142,8 @@ int grib_optimize_decimal_factor(grib_accessor* a, const char* reference_value, } if (inumax > 0) { - double decimal = grib_power(+*kdec, 10); - double divisor = grib_power(-*kbin, 2); + double decimal = codes_power(+*kdec, 10); + double divisor = codes_power(-*kbin, 2); double min = pmin * decimal; long vmin, vmax; if (grib_get_nearest_smaller_value(gh, reference_value, min, ref) != GRIB_SUCCESS) { @@ -165,9 +165,9 @@ int grib_optimize_decimal_factor(grib_accessor* a, const char* reference_value, int last = compat_gribex ? 99 : 127; double min = pmin, max = pmax; double range = max - min; - double f = grib_power(knbit, 2) - 1; - double minrange = grib_power(-last, 2) * f; - double maxrange = grib_power(+last, 2) * f; + double f = codes_power(knbit, 2) - 1; + double minrange = codes_power(-last, 2) * f; + double maxrange = codes_power(+last, 2) * f; double decimal = 1; int err; diff --git a/src/grib_scaling.cc b/src/grib_scaling.cc index e31e4cfb8..29143395d 100644 --- a/src/grib_scaling.cc +++ b/src/grib_scaling.cc @@ -15,6 +15,12 @@ #include "grib_scaling.h" #include "grib_api_internal.h" +// Unfortunately, metkit uses grib_power() (illegal usage of private API) +// As soon as it is fixed, the wrapper below can be deleted +double grib_power(long s, long n) { + codes_power(s, n); +} + long grib_get_binary_scale_fact(double max, double min, long bpval, int* ret) { double range = max - min; @@ -25,14 +31,14 @@ long grib_get_binary_scale_fact(double max, double min, long bpval, int* ret) const size_t ulong_size = sizeof(maxint) * 8; /* See ECC-246 - unsigned long maxint = grib_power(bpval,2) - 1; + unsigned long maxint = codes_power(bpval,2) - 1; double dmaxint=(double)maxint; */ if (bpval >= ulong_size) { *ret = GRIB_OUT_OF_RANGE; /*overflow*/ return 0; } - const double dmaxint = grib_power(bpval, 2) - 1; + const double dmaxint = codes_power(bpval, 2) - 1; maxint = (unsigned long)dmaxint; /* Now it's safe to cast */ *ret = 0; @@ -83,7 +89,7 @@ long grib_get_bits_per_value(double max, double min, long binary_scale_factor) long scale = 0; const long last = 127; /* Depends on edition, should be parameter */ - unsigned long maxint = grib_power(binary_scale_factor, 2) - 1; + unsigned long maxint = codes_power(binary_scale_factor, 2) - 1; double dmaxint = (double)maxint; if (maxint == 0) @@ -127,10 +133,10 @@ long grib_get_decimal_scale_fact(double max, double min, long bpval, long binary long scale = 0; const long last = 127; /* Depends on edition, should be parameter */ - unsigned long maxint = grib_power(bpval, 2) - 1; + unsigned long maxint = codes_power(bpval, 2) - 1; double dmaxint = (double)maxint; - range *= grib_power(-binary_scale, 2); + range *= codes_power(-binary_scale, 2); Assert(bpval >= 1); if (range == 0) diff --git a/src/grib_scaling.h b/src/grib_scaling.h index 4dbd8f6f1..53e3b1d4d 100644 --- a/src/grib_scaling.h +++ b/src/grib_scaling.h @@ -1,10 +1,10 @@ #pragma once -template T grib_power(long s, long n); +template T codes_power(long s, long n); /* Return n to the power of s */ template -T grib_power(long s, long n) +T codes_power(long s, long n) { T divisor = 1.0; if (s == 0) From 2bb0eb04719944069fa7e95470a805aa8e011b69 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 22 Jun 2023 15:21:27 +0100 Subject: [PATCH 298/378] Error messages --- src/bufr_util.cc | 10 +-- src/grib_accessor_class_forward.cc | 116 ----------------------------- 2 files changed, 5 insertions(+), 121 deletions(-) delete mode 100644 src/grib_accessor_class_forward.cc diff --git a/src/bufr_util.cc b/src/bufr_util.cc index b1eb90b33..765942d8f 100644 --- a/src/bufr_util.cc +++ b/src/bufr_util.cc @@ -619,25 +619,25 @@ int codes_bufr_extract_headers_malloc(grib_context* c, const char* filename, cod if (!c) c = grib_context_get_default(); if (path_is_directory(filename)) { - grib_context_log(c, GRIB_LOG_ERROR, "codes_bufr_extract_headers_malloc: \"%s\" is a directory", filename); + grib_context_log(c, GRIB_LOG_ERROR, "%s: \"%s\" is a directory", __func__, filename); return GRIB_IO_PROBLEM; } fp = fopen(filename, "rb"); if (!fp) { - grib_context_log(c, GRIB_LOG_ERROR, "codes_bufr_extract_headers_malloc: Unable to read file \"%s\"", filename); + grib_context_log(c, GRIB_LOG_ERROR, "%s: Unable to read file \"%s\"", __func__, filename); perror(filename); return GRIB_IO_PROBLEM; } err = count_bufr_messages(c, fp, num_messages, strict_mode); if (err) { - grib_context_log(c, GRIB_LOG_ERROR, "codes_bufr_extract_headers_malloc: Unable to count BUFR messages in file \"%s\"", filename); + grib_context_log(c, GRIB_LOG_ERROR, "%s: Unable to count BUFR messages in file \"%s\"", __func__, filename); fclose(fp); return err; } size = *num_messages; if (size == 0) { - grib_context_log(c, GRIB_LOG_ERROR, "codes_bufr_extract_headers_malloc: No BUFR messages in file \"%s\"", filename); + grib_context_log(c, GRIB_LOG_ERROR, "%s: No BUFR messages in file \"%s\"", __func__, filename); return GRIB_INVALID_MESSAGE; } *result = (codes_bufr_header*)calloc(size, sizeof(codes_bufr_header)); @@ -668,7 +668,7 @@ int codes_bufr_extract_headers_malloc(grib_context* c, const char* filename, cod if (!mesg) { if (err != GRIB_END_OF_FILE && err != GRIB_PREMATURE_END_OF_FILE) { // An error occurred - grib_context_log(c, GRIB_LOG_ERROR, "codes_bufr_extract_headers_malloc: Unable to read BUFR message"); + grib_context_log(c, GRIB_LOG_ERROR, "%s: Unable to read BUFR message", __func__); if (strict_mode) { fclose(fp); return GRIB_DECODING_ERROR; diff --git a/src/grib_accessor_class_forward.cc b/src/grib_accessor_class_forward.cc deleted file mode 100644 index 72a494ae6..000000000 --- a/src/grib_accessor_class_forward.cc +++ /dev/null @@ -1,116 +0,0 @@ -/* - * (C) Copyright 2005- ECMWF. - * - * This software is licensed under the terms of the Apache Licence Version 2.0 - * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. - * - * In applying this licence, ECMWF does not waive the privileges and immunities granted to it by - * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. - */ - -#include "grib_api_internal.h" - -/* - This is used by make_class.pl - - START_CLASS_DEF - SUPER= grib_accessor_class_gen - CLASS = accessor - IMPLEMENTS = dump - END_CLASS_DEF - - */ - -/* START_CLASS_IMP */ - -/* - -Don't edit anything between START_CLASS_IMP and END_CLASS_IMP -Instead edit values between START_CLASS_DEF and END_CLASS_DEF -or edit "accessor.class" and rerun ./make_class.pl - -*/ - -static void dump(grib_accessor*, grib_dumper*); -//static void init_class(grib_accessor_class*); - -typedef struct grib_accessor_forward -{ - grib_accessor att; - /* Members defined in gen */ - /* Members defined in forward */ -} grib_accessor_forward; - -extern grib_accessor_class* grib_accessor_class_gen; - -static grib_accessor_class _grib_accessor_class_forward = { - &grib_accessor_class_gen, /* super */ - "forward", /* name */ - sizeof(grib_accessor_forward), /* size */ - 0, /* inited */ - 0, /* init_class */ - 0, /* init */ - 0, /* post_init */ - 0, /* destroy */ - &dump, /* dump */ - 0, /* next_offset */ - 0, /* get length of string */ - 0, /* get number of values */ - 0, /* get number of bytes */ - 0, /* get offset to bytes */ - 0, /* get native type */ - 0, /* get sub_section */ - 0, /* pack_missing */ - 0, /* is_missing */ - 0, /* pack_long */ - 0, /* unpack_long */ - 0, /* pack_double */ - 0, /* pack_float */ - 0, /* unpack_double */ - 0, /* unpack_float */ - 0, /* pack_string */ - 0, /* unpack_string */ - 0, /* pack_string_array */ - 0, /* unpack_string_array */ - 0, /* pack_bytes */ - 0, /* unpack_bytes */ - 0, /* pack_expression */ - 0, /* notify_change */ - 0, /* update_size */ - 0, /* preferred_size */ - 0, /* resize */ - 0, /* nearest_smaller_value */ - 0, /* next accessor */ - 0, /* compare vs. another accessor */ - 0, /* unpack only ith value (double) */ - 0, /* unpack only ith value (float) */ - 0, /* unpack a given set of elements (double) */ - 0, /* unpack a given set of elements (float) */ - 0, /* unpack a subarray */ - 0, /* clear */ - 0, /* clone accessor */ -}; - - -grib_accessor_class* grib_accessor_class_forward = &_grib_accessor_class_forward; - - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - -/* END_CLASS_IMP */ - - -static void dump(grib_accessor* a, grib_dumper* dumper) -{ - // grib_accessor *target = grib_find_accessor(grib_handle_of_accessor(a),a->alias); - // if(target) { - // grib_dump_label(dumper,a,"is:"); - // dumper->depth += 2; - // grib_accessor_dump(target, dumper); - // dumper->depth -= 2; - // } - // else grib_dump_label(dumper,a," undefined "); -} From b84ad2f8734d81afecc00b4c9444dd08c4e7c25c Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 22 Jun 2023 15:21:50 +0100 Subject: [PATCH 299/378] Dead code removal --- src/CMakeLists.txt | 1 - src/eccodes_prototypes.h | 2 - src/grib_accessor_class.h | 1 - src/grib_accessor_classes_hash.cc | 293 ++++++++++++++-------------- src/grib_accessor_factory.h | 1 - src/grib_accessor_factory_hash_list | 1 - 6 files changed, 146 insertions(+), 153 deletions(-) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index a732029ec..1e6301fde 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -137,7 +137,6 @@ list( APPEND eccodes_src_files grib_accessor_class_scale.cc grib_accessor_class_from_scale_factor_scaled_value.cc grib_accessor_class_times.cc - grib_accessor_class_forward.cc grib_accessor_class_g2bitmap_present.cc grib_accessor_class_ibmfloat.cc grib_accessor_class_ieeefloat.cc diff --git a/src/eccodes_prototypes.h b/src/eccodes_prototypes.h index 7b0a10038..78e51e65b 100644 --- a/src/eccodes_prototypes.h +++ b/src/eccodes_prototypes.h @@ -488,8 +488,6 @@ int grib_g1_step_get_steps(grib_accessor* a, long* start, long* theEnd); /* grib_accessor_class_times.cc*/ -/* grib_accessor_class_forward.cc*/ - /* grib_accessor_class_g2bitmap_present.cc*/ /* grib_accessor_class_ibmfloat.cc*/ diff --git a/src/grib_accessor_class.h b/src/grib_accessor_class.h index 8ba1bedb5..6aca52e29 100644 --- a/src/grib_accessor_class.h +++ b/src/grib_accessor_class.h @@ -74,7 +74,6 @@ extern grib_accessor_class* grib_accessor_class_double; extern grib_accessor_class* grib_accessor_class_element; extern grib_accessor_class* grib_accessor_class_evaluate; extern grib_accessor_class* grib_accessor_class_expanded_descriptors; -extern grib_accessor_class* grib_accessor_class_forward; extern grib_accessor_class* grib_accessor_class_from_scale_factor_scaled_value; extern grib_accessor_class* grib_accessor_class_g1_half_byte_codeflag; extern grib_accessor_class* grib_accessor_class_g1_message_length; diff --git a/src/grib_accessor_classes_hash.cc b/src/grib_accessor_classes_hash.cc index 90cfde106..ad2e71d8b 100644 --- a/src/grib_accessor_classes_hash.cc +++ b/src/grib_accessor_classes_hash.cc @@ -37,7 +37,7 @@ #line 6 "accessor_class_list.gperf" struct accessor_class_hash { char *name; grib_accessor_class **cclass;}; -#define TOTAL_KEYWORDS 219 +#define TOTAL_KEYWORDS 218 #define MIN_WORD_LENGTH 1 #define MAX_WORD_LENGTH 44 #define MIN_HASH_VALUE 1 @@ -61,7 +61,7 @@ grib_accessor_classes_get_id (const char *str, size_t len) 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, 0, 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, 0, 162, - 41, 7, 0, 680, 34, 680, 7, 680, 680, 680, + 41, 6, 0, 680, 34, 680, 8, 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, @@ -118,59 +118,59 @@ static const struct accessor_class_hash classes[] = #line 9 "accessor_class_list.gperf" {" "}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 156 "accessor_class_list.gperf" +#line 155 "accessor_class_list.gperf" {"nearest", &grib_accessor_class_nearest}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 118 "accessor_class_list.gperf" +#line 117 "accessor_class_list.gperf" {"gen", &grib_accessor_class_gen}, {""}, {""}, -#line 119 "accessor_class_list.gperf" +#line 118 "accessor_class_list.gperf" {"getenv", &grib_accessor_class_getenv}, #line 84 "accessor_class_list.gperf" {"expanded_descriptors", &grib_accessor_class_expanded_descriptors}, {""}, {""}, {""}, {""}, {""}, -#line 134 "accessor_class_list.gperf" +#line 133 "accessor_class_list.gperf" {"int8", &grib_accessor_class_int8}, -#line 132 "accessor_class_list.gperf" +#line 131 "accessor_class_list.gperf" {"int64", &grib_accessor_class_int64}, #line 72 "accessor_class_list.gperf" {"data_secondary_bitmap", &grib_accessor_class_data_secondary_bitmap}, -#line 203 "accessor_class_list.gperf" +#line 202 "accessor_class_list.gperf" {"time", &grib_accessor_class_time}, #line 69 "accessor_class_list.gperf" {"data_png_packing", &grib_accessor_class_data_png_packing}, {""}, -#line 191 "accessor_class_list.gperf" +#line 190 "accessor_class_list.gperf" {"size", &grib_accessor_class_size}, -#line 181 "accessor_class_list.gperf" +#line 180 "accessor_class_list.gperf" {"second_order_bits_per_value", &grib_accessor_class_second_order_bits_per_value}, -#line 188 "accessor_class_list.gperf" +#line 187 "accessor_class_list.gperf" {"signed", &grib_accessor_class_signed}, -#line 182 "accessor_class_list.gperf" +#line 181 "accessor_class_list.gperf" {"section", &grib_accessor_class_section}, -#line 204 "accessor_class_list.gperf" +#line 203 "accessor_class_list.gperf" {"times", &grib_accessor_class_times}, #line 70 "accessor_class_list.gperf" {"data_raw_packing", &grib_accessor_class_data_raw_packing}, -#line 117 "accessor_class_list.gperf" +#line 116 "accessor_class_list.gperf" {"gds_not_present_bitmap", &grib_accessor_class_gds_not_present_bitmap}, {""}, #line 13 "accessor_class_list.gperf" {"ascii", &grib_accessor_class_ascii}, {""}, -#line 183 "accessor_class_list.gperf" +#line 182 "accessor_class_list.gperf" {"section_length", &grib_accessor_class_section_length}, -#line 184 "accessor_class_list.gperf" +#line 183 "accessor_class_list.gperf" {"section_padding", &grib_accessor_class_section_padding}, -#line 197 "accessor_class_list.gperf" +#line 196 "accessor_class_list.gperf" {"statistics", &grib_accessor_class_statistics}, -#line 200 "accessor_class_list.gperf" +#line 199 "accessor_class_list.gperf" {"step_in_units", &grib_accessor_class_step_in_units}, -#line 189 "accessor_class_list.gperf" +#line 188 "accessor_class_list.gperf" {"signed_bits", &grib_accessor_class_signed_bits}, -#line 194 "accessor_class_list.gperf" +#line 193 "accessor_class_list.gperf" {"spd", &grib_accessor_class_spd}, -#line 168 "accessor_class_list.gperf" +#line 167 "accessor_class_list.gperf" {"pad", &grib_accessor_class_pad}, #line 76 "accessor_class_list.gperf" {"data_simple_packing", &grib_accessor_class_data_simple_packing}, @@ -178,39 +178,39 @@ static const struct accessor_class_hash classes[] = #line 79 "accessor_class_list.gperf" {"dirty", &grib_accessor_class_dirty}, {""}, {""}, -#line 198 "accessor_class_list.gperf" +#line 197 "accessor_class_list.gperf" {"statistics_spectral", &grib_accessor_class_statistics_spectral}, #line 78 "accessor_class_list.gperf" {"dictionary", &grib_accessor_class_dictionary}, {""}, -#line 116 "accessor_class_list.gperf" +#line 115 "accessor_class_list.gperf" {"gds_is_present", &grib_accessor_class_gds_is_present}, {""}, -#line 113 "accessor_class_list.gperf" +#line 112 "accessor_class_list.gperf" {"g2lon", &grib_accessor_class_g2lon}, -#line 206 "accessor_class_list.gperf" +#line 205 "accessor_class_list.gperf" {"to_integer", &grib_accessor_class_to_integer}, -#line 128 "accessor_class_list.gperf" +#line 127 "accessor_class_list.gperf" {"int16", &grib_accessor_class_int16}, {""}, -#line 108 "accessor_class_list.gperf" +#line 107 "accessor_class_list.gperf" {"g2date", &grib_accessor_class_g2date}, #line 46 "accessor_class_list.gperf" {"data_apply_bitmap", &grib_accessor_class_data_apply_bitmap}, {""}, -#line 185 "accessor_class_list.gperf" +#line 184 "accessor_class_list.gperf" {"section_pointer", &grib_accessor_class_section_pointer}, #line 68 "accessor_class_list.gperf" {"data_jpeg2000_packing", &grib_accessor_class_data_jpeg2000_packing}, -#line 130 "accessor_class_list.gperf" +#line 129 "accessor_class_list.gperf" {"int32", &grib_accessor_class_int32}, #line 61 "accessor_class_list.gperf" {"data_g22order_packing", &grib_accessor_class_data_g22order_packing}, -#line 109 "accessor_class_list.gperf" +#line 108 "accessor_class_list.gperf" {"g2end_step", &grib_accessor_class_g2end_step}, #line 49 "accessor_class_list.gperf" {"data_apply_gdsnotpresent", &grib_accessor_class_data_apply_gdsnotpresent}, -#line 106 "accessor_class_list.gperf" +#line 105 "accessor_class_list.gperf" {"g2bitmap", &grib_accessor_class_g2bitmap}, #line 47 "accessor_class_list.gperf" {"data_apply_boustrophedonic", &grib_accessor_class_data_apply_boustrophedonic}, @@ -220,55 +220,55 @@ static const struct accessor_class_hash classes[] = {""}, {""}, {""}, {""}, #line 48 "accessor_class_list.gperf" {"data_apply_boustrophedonic_bitmap", &grib_accessor_class_data_apply_boustrophedonic_bitmap}, -#line 114 "accessor_class_list.gperf" +#line 113 "accessor_class_list.gperf" {"g2step_range", &grib_accessor_class_g2step_range}, {""}, -#line 110 "accessor_class_list.gperf" +#line 109 "accessor_class_list.gperf" {"g2grid", &grib_accessor_class_g2grid}, {""}, -#line 207 "accessor_class_list.gperf" +#line 206 "accessor_class_list.gperf" {"to_string", &grib_accessor_class_to_string}, {""}, {""}, -#line 135 "accessor_class_list.gperf" +#line 134 "accessor_class_list.gperf" {"iterator", &grib_accessor_class_iterator}, -#line 169 "accessor_class_list.gperf" +#line 168 "accessor_class_list.gperf" {"padding", &grib_accessor_class_padding}, {""}, {""}, -#line 210 "accessor_class_list.gperf" +#line 209 "accessor_class_list.gperf" {"trim", &grib_accessor_class_trim}, {""}, #line 65 "accessor_class_list.gperf" {"data_g2shsimple_packing", &grib_accessor_class_data_g2shsimple_packing}, -#line 175 "accessor_class_list.gperf" +#line 174 "accessor_class_list.gperf" {"raw", &grib_accessor_class_raw}, {""}, #line 82 "accessor_class_list.gperf" {"element", &grib_accessor_class_element}, -#line 170 "accessor_class_list.gperf" +#line 169 "accessor_class_list.gperf" {"padto", &grib_accessor_class_padto}, -#line 104 "accessor_class_list.gperf" +#line 103 "accessor_class_list.gperf" {"g2_eps", &grib_accessor_class_g2_eps}, {""}, {""}, -#line 157 "accessor_class_list.gperf" +#line 156 "accessor_class_list.gperf" {"non_alpha", &grib_accessor_class_non_alpha}, -#line 208 "accessor_class_list.gperf" +#line 207 "accessor_class_list.gperf" {"transient", &grib_accessor_class_transient}, #line 14 "accessor_class_list.gperf" {"assert", &grib_accessor_class_assert}, {""}, -#line 141 "accessor_class_list.gperf" +#line 140 "accessor_class_list.gperf" {"latitudes", &grib_accessor_class_latitudes}, {""}, #line 66 "accessor_class_list.gperf" {"data_g2simple_packing", &grib_accessor_class_data_g2simple_packing}, #line 63 "accessor_class_list.gperf" {"data_g2complex_packing", &grib_accessor_class_data_g2complex_packing}, -#line 209 "accessor_class_list.gperf" +#line 208 "accessor_class_list.gperf" {"transient_darray", &grib_accessor_class_transient_darray}, {""}, -#line 102 "accessor_class_list.gperf" +#line 101 "accessor_class_list.gperf" {"g2_aerosol", &grib_accessor_class_g2_aerosol}, -#line 111 "accessor_class_list.gperf" +#line 110 "accessor_class_list.gperf" {"g2latlon", &grib_accessor_class_g2latlon}, {""}, {""}, {""}, {""}, {""}, #line 64 "accessor_class_list.gperf" @@ -278,77 +278,77 @@ static const struct accessor_class_hash classes[] = #line 12 "accessor_class_list.gperf" {"array", &grib_accessor_class_array}, {""}, {""}, {""}, {""}, -#line 176 "accessor_class_list.gperf" +#line 175 "accessor_class_list.gperf" {"rdbtime_guess_date", &grib_accessor_class_rdbtime_guess_date}, #line 67 "accessor_class_list.gperf" {"data_g2simple_packing_with_preprocessing", &grib_accessor_class_data_g2simple_packing_with_preprocessing}, {""}, {""}, -#line 120 "accessor_class_list.gperf" +#line 119 "accessor_class_list.gperf" {"global_gaussian", &grib_accessor_class_global_gaussian}, {""}, -#line 187 "accessor_class_list.gperf" +#line 186 "accessor_class_list.gperf" {"sexagesimal2decimal", &grib_accessor_class_sexagesimal2decimal}, -#line 140 "accessor_class_list.gperf" +#line 139 "accessor_class_list.gperf" {"laplacian", &grib_accessor_class_laplacian}, {""}, -#line 201 "accessor_class_list.gperf" +#line 200 "accessor_class_list.gperf" {"sum", &grib_accessor_class_sum}, {""}, -#line 115 "accessor_class_list.gperf" +#line 114 "accessor_class_list.gperf" {"gaussian_grid_name", &grib_accessor_class_gaussian_grid_name}, -#line 178 "accessor_class_list.gperf" +#line 177 "accessor_class_list.gperf" {"round", &grib_accessor_class_round}, -#line 146 "accessor_class_list.gperf" +#line 145 "accessor_class_list.gperf" {"long", &grib_accessor_class_long}, {""}, #line 81 "accessor_class_list.gperf" {"double", &grib_accessor_class_double}, -#line 190 "accessor_class_list.gperf" +#line 189 "accessor_class_list.gperf" {"simple_packing_error", &grib_accessor_class_simple_packing_error}, -#line 121 "accessor_class_list.gperf" +#line 120 "accessor_class_list.gperf" {"group", &grib_accessor_class_group}, {""}, -#line 173 "accessor_class_list.gperf" +#line 172 "accessor_class_list.gperf" {"position", &grib_accessor_class_position}, -#line 137 "accessor_class_list.gperf" - {"julian_day", &grib_accessor_class_julian_day}, #line 136 "accessor_class_list.gperf" + {"julian_day", &grib_accessor_class_julian_day}, +#line 135 "accessor_class_list.gperf" {"julian_date", &grib_accessor_class_julian_date}, -#line 220 "accessor_class_list.gperf" +#line 219 "accessor_class_list.gperf" {"unsigned", &grib_accessor_class_unsigned}, {""}, {""}, #line 52 "accessor_class_list.gperf" {"data_dummy_field", &grib_accessor_class_data_dummy_field}, {""}, -#line 174 "accessor_class_list.gperf" +#line 173 "accessor_class_list.gperf" {"proj_string", &grib_accessor_class_proj_string}, #line 15 "accessor_class_list.gperf" {"bit", &grib_accessor_class_bit}, #line 17 "accessor_class_list.gperf" {"bits", &grib_accessor_class_bits}, -#line 199 "accessor_class_list.gperf" +#line 198 "accessor_class_list.gperf" {"step_human_readable", &grib_accessor_class_step_human_readable}, #line 71 "accessor_class_list.gperf" {"data_run_length_packing", &grib_accessor_class_data_run_length_packing}, -#line 179 "accessor_class_list.gperf" +#line 178 "accessor_class_list.gperf" {"scale", &grib_accessor_class_scale}, -#line 195 "accessor_class_list.gperf" +#line 194 "accessor_class_list.gperf" {"spectral_truncation", &grib_accessor_class_spectral_truncation}, #line 45 "accessor_class_list.gperf" {"data_2order_packing", &grib_accessor_class_data_2order_packing}, -#line 217 "accessor_class_list.gperf" - {"uint8", &grib_accessor_class_uint8}, -#line 213 "accessor_class_list.gperf" +#line 212 "accessor_class_list.gperf" {"uint32", &grib_accessor_class_uint32}, +#line 216 "accessor_class_list.gperf" + {"uint8", &grib_accessor_class_uint8}, #line 31 "accessor_class_list.gperf" {"bytes", &grib_accessor_class_bytes}, #line 16 "accessor_class_list.gperf" {"bitmap", &grib_accessor_class_bitmap}, {""}, -#line 107 "accessor_class_list.gperf" +#line 106 "accessor_class_list.gperf" {"g2bitmap_present", &grib_accessor_class_g2bitmap_present}, {""}, {""}, -#line 196 "accessor_class_list.gperf" +#line 195 "accessor_class_list.gperf" {"sprintf", &grib_accessor_class_sprintf}, {""}, {""}, {""}, #line 18 "accessor_class_list.gperf" @@ -356,75 +356,74 @@ static const struct accessor_class_hash classes[] = #line 50 "accessor_class_list.gperf" {"data_ccsds_packing", &grib_accessor_class_data_ccsds_packing}, {""}, -#line 221 "accessor_class_list.gperf" +#line 220 "accessor_class_list.gperf" {"unsigned_bits", &grib_accessor_class_unsigned_bits}, -#line 165 "accessor_class_list.gperf" +#line 164 "accessor_class_list.gperf" {"offset_file", &grib_accessor_class_offset_file}, {""}, -#line 85 "accessor_class_list.gperf" - {"forward", &grib_accessor_class_forward}, -#line 214 "accessor_class_list.gperf" +#line 213 "accessor_class_list.gperf" {"uint32_little_endian", &grib_accessor_class_uint32_little_endian}, -#line 90 "accessor_class_list.gperf" + {""}, +#line 89 "accessor_class_list.gperf" {"g1area", &grib_accessor_class_g1area}, -#line 159 "accessor_class_list.gperf" +#line 158 "accessor_class_list.gperf" {"number_of_points", &grib_accessor_class_number_of_points}, {""}, -#line 92 "accessor_class_list.gperf" +#line 91 "accessor_class_list.gperf" {"g1date", &grib_accessor_class_g1date}, {""}, {""}, -#line 139 "accessor_class_list.gperf" +#line 138 "accessor_class_list.gperf" {"label", &grib_accessor_class_label}, -#line 218 "accessor_class_list.gperf" +#line 217 "accessor_class_list.gperf" {"unexpanded_descriptors", &grib_accessor_class_unexpanded_descriptors}, -#line 215 "accessor_class_list.gperf" +#line 214 "accessor_class_list.gperf" {"uint64", &grib_accessor_class_uint64}, {""}, -#line 160 "accessor_class_list.gperf" +#line 159 "accessor_class_list.gperf" {"number_of_points_gaussian", &grib_accessor_class_number_of_points_gaussian}, {""}, -#line 91 "accessor_class_list.gperf" +#line 90 "accessor_class_list.gperf" {"g1bitmap", &grib_accessor_class_g1bitmap}, {""}, {""}, -#line 89 "accessor_class_list.gperf" +#line 88 "accessor_class_list.gperf" {"g1_section4_length", &grib_accessor_class_g1_section4_length}, -#line 126 "accessor_class_list.gperf" +#line 125 "accessor_class_list.gperf" {"ieeefloat", &grib_accessor_class_ieeefloat}, {""}, -#line 88 "accessor_class_list.gperf" +#line 87 "accessor_class_list.gperf" {"g1_message_length", &grib_accessor_class_g1_message_length}, {""}, {""}, -#line 100 "accessor_class_list.gperf" +#line 99 "accessor_class_list.gperf" {"g1step_range", &grib_accessor_class_g1step_range}, {""}, {""}, #line 40 "accessor_class_list.gperf" {"concept", &grib_accessor_class_concept}, #line 41 "accessor_class_list.gperf" {"constant", &grib_accessor_class_constant}, -#line 216 "accessor_class_list.gperf" +#line 215 "accessor_class_list.gperf" {"uint64_little_endian", &grib_accessor_class_uint64_little_endian}, #line 80 "accessor_class_list.gperf" {"divdouble", &grib_accessor_class_divdouble}, -#line 227 "accessor_class_list.gperf" +#line 226 "accessor_class_list.gperf" {"when", &grib_accessor_class_when}, -#line 164 "accessor_class_list.gperf" +#line 163 "accessor_class_list.gperf" {"octet_number", &grib_accessor_class_octet_number}, {""}, -#line 105 "accessor_class_list.gperf" +#line 104 "accessor_class_list.gperf" {"g2_mars_labeling", &grib_accessor_class_g2_mars_labeling}, -#line 186 "accessor_class_list.gperf" +#line 185 "accessor_class_list.gperf" {"select_step_template", &grib_accessor_class_select_step_template}, {""}, #line 59 "accessor_class_list.gperf" {"data_g1shsimple_packing", &grib_accessor_class_data_g1shsimple_packing}, {""}, -#line 133 "accessor_class_list.gperf" +#line 132 "accessor_class_list.gperf" {"int64_little_endian", &grib_accessor_class_int64_little_endian}, {""}, {""}, #line 19 "accessor_class_list.gperf" {"blob", &grib_accessor_class_blob}, {""}, {""}, {""}, -#line 224 "accessor_class_list.gperf" +#line 223 "accessor_class_list.gperf" {"values", &grib_accessor_class_values}, {""}, {""}, {""}, {""}, #line 60 "accessor_class_list.gperf" @@ -432,45 +431,45 @@ static const struct accessor_class_hash classes[] = #line 53 "accessor_class_list.gperf" {"data_g1complex_packing", &grib_accessor_class_data_g1complex_packing}, {""}, {""}, -#line 147 "accessor_class_list.gperf" +#line 146 "accessor_class_list.gperf" {"long_vector", &grib_accessor_class_long_vector}, -#line 202 "accessor_class_list.gperf" +#line 201 "accessor_class_list.gperf" {"suppressed", &grib_accessor_class_suppressed}, -#line 122 "accessor_class_list.gperf" +#line 121 "accessor_class_list.gperf" {"gts_header", &grib_accessor_class_gts_header}, -#line 205 "accessor_class_list.gperf" +#line 204 "accessor_class_list.gperf" {"to_double", &grib_accessor_class_to_double}, {""}, {""}, -#line 145 "accessor_class_list.gperf" +#line 144 "accessor_class_list.gperf" {"local_definition", &grib_accessor_class_local_definition}, #line 58 "accessor_class_list.gperf" {"data_g1secondary_bitmap", &grib_accessor_class_data_g1secondary_bitmap}, -#line 222 "accessor_class_list.gperf" +#line 221 "accessor_class_list.gperf" {"validity_date", &grib_accessor_class_validity_date}, -#line 144 "accessor_class_list.gperf" +#line 143 "accessor_class_list.gperf" {"library_version", &grib_accessor_class_library_version}, {""}, {""}, -#line 142 "accessor_class_list.gperf" +#line 141 "accessor_class_list.gperf" {"latlon_increment", &grib_accessor_class_latlon_increment}, {""}, {""}, -#line 94 "accessor_class_list.gperf" +#line 93 "accessor_class_list.gperf" {"g1end_of_interval_monthly", &grib_accessor_class_g1end_of_interval_monthly}, {""}, {""}, -#line 129 "accessor_class_list.gperf" +#line 128 "accessor_class_list.gperf" {"int16_little_endian", &grib_accessor_class_int16_little_endian}, #line 56 "accessor_class_list.gperf" {"data_g1second_order_general_packing", &grib_accessor_class_data_g1second_order_general_packing}, #line 35 "accessor_class_list.gperf" {"closest_date", &grib_accessor_class_closest_date}, -#line 125 "accessor_class_list.gperf" +#line 124 "accessor_class_list.gperf" {"ibmfloat", &grib_accessor_class_ibmfloat}, #line 57 "accessor_class_list.gperf" {"data_g1second_order_row_by_row_packing", &grib_accessor_class_data_g1second_order_row_by_row_packing}, -#line 152 "accessor_class_list.gperf" +#line 151 "accessor_class_list.gperf" {"md5", &grib_accessor_class_md5}, -#line 223 "accessor_class_list.gperf" +#line 222 "accessor_class_list.gperf" {"validity_time", &grib_accessor_class_validity_time}, -#line 131 "accessor_class_list.gperf" +#line 130 "accessor_class_list.gperf" {"int32_little_endian", &grib_accessor_class_int32_little_endian}, #line 54 "accessor_class_list.gperf" {"data_g1second_order_constant_width_packing", &grib_accessor_class_data_g1second_order_constant_width_packing}, @@ -480,36 +479,36 @@ static const struct accessor_class_hash classes[] = {""}, {""}, #line 74 "accessor_class_list.gperf" {"data_sh_unpacked", &grib_accessor_class_data_sh_unpacked}, -#line 226 "accessor_class_list.gperf" +#line 225 "accessor_class_list.gperf" {"vector", &grib_accessor_class_vector}, #line 20 "accessor_class_list.gperf" {"budgdate", &grib_accessor_class_budgdate}, -#line 153 "accessor_class_list.gperf" +#line 152 "accessor_class_list.gperf" {"message", &grib_accessor_class_message}, -#line 149 "accessor_class_list.gperf" +#line 148 "accessor_class_list.gperf" {"lookup", &grib_accessor_class_lookup}, #line 75 "accessor_class_list.gperf" {"data_shsimple_packing", &grib_accessor_class_data_shsimple_packing}, -#line 138 "accessor_class_list.gperf" +#line 137 "accessor_class_list.gperf" {"ksec1expver", &grib_accessor_class_ksec1expver}, {""}, -#line 172 "accessor_class_list.gperf" +#line 171 "accessor_class_list.gperf" {"padtomultiple", &grib_accessor_class_padtomultiple}, -#line 151 "accessor_class_list.gperf" +#line 150 "accessor_class_list.gperf" {"mars_step", &grib_accessor_class_mars_step}, -#line 127 "accessor_class_list.gperf" +#line 126 "accessor_class_list.gperf" {"ifs_param", &grib_accessor_class_ifs_param}, {""}, -#line 192 "accessor_class_list.gperf" +#line 191 "accessor_class_list.gperf" {"smart_table", &grib_accessor_class_smart_table}, {""}, -#line 150 "accessor_class_list.gperf" +#line 149 "accessor_class_list.gperf" {"mars_param", &grib_accessor_class_mars_param}, {""}, #line 22 "accessor_class_list.gperf" {"bufr_data_element", &grib_accessor_class_bufr_data_element}, {""}, {""}, -#line 193 "accessor_class_list.gperf" +#line 192 "accessor_class_list.gperf" {"smart_table_column", &grib_accessor_class_smart_table_column}, {""}, #line 21 "accessor_class_list.gperf" @@ -520,10 +519,10 @@ static const struct accessor_class_hash classes[] = #line 29 "accessor_class_list.gperf" {"bufr_string_values", &grib_accessor_class_bufr_string_values}, {""}, {""}, {""}, -#line 148 "accessor_class_list.gperf" +#line 147 "accessor_class_list.gperf" {"longitudes", &grib_accessor_class_longitudes}, {""}, -#line 158 "accessor_class_list.gperf" +#line 157 "accessor_class_list.gperf" {"number_of_coded_values", &grib_accessor_class_number_of_coded_values}, {""}, #line 28 "accessor_class_list.gperf" @@ -531,30 +530,30 @@ static const struct accessor_class_hash classes[] = #line 44 "accessor_class_list.gperf" {"count_total", &grib_accessor_class_count_total}, {""}, {""}, {""}, {""}, -#line 123 "accessor_class_list.gperf" +#line 122 "accessor_class_list.gperf" {"hash_array", &grib_accessor_class_hash_array}, -#line 166 "accessor_class_list.gperf" +#line 165 "accessor_class_list.gperf" {"offset_values", &grib_accessor_class_offset_values}, -#line 124 "accessor_class_list.gperf" +#line 123 "accessor_class_list.gperf" {"headers_only", &grib_accessor_class_headers_only}, {""}, {""}, -#line 95 "accessor_class_list.gperf" +#line 94 "accessor_class_list.gperf" {"g1fcperiod", &grib_accessor_class_g1fcperiod}, -#line 154 "accessor_class_list.gperf" +#line 153 "accessor_class_list.gperf" {"message_copy", &grib_accessor_class_message_copy}, {""}, {""}, -#line 171 "accessor_class_list.gperf" +#line 170 "accessor_class_list.gperf" {"padtoeven", &grib_accessor_class_padtoeven}, {""}, {""}, -#line 211 "accessor_class_list.gperf" +#line 210 "accessor_class_list.gperf" {"uint16", &grib_accessor_class_uint16}, {""}, {""}, -#line 155 "accessor_class_list.gperf" +#line 154 "accessor_class_list.gperf" {"missing", &grib_accessor_class_missing}, -#line 225 "accessor_class_list.gperf" +#line 224 "accessor_class_list.gperf" {"variable", &grib_accessor_class_variable}, {""}, {""}, -#line 87 "accessor_class_list.gperf" +#line 86 "accessor_class_list.gperf" {"g1_half_byte_codeflag", &grib_accessor_class_g1_half_byte_codeflag}, {""}, #line 42 "accessor_class_list.gperf" @@ -563,7 +562,7 @@ static const struct accessor_class_hash classes[] = #line 36 "accessor_class_list.gperf" {"codeflag", &grib_accessor_class_codeflag}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 212 "accessor_class_list.gperf" +#line 211 "accessor_class_list.gperf" {"uint16_little_endian", &grib_accessor_class_uint16_little_endian}, #line 37 "accessor_class_list.gperf" {"codetable", &grib_accessor_class_codetable}, @@ -577,33 +576,33 @@ static const struct accessor_class_hash classes[] = #line 27 "accessor_class_list.gperf" {"bufr_group", &grib_accessor_class_bufr_group}, {""}, {""}, -#line 161 "accessor_class_list.gperf" +#line 160 "accessor_class_list.gperf" {"number_of_values", &grib_accessor_class_number_of_values}, {""}, {""}, #line 77 "accessor_class_list.gperf" {"decimal_precision", &grib_accessor_class_decimal_precision}, {""}, {""}, -#line 112 "accessor_class_list.gperf" +#line 111 "accessor_class_list.gperf" {"g2level", &grib_accessor_class_g2level}, {""}, #line 23 "accessor_class_list.gperf" {"bufr_elements_table", &grib_accessor_class_bufr_elements_table}, {""}, {""}, -#line 143 "accessor_class_list.gperf" +#line 142 "accessor_class_list.gperf" {"latlonvalues", &grib_accessor_class_latlonvalues}, {""}, {""}, {""}, {""}, #line 73 "accessor_class_list.gperf" {"data_sh_packed", &grib_accessor_class_data_sh_packed}, -#line 162 "accessor_class_list.gperf" +#line 161 "accessor_class_list.gperf" {"number_of_values_data_raw_packing", &grib_accessor_class_number_of_values_data_raw_packing}, {""}, {""}, {""}, {""}, -#line 180 "accessor_class_list.gperf" +#line 179 "accessor_class_list.gperf" {"scale_values", &grib_accessor_class_scale_values}, {""}, -#line 219 "accessor_class_list.gperf" +#line 218 "accessor_class_list.gperf" {"unpack_bufr_values", &grib_accessor_class_unpack_bufr_values}, {""}, {""}, {""}, -#line 86 "accessor_class_list.gperf" +#line 85 "accessor_class_list.gperf" {"from_scale_factor_scaled_value", &grib_accessor_class_from_scale_factor_scaled_value}, #line 11 "accessor_class_list.gperf" {"abstract_vector", &grib_accessor_class_abstract_vector}, @@ -614,19 +613,19 @@ static const struct accessor_class_hash classes[] = #line 32 "accessor_class_list.gperf" {"change_alternative_row_scanning", &grib_accessor_class_change_alternative_row_scanning}, {""}, -#line 97 "accessor_class_list.gperf" +#line 96 "accessor_class_list.gperf" {"g1monthlydate", &grib_accessor_class_g1monthlydate}, {""}, {""}, -#line 101 "accessor_class_list.gperf" +#line 100 "accessor_class_list.gperf" {"g1verificationdate", &grib_accessor_class_g1verificationdate}, -#line 167 "accessor_class_list.gperf" +#line 166 "accessor_class_list.gperf" {"pack_bufr_values", &grib_accessor_class_pack_bufr_values}, {""}, {""}, -#line 177 "accessor_class_list.gperf" +#line 176 "accessor_class_list.gperf" {"reference_value_error", &grib_accessor_class_reference_value_error}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 163 "accessor_class_list.gperf" +#line 162 "accessor_class_list.gperf" {"octahedral_gaussian", &grib_accessor_class_octahedral_gaussian}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, #line 26 "accessor_class_list.gperf" @@ -647,7 +646,7 @@ static const struct accessor_class_hash classes[] = #line 39 "accessor_class_list.gperf" {"codetable_units", &grib_accessor_class_codetable_units}, {""}, -#line 93 "accessor_class_list.gperf" +#line 92 "accessor_class_list.gperf" {"g1day_of_the_year_date", &grib_accessor_class_g1day_of_the_year_date}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -667,14 +666,14 @@ static const struct accessor_class_hash classes[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 99 "accessor_class_list.gperf" - {"g1number_of_coded_values_sh_simple", &grib_accessor_class_g1number_of_coded_values_sh_simple}, #line 98 "accessor_class_list.gperf" + {"g1number_of_coded_values_sh_simple", &grib_accessor_class_g1number_of_coded_values_sh_simple}, +#line 97 "accessor_class_list.gperf" {"g1number_of_coded_values_sh_complex", &grib_accessor_class_g1number_of_coded_values_sh_complex}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 103 "accessor_class_list.gperf" +#line 102 "accessor_class_list.gperf" {"g2_chemical", &grib_accessor_class_g2_chemical}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -684,7 +683,7 @@ static const struct accessor_class_hash classes[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 96 "accessor_class_list.gperf" +#line 95 "accessor_class_list.gperf" {"g1forecastmonth", &grib_accessor_class_g1forecastmonth} }; diff --git a/src/grib_accessor_factory.h b/src/grib_accessor_factory.h index 3f5495342..a706fc95c 100644 --- a/src/grib_accessor_factory.h +++ b/src/grib_accessor_factory.h @@ -74,7 +74,6 @@ { "element", &grib_accessor_class_element, }, { "evaluate", &grib_accessor_class_evaluate, }, { "expanded_descriptors", &grib_accessor_class_expanded_descriptors, }, -{ "forward", &grib_accessor_class_forward, }, { "from_scale_factor_scaled_value", &grib_accessor_class_from_scale_factor_scaled_value, }, { "g1_half_byte_codeflag", &grib_accessor_class_g1_half_byte_codeflag, }, { "g1_message_length", &grib_accessor_class_g1_message_length, }, diff --git a/src/grib_accessor_factory_hash_list b/src/grib_accessor_factory_hash_list index 7a238c7d2..0abb60a46 100644 --- a/src/grib_accessor_factory_hash_list +++ b/src/grib_accessor_factory_hash_list @@ -75,7 +75,6 @@ double, &grib_accessor_class_double element, &grib_accessor_class_element evaluate, &grib_accessor_class_evaluate expanded_descriptors, &grib_accessor_class_expanded_descriptors -forward, &grib_accessor_class_forward from_scale_factor_scaled_value, &grib_accessor_class_from_scale_factor_scaled_value g1_half_byte_codeflag, &grib_accessor_class_g1_half_byte_codeflag g1_message_length, &grib_accessor_class_g1_message_length From f224e51136eef5a175e52573ad6fe32b28cb1c25 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 22 Jun 2023 15:36:04 +0100 Subject: [PATCH 300/378] Fix broken build --- src/grib_bits_any_endian.cc | 2 ++ src/grib_scaling.cc | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/grib_bits_any_endian.cc b/src/grib_bits_any_endian.cc index 45992f26a..5f01b4106 100644 --- a/src/grib_bits_any_endian.cc +++ b/src/grib_bits_any_endian.cc @@ -17,6 +17,8 @@ #include #endif +#include "grib_scaling.h" + #if GRIB_PTHREADS static pthread_once_t once = PTHREAD_ONCE_INIT; static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER; diff --git a/src/grib_scaling.cc b/src/grib_scaling.cc index 29143395d..41e77e28e 100644 --- a/src/grib_scaling.cc +++ b/src/grib_scaling.cc @@ -18,7 +18,7 @@ // Unfortunately, metkit uses grib_power() (illegal usage of private API) // As soon as it is fixed, the wrapper below can be deleted double grib_power(long s, long n) { - codes_power(s, n); + return codes_power(s, n); } long grib_get_binary_scale_fact(double max, double min, long bpval, int* ret) From 4298c762bdd3cedd77d3c5bff40f3792453b3fca Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 22 Jun 2023 15:03:02 +0000 Subject: [PATCH 301/378] ECC-1618: GRIB: Fix minor typos in parameter names for consistency --- data/tigge_pf_ecmwf.grib2.ref | 2 +- definitions/grib1/cfVarName.def | 30 ++++++++-------- .../grib1/localConcepts/ecmf/cfVarName.def | 2 +- definitions/grib1/localConcepts/ecmf/name.def | 4 +-- .../grib1/localConcepts/ecmf/paramId.def | 2 +- .../grib1/localConcepts/ecmf/shortName.def | 2 +- .../grib1/localConcepts/ecmf/units.def | 2 +- .../grib1/localConcepts/rjtd/cfVarName.def | 2 +- definitions/grib1/localConcepts/rjtd/name.def | 4 +-- .../grib1/localConcepts/rjtd/paramId.def | 2 +- .../grib1/localConcepts/rjtd/shortName.def | 2 +- .../grib1/localConcepts/rjtd/units.def | 2 +- definitions/grib1/name.def | 36 +++++++++---------- definitions/grib1/paramId.def | 18 +++++----- definitions/grib1/shortName.def | 18 +++++----- definitions/grib1/units.def | 18 +++++----- definitions/grib2/cfVarName.def | 6 ++-- .../grib2/localConcepts/uerra/cfVarName.def | 2 +- .../grib2/localConcepts/uerra/name.def | 4 +-- .../grib2/localConcepts/uerra/paramId.def | 2 +- .../grib2/localConcepts/uerra/shortName.def | 2 +- .../grib2/localConcepts/uerra/units.def | 2 +- definitions/grib2/name.def | 12 +++---- definitions/grib2/paramId.def | 6 ++-- definitions/grib2/shortName.def | 6 ++-- definitions/grib2/units.def | 6 ++-- 26 files changed, 97 insertions(+), 97 deletions(-) diff --git a/data/tigge_pf_ecmwf.grib2.ref b/data/tigge_pf_ecmwf.grib2.ref index 838b9b75a..29bda54cf 100644 --- a/data/tigge_pf_ecmwf.grib2.ref +++ b/data/tigge_pf_ecmwf.grib2.ref @@ -8,7 +8,7 @@ ecmf 3 pt K Potential temperature ecmf 60 pv K m**2 kg**-1 s**-1 Potential vorticity ecmf 235 skt K Skin temperature ecmf 228141 sd kg m**-2 Snow depth water equivalent -ecmf 228144 sf kg m**-2 Snow Fall water equivalent +ecmf 228144 sf kg m**-2 Snowfall water equivalent ecmf 228039 sm kg m**-3 Soil moisture ecmf 228139 st K Soil temperature ecmf 133 q kg kg**-1 Specific humidity diff --git a/definitions/grib1/cfVarName.def b/definitions/grib1/cfVarName.def index aab85cbcf..e4b1aa07d 100644 --- a/definitions/grib1/cfVarName.def +++ b/definitions/grib1/cfVarName.def @@ -162,8 +162,8 @@ table2Version = 3 ; indicatorOfParameter = 10 ; } -#large scale precipitation -'p3062' = { +#Large-scale precipitation +'lsp' = { table2Version = 3 ; indicatorOfParameter = 62 ; } @@ -532,8 +532,8 @@ table2Version = 3 ; indicatorOfParameter = 98 ; } -#Snow melt -'p3099' = { +#Snowmelt +'snom' = { table2Version = 3 ; indicatorOfParameter = 99 ; } @@ -678,7 +678,7 @@ table2Version = 3 ; indicatorOfParameter = 85 ; } -#Snow Fall water equivalent +#Snowfall water equivalent 'sf' = { table2Version = 3 ; indicatorOfParameter = 65 ; @@ -858,8 +858,8 @@ table2Version = 2 ; indicatorOfParameter = 10 ; } -#large scale precipitation -'p3062' = { +#Large-scale precipitation +'lsp' = { table2Version = 2 ; indicatorOfParameter = 62 ; } @@ -1213,8 +1213,8 @@ table2Version = 2 ; indicatorOfParameter = 98 ; } -#Snow melt -'p3099' = { +#Snowmelt +'snom' = { table2Version = 2 ; indicatorOfParameter = 99 ; } @@ -1359,7 +1359,7 @@ table2Version = 2 ; indicatorOfParameter = 85 ; } -#Snow Fall water equivalent +#Snowfall water equivalent 'sf' = { table2Version = 2 ; indicatorOfParameter = 65 ; @@ -1539,8 +1539,8 @@ table2Version = 1 ; indicatorOfParameter = 10 ; } -#large scale precipitation -'p3062' = { +#Large-scale precipitation +'lsp' = { table2Version = 1 ; indicatorOfParameter = 62 ; } @@ -1894,8 +1894,8 @@ table2Version = 1 ; indicatorOfParameter = 98 ; } -#Snow melt -'p3099' = { +#Snowmelt +'snom' = { table2Version = 1 ; indicatorOfParameter = 99 ; } @@ -2040,7 +2040,7 @@ table2Version = 1 ; indicatorOfParameter = 85 ; } -#Snow Fall water equivalent +#Snowfall water equivalent 'sf' = { table2Version = 1 ; indicatorOfParameter = 65 ; diff --git a/definitions/grib1/localConcepts/ecmf/cfVarName.def b/definitions/grib1/localConcepts/ecmf/cfVarName.def index 588a47504..ab74dcf96 100644 --- a/definitions/grib1/localConcepts/ecmf/cfVarName.def +++ b/definitions/grib1/localConcepts/ecmf/cfVarName.def @@ -17614,7 +17614,7 @@ table2Version = 228 ; indicatorOfParameter = 141 ; } -#Snow Fall water equivalent +#Snowfall water equivalent 'sf' = { table2Version = 228 ; indicatorOfParameter = 144 ; diff --git a/definitions/grib1/localConcepts/ecmf/name.def b/definitions/grib1/localConcepts/ecmf/name.def index 25b3e6ccb..fe9241183 100644 --- a/definitions/grib1/localConcepts/ecmf/name.def +++ b/definitions/grib1/localConcepts/ecmf/name.def @@ -17614,8 +17614,8 @@ table2Version = 228 ; indicatorOfParameter = 141 ; } -#Snow Fall water equivalent -'Snow Fall water equivalent' = { +#Snowfall water equivalent +'Snowfall water equivalent' = { table2Version = 228 ; indicatorOfParameter = 144 ; } diff --git a/definitions/grib1/localConcepts/ecmf/paramId.def b/definitions/grib1/localConcepts/ecmf/paramId.def index 8d107d368..d75dfbb7e 100644 --- a/definitions/grib1/localConcepts/ecmf/paramId.def +++ b/definitions/grib1/localConcepts/ecmf/paramId.def @@ -17614,7 +17614,7 @@ table2Version = 228 ; indicatorOfParameter = 141 ; } -#Snow Fall water equivalent +#Snowfall water equivalent '228144' = { table2Version = 228 ; indicatorOfParameter = 144 ; diff --git a/definitions/grib1/localConcepts/ecmf/shortName.def b/definitions/grib1/localConcepts/ecmf/shortName.def index 239e632b7..d3969233a 100644 --- a/definitions/grib1/localConcepts/ecmf/shortName.def +++ b/definitions/grib1/localConcepts/ecmf/shortName.def @@ -17614,7 +17614,7 @@ table2Version = 228 ; indicatorOfParameter = 141 ; } -#Snow Fall water equivalent +#Snowfall water equivalent 'sf' = { table2Version = 228 ; indicatorOfParameter = 144 ; diff --git a/definitions/grib1/localConcepts/ecmf/units.def b/definitions/grib1/localConcepts/ecmf/units.def index 5b0ac16ad..a9dfdc89d 100644 --- a/definitions/grib1/localConcepts/ecmf/units.def +++ b/definitions/grib1/localConcepts/ecmf/units.def @@ -17614,7 +17614,7 @@ table2Version = 228 ; indicatorOfParameter = 141 ; } -#Snow Fall water equivalent +#Snowfall water equivalent 'kg m**-2' = { table2Version = 228 ; indicatorOfParameter = 144 ; diff --git a/definitions/grib1/localConcepts/rjtd/cfVarName.def b/definitions/grib1/localConcepts/rjtd/cfVarName.def index edc1659b1..5b95ee846 100644 --- a/definitions/grib1/localConcepts/rjtd/cfVarName.def +++ b/definitions/grib1/localConcepts/rjtd/cfVarName.def @@ -785,7 +785,7 @@ table2Version = 200 ; indicatorOfParameter = 98 ; } -#Snow melt +#Snowmelt 'snom' = { table2Version = 200 ; indicatorOfParameter = 99 ; diff --git a/definitions/grib1/localConcepts/rjtd/name.def b/definitions/grib1/localConcepts/rjtd/name.def index 4b9c584ad..e60025071 100644 --- a/definitions/grib1/localConcepts/rjtd/name.def +++ b/definitions/grib1/localConcepts/rjtd/name.def @@ -785,8 +785,8 @@ table2Version = 200 ; indicatorOfParameter = 98 ; } -#Snow melt -'Snow melt' = { +#Snowmelt +'Snowmelt' = { table2Version = 200 ; indicatorOfParameter = 99 ; } diff --git a/definitions/grib1/localConcepts/rjtd/paramId.def b/definitions/grib1/localConcepts/rjtd/paramId.def index 361297ce5..69b120cb0 100644 --- a/definitions/grib1/localConcepts/rjtd/paramId.def +++ b/definitions/grib1/localConcepts/rjtd/paramId.def @@ -785,7 +785,7 @@ table2Version = 200 ; indicatorOfParameter = 98 ; } -#Snow melt +#Snowmelt '3099' = { table2Version = 200 ; indicatorOfParameter = 99 ; diff --git a/definitions/grib1/localConcepts/rjtd/shortName.def b/definitions/grib1/localConcepts/rjtd/shortName.def index 8ce7b8e95..8a1d93a92 100644 --- a/definitions/grib1/localConcepts/rjtd/shortName.def +++ b/definitions/grib1/localConcepts/rjtd/shortName.def @@ -785,7 +785,7 @@ table2Version = 200 ; indicatorOfParameter = 98 ; } -#Snow melt +#Snowmelt 'snom' = { table2Version = 200 ; indicatorOfParameter = 99 ; diff --git a/definitions/grib1/localConcepts/rjtd/units.def b/definitions/grib1/localConcepts/rjtd/units.def index 7c7dfb1af..4e17ab568 100644 --- a/definitions/grib1/localConcepts/rjtd/units.def +++ b/definitions/grib1/localConcepts/rjtd/units.def @@ -785,7 +785,7 @@ table2Version = 200 ; indicatorOfParameter = 98 ; } -#Snow melt +#Snowmelt 'kg m**-2' = { table2Version = 200 ; indicatorOfParameter = 99 ; diff --git a/definitions/grib1/name.def b/definitions/grib1/name.def index 8a38c3f1a..468179199 100644 --- a/definitions/grib1/name.def +++ b/definitions/grib1/name.def @@ -162,8 +162,8 @@ table2Version = 3 ; indicatorOfParameter = 10 ; } -#large scale precipitation -'large scale precipitation' = { +#Large-scale precipitation +'Large-scale precipitation' = { table2Version = 3 ; indicatorOfParameter = 62 ; } @@ -532,8 +532,8 @@ table2Version = 3 ; indicatorOfParameter = 98 ; } -#Snow melt -'Snow melt' = { +#Snowmelt +'Snowmelt' = { table2Version = 3 ; indicatorOfParameter = 99 ; } @@ -678,8 +678,8 @@ table2Version = 3 ; indicatorOfParameter = 85 ; } -#Snow Fall water equivalent -'Snow Fall water equivalent' = { +#Snowfall water equivalent +'Snowfall water equivalent' = { table2Version = 3 ; indicatorOfParameter = 65 ; } @@ -858,8 +858,8 @@ table2Version = 2 ; indicatorOfParameter = 10 ; } -#large scale precipitation -'large scale precipitation' = { +#Large-scale precipitation +'Large-scale precipitation' = { table2Version = 2 ; indicatorOfParameter = 62 ; } @@ -1213,8 +1213,8 @@ table2Version = 2 ; indicatorOfParameter = 98 ; } -#Snow melt -'Snow melt' = { +#Snowmelt +'Snowmelt' = { table2Version = 2 ; indicatorOfParameter = 99 ; } @@ -1359,8 +1359,8 @@ table2Version = 2 ; indicatorOfParameter = 85 ; } -#Snow Fall water equivalent -'Snow Fall water equivalent' = { +#Snowfall water equivalent +'Snowfall water equivalent' = { table2Version = 2 ; indicatorOfParameter = 65 ; } @@ -1539,8 +1539,8 @@ table2Version = 1 ; indicatorOfParameter = 10 ; } -#large scale precipitation -'large scale precipitation' = { +#Large-scale precipitation +'Large-scale precipitation' = { table2Version = 1 ; indicatorOfParameter = 62 ; } @@ -1894,8 +1894,8 @@ table2Version = 1 ; indicatorOfParameter = 98 ; } -#Snow melt -'Snow melt' = { +#Snowmelt +'Snowmelt' = { table2Version = 1 ; indicatorOfParameter = 99 ; } @@ -2040,8 +2040,8 @@ table2Version = 1 ; indicatorOfParameter = 85 ; } -#Snow Fall water equivalent -'Snow Fall water equivalent' = { +#Snowfall water equivalent +'Snowfall water equivalent' = { table2Version = 1 ; indicatorOfParameter = 65 ; } diff --git a/definitions/grib1/paramId.def b/definitions/grib1/paramId.def index 677e7fd4d..5e4ebc281 100644 --- a/definitions/grib1/paramId.def +++ b/definitions/grib1/paramId.def @@ -162,7 +162,7 @@ table2Version = 3 ; indicatorOfParameter = 10 ; } -#large scale precipitation +#Large-scale precipitation '3062' = { table2Version = 3 ; indicatorOfParameter = 62 ; @@ -532,7 +532,7 @@ table2Version = 3 ; indicatorOfParameter = 98 ; } -#Snow melt +#Snowmelt '3099' = { table2Version = 3 ; indicatorOfParameter = 99 ; @@ -678,7 +678,7 @@ table2Version = 3 ; indicatorOfParameter = 85 ; } -#Snow Fall water equivalent +#Snowfall water equivalent '228144' = { table2Version = 3 ; indicatorOfParameter = 65 ; @@ -858,7 +858,7 @@ table2Version = 2 ; indicatorOfParameter = 10 ; } -#large scale precipitation +#Large-scale precipitation '3062' = { table2Version = 2 ; indicatorOfParameter = 62 ; @@ -1213,7 +1213,7 @@ table2Version = 2 ; indicatorOfParameter = 98 ; } -#Snow melt +#Snowmelt '3099' = { table2Version = 2 ; indicatorOfParameter = 99 ; @@ -1359,7 +1359,7 @@ table2Version = 2 ; indicatorOfParameter = 85 ; } -#Snow Fall water equivalent +#Snowfall water equivalent '228144' = { table2Version = 2 ; indicatorOfParameter = 65 ; @@ -1539,7 +1539,7 @@ table2Version = 1 ; indicatorOfParameter = 10 ; } -#large scale precipitation +#Large-scale precipitation '3062' = { table2Version = 1 ; indicatorOfParameter = 62 ; @@ -1894,7 +1894,7 @@ table2Version = 1 ; indicatorOfParameter = 98 ; } -#Snow melt +#Snowmelt '3099' = { table2Version = 1 ; indicatorOfParameter = 99 ; @@ -2040,7 +2040,7 @@ table2Version = 1 ; indicatorOfParameter = 85 ; } -#Snow Fall water equivalent +#Snowfall water equivalent '228144' = { table2Version = 1 ; indicatorOfParameter = 65 ; diff --git a/definitions/grib1/shortName.def b/definitions/grib1/shortName.def index b496bbca7..d154ba6af 100644 --- a/definitions/grib1/shortName.def +++ b/definitions/grib1/shortName.def @@ -162,7 +162,7 @@ table2Version = 3 ; indicatorOfParameter = 10 ; } -#large scale precipitation +#Large-scale precipitation 'lsp' = { table2Version = 3 ; indicatorOfParameter = 62 ; @@ -532,7 +532,7 @@ table2Version = 3 ; indicatorOfParameter = 98 ; } -#Snow melt +#Snowmelt 'snom' = { table2Version = 3 ; indicatorOfParameter = 99 ; @@ -678,7 +678,7 @@ table2Version = 3 ; indicatorOfParameter = 85 ; } -#Snow Fall water equivalent +#Snowfall water equivalent 'sf' = { table2Version = 3 ; indicatorOfParameter = 65 ; @@ -858,7 +858,7 @@ table2Version = 2 ; indicatorOfParameter = 10 ; } -#large scale precipitation +#Large-scale precipitation 'lsp' = { table2Version = 2 ; indicatorOfParameter = 62 ; @@ -1213,7 +1213,7 @@ table2Version = 2 ; indicatorOfParameter = 98 ; } -#Snow melt +#Snowmelt 'snom' = { table2Version = 2 ; indicatorOfParameter = 99 ; @@ -1359,7 +1359,7 @@ table2Version = 2 ; indicatorOfParameter = 85 ; } -#Snow Fall water equivalent +#Snowfall water equivalent 'sf' = { table2Version = 2 ; indicatorOfParameter = 65 ; @@ -1539,7 +1539,7 @@ table2Version = 1 ; indicatorOfParameter = 10 ; } -#large scale precipitation +#Large-scale precipitation 'lsp' = { table2Version = 1 ; indicatorOfParameter = 62 ; @@ -1894,7 +1894,7 @@ table2Version = 1 ; indicatorOfParameter = 98 ; } -#Snow melt +#Snowmelt 'snom' = { table2Version = 1 ; indicatorOfParameter = 99 ; @@ -2040,7 +2040,7 @@ table2Version = 1 ; indicatorOfParameter = 85 ; } -#Snow Fall water equivalent +#Snowfall water equivalent 'sf' = { table2Version = 1 ; indicatorOfParameter = 65 ; diff --git a/definitions/grib1/units.def b/definitions/grib1/units.def index 76d4b5cb2..ee17ac167 100644 --- a/definitions/grib1/units.def +++ b/definitions/grib1/units.def @@ -162,7 +162,7 @@ table2Version = 3 ; indicatorOfParameter = 10 ; } -#large scale precipitation +#Large-scale precipitation 'kg m**-2' = { table2Version = 3 ; indicatorOfParameter = 62 ; @@ -532,7 +532,7 @@ table2Version = 3 ; indicatorOfParameter = 98 ; } -#Snow melt +#Snowmelt 'kg m**-2' = { table2Version = 3 ; indicatorOfParameter = 99 ; @@ -678,7 +678,7 @@ table2Version = 3 ; indicatorOfParameter = 85 ; } -#Snow Fall water equivalent +#Snowfall water equivalent 'kg m**-2' = { table2Version = 3 ; indicatorOfParameter = 65 ; @@ -858,7 +858,7 @@ table2Version = 2 ; indicatorOfParameter = 10 ; } -#large scale precipitation +#Large-scale precipitation 'kg m**-2' = { table2Version = 2 ; indicatorOfParameter = 62 ; @@ -1213,7 +1213,7 @@ table2Version = 2 ; indicatorOfParameter = 98 ; } -#Snow melt +#Snowmelt 'kg m**-2' = { table2Version = 2 ; indicatorOfParameter = 99 ; @@ -1359,7 +1359,7 @@ table2Version = 2 ; indicatorOfParameter = 85 ; } -#Snow Fall water equivalent +#Snowfall water equivalent 'kg m**-2' = { table2Version = 2 ; indicatorOfParameter = 65 ; @@ -1539,7 +1539,7 @@ table2Version = 1 ; indicatorOfParameter = 10 ; } -#large scale precipitation +#Large-scale precipitation 'kg m**-2' = { table2Version = 1 ; indicatorOfParameter = 62 ; @@ -1894,7 +1894,7 @@ table2Version = 1 ; indicatorOfParameter = 98 ; } -#Snow melt +#Snowmelt 'kg m**-2' = { table2Version = 1 ; indicatorOfParameter = 99 ; @@ -2040,7 +2040,7 @@ table2Version = 1 ; indicatorOfParameter = 85 ; } -#Snow Fall water equivalent +#Snowfall water equivalent 'kg m**-2' = { table2Version = 1 ; indicatorOfParameter = 65 ; diff --git a/definitions/grib2/cfVarName.def b/definitions/grib2/cfVarName.def index 506171129..f6543f634 100644 --- a/definitions/grib2/cfVarName.def +++ b/definitions/grib2/cfVarName.def @@ -508,7 +508,7 @@ parameterCategory = 6 ; parameterNumber = 32 ; } -#large scale precipitation +#Large-scale precipitation 'lsp' = { discipline = 0 ; parameterCategory = 1 ; @@ -6538,7 +6538,7 @@ parameterCategory = 2 ; parameterNumber = 0 ; } -#Snow melt +#Snowmelt 'snom' = { discipline = 2 ; parameterCategory = 0 ; @@ -8913,7 +8913,7 @@ parameterCategory = 1 ; parameterNumber = 60 ; } -#Snow Fall water equivalent +#Snowfall water equivalent 'sf' = { discipline = 0 ; parameterCategory = 1 ; diff --git a/definitions/grib2/localConcepts/uerra/cfVarName.def b/definitions/grib2/localConcepts/uerra/cfVarName.def index 85d656893..d18461817 100644 --- a/definitions/grib2/localConcepts/uerra/cfVarName.def +++ b/definitions/grib2/localConcepts/uerra/cfVarName.def @@ -201,7 +201,7 @@ scaledValueOfSecondFixedSurface = missing() ; scaleFactorOfSecondFixedSurface = missing() ; } -#Snow melt +#Snowmelt 'snom' = { discipline = 0 ; parameterCategory = 1 ; diff --git a/definitions/grib2/localConcepts/uerra/name.def b/definitions/grib2/localConcepts/uerra/name.def index 58802fe30..330d3e841 100644 --- a/definitions/grib2/localConcepts/uerra/name.def +++ b/definitions/grib2/localConcepts/uerra/name.def @@ -201,8 +201,8 @@ scaledValueOfSecondFixedSurface = missing() ; scaleFactorOfSecondFixedSurface = missing() ; } -#Snow melt -'Snow melt' = { +#Snowmelt +'Snowmelt' = { discipline = 0 ; parameterCategory = 1 ; parameterNumber = 16 ; diff --git a/definitions/grib2/localConcepts/uerra/paramId.def b/definitions/grib2/localConcepts/uerra/paramId.def index b87322427..7e4f5941e 100644 --- a/definitions/grib2/localConcepts/uerra/paramId.def +++ b/definitions/grib2/localConcepts/uerra/paramId.def @@ -201,7 +201,7 @@ scaledValueOfSecondFixedSurface = missing() ; scaleFactorOfSecondFixedSurface = missing() ; } -#Snow melt +#Snowmelt '3099' = { discipline = 0 ; parameterCategory = 1 ; diff --git a/definitions/grib2/localConcepts/uerra/shortName.def b/definitions/grib2/localConcepts/uerra/shortName.def index e3a06c13e..95eed7a09 100644 --- a/definitions/grib2/localConcepts/uerra/shortName.def +++ b/definitions/grib2/localConcepts/uerra/shortName.def @@ -201,7 +201,7 @@ scaledValueOfSecondFixedSurface = missing() ; scaleFactorOfSecondFixedSurface = missing() ; } -#Snow melt +#Snowmelt 'snom' = { discipline = 0 ; parameterCategory = 1 ; diff --git a/definitions/grib2/localConcepts/uerra/units.def b/definitions/grib2/localConcepts/uerra/units.def index ba9dc6acc..2766aadab 100644 --- a/definitions/grib2/localConcepts/uerra/units.def +++ b/definitions/grib2/localConcepts/uerra/units.def @@ -201,7 +201,7 @@ scaledValueOfSecondFixedSurface = missing() ; scaleFactorOfSecondFixedSurface = missing() ; } -#Snow melt +#Snowmelt 'kg m**-2' = { discipline = 0 ; parameterCategory = 1 ; diff --git a/definitions/grib2/name.def b/definitions/grib2/name.def index 8da8212d8..675f1ed91 100644 --- a/definitions/grib2/name.def +++ b/definitions/grib2/name.def @@ -508,8 +508,8 @@ parameterCategory = 6 ; parameterNumber = 32 ; } -#large scale precipitation -'large scale precipitation' = { +#Large-scale precipitation +'Large-scale precipitation' = { discipline = 0 ; parameterCategory = 1 ; parameterNumber = 54 ; @@ -6538,8 +6538,8 @@ parameterCategory = 2 ; parameterNumber = 0 ; } -#Snow melt -'Snow melt' = { +#Snowmelt +'Snowmelt' = { discipline = 2 ; parameterCategory = 0 ; parameterNumber = 41 ; @@ -8913,8 +8913,8 @@ parameterCategory = 1 ; parameterNumber = 60 ; } -#Snow Fall water equivalent -'Snow Fall water equivalent' = { +#Snowfall water equivalent +'Snowfall water equivalent' = { discipline = 0 ; parameterCategory = 1 ; parameterNumber = 53 ; diff --git a/definitions/grib2/paramId.def b/definitions/grib2/paramId.def index d9e7b6fe2..1290f8105 100644 --- a/definitions/grib2/paramId.def +++ b/definitions/grib2/paramId.def @@ -508,7 +508,7 @@ parameterCategory = 6 ; parameterNumber = 32 ; } -#large scale precipitation +#Large-scale precipitation '3062' = { discipline = 0 ; parameterCategory = 1 ; @@ -6538,7 +6538,7 @@ parameterCategory = 2 ; parameterNumber = 0 ; } -#Snow melt +#Snowmelt '3099' = { discipline = 2 ; parameterCategory = 0 ; @@ -8913,7 +8913,7 @@ parameterCategory = 1 ; parameterNumber = 60 ; } -#Snow Fall water equivalent +#Snowfall water equivalent '228144' = { discipline = 0 ; parameterCategory = 1 ; diff --git a/definitions/grib2/shortName.def b/definitions/grib2/shortName.def index 145510db1..5f4f337b7 100644 --- a/definitions/grib2/shortName.def +++ b/definitions/grib2/shortName.def @@ -508,7 +508,7 @@ parameterCategory = 6 ; parameterNumber = 32 ; } -#large scale precipitation +#Large-scale precipitation 'lsp' = { discipline = 0 ; parameterCategory = 1 ; @@ -6538,7 +6538,7 @@ parameterCategory = 2 ; parameterNumber = 0 ; } -#Snow melt +#Snowmelt 'snom' = { discipline = 2 ; parameterCategory = 0 ; @@ -8913,7 +8913,7 @@ parameterCategory = 1 ; parameterNumber = 60 ; } -#Snow Fall water equivalent +#Snowfall water equivalent 'sf' = { discipline = 0 ; parameterCategory = 1 ; diff --git a/definitions/grib2/units.def b/definitions/grib2/units.def index ddcec20ce..b5bd7ce85 100644 --- a/definitions/grib2/units.def +++ b/definitions/grib2/units.def @@ -508,7 +508,7 @@ parameterCategory = 6 ; parameterNumber = 32 ; } -#large scale precipitation +#Large-scale precipitation 'kg m**-2' = { discipline = 0 ; parameterCategory = 1 ; @@ -6538,7 +6538,7 @@ parameterCategory = 2 ; parameterNumber = 0 ; } -#Snow melt +#Snowmelt 'kg m**-2' = { discipline = 2 ; parameterCategory = 0 ; @@ -8913,7 +8913,7 @@ parameterCategory = 1 ; parameterNumber = 60 ; } -#Snow Fall water equivalent +#Snowfall water equivalent 'kg m**-2' = { discipline = 0 ; parameterCategory = 1 ; From fbc16be5312ecc6ebbcae32de89f6320a04aa55e Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 22 Jun 2023 16:10:12 +0100 Subject: [PATCH 302/378] Fix broken Windows build --- src/grib_accessor_class_data_simple_packing.cc | 1 + 1 file changed, 1 insertion(+) diff --git a/src/grib_accessor_class_data_simple_packing.cc b/src/grib_accessor_class_data_simple_packing.cc index ba5d66131..7ef410546 100644 --- a/src/grib_accessor_class_data_simple_packing.cc +++ b/src/grib_accessor_class_data_simple_packing.cc @@ -12,6 +12,7 @@ #include "grib_bits_any_endian_simple.h" #include "grib_optimize_decimal_factor.h" #include +#include /* This is used by make_class.pl From 5018eb7059acfb7aa57aeea6adeac89abbd2d0d3 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 22 Jun 2023 16:44:25 +0100 Subject: [PATCH 303/378] Testing: Error condition --- src/grib_io.cc | 5 +++++ tests/extract_offsets.sh | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/grib_io.cc b/src/grib_io.cc index 32f007b68..d92f3565e 100644 --- a/src/grib_io.cc +++ b/src/grib_io.cc @@ -1840,6 +1840,11 @@ int codes_extract_offsets_malloc(grib_context* c, const char* filename, ProductK return GRIB_INVALID_ARGUMENT; } if (!c) c = grib_context_get_default(); + + if (path_is_directory(filename)) { + grib_context_log(c, GRIB_LOG_ERROR, "%s: \"%s\" is a directory", __func__, filename); + return GRIB_IO_PROBLEM; + } f = fopen(filename, "rb"); if (!f) { grib_context_log(c, GRIB_LOG_ERROR, "%s: Unable to read file \"%s\"", __func__, filename); diff --git a/tests/extract_offsets.sh b/tests/extract_offsets.sh index ecd849384..828a4dd3f 100755 --- a/tests/extract_offsets.sh +++ b/tests/extract_offsets.sh @@ -39,7 +39,7 @@ $EXEC ${test_dir}/extract_offsets ${data_dir} > $tempLog 2>&1 status=$? set -e [ $status -ne 0 ] -grep -q "Input output problem" $tempLog +grep -q "is a directory" $tempLog set +e $EXEC ${test_dir}/extract_offsets ${data_dir}/bad.grib > $tempLog 2>&1 From 03496f2fedd4e18ea00f22531e0144b5157c2431 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 22 Jun 2023 17:12:53 +0000 Subject: [PATCH 304/378] ECC-1619: GRIB2: Remove trailing spaces from parameter names --- definitions/grib1/localConcepts/ecmf/name.def | 24 ++-- .../grib1/localConcepts/ecmf/paramId.def | 12 +- .../grib1/localConcepts/ecmf/shortName.def | 12 +- .../grib1/localConcepts/ecmf/units.def | 12 +- definitions/grib1/localConcepts/rjtd/name.def | 8 +- .../grib1/localConcepts/rjtd/paramId.def | 4 +- .../grib1/localConcepts/rjtd/shortName.def | 4 +- .../grib1/localConcepts/rjtd/units.def | 4 +- definitions/grib1/name.def | 24 ++-- definitions/grib1/paramId.def | 12 +- definitions/grib1/shortName.def | 12 +- definitions/grib1/units.def | 12 +- definitions/grib2/localConcepts/ecmf/name.def | 60 ++++---- .../grib2/localConcepts/ecmf/paramId.def | 30 ++-- .../grib2/localConcepts/ecmf/shortName.def | 30 ++-- .../grib2/localConcepts/ecmf/units.def | 30 ++-- definitions/grib2/localConcepts/kwbc/name.def | 4 +- .../grib2/localConcepts/kwbc/paramId.def | 2 +- .../grib2/localConcepts/kwbc/shortName.def | 2 +- .../grib2/localConcepts/kwbc/units.def | 2 +- definitions/grib2/name.def | 136 +++++++++--------- definitions/grib2/paramId.def | 68 ++++----- definitions/grib2/shortName.def | 68 ++++----- definitions/grib2/units.def | 68 ++++----- 24 files changed, 320 insertions(+), 320 deletions(-) diff --git a/definitions/grib1/localConcepts/ecmf/name.def b/definitions/grib1/localConcepts/ecmf/name.def index fe9241183..867cf8a4c 100644 --- a/definitions/grib1/localConcepts/ecmf/name.def +++ b/definitions/grib1/localConcepts/ecmf/name.def @@ -4054,33 +4054,33 @@ table2Version = 210 ; indicatorOfParameter = 191 ; } -#UV visible albedo for diffuse radiation, isotropic component -'UV visible albedo for diffuse radiation, isotropic component ' = { +#UV visible albedo for diffuse radiation, isotropic component +'UV visible albedo for diffuse radiation, isotropic component' = { table2Version = 210 ; indicatorOfParameter = 192 ; } -#UV visible albedo for diffuse radiation, volumetric component -'UV visible albedo for diffuse radiation, volumetric component ' = { +#UV visible albedo for diffuse radiation, volumetric component +'UV visible albedo for diffuse radiation, volumetric component' = { table2Version = 210 ; indicatorOfParameter = 193 ; } -#UV visible albedo for diffuse radiation, geometric component -'UV visible albedo for diffuse radiation, geometric component ' = { +#UV visible albedo for diffuse radiation, geometric component +'UV visible albedo for diffuse radiation, geometric component' = { table2Version = 210 ; indicatorOfParameter = 194 ; } -#Near IR albedo for diffuse radiation, isotropic component -'Near IR albedo for diffuse radiation, isotropic component ' = { +#Near IR albedo for diffuse radiation, isotropic component +'Near IR albedo for diffuse radiation, isotropic component' = { table2Version = 210 ; indicatorOfParameter = 195 ; } -#Near IR albedo for diffuse radiation, volumetric component -'Near IR albedo for diffuse radiation, volumetric component ' = { +#Near IR albedo for diffuse radiation, volumetric component +'Near IR albedo for diffuse radiation, volumetric component' = { table2Version = 210 ; indicatorOfParameter = 196 ; } -#Near IR albedo for diffuse radiation, geometric component -'Near IR albedo for diffuse radiation, geometric component ' = { +#Near IR albedo for diffuse radiation, geometric component +'Near IR albedo for diffuse radiation, geometric component' = { table2Version = 210 ; indicatorOfParameter = 197 ; } diff --git a/definitions/grib1/localConcepts/ecmf/paramId.def b/definitions/grib1/localConcepts/ecmf/paramId.def index d75dfbb7e..79ab3c908 100644 --- a/definitions/grib1/localConcepts/ecmf/paramId.def +++ b/definitions/grib1/localConcepts/ecmf/paramId.def @@ -4054,32 +4054,32 @@ table2Version = 210 ; indicatorOfParameter = 191 ; } -#UV visible albedo for diffuse radiation, isotropic component +#UV visible albedo for diffuse radiation, isotropic component '210192' = { table2Version = 210 ; indicatorOfParameter = 192 ; } -#UV visible albedo for diffuse radiation, volumetric component +#UV visible albedo for diffuse radiation, volumetric component '210193' = { table2Version = 210 ; indicatorOfParameter = 193 ; } -#UV visible albedo for diffuse radiation, geometric component +#UV visible albedo for diffuse radiation, geometric component '210194' = { table2Version = 210 ; indicatorOfParameter = 194 ; } -#Near IR albedo for diffuse radiation, isotropic component +#Near IR albedo for diffuse radiation, isotropic component '210195' = { table2Version = 210 ; indicatorOfParameter = 195 ; } -#Near IR albedo for diffuse radiation, volumetric component +#Near IR albedo for diffuse radiation, volumetric component '210196' = { table2Version = 210 ; indicatorOfParameter = 196 ; } -#Near IR albedo for diffuse radiation, geometric component +#Near IR albedo for diffuse radiation, geometric component '210197' = { table2Version = 210 ; indicatorOfParameter = 197 ; diff --git a/definitions/grib1/localConcepts/ecmf/shortName.def b/definitions/grib1/localConcepts/ecmf/shortName.def index d3969233a..2b02b04cc 100644 --- a/definitions/grib1/localConcepts/ecmf/shortName.def +++ b/definitions/grib1/localConcepts/ecmf/shortName.def @@ -4054,32 +4054,32 @@ table2Version = 210 ; indicatorOfParameter = 191 ; } -#UV visible albedo for diffuse radiation, isotropic component +#UV visible albedo for diffuse radiation, isotropic component 'aluvdi' = { table2Version = 210 ; indicatorOfParameter = 192 ; } -#UV visible albedo for diffuse radiation, volumetric component +#UV visible albedo for diffuse radiation, volumetric component 'aluvdv' = { table2Version = 210 ; indicatorOfParameter = 193 ; } -#UV visible albedo for diffuse radiation, geometric component +#UV visible albedo for diffuse radiation, geometric component 'aluvdg' = { table2Version = 210 ; indicatorOfParameter = 194 ; } -#Near IR albedo for diffuse radiation, isotropic component +#Near IR albedo for diffuse radiation, isotropic component 'alnidi' = { table2Version = 210 ; indicatorOfParameter = 195 ; } -#Near IR albedo for diffuse radiation, volumetric component +#Near IR albedo for diffuse radiation, volumetric component 'alnidv' = { table2Version = 210 ; indicatorOfParameter = 196 ; } -#Near IR albedo for diffuse radiation, geometric component +#Near IR albedo for diffuse radiation, geometric component 'alnidg' = { table2Version = 210 ; indicatorOfParameter = 197 ; diff --git a/definitions/grib1/localConcepts/ecmf/units.def b/definitions/grib1/localConcepts/ecmf/units.def index a9dfdc89d..6df2da2e4 100644 --- a/definitions/grib1/localConcepts/ecmf/units.def +++ b/definitions/grib1/localConcepts/ecmf/units.def @@ -4054,32 +4054,32 @@ table2Version = 210 ; indicatorOfParameter = 191 ; } -#UV visible albedo for diffuse radiation, isotropic component +#UV visible albedo for diffuse radiation, isotropic component '(0 - 1)' = { table2Version = 210 ; indicatorOfParameter = 192 ; } -#UV visible albedo for diffuse radiation, volumetric component +#UV visible albedo for diffuse radiation, volumetric component '(0 - 1)' = { table2Version = 210 ; indicatorOfParameter = 193 ; } -#UV visible albedo for diffuse radiation, geometric component +#UV visible albedo for diffuse radiation, geometric component '(0 - 1)' = { table2Version = 210 ; indicatorOfParameter = 194 ; } -#Near IR albedo for diffuse radiation, isotropic component +#Near IR albedo for diffuse radiation, isotropic component '(0 - 1)' = { table2Version = 210 ; indicatorOfParameter = 195 ; } -#Near IR albedo for diffuse radiation, volumetric component +#Near IR albedo for diffuse radiation, volumetric component '(0 - 1)' = { table2Version = 210 ; indicatorOfParameter = 196 ; } -#Near IR albedo for diffuse radiation, geometric component +#Near IR albedo for diffuse radiation, geometric component '(0 - 1)' = { table2Version = 210 ; indicatorOfParameter = 197 ; diff --git a/definitions/grib1/localConcepts/rjtd/name.def b/definitions/grib1/localConcepts/rjtd/name.def index e60025071..50010a10d 100644 --- a/definitions/grib1/localConcepts/rjtd/name.def +++ b/definitions/grib1/localConcepts/rjtd/name.def @@ -665,13 +665,13 @@ table2Version = 200 ; indicatorOfParameter = 48 ; } -#U-component of current -'U-component of current ' = { +#U-component of current +'U-component of current' = { table2Version = 200 ; indicatorOfParameter = 49 ; } -#V-component of current -'V-component of current ' = { +#V-component of current +'V-component of current' = { table2Version = 200 ; indicatorOfParameter = 50 ; } diff --git a/definitions/grib1/localConcepts/rjtd/paramId.def b/definitions/grib1/localConcepts/rjtd/paramId.def index 69b120cb0..589e86e05 100644 --- a/definitions/grib1/localConcepts/rjtd/paramId.def +++ b/definitions/grib1/localConcepts/rjtd/paramId.def @@ -665,12 +665,12 @@ table2Version = 200 ; indicatorOfParameter = 48 ; } -#U-component of current +#U-component of current '3049' = { table2Version = 200 ; indicatorOfParameter = 49 ; } -#V-component of current +#V-component of current '3050' = { table2Version = 200 ; indicatorOfParameter = 50 ; diff --git a/definitions/grib1/localConcepts/rjtd/shortName.def b/definitions/grib1/localConcepts/rjtd/shortName.def index 8a1d93a92..109414b94 100644 --- a/definitions/grib1/localConcepts/rjtd/shortName.def +++ b/definitions/grib1/localConcepts/rjtd/shortName.def @@ -665,12 +665,12 @@ table2Version = 200 ; indicatorOfParameter = 48 ; } -#U-component of current +#U-component of current 'ucurr' = { table2Version = 200 ; indicatorOfParameter = 49 ; } -#V-component of current +#V-component of current 'vcurr' = { table2Version = 200 ; indicatorOfParameter = 50 ; diff --git a/definitions/grib1/localConcepts/rjtd/units.def b/definitions/grib1/localConcepts/rjtd/units.def index 4e17ab568..93e7b0e56 100644 --- a/definitions/grib1/localConcepts/rjtd/units.def +++ b/definitions/grib1/localConcepts/rjtd/units.def @@ -665,12 +665,12 @@ table2Version = 200 ; indicatorOfParameter = 48 ; } -#U-component of current +#U-component of current 'm s**-1' = { table2Version = 200 ; indicatorOfParameter = 49 ; } -#V-component of current +#V-component of current 'm s**-1' = { table2Version = 200 ; indicatorOfParameter = 50 ; diff --git a/definitions/grib1/name.def b/definitions/grib1/name.def index 468179199..8bda2a845 100644 --- a/definitions/grib1/name.def +++ b/definitions/grib1/name.def @@ -392,13 +392,13 @@ table2Version = 3 ; indicatorOfParameter = 48 ; } -#U-component of current -'U-component of current ' = { +#U-component of current +'U-component of current' = { table2Version = 3 ; indicatorOfParameter = 49 ; } -#V-component of current -'V-component of current ' = { +#V-component of current +'V-component of current' = { table2Version = 3 ; indicatorOfParameter = 50 ; } @@ -1073,13 +1073,13 @@ table2Version = 2 ; indicatorOfParameter = 48 ; } -#U-component of current -'U-component of current ' = { +#U-component of current +'U-component of current' = { table2Version = 2 ; indicatorOfParameter = 49 ; } -#V-component of current -'V-component of current ' = { +#V-component of current +'V-component of current' = { table2Version = 2 ; indicatorOfParameter = 50 ; } @@ -1754,13 +1754,13 @@ table2Version = 1 ; indicatorOfParameter = 48 ; } -#U-component of current -'U-component of current ' = { +#U-component of current +'U-component of current' = { table2Version = 1 ; indicatorOfParameter = 49 ; } -#V-component of current -'V-component of current ' = { +#V-component of current +'V-component of current' = { table2Version = 1 ; indicatorOfParameter = 50 ; } diff --git a/definitions/grib1/paramId.def b/definitions/grib1/paramId.def index 5e4ebc281..6c10f9258 100644 --- a/definitions/grib1/paramId.def +++ b/definitions/grib1/paramId.def @@ -392,12 +392,12 @@ table2Version = 3 ; indicatorOfParameter = 48 ; } -#U-component of current +#U-component of current '3049' = { table2Version = 3 ; indicatorOfParameter = 49 ; } -#V-component of current +#V-component of current '3050' = { table2Version = 3 ; indicatorOfParameter = 50 ; @@ -1073,12 +1073,12 @@ table2Version = 2 ; indicatorOfParameter = 48 ; } -#U-component of current +#U-component of current '3049' = { table2Version = 2 ; indicatorOfParameter = 49 ; } -#V-component of current +#V-component of current '3050' = { table2Version = 2 ; indicatorOfParameter = 50 ; @@ -1754,12 +1754,12 @@ table2Version = 1 ; indicatorOfParameter = 48 ; } -#U-component of current +#U-component of current '3049' = { table2Version = 1 ; indicatorOfParameter = 49 ; } -#V-component of current +#V-component of current '3050' = { table2Version = 1 ; indicatorOfParameter = 50 ; diff --git a/definitions/grib1/shortName.def b/definitions/grib1/shortName.def index d154ba6af..07bb584dd 100644 --- a/definitions/grib1/shortName.def +++ b/definitions/grib1/shortName.def @@ -392,12 +392,12 @@ table2Version = 3 ; indicatorOfParameter = 48 ; } -#U-component of current +#U-component of current 'ucurr' = { table2Version = 3 ; indicatorOfParameter = 49 ; } -#V-component of current +#V-component of current 'vcurr' = { table2Version = 3 ; indicatorOfParameter = 50 ; @@ -1073,12 +1073,12 @@ table2Version = 2 ; indicatorOfParameter = 48 ; } -#U-component of current +#U-component of current 'ucurr' = { table2Version = 2 ; indicatorOfParameter = 49 ; } -#V-component of current +#V-component of current 'vcurr' = { table2Version = 2 ; indicatorOfParameter = 50 ; @@ -1754,12 +1754,12 @@ table2Version = 1 ; indicatorOfParameter = 48 ; } -#U-component of current +#U-component of current 'ucurr' = { table2Version = 1 ; indicatorOfParameter = 49 ; } -#V-component of current +#V-component of current 'vcurr' = { table2Version = 1 ; indicatorOfParameter = 50 ; diff --git a/definitions/grib1/units.def b/definitions/grib1/units.def index ee17ac167..5c54afcd0 100644 --- a/definitions/grib1/units.def +++ b/definitions/grib1/units.def @@ -392,12 +392,12 @@ table2Version = 3 ; indicatorOfParameter = 48 ; } -#U-component of current +#U-component of current 'm s**-1' = { table2Version = 3 ; indicatorOfParameter = 49 ; } -#V-component of current +#V-component of current 'm s**-1' = { table2Version = 3 ; indicatorOfParameter = 50 ; @@ -1073,12 +1073,12 @@ table2Version = 2 ; indicatorOfParameter = 48 ; } -#U-component of current +#U-component of current 'm s**-1' = { table2Version = 2 ; indicatorOfParameter = 49 ; } -#V-component of current +#V-component of current 'm s**-1' = { table2Version = 2 ; indicatorOfParameter = 50 ; @@ -1754,12 +1754,12 @@ table2Version = 1 ; indicatorOfParameter = 48 ; } -#U-component of current +#U-component of current 'm s**-1' = { table2Version = 1 ; indicatorOfParameter = 49 ; } -#V-component of current +#V-component of current 'm s**-1' = { table2Version = 1 ; indicatorOfParameter = 50 ; diff --git a/definitions/grib2/localConcepts/ecmf/name.def b/definitions/grib2/localConcepts/ecmf/name.def index 356bdd4e4..954df8831 100644 --- a/definitions/grib2/localConcepts/ecmf/name.def +++ b/definitions/grib2/localConcepts/ecmf/name.def @@ -2804,38 +2804,38 @@ parameterNumber = 194 ; typeOfGeneratingProcess = 9 ; } -#UV visible albedo for diffuse radiation, isotropic component -'UV visible albedo for diffuse radiation, isotropic component ' = { +#UV visible albedo for diffuse radiation, isotropic component +'UV visible albedo for diffuse radiation, isotropic component' = { discipline = 192 ; parameterCategory = 210 ; parameterNumber = 192 ; } -#UV visible albedo for diffuse radiation, volumetric component -'UV visible albedo for diffuse radiation, volumetric component ' = { +#UV visible albedo for diffuse radiation, volumetric component +'UV visible albedo for diffuse radiation, volumetric component' = { discipline = 192 ; parameterCategory = 210 ; parameterNumber = 193 ; } -#UV visible albedo for diffuse radiation, geometric component -'UV visible albedo for diffuse radiation, geometric component ' = { +#UV visible albedo for diffuse radiation, geometric component +'UV visible albedo for diffuse radiation, geometric component' = { discipline = 192 ; parameterCategory = 210 ; parameterNumber = 194 ; } -#Near IR albedo for diffuse radiation, isotropic component -'Near IR albedo for diffuse radiation, isotropic component ' = { +#Near IR albedo for diffuse radiation, isotropic component +'Near IR albedo for diffuse radiation, isotropic component' = { discipline = 192 ; parameterCategory = 210 ; parameterNumber = 195 ; } -#Near IR albedo for diffuse radiation, volumetric component -'Near IR albedo for diffuse radiation, volumetric component ' = { +#Near IR albedo for diffuse radiation, volumetric component +'Near IR albedo for diffuse radiation, volumetric component' = { discipline = 192 ; parameterCategory = 210 ; parameterNumber = 196 ; } -#Near IR albedo for diffuse radiation, geometric component -'Near IR albedo for diffuse radiation, geometric component ' = { +#Near IR albedo for diffuse radiation, geometric component +'Near IR albedo for diffuse radiation, geometric component' = { discipline = 192 ; parameterCategory = 210 ; parameterNumber = 197 ; @@ -10996,8 +10996,8 @@ parameterCategory = 218 ; parameterNumber = 206 ; } -#Column integrated mass density of Anthropogenic volatile organic compounds -'Column integrated mass density of Anthropogenic volatile organic compounds ' = { +#Column integrated mass density of Anthropogenic volatile organic compounds +'Column integrated mass density of Anthropogenic volatile organic compounds' = { localTablesVersion = 1 ; discipline = 0 ; parameterCategory = 20 ; @@ -11005,8 +11005,8 @@ constituentType = 65532 ; is_chemical = 1 ; } -#Column integrated mass density of Biomass burning volatile organic compounds -'Column integrated mass density of Biomass burning volatile organic compounds ' = { +#Column integrated mass density of Biomass burning volatile organic compounds +'Column integrated mass density of Biomass burning volatile organic compounds' = { localTablesVersion = 1 ; discipline = 0 ; parameterCategory = 20 ; @@ -12334,8 +12334,8 @@ parameterCategory = 219 ; parameterNumber = 220 ; } -#Atmosphere emission mass flux of Anthropogenic volatile organic compounds -'Atmosphere emission mass flux of Anthropogenic volatile organic compounds ' = { +#Atmosphere emission mass flux of Anthropogenic volatile organic compounds +'Atmosphere emission mass flux of Anthropogenic volatile organic compounds' = { localTablesVersion = 1 ; discipline = 0 ; parameterCategory = 20 ; @@ -12343,8 +12343,8 @@ constituentType = 65532 ; is_chemical = 1 ; } -#Atmosphere emission mass flux of Biomass burning volatile organic compounds -'Atmosphere emission mass flux of Biomass burning volatile organic compounds ' = { +#Atmosphere emission mass flux of Biomass burning volatile organic compounds +'Atmosphere emission mass flux of Biomass burning volatile organic compounds' = { localTablesVersion = 1 ; discipline = 0 ; parameterCategory = 20 ; @@ -13588,8 +13588,8 @@ parameterCategory = 221 ; parameterNumber = 206 ; } -#Dry deposition velocity of Anthropogenic volatile organic compounds -'Dry deposition velocity of Anthropogenic volatile organic compounds ' = { +#Dry deposition velocity of Anthropogenic volatile organic compounds +'Dry deposition velocity of Anthropogenic volatile organic compounds' = { localTablesVersion = 1 ; discipline = 0 ; parameterCategory = 20 ; @@ -13597,8 +13597,8 @@ constituentType = 65532 ; is_chemical = 1 ; } -#Dry deposition velocity of Biomass burning volatile organic compounds -'Dry deposition velocity of Biomass burning volatile organic compounds ' = { +#Dry deposition velocity of Biomass burning volatile organic compounds +'Dry deposition velocity of Biomass burning volatile organic compounds' = { localTablesVersion = 1 ; discipline = 0 ; parameterCategory = 20 ; @@ -13656,8 +13656,8 @@ typeOfStatisticalProcessing = 1 ; is_chemical = 1 ; } -#Time-integrated wet deposition mass flux of Condensable gas type 1 -'Time-integrated wet deposition mass flux of Condensable gas type 1 ' = { +#Time-integrated wet deposition mass flux of Condensable gas type 1 +'Time-integrated wet deposition mass flux of Condensable gas type 1' = { localTablesVersion = 1 ; discipline = 0 ; parameterCategory = 20 ; @@ -13666,8 +13666,8 @@ typeOfStatisticalProcessing = 1 ; is_chemical = 1 ; } -#Time-integrated wet deposition mass flux of Condensable gas type 2a -'Time-integrated wet deposition mass flux of Condensable gas type 2a ' = { +#Time-integrated wet deposition mass flux of Condensable gas type 2a +'Time-integrated wet deposition mass flux of Condensable gas type 2a' = { localTablesVersion = 1 ; discipline = 0 ; parameterCategory = 20 ; @@ -13676,8 +13676,8 @@ typeOfStatisticalProcessing = 1 ; is_chemical = 1 ; } -#Time-integrated wet deposition mass flux of Condensable gas type 2b -'Time-integrated wet deposition mass flux of Condensable gas type 2b ' = { +#Time-integrated wet deposition mass flux of Condensable gas type 2b +'Time-integrated wet deposition mass flux of Condensable gas type 2b' = { localTablesVersion = 1 ; discipline = 0 ; parameterCategory = 20 ; diff --git a/definitions/grib2/localConcepts/ecmf/paramId.def b/definitions/grib2/localConcepts/ecmf/paramId.def index 0299e302d..a92cba27a 100644 --- a/definitions/grib2/localConcepts/ecmf/paramId.def +++ b/definitions/grib2/localConcepts/ecmf/paramId.def @@ -2804,37 +2804,37 @@ parameterNumber = 194 ; typeOfGeneratingProcess = 9 ; } -#UV visible albedo for diffuse radiation, isotropic component +#UV visible albedo for diffuse radiation, isotropic component '210192' = { discipline = 192 ; parameterCategory = 210 ; parameterNumber = 192 ; } -#UV visible albedo for diffuse radiation, volumetric component +#UV visible albedo for diffuse radiation, volumetric component '210193' = { discipline = 192 ; parameterCategory = 210 ; parameterNumber = 193 ; } -#UV visible albedo for diffuse radiation, geometric component +#UV visible albedo for diffuse radiation, geometric component '210194' = { discipline = 192 ; parameterCategory = 210 ; parameterNumber = 194 ; } -#Near IR albedo for diffuse radiation, isotropic component +#Near IR albedo for diffuse radiation, isotropic component '210195' = { discipline = 192 ; parameterCategory = 210 ; parameterNumber = 195 ; } -#Near IR albedo for diffuse radiation, volumetric component +#Near IR albedo for diffuse radiation, volumetric component '210196' = { discipline = 192 ; parameterCategory = 210 ; parameterNumber = 196 ; } -#Near IR albedo for diffuse radiation, geometric component +#Near IR albedo for diffuse radiation, geometric component '210197' = { discipline = 192 ; parameterCategory = 210 ; @@ -10996,7 +10996,7 @@ parameterCategory = 218 ; parameterNumber = 206 ; } -#Column integrated mass density of Anthropogenic volatile organic compounds +#Column integrated mass density of Anthropogenic volatile organic compounds '218231' = { localTablesVersion = 1 ; discipline = 0 ; @@ -11005,7 +11005,7 @@ constituentType = 65532 ; is_chemical = 1 ; } -#Column integrated mass density of Biomass burning volatile organic compounds +#Column integrated mass density of Biomass burning volatile organic compounds '218232' = { localTablesVersion = 1 ; discipline = 0 ; @@ -12334,7 +12334,7 @@ parameterCategory = 219 ; parameterNumber = 220 ; } -#Atmosphere emission mass flux of Anthropogenic volatile organic compounds +#Atmosphere emission mass flux of Anthropogenic volatile organic compounds '219231' = { localTablesVersion = 1 ; discipline = 0 ; @@ -12343,7 +12343,7 @@ constituentType = 65532 ; is_chemical = 1 ; } -#Atmosphere emission mass flux of Biomass burning volatile organic compounds +#Atmosphere emission mass flux of Biomass burning volatile organic compounds '219232' = { localTablesVersion = 1 ; discipline = 0 ; @@ -13588,7 +13588,7 @@ parameterCategory = 221 ; parameterNumber = 206 ; } -#Dry deposition velocity of Anthropogenic volatile organic compounds +#Dry deposition velocity of Anthropogenic volatile organic compounds '221231' = { localTablesVersion = 1 ; discipline = 0 ; @@ -13597,7 +13597,7 @@ constituentType = 65532 ; is_chemical = 1 ; } -#Dry deposition velocity of Biomass burning volatile organic compounds +#Dry deposition velocity of Biomass burning volatile organic compounds '221232' = { localTablesVersion = 1 ; discipline = 0 ; @@ -13656,7 +13656,7 @@ typeOfStatisticalProcessing = 1 ; is_chemical = 1 ; } -#Time-integrated wet deposition mass flux of Condensable gas type 1 +#Time-integrated wet deposition mass flux of Condensable gas type 1 '223186' = { localTablesVersion = 1 ; discipline = 0 ; @@ -13666,7 +13666,7 @@ typeOfStatisticalProcessing = 1 ; is_chemical = 1 ; } -#Time-integrated wet deposition mass flux of Condensable gas type 2a +#Time-integrated wet deposition mass flux of Condensable gas type 2a '223187' = { localTablesVersion = 1 ; discipline = 0 ; @@ -13676,7 +13676,7 @@ typeOfStatisticalProcessing = 1 ; is_chemical = 1 ; } -#Time-integrated wet deposition mass flux of Condensable gas type 2b +#Time-integrated wet deposition mass flux of Condensable gas type 2b '223188' = { localTablesVersion = 1 ; discipline = 0 ; diff --git a/definitions/grib2/localConcepts/ecmf/shortName.def b/definitions/grib2/localConcepts/ecmf/shortName.def index ee182920a..08a7b1c84 100644 --- a/definitions/grib2/localConcepts/ecmf/shortName.def +++ b/definitions/grib2/localConcepts/ecmf/shortName.def @@ -2804,37 +2804,37 @@ parameterNumber = 194 ; typeOfGeneratingProcess = 9 ; } -#UV visible albedo for diffuse radiation, isotropic component +#UV visible albedo for diffuse radiation, isotropic component 'aluvdi' = { discipline = 192 ; parameterCategory = 210 ; parameterNumber = 192 ; } -#UV visible albedo for diffuse radiation, volumetric component +#UV visible albedo for diffuse radiation, volumetric component 'aluvdv' = { discipline = 192 ; parameterCategory = 210 ; parameterNumber = 193 ; } -#UV visible albedo for diffuse radiation, geometric component +#UV visible albedo for diffuse radiation, geometric component 'aluvdg' = { discipline = 192 ; parameterCategory = 210 ; parameterNumber = 194 ; } -#Near IR albedo for diffuse radiation, isotropic component +#Near IR albedo for diffuse radiation, isotropic component 'alnidi' = { discipline = 192 ; parameterCategory = 210 ; parameterNumber = 195 ; } -#Near IR albedo for diffuse radiation, volumetric component +#Near IR albedo for diffuse radiation, volumetric component 'alnidv' = { discipline = 192 ; parameterCategory = 210 ; parameterNumber = 196 ; } -#Near IR albedo for diffuse radiation, geometric component +#Near IR albedo for diffuse radiation, geometric component 'alnidg' = { discipline = 192 ; parameterCategory = 210 ; @@ -10996,7 +10996,7 @@ parameterCategory = 218 ; parameterNumber = 206 ; } -#Column integrated mass density of Anthropogenic volatile organic compounds +#Column integrated mass density of Anthropogenic volatile organic compounds 'tc_VOCA' = { localTablesVersion = 1 ; discipline = 0 ; @@ -11005,7 +11005,7 @@ constituentType = 65532 ; is_chemical = 1 ; } -#Column integrated mass density of Biomass burning volatile organic compounds +#Column integrated mass density of Biomass burning volatile organic compounds 'tc_VOCBB' = { localTablesVersion = 1 ; discipline = 0 ; @@ -12334,7 +12334,7 @@ parameterCategory = 219 ; parameterNumber = 220 ; } -#Atmosphere emission mass flux of Anthropogenic volatile organic compounds +#Atmosphere emission mass flux of Anthropogenic volatile organic compounds 'e_VOCA' = { localTablesVersion = 1 ; discipline = 0 ; @@ -12343,7 +12343,7 @@ constituentType = 65532 ; is_chemical = 1 ; } -#Atmosphere emission mass flux of Biomass burning volatile organic compounds +#Atmosphere emission mass flux of Biomass burning volatile organic compounds 'e_VOCBB' = { localTablesVersion = 1 ; discipline = 0 ; @@ -13588,7 +13588,7 @@ parameterCategory = 221 ; parameterNumber = 206 ; } -#Dry deposition velocity of Anthropogenic volatile organic compounds +#Dry deposition velocity of Anthropogenic volatile organic compounds 'dv_VOCA' = { localTablesVersion = 1 ; discipline = 0 ; @@ -13597,7 +13597,7 @@ constituentType = 65532 ; is_chemical = 1 ; } -#Dry deposition velocity of Biomass burning volatile organic compounds +#Dry deposition velocity of Biomass burning volatile organic compounds 'dv_VOCBB' = { localTablesVersion = 1 ; discipline = 0 ; @@ -13656,7 +13656,7 @@ typeOfStatisticalProcessing = 1 ; is_chemical = 1 ; } -#Time-integrated wet deposition mass flux of Condensable gas type 1 +#Time-integrated wet deposition mass flux of Condensable gas type 1 'acc_wet_depm_SOG1' = { localTablesVersion = 1 ; discipline = 0 ; @@ -13666,7 +13666,7 @@ typeOfStatisticalProcessing = 1 ; is_chemical = 1 ; } -#Time-integrated wet deposition mass flux of Condensable gas type 2a +#Time-integrated wet deposition mass flux of Condensable gas type 2a 'acc_wet_depm_SOG2A' = { localTablesVersion = 1 ; discipline = 0 ; @@ -13676,7 +13676,7 @@ typeOfStatisticalProcessing = 1 ; is_chemical = 1 ; } -#Time-integrated wet deposition mass flux of Condensable gas type 2b +#Time-integrated wet deposition mass flux of Condensable gas type 2b 'acc_wet_depm_SOG2B' = { localTablesVersion = 1 ; discipline = 0 ; diff --git a/definitions/grib2/localConcepts/ecmf/units.def b/definitions/grib2/localConcepts/ecmf/units.def index 43fdb374c..5b6b2a8d2 100644 --- a/definitions/grib2/localConcepts/ecmf/units.def +++ b/definitions/grib2/localConcepts/ecmf/units.def @@ -2804,37 +2804,37 @@ parameterNumber = 194 ; typeOfGeneratingProcess = 9 ; } -#UV visible albedo for diffuse radiation, isotropic component +#UV visible albedo for diffuse radiation, isotropic component '(0 - 1)' = { discipline = 192 ; parameterCategory = 210 ; parameterNumber = 192 ; } -#UV visible albedo for diffuse radiation, volumetric component +#UV visible albedo for diffuse radiation, volumetric component '(0 - 1)' = { discipline = 192 ; parameterCategory = 210 ; parameterNumber = 193 ; } -#UV visible albedo for diffuse radiation, geometric component +#UV visible albedo for diffuse radiation, geometric component '(0 - 1)' = { discipline = 192 ; parameterCategory = 210 ; parameterNumber = 194 ; } -#Near IR albedo for diffuse radiation, isotropic component +#Near IR albedo for diffuse radiation, isotropic component '(0 - 1)' = { discipline = 192 ; parameterCategory = 210 ; parameterNumber = 195 ; } -#Near IR albedo for diffuse radiation, volumetric component +#Near IR albedo for diffuse radiation, volumetric component '(0 - 1)' = { discipline = 192 ; parameterCategory = 210 ; parameterNumber = 196 ; } -#Near IR albedo for diffuse radiation, geometric component +#Near IR albedo for diffuse radiation, geometric component '(0 - 1)' = { discipline = 192 ; parameterCategory = 210 ; @@ -10996,7 +10996,7 @@ parameterCategory = 218 ; parameterNumber = 206 ; } -#Column integrated mass density of Anthropogenic volatile organic compounds +#Column integrated mass density of Anthropogenic volatile organic compounds 'kg m**-2' = { localTablesVersion = 1 ; discipline = 0 ; @@ -11005,7 +11005,7 @@ constituentType = 65532 ; is_chemical = 1 ; } -#Column integrated mass density of Biomass burning volatile organic compounds +#Column integrated mass density of Biomass burning volatile organic compounds 'kg m**-2' = { localTablesVersion = 1 ; discipline = 0 ; @@ -12334,7 +12334,7 @@ parameterCategory = 219 ; parameterNumber = 220 ; } -#Atmosphere emission mass flux of Anthropogenic volatile organic compounds +#Atmosphere emission mass flux of Anthropogenic volatile organic compounds 'kg m**-2 s**-1' = { localTablesVersion = 1 ; discipline = 0 ; @@ -12343,7 +12343,7 @@ constituentType = 65532 ; is_chemical = 1 ; } -#Atmosphere emission mass flux of Biomass burning volatile organic compounds +#Atmosphere emission mass flux of Biomass burning volatile organic compounds 'kg m**-2 s**-1' = { localTablesVersion = 1 ; discipline = 0 ; @@ -13588,7 +13588,7 @@ parameterCategory = 221 ; parameterNumber = 206 ; } -#Dry deposition velocity of Anthropogenic volatile organic compounds +#Dry deposition velocity of Anthropogenic volatile organic compounds 'm s**-1' = { localTablesVersion = 1 ; discipline = 0 ; @@ -13597,7 +13597,7 @@ constituentType = 65532 ; is_chemical = 1 ; } -#Dry deposition velocity of Biomass burning volatile organic compounds +#Dry deposition velocity of Biomass burning volatile organic compounds 'm s**-1' = { localTablesVersion = 1 ; discipline = 0 ; @@ -13656,7 +13656,7 @@ typeOfStatisticalProcessing = 1 ; is_chemical = 1 ; } -#Time-integrated wet deposition mass flux of Condensable gas type 1 +#Time-integrated wet deposition mass flux of Condensable gas type 1 'kg m**-2' = { localTablesVersion = 1 ; discipline = 0 ; @@ -13666,7 +13666,7 @@ typeOfStatisticalProcessing = 1 ; is_chemical = 1 ; } -#Time-integrated wet deposition mass flux of Condensable gas type 2a +#Time-integrated wet deposition mass flux of Condensable gas type 2a 'kg m**-2' = { localTablesVersion = 1 ; discipline = 0 ; @@ -13676,7 +13676,7 @@ typeOfStatisticalProcessing = 1 ; is_chemical = 1 ; } -#Time-integrated wet deposition mass flux of Condensable gas type 2b +#Time-integrated wet deposition mass flux of Condensable gas type 2b 'kg m**-2' = { localTablesVersion = 1 ; discipline = 0 ; diff --git a/definitions/grib2/localConcepts/kwbc/name.def b/definitions/grib2/localConcepts/kwbc/name.def index 3afad81b8..2f6a1c3be 100644 --- a/definitions/grib2/localConcepts/kwbc/name.def +++ b/definitions/grib2/localConcepts/kwbc/name.def @@ -173,8 +173,8 @@ parameterCategory = 4 ; parameterNumber = 193 ; } -#UV index -'UV index ' = { +#UV index +'UV index' = { discipline = 0 ; parameterCategory = 7 ; parameterNumber = 196 ; diff --git a/definitions/grib2/localConcepts/kwbc/paramId.def b/definitions/grib2/localConcepts/kwbc/paramId.def index 02115d105..8add9d28a 100644 --- a/definitions/grib2/localConcepts/kwbc/paramId.def +++ b/definitions/grib2/localConcepts/kwbc/paramId.def @@ -173,7 +173,7 @@ parameterCategory = 4 ; parameterNumber = 193 ; } -#UV index +#UV index '260094' = { discipline = 0 ; parameterCategory = 7 ; diff --git a/definitions/grib2/localConcepts/kwbc/shortName.def b/definitions/grib2/localConcepts/kwbc/shortName.def index 5e9f0732c..9c925f00e 100644 --- a/definitions/grib2/localConcepts/kwbc/shortName.def +++ b/definitions/grib2/localConcepts/kwbc/shortName.def @@ -173,7 +173,7 @@ parameterCategory = 4 ; parameterNumber = 193 ; } -#UV index +#UV index 'uvi' = { discipline = 0 ; parameterCategory = 7 ; diff --git a/definitions/grib2/localConcepts/kwbc/units.def b/definitions/grib2/localConcepts/kwbc/units.def index 8c60c88b6..fbfbcc739 100644 --- a/definitions/grib2/localConcepts/kwbc/units.def +++ b/definitions/grib2/localConcepts/kwbc/units.def @@ -173,7 +173,7 @@ parameterCategory = 4 ; parameterNumber = 193 ; } -#UV index +#UV index 'Numeric' = { discipline = 0 ; parameterCategory = 7 ; diff --git a/definitions/grib2/name.def b/definitions/grib2/name.def index 675f1ed91..7ade8b153 100644 --- a/definitions/grib2/name.def +++ b/definitions/grib2/name.def @@ -1178,8 +1178,8 @@ constituentType = 60057 ; is_chemical = 1 ; } -#Column integrated mass density of Volcanic sulfur dioxide -'Column integrated mass density of Volcanic sulfur dioxide ' = { +#Column integrated mass density of Volcanic sulfur dioxide +'Column integrated mass density of Volcanic sulfur dioxide' = { discipline = 0 ; parameterCategory = 20 ; parameterNumber = 1 ; @@ -1187,80 +1187,80 @@ is_chemical_srcsink = 1 ; sourceSinkChemicalPhysicalProcess = 7 ; } -#Column integrated mass density of Aromatic peroxy radical -'Column integrated mass density of Aromatic peroxy radical ' = { +#Column integrated mass density of Aromatic peroxy radical +'Column integrated mass density of Aromatic peroxy radical' = { discipline = 0 ; parameterCategory = 20 ; parameterNumber = 1 ; constituentType = 60029 ; is_chemical = 1 ; } -#Column integrated mass density of Ethyne -'Column integrated mass density of Ethyne ' = { +#Column integrated mass density of Ethyne +'Column integrated mass density of Ethyne' = { discipline = 0 ; parameterCategory = 20 ; parameterNumber = 1 ; constituentType = 10010 ; is_chemical = 1 ; } -#Column integrated mass density of Acetonitrile -'Column integrated mass density of Acetonitrile ' = { +#Column integrated mass density of Acetonitrile +'Column integrated mass density of Acetonitrile' = { discipline = 0 ; parameterCategory = 20 ; parameterNumber = 1 ; constituentType = 10007 ; is_chemical = 1 ; } -#Column integrated mass density of Methyl peroxy nitrate -'Column integrated mass density of Methyl peroxy nitrate ' = { +#Column integrated mass density of Methyl peroxy nitrate +'Column integrated mass density of Methyl peroxy nitrate' = { discipline = 0 ; parameterCategory = 20 ; parameterNumber = 1 ; constituentType = 10055 ; is_chemical = 1 ; } -#Column integrated mass density of Hydrogen cyanide -'Column integrated mass density of Hydrogen cyanide ' = { +#Column integrated mass density of Hydrogen cyanide +'Column integrated mass density of Hydrogen cyanide' = { discipline = 0 ; parameterCategory = 20 ; parameterNumber = 1 ; constituentType = 10006 ; is_chemical = 1 ; } -#Column integrated mass density of Hydroperoxy aldehydes type 1 -'Column integrated mass density of Hydroperoxy aldehydes type 1 ' = { +#Column integrated mass density of Hydroperoxy aldehydes type 1 +'Column integrated mass density of Hydroperoxy aldehydes type 1' = { discipline = 0 ; parameterCategory = 20 ; parameterNumber = 1 ; constituentType = 60058 ; is_chemical = 1 ; } -#Column integrated mass density of Hydroperoxy aldehydes type 2 -'Column integrated mass density of Hydroperoxy aldehydes type 2 ' = { +#Column integrated mass density of Hydroperoxy aldehydes type 2 +'Column integrated mass density of Hydroperoxy aldehydes type 2' = { discipline = 0 ; parameterCategory = 20 ; parameterNumber = 1 ; constituentType = 60059 ; is_chemical = 1 ; } -#Column integrated mass density of Isoprene peroxy type B -'Column integrated mass density of Isoprene peroxy type B ' = { +#Column integrated mass density of Isoprene peroxy type B +'Column integrated mass density of Isoprene peroxy type B' = { discipline = 0 ; parameterCategory = 20 ; parameterNumber = 1 ; constituentType = 60056 ; is_chemical = 1 ; } -#Column integrated mass density of Isoprene peroxy type D -'Column integrated mass density of Isoprene peroxy type D ' = { +#Column integrated mass density of Isoprene peroxy type D +'Column integrated mass density of Isoprene peroxy type D' = { discipline = 0 ; parameterCategory = 20 ; parameterNumber = 1 ; constituentType = 60057 ; is_chemical = 1 ; } -#Atmosphere emission mass flux of Volcanic sulfur dioxide -'Atmosphere emission mass flux of Volcanic sulfur dioxide ' = { +#Atmosphere emission mass flux of Volcanic sulfur dioxide +'Atmosphere emission mass flux of Volcanic sulfur dioxide' = { discipline = 0 ; parameterCategory = 20 ; parameterNumber = 3 ; @@ -1268,80 +1268,80 @@ is_chemical_srcsink = 1 ; sourceSinkChemicalPhysicalProcess = 7 ; } -#Atmosphere emission mass flux of Aromatic peroxy radical -'Atmosphere emission mass flux of Aromatic peroxy radical ' = { +#Atmosphere emission mass flux of Aromatic peroxy radical +'Atmosphere emission mass flux of Aromatic peroxy radical' = { discipline = 0 ; parameterCategory = 20 ; parameterNumber = 3 ; constituentType = 60029 ; is_chemical = 1 ; } -#Atmosphere emission mass flux of Ethyne -'Atmosphere emission mass flux of Ethyne ' = { +#Atmosphere emission mass flux of Ethyne +'Atmosphere emission mass flux of Ethyne' = { discipline = 0 ; parameterCategory = 20 ; parameterNumber = 3 ; constituentType = 10010 ; is_chemical = 1 ; } -#Atmosphere emission mass flux of Acetonitrile -'Atmosphere emission mass flux of Acetonitrile ' = { +#Atmosphere emission mass flux of Acetonitrile +'Atmosphere emission mass flux of Acetonitrile' = { discipline = 0 ; parameterCategory = 20 ; parameterNumber = 3 ; constituentType = 10007 ; is_chemical = 1 ; } -#Atmosphere emission mass flux of Methyl peroxy nitrate -'Atmosphere emission mass flux of Methyl peroxy nitrate ' = { +#Atmosphere emission mass flux of Methyl peroxy nitrate +'Atmosphere emission mass flux of Methyl peroxy nitrate' = { discipline = 0 ; parameterCategory = 20 ; parameterNumber = 3 ; constituentType = 10055 ; is_chemical = 1 ; } -#Atmosphere emission mass flux of Hydrogen cyanide -'Atmosphere emission mass flux of Hydrogen cyanide ' = { +#Atmosphere emission mass flux of Hydrogen cyanide +'Atmosphere emission mass flux of Hydrogen cyanide' = { discipline = 0 ; parameterCategory = 20 ; parameterNumber = 3 ; constituentType = 10006 ; is_chemical = 1 ; } -#Atmosphere emission mass flux of Hydroperoxy aldehydes type 1 -'Atmosphere emission mass flux of Hydroperoxy aldehydes type 1 ' = { +#Atmosphere emission mass flux of Hydroperoxy aldehydes type 1 +'Atmosphere emission mass flux of Hydroperoxy aldehydes type 1' = { discipline = 0 ; parameterCategory = 20 ; parameterNumber = 3 ; constituentType = 60058 ; is_chemical = 1 ; } -#Atmosphere emission mass flux of Hydroperoxy aldehydes type 2 -'Atmosphere emission mass flux of Hydroperoxy aldehydes type 2 ' = { +#Atmosphere emission mass flux of Hydroperoxy aldehydes type 2 +'Atmosphere emission mass flux of Hydroperoxy aldehydes type 2' = { discipline = 0 ; parameterCategory = 20 ; parameterNumber = 3 ; constituentType = 60059 ; is_chemical = 1 ; } -#Atmosphere emission mass flux of Isoprene peroxy type B -'Atmosphere emission mass flux of Isoprene peroxy type B ' = { +#Atmosphere emission mass flux of Isoprene peroxy type B +'Atmosphere emission mass flux of Isoprene peroxy type B' = { discipline = 0 ; parameterCategory = 20 ; parameterNumber = 3 ; constituentType = 60056 ; is_chemical = 1 ; } -#Atmosphere emission mass flux of Isoprene peroxy type D -'Atmosphere emission mass flux of Isoprene peroxy type D ' = { +#Atmosphere emission mass flux of Isoprene peroxy type D +'Atmosphere emission mass flux of Isoprene peroxy type D' = { discipline = 0 ; parameterCategory = 20 ; parameterNumber = 3 ; constituentType = 60057 ; is_chemical = 1 ; } -#Dry deposition velocity of Volcanic sulfur dioxide -'Dry deposition velocity of Volcanic sulfur dioxide ' = { +#Dry deposition velocity of Volcanic sulfur dioxide +'Dry deposition velocity of Volcanic sulfur dioxide' = { discipline = 0 ; parameterCategory = 20 ; parameterNumber = 15 ; @@ -1349,72 +1349,72 @@ is_chemical_srcsink = 1 ; sourceSinkChemicalPhysicalProcess = 7 ; } -#Dry deposition velocity of Aromatic peroxy radical -'Dry deposition velocity of Aromatic peroxy radical ' = { +#Dry deposition velocity of Aromatic peroxy radical +'Dry deposition velocity of Aromatic peroxy radical' = { discipline = 0 ; parameterCategory = 20 ; parameterNumber = 15 ; constituentType = 60029 ; is_chemical = 1 ; } -#Dry deposition velocity of Ethyne -'Dry deposition velocity of Ethyne ' = { +#Dry deposition velocity of Ethyne +'Dry deposition velocity of Ethyne' = { discipline = 0 ; parameterCategory = 20 ; parameterNumber = 15 ; constituentType = 10010 ; is_chemical = 1 ; } -#Dry deposition velocity of Acetonitrile -'Dry deposition velocity of Acetonitrile ' = { +#Dry deposition velocity of Acetonitrile +'Dry deposition velocity of Acetonitrile' = { discipline = 0 ; parameterCategory = 20 ; parameterNumber = 15 ; constituentType = 10007 ; is_chemical = 1 ; } -#Dry deposition velocity of Methyl peroxy nitrate -'Dry deposition velocity of Methyl peroxy nitrate ' = { +#Dry deposition velocity of Methyl peroxy nitrate +'Dry deposition velocity of Methyl peroxy nitrate' = { discipline = 0 ; parameterCategory = 20 ; parameterNumber = 15 ; constituentType = 10055 ; is_chemical = 1 ; } -#Dry deposition velocity of Hydrogen cyanide -'Dry deposition velocity of Hydrogen cyanide ' = { +#Dry deposition velocity of Hydrogen cyanide +'Dry deposition velocity of Hydrogen cyanide' = { discipline = 0 ; parameterCategory = 20 ; parameterNumber = 15 ; constituentType = 10006 ; is_chemical = 1 ; } -#Dry deposition velocity of Hydroperoxy aldehydes type 1 -'Dry deposition velocity of Hydroperoxy aldehydes type 1 ' = { +#Dry deposition velocity of Hydroperoxy aldehydes type 1 +'Dry deposition velocity of Hydroperoxy aldehydes type 1' = { discipline = 0 ; parameterCategory = 20 ; parameterNumber = 15 ; constituentType = 60058 ; is_chemical = 1 ; } -#Dry deposition velocity of Hydroperoxy aldehydes type 2 -'Dry deposition velocity of Hydroperoxy aldehydes type 2 ' = { +#Dry deposition velocity of Hydroperoxy aldehydes type 2 +'Dry deposition velocity of Hydroperoxy aldehydes type 2' = { discipline = 0 ; parameterCategory = 20 ; parameterNumber = 15 ; constituentType = 60059 ; is_chemical = 1 ; } -#Dry deposition velocity of Isoprene peroxy type B -'Dry deposition velocity of Isoprene peroxy type B ' = { +#Dry deposition velocity of Isoprene peroxy type B +'Dry deposition velocity of Isoprene peroxy type B' = { discipline = 0 ; parameterCategory = 20 ; parameterNumber = 15 ; constituentType = 60056 ; is_chemical = 1 ; } -#Dry deposition velocity of Isoprene peroxy type D -'Dry deposition velocity of Isoprene peroxy type D ' = { +#Dry deposition velocity of Isoprene peroxy type D +'Dry deposition velocity of Isoprene peroxy type D' = { discipline = 0 ; parameterCategory = 20 ; parameterNumber = 15 ; @@ -7676,8 +7676,8 @@ parameterCategory = 4 ; parameterNumber = 50 ; } -#UV index -'UV index ' = { +#UV index +'UV index' = { discipline = 0 ; parameterCategory = 4 ; parameterNumber = 51 ; @@ -8432,8 +8432,8 @@ parameterCategory = 1 ; parameterNumber = 3 ; } -#Estimated u component of wind -'Estimated u component of wind ' = { +#Estimated u component of wind +'Estimated u component of wind' = { discipline = 3 ; parameterCategory = 1 ; parameterNumber = 4 ; @@ -8696,14 +8696,14 @@ parameterCategory = 2 ; parameterNumber = 16 ; } -#U-component of current -'U-component of current ' = { +#U-component of current +'U-component of current' = { discipline = 10 ; parameterCategory = 1 ; parameterNumber = 2 ; } -#V-component of current -'V-component of current ' = { +#V-component of current +'V-component of current' = { discipline = 10 ; parameterCategory = 1 ; parameterNumber = 3 ; diff --git a/definitions/grib2/paramId.def b/definitions/grib2/paramId.def index 1290f8105..0fa34d573 100644 --- a/definitions/grib2/paramId.def +++ b/definitions/grib2/paramId.def @@ -1178,7 +1178,7 @@ constituentType = 60057 ; is_chemical = 1 ; } -#Column integrated mass density of Volcanic sulfur dioxide +#Column integrated mass density of Volcanic sulfur dioxide '218221' = { discipline = 0 ; parameterCategory = 20 ; @@ -1187,7 +1187,7 @@ is_chemical_srcsink = 1 ; sourceSinkChemicalPhysicalProcess = 7 ; } -#Column integrated mass density of Aromatic peroxy radical +#Column integrated mass density of Aromatic peroxy radical '218222' = { discipline = 0 ; parameterCategory = 20 ; @@ -1195,7 +1195,7 @@ constituentType = 60029 ; is_chemical = 1 ; } -#Column integrated mass density of Ethyne +#Column integrated mass density of Ethyne '218223' = { discipline = 0 ; parameterCategory = 20 ; @@ -1203,7 +1203,7 @@ constituentType = 10010 ; is_chemical = 1 ; } -#Column integrated mass density of Acetonitrile +#Column integrated mass density of Acetonitrile '218224' = { discipline = 0 ; parameterCategory = 20 ; @@ -1211,7 +1211,7 @@ constituentType = 10007 ; is_chemical = 1 ; } -#Column integrated mass density of Methyl peroxy nitrate +#Column integrated mass density of Methyl peroxy nitrate '218225' = { discipline = 0 ; parameterCategory = 20 ; @@ -1219,7 +1219,7 @@ constituentType = 10055 ; is_chemical = 1 ; } -#Column integrated mass density of Hydrogen cyanide +#Column integrated mass density of Hydrogen cyanide '218226' = { discipline = 0 ; parameterCategory = 20 ; @@ -1227,7 +1227,7 @@ constituentType = 10006 ; is_chemical = 1 ; } -#Column integrated mass density of Hydroperoxy aldehydes type 1 +#Column integrated mass density of Hydroperoxy aldehydes type 1 '218227' = { discipline = 0 ; parameterCategory = 20 ; @@ -1235,7 +1235,7 @@ constituentType = 60058 ; is_chemical = 1 ; } -#Column integrated mass density of Hydroperoxy aldehydes type 2 +#Column integrated mass density of Hydroperoxy aldehydes type 2 '218228' = { discipline = 0 ; parameterCategory = 20 ; @@ -1243,7 +1243,7 @@ constituentType = 60059 ; is_chemical = 1 ; } -#Column integrated mass density of Isoprene peroxy type B +#Column integrated mass density of Isoprene peroxy type B '218229' = { discipline = 0 ; parameterCategory = 20 ; @@ -1251,7 +1251,7 @@ constituentType = 60056 ; is_chemical = 1 ; } -#Column integrated mass density of Isoprene peroxy type D +#Column integrated mass density of Isoprene peroxy type D '218230' = { discipline = 0 ; parameterCategory = 20 ; @@ -1259,7 +1259,7 @@ constituentType = 60057 ; is_chemical = 1 ; } -#Atmosphere emission mass flux of Volcanic sulfur dioxide +#Atmosphere emission mass flux of Volcanic sulfur dioxide '219221' = { discipline = 0 ; parameterCategory = 20 ; @@ -1268,7 +1268,7 @@ is_chemical_srcsink = 1 ; sourceSinkChemicalPhysicalProcess = 7 ; } -#Atmosphere emission mass flux of Aromatic peroxy radical +#Atmosphere emission mass flux of Aromatic peroxy radical '219222' = { discipline = 0 ; parameterCategory = 20 ; @@ -1276,7 +1276,7 @@ constituentType = 60029 ; is_chemical = 1 ; } -#Atmosphere emission mass flux of Ethyne +#Atmosphere emission mass flux of Ethyne '219223' = { discipline = 0 ; parameterCategory = 20 ; @@ -1284,7 +1284,7 @@ constituentType = 10010 ; is_chemical = 1 ; } -#Atmosphere emission mass flux of Acetonitrile +#Atmosphere emission mass flux of Acetonitrile '219224' = { discipline = 0 ; parameterCategory = 20 ; @@ -1292,7 +1292,7 @@ constituentType = 10007 ; is_chemical = 1 ; } -#Atmosphere emission mass flux of Methyl peroxy nitrate +#Atmosphere emission mass flux of Methyl peroxy nitrate '219225' = { discipline = 0 ; parameterCategory = 20 ; @@ -1300,7 +1300,7 @@ constituentType = 10055 ; is_chemical = 1 ; } -#Atmosphere emission mass flux of Hydrogen cyanide +#Atmosphere emission mass flux of Hydrogen cyanide '219226' = { discipline = 0 ; parameterCategory = 20 ; @@ -1308,7 +1308,7 @@ constituentType = 10006 ; is_chemical = 1 ; } -#Atmosphere emission mass flux of Hydroperoxy aldehydes type 1 +#Atmosphere emission mass flux of Hydroperoxy aldehydes type 1 '219227' = { discipline = 0 ; parameterCategory = 20 ; @@ -1316,7 +1316,7 @@ constituentType = 60058 ; is_chemical = 1 ; } -#Atmosphere emission mass flux of Hydroperoxy aldehydes type 2 +#Atmosphere emission mass flux of Hydroperoxy aldehydes type 2 '219228' = { discipline = 0 ; parameterCategory = 20 ; @@ -1324,7 +1324,7 @@ constituentType = 60059 ; is_chemical = 1 ; } -#Atmosphere emission mass flux of Isoprene peroxy type B +#Atmosphere emission mass flux of Isoprene peroxy type B '219229' = { discipline = 0 ; parameterCategory = 20 ; @@ -1332,7 +1332,7 @@ constituentType = 60056 ; is_chemical = 1 ; } -#Atmosphere emission mass flux of Isoprene peroxy type D +#Atmosphere emission mass flux of Isoprene peroxy type D '219230' = { discipline = 0 ; parameterCategory = 20 ; @@ -1340,7 +1340,7 @@ constituentType = 60057 ; is_chemical = 1 ; } -#Dry deposition velocity of Volcanic sulfur dioxide +#Dry deposition velocity of Volcanic sulfur dioxide '221221' = { discipline = 0 ; parameterCategory = 20 ; @@ -1349,7 +1349,7 @@ is_chemical_srcsink = 1 ; sourceSinkChemicalPhysicalProcess = 7 ; } -#Dry deposition velocity of Aromatic peroxy radical +#Dry deposition velocity of Aromatic peroxy radical '221222' = { discipline = 0 ; parameterCategory = 20 ; @@ -1357,7 +1357,7 @@ constituentType = 60029 ; is_chemical = 1 ; } -#Dry deposition velocity of Ethyne +#Dry deposition velocity of Ethyne '221223' = { discipline = 0 ; parameterCategory = 20 ; @@ -1365,7 +1365,7 @@ constituentType = 10010 ; is_chemical = 1 ; } -#Dry deposition velocity of Acetonitrile +#Dry deposition velocity of Acetonitrile '221224' = { discipline = 0 ; parameterCategory = 20 ; @@ -1373,7 +1373,7 @@ constituentType = 10007 ; is_chemical = 1 ; } -#Dry deposition velocity of Methyl peroxy nitrate +#Dry deposition velocity of Methyl peroxy nitrate '221225' = { discipline = 0 ; parameterCategory = 20 ; @@ -1381,7 +1381,7 @@ constituentType = 10055 ; is_chemical = 1 ; } -#Dry deposition velocity of Hydrogen cyanide +#Dry deposition velocity of Hydrogen cyanide '221226' = { discipline = 0 ; parameterCategory = 20 ; @@ -1389,7 +1389,7 @@ constituentType = 10006 ; is_chemical = 1 ; } -#Dry deposition velocity of Hydroperoxy aldehydes type 1 +#Dry deposition velocity of Hydroperoxy aldehydes type 1 '221227' = { discipline = 0 ; parameterCategory = 20 ; @@ -1397,7 +1397,7 @@ constituentType = 60058 ; is_chemical = 1 ; } -#Dry deposition velocity of Hydroperoxy aldehydes type 2 +#Dry deposition velocity of Hydroperoxy aldehydes type 2 '221228' = { discipline = 0 ; parameterCategory = 20 ; @@ -1405,7 +1405,7 @@ constituentType = 60059 ; is_chemical = 1 ; } -#Dry deposition velocity of Isoprene peroxy type B +#Dry deposition velocity of Isoprene peroxy type B '221229' = { discipline = 0 ; parameterCategory = 20 ; @@ -1413,7 +1413,7 @@ constituentType = 60056 ; is_chemical = 1 ; } -#Dry deposition velocity of Isoprene peroxy type D +#Dry deposition velocity of Isoprene peroxy type D '221230' = { discipline = 0 ; parameterCategory = 20 ; @@ -7676,7 +7676,7 @@ parameterCategory = 4 ; parameterNumber = 50 ; } -#UV index +#UV index '260094' = { discipline = 0 ; parameterCategory = 4 ; @@ -8432,7 +8432,7 @@ parameterCategory = 1 ; parameterNumber = 3 ; } -#Estimated u component of wind +#Estimated u component of wind '260222' = { discipline = 3 ; parameterCategory = 1 ; @@ -8696,13 +8696,13 @@ parameterCategory = 2 ; parameterNumber = 16 ; } -#U-component of current +#U-component of current '3049' = { discipline = 10 ; parameterCategory = 1 ; parameterNumber = 2 ; } -#V-component of current +#V-component of current '3050' = { discipline = 10 ; parameterCategory = 1 ; diff --git a/definitions/grib2/shortName.def b/definitions/grib2/shortName.def index 5f4f337b7..cf7d9b352 100644 --- a/definitions/grib2/shortName.def +++ b/definitions/grib2/shortName.def @@ -1178,7 +1178,7 @@ constituentType = 60057 ; is_chemical = 1 ; } -#Column integrated mass density of Volcanic sulfur dioxide +#Column integrated mass density of Volcanic sulfur dioxide 'tc_VSO2' = { discipline = 0 ; parameterCategory = 20 ; @@ -1187,7 +1187,7 @@ is_chemical_srcsink = 1 ; sourceSinkChemicalPhysicalProcess = 7 ; } -#Column integrated mass density of Aromatic peroxy radical +#Column integrated mass density of Aromatic peroxy radical 'tc_AROO2' = { discipline = 0 ; parameterCategory = 20 ; @@ -1195,7 +1195,7 @@ constituentType = 60029 ; is_chemical = 1 ; } -#Column integrated mass density of Ethyne +#Column integrated mass density of Ethyne 'tc_C2H2' = { discipline = 0 ; parameterCategory = 20 ; @@ -1203,7 +1203,7 @@ constituentType = 10010 ; is_chemical = 1 ; } -#Column integrated mass density of Acetonitrile +#Column integrated mass density of Acetonitrile 'tc_CH3CN' = { discipline = 0 ; parameterCategory = 20 ; @@ -1211,7 +1211,7 @@ constituentType = 10007 ; is_chemical = 1 ; } -#Column integrated mass density of Methyl peroxy nitrate +#Column integrated mass density of Methyl peroxy nitrate 'tc_CH3O2NO2' = { discipline = 0 ; parameterCategory = 20 ; @@ -1219,7 +1219,7 @@ constituentType = 10055 ; is_chemical = 1 ; } -#Column integrated mass density of Hydrogen cyanide +#Column integrated mass density of Hydrogen cyanide 'tc_HCN' = { discipline = 0 ; parameterCategory = 20 ; @@ -1227,7 +1227,7 @@ constituentType = 10006 ; is_chemical = 1 ; } -#Column integrated mass density of Hydroperoxy aldehydes type 1 +#Column integrated mass density of Hydroperoxy aldehydes type 1 'tc_HPALD1' = { discipline = 0 ; parameterCategory = 20 ; @@ -1235,7 +1235,7 @@ constituentType = 60058 ; is_chemical = 1 ; } -#Column integrated mass density of Hydroperoxy aldehydes type 2 +#Column integrated mass density of Hydroperoxy aldehydes type 2 'tc_HPALD2' = { discipline = 0 ; parameterCategory = 20 ; @@ -1243,7 +1243,7 @@ constituentType = 60059 ; is_chemical = 1 ; } -#Column integrated mass density of Isoprene peroxy type B +#Column integrated mass density of Isoprene peroxy type B 'tc_ISOPBO2' = { discipline = 0 ; parameterCategory = 20 ; @@ -1251,7 +1251,7 @@ constituentType = 60056 ; is_chemical = 1 ; } -#Column integrated mass density of Isoprene peroxy type D +#Column integrated mass density of Isoprene peroxy type D 'tc_ISOPDO2' = { discipline = 0 ; parameterCategory = 20 ; @@ -1259,7 +1259,7 @@ constituentType = 60057 ; is_chemical = 1 ; } -#Atmosphere emission mass flux of Volcanic sulfur dioxide +#Atmosphere emission mass flux of Volcanic sulfur dioxide 'e_VSO2' = { discipline = 0 ; parameterCategory = 20 ; @@ -1268,7 +1268,7 @@ is_chemical_srcsink = 1 ; sourceSinkChemicalPhysicalProcess = 7 ; } -#Atmosphere emission mass flux of Aromatic peroxy radical +#Atmosphere emission mass flux of Aromatic peroxy radical 'e_AROO2' = { discipline = 0 ; parameterCategory = 20 ; @@ -1276,7 +1276,7 @@ constituentType = 60029 ; is_chemical = 1 ; } -#Atmosphere emission mass flux of Ethyne +#Atmosphere emission mass flux of Ethyne 'e_C2H2' = { discipline = 0 ; parameterCategory = 20 ; @@ -1284,7 +1284,7 @@ constituentType = 10010 ; is_chemical = 1 ; } -#Atmosphere emission mass flux of Acetonitrile +#Atmosphere emission mass flux of Acetonitrile 'e_CH3CN' = { discipline = 0 ; parameterCategory = 20 ; @@ -1292,7 +1292,7 @@ constituentType = 10007 ; is_chemical = 1 ; } -#Atmosphere emission mass flux of Methyl peroxy nitrate +#Atmosphere emission mass flux of Methyl peroxy nitrate 'e_CH3O2NO2' = { discipline = 0 ; parameterCategory = 20 ; @@ -1300,7 +1300,7 @@ constituentType = 10055 ; is_chemical = 1 ; } -#Atmosphere emission mass flux of Hydrogen cyanide +#Atmosphere emission mass flux of Hydrogen cyanide 'e_HCN' = { discipline = 0 ; parameterCategory = 20 ; @@ -1308,7 +1308,7 @@ constituentType = 10006 ; is_chemical = 1 ; } -#Atmosphere emission mass flux of Hydroperoxy aldehydes type 1 +#Atmosphere emission mass flux of Hydroperoxy aldehydes type 1 'e_HPALD1' = { discipline = 0 ; parameterCategory = 20 ; @@ -1316,7 +1316,7 @@ constituentType = 60058 ; is_chemical = 1 ; } -#Atmosphere emission mass flux of Hydroperoxy aldehydes type 2 +#Atmosphere emission mass flux of Hydroperoxy aldehydes type 2 'e_HPALD2' = { discipline = 0 ; parameterCategory = 20 ; @@ -1324,7 +1324,7 @@ constituentType = 60059 ; is_chemical = 1 ; } -#Atmosphere emission mass flux of Isoprene peroxy type B +#Atmosphere emission mass flux of Isoprene peroxy type B 'e_ISOPBO2' = { discipline = 0 ; parameterCategory = 20 ; @@ -1332,7 +1332,7 @@ constituentType = 60056 ; is_chemical = 1 ; } -#Atmosphere emission mass flux of Isoprene peroxy type D +#Atmosphere emission mass flux of Isoprene peroxy type D 'e_ISOPDO2' = { discipline = 0 ; parameterCategory = 20 ; @@ -1340,7 +1340,7 @@ constituentType = 60057 ; is_chemical = 1 ; } -#Dry deposition velocity of Volcanic sulfur dioxide +#Dry deposition velocity of Volcanic sulfur dioxide 'dv_VSO2' = { discipline = 0 ; parameterCategory = 20 ; @@ -1349,7 +1349,7 @@ is_chemical_srcsink = 1 ; sourceSinkChemicalPhysicalProcess = 7 ; } -#Dry deposition velocity of Aromatic peroxy radical +#Dry deposition velocity of Aromatic peroxy radical 'dv_AROO2' = { discipline = 0 ; parameterCategory = 20 ; @@ -1357,7 +1357,7 @@ constituentType = 60029 ; is_chemical = 1 ; } -#Dry deposition velocity of Ethyne +#Dry deposition velocity of Ethyne 'dv_C2H2' = { discipline = 0 ; parameterCategory = 20 ; @@ -1365,7 +1365,7 @@ constituentType = 10010 ; is_chemical = 1 ; } -#Dry deposition velocity of Acetonitrile +#Dry deposition velocity of Acetonitrile 'dv_CH3CN' = { discipline = 0 ; parameterCategory = 20 ; @@ -1373,7 +1373,7 @@ constituentType = 10007 ; is_chemical = 1 ; } -#Dry deposition velocity of Methyl peroxy nitrate +#Dry deposition velocity of Methyl peroxy nitrate 'dv_CH3O2NO2' = { discipline = 0 ; parameterCategory = 20 ; @@ -1381,7 +1381,7 @@ constituentType = 10055 ; is_chemical = 1 ; } -#Dry deposition velocity of Hydrogen cyanide +#Dry deposition velocity of Hydrogen cyanide 'dv_HCN' = { discipline = 0 ; parameterCategory = 20 ; @@ -1389,7 +1389,7 @@ constituentType = 10006 ; is_chemical = 1 ; } -#Dry deposition velocity of Hydroperoxy aldehydes type 1 +#Dry deposition velocity of Hydroperoxy aldehydes type 1 'dv_HPALD1' = { discipline = 0 ; parameterCategory = 20 ; @@ -1397,7 +1397,7 @@ constituentType = 60058 ; is_chemical = 1 ; } -#Dry deposition velocity of Hydroperoxy aldehydes type 2 +#Dry deposition velocity of Hydroperoxy aldehydes type 2 'dv_HPALD2' = { discipline = 0 ; parameterCategory = 20 ; @@ -1405,7 +1405,7 @@ constituentType = 60059 ; is_chemical = 1 ; } -#Dry deposition velocity of Isoprene peroxy type B +#Dry deposition velocity of Isoprene peroxy type B 'dv_ISOPBO2' = { discipline = 0 ; parameterCategory = 20 ; @@ -1413,7 +1413,7 @@ constituentType = 60056 ; is_chemical = 1 ; } -#Dry deposition velocity of Isoprene peroxy type D +#Dry deposition velocity of Isoprene peroxy type D 'dv_ISOPDO2' = { discipline = 0 ; parameterCategory = 20 ; @@ -7676,7 +7676,7 @@ parameterCategory = 4 ; parameterNumber = 50 ; } -#UV index +#UV index 'uvi' = { discipline = 0 ; parameterCategory = 4 ; @@ -8432,7 +8432,7 @@ parameterCategory = 1 ; parameterNumber = 3 ; } -#Estimated u component of wind +#Estimated u component of wind 'estu' = { discipline = 3 ; parameterCategory = 1 ; @@ -8696,13 +8696,13 @@ parameterCategory = 2 ; parameterNumber = 16 ; } -#U-component of current +#U-component of current 'ucurr' = { discipline = 10 ; parameterCategory = 1 ; parameterNumber = 2 ; } -#V-component of current +#V-component of current 'vcurr' = { discipline = 10 ; parameterCategory = 1 ; diff --git a/definitions/grib2/units.def b/definitions/grib2/units.def index b5bd7ce85..b215a7bcd 100644 --- a/definitions/grib2/units.def +++ b/definitions/grib2/units.def @@ -1178,7 +1178,7 @@ constituentType = 60057 ; is_chemical = 1 ; } -#Column integrated mass density of Volcanic sulfur dioxide +#Column integrated mass density of Volcanic sulfur dioxide 'kg m**-2' = { discipline = 0 ; parameterCategory = 20 ; @@ -1187,7 +1187,7 @@ is_chemical_srcsink = 1 ; sourceSinkChemicalPhysicalProcess = 7 ; } -#Column integrated mass density of Aromatic peroxy radical +#Column integrated mass density of Aromatic peroxy radical 'kg m**-2' = { discipline = 0 ; parameterCategory = 20 ; @@ -1195,7 +1195,7 @@ constituentType = 60029 ; is_chemical = 1 ; } -#Column integrated mass density of Ethyne +#Column integrated mass density of Ethyne 'kg m**-2' = { discipline = 0 ; parameterCategory = 20 ; @@ -1203,7 +1203,7 @@ constituentType = 10010 ; is_chemical = 1 ; } -#Column integrated mass density of Acetonitrile +#Column integrated mass density of Acetonitrile 'kg m**-2' = { discipline = 0 ; parameterCategory = 20 ; @@ -1211,7 +1211,7 @@ constituentType = 10007 ; is_chemical = 1 ; } -#Column integrated mass density of Methyl peroxy nitrate +#Column integrated mass density of Methyl peroxy nitrate 'kg m**-2' = { discipline = 0 ; parameterCategory = 20 ; @@ -1219,7 +1219,7 @@ constituentType = 10055 ; is_chemical = 1 ; } -#Column integrated mass density of Hydrogen cyanide +#Column integrated mass density of Hydrogen cyanide 'kg m**-2' = { discipline = 0 ; parameterCategory = 20 ; @@ -1227,7 +1227,7 @@ constituentType = 10006 ; is_chemical = 1 ; } -#Column integrated mass density of Hydroperoxy aldehydes type 1 +#Column integrated mass density of Hydroperoxy aldehydes type 1 'kg m**-2' = { discipline = 0 ; parameterCategory = 20 ; @@ -1235,7 +1235,7 @@ constituentType = 60058 ; is_chemical = 1 ; } -#Column integrated mass density of Hydroperoxy aldehydes type 2 +#Column integrated mass density of Hydroperoxy aldehydes type 2 'kg m**-2' = { discipline = 0 ; parameterCategory = 20 ; @@ -1243,7 +1243,7 @@ constituentType = 60059 ; is_chemical = 1 ; } -#Column integrated mass density of Isoprene peroxy type B +#Column integrated mass density of Isoprene peroxy type B 'kg m**-2' = { discipline = 0 ; parameterCategory = 20 ; @@ -1251,7 +1251,7 @@ constituentType = 60056 ; is_chemical = 1 ; } -#Column integrated mass density of Isoprene peroxy type D +#Column integrated mass density of Isoprene peroxy type D 'kg m**-2' = { discipline = 0 ; parameterCategory = 20 ; @@ -1259,7 +1259,7 @@ constituentType = 60057 ; is_chemical = 1 ; } -#Atmosphere emission mass flux of Volcanic sulfur dioxide +#Atmosphere emission mass flux of Volcanic sulfur dioxide 'kg m**-2 s**-1' = { discipline = 0 ; parameterCategory = 20 ; @@ -1268,7 +1268,7 @@ is_chemical_srcsink = 1 ; sourceSinkChemicalPhysicalProcess = 7 ; } -#Atmosphere emission mass flux of Aromatic peroxy radical +#Atmosphere emission mass flux of Aromatic peroxy radical 'kg m**-2 s**-1' = { discipline = 0 ; parameterCategory = 20 ; @@ -1276,7 +1276,7 @@ constituentType = 60029 ; is_chemical = 1 ; } -#Atmosphere emission mass flux of Ethyne +#Atmosphere emission mass flux of Ethyne 'kg m**-2 s**-1' = { discipline = 0 ; parameterCategory = 20 ; @@ -1284,7 +1284,7 @@ constituentType = 10010 ; is_chemical = 1 ; } -#Atmosphere emission mass flux of Acetonitrile +#Atmosphere emission mass flux of Acetonitrile 'kg m**-2 s**-1' = { discipline = 0 ; parameterCategory = 20 ; @@ -1292,7 +1292,7 @@ constituentType = 10007 ; is_chemical = 1 ; } -#Atmosphere emission mass flux of Methyl peroxy nitrate +#Atmosphere emission mass flux of Methyl peroxy nitrate 'kg m**-2 s**-1' = { discipline = 0 ; parameterCategory = 20 ; @@ -1300,7 +1300,7 @@ constituentType = 10055 ; is_chemical = 1 ; } -#Atmosphere emission mass flux of Hydrogen cyanide +#Atmosphere emission mass flux of Hydrogen cyanide 'kg m**-2 s**-1' = { discipline = 0 ; parameterCategory = 20 ; @@ -1308,7 +1308,7 @@ constituentType = 10006 ; is_chemical = 1 ; } -#Atmosphere emission mass flux of Hydroperoxy aldehydes type 1 +#Atmosphere emission mass flux of Hydroperoxy aldehydes type 1 'kg m**-2 s**-1' = { discipline = 0 ; parameterCategory = 20 ; @@ -1316,7 +1316,7 @@ constituentType = 60058 ; is_chemical = 1 ; } -#Atmosphere emission mass flux of Hydroperoxy aldehydes type 2 +#Atmosphere emission mass flux of Hydroperoxy aldehydes type 2 'kg m**-2 s**-1' = { discipline = 0 ; parameterCategory = 20 ; @@ -1324,7 +1324,7 @@ constituentType = 60059 ; is_chemical = 1 ; } -#Atmosphere emission mass flux of Isoprene peroxy type B +#Atmosphere emission mass flux of Isoprene peroxy type B 'kg m**-2 s**-1' = { discipline = 0 ; parameterCategory = 20 ; @@ -1332,7 +1332,7 @@ constituentType = 60056 ; is_chemical = 1 ; } -#Atmosphere emission mass flux of Isoprene peroxy type D +#Atmosphere emission mass flux of Isoprene peroxy type D 'kg m**-2 s**-1' = { discipline = 0 ; parameterCategory = 20 ; @@ -1340,7 +1340,7 @@ constituentType = 60057 ; is_chemical = 1 ; } -#Dry deposition velocity of Volcanic sulfur dioxide +#Dry deposition velocity of Volcanic sulfur dioxide 'm s**-1' = { discipline = 0 ; parameterCategory = 20 ; @@ -1349,7 +1349,7 @@ is_chemical_srcsink = 1 ; sourceSinkChemicalPhysicalProcess = 7 ; } -#Dry deposition velocity of Aromatic peroxy radical +#Dry deposition velocity of Aromatic peroxy radical 'm s**-1' = { discipline = 0 ; parameterCategory = 20 ; @@ -1357,7 +1357,7 @@ constituentType = 60029 ; is_chemical = 1 ; } -#Dry deposition velocity of Ethyne +#Dry deposition velocity of Ethyne 'm s**-1' = { discipline = 0 ; parameterCategory = 20 ; @@ -1365,7 +1365,7 @@ constituentType = 10010 ; is_chemical = 1 ; } -#Dry deposition velocity of Acetonitrile +#Dry deposition velocity of Acetonitrile 'm s**-1' = { discipline = 0 ; parameterCategory = 20 ; @@ -1373,7 +1373,7 @@ constituentType = 10007 ; is_chemical = 1 ; } -#Dry deposition velocity of Methyl peroxy nitrate +#Dry deposition velocity of Methyl peroxy nitrate 'm s**-1' = { discipline = 0 ; parameterCategory = 20 ; @@ -1381,7 +1381,7 @@ constituentType = 10055 ; is_chemical = 1 ; } -#Dry deposition velocity of Hydrogen cyanide +#Dry deposition velocity of Hydrogen cyanide 'm s**-1' = { discipline = 0 ; parameterCategory = 20 ; @@ -1389,7 +1389,7 @@ constituentType = 10006 ; is_chemical = 1 ; } -#Dry deposition velocity of Hydroperoxy aldehydes type 1 +#Dry deposition velocity of Hydroperoxy aldehydes type 1 'm s**-1' = { discipline = 0 ; parameterCategory = 20 ; @@ -1397,7 +1397,7 @@ constituentType = 60058 ; is_chemical = 1 ; } -#Dry deposition velocity of Hydroperoxy aldehydes type 2 +#Dry deposition velocity of Hydroperoxy aldehydes type 2 'm s**-1' = { discipline = 0 ; parameterCategory = 20 ; @@ -1405,7 +1405,7 @@ constituentType = 60059 ; is_chemical = 1 ; } -#Dry deposition velocity of Isoprene peroxy type B +#Dry deposition velocity of Isoprene peroxy type B 'm s**-1' = { discipline = 0 ; parameterCategory = 20 ; @@ -1413,7 +1413,7 @@ constituentType = 60056 ; is_chemical = 1 ; } -#Dry deposition velocity of Isoprene peroxy type D +#Dry deposition velocity of Isoprene peroxy type D 'm s**-1' = { discipline = 0 ; parameterCategory = 20 ; @@ -7676,7 +7676,7 @@ parameterCategory = 4 ; parameterNumber = 50 ; } -#UV index +#UV index 'Numeric' = { discipline = 0 ; parameterCategory = 4 ; @@ -8432,7 +8432,7 @@ parameterCategory = 1 ; parameterNumber = 3 ; } -#Estimated u component of wind +#Estimated u component of wind 'm s**-1' = { discipline = 3 ; parameterCategory = 1 ; @@ -8696,13 +8696,13 @@ parameterCategory = 2 ; parameterNumber = 16 ; } -#U-component of current +#U-component of current 'm s**-1' = { discipline = 10 ; parameterCategory = 1 ; parameterNumber = 2 ; } -#V-component of current +#V-component of current 'm s**-1' = { discipline = 10 ; parameterCategory = 1 ; From 0c2b2380daf196d053e40ccdc01033055173c84e Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 22 Jun 2023 22:25:56 +0100 Subject: [PATCH 305/378] Fix broken build: Include header file --- src/grib_accessor_class_data_ccsds_packing.cc | 1 + 1 file changed, 1 insertion(+) diff --git a/src/grib_accessor_class_data_ccsds_packing.cc b/src/grib_accessor_class_data_ccsds_packing.cc index 596a8b263..3ad5fafb0 100644 --- a/src/grib_accessor_class_data_ccsds_packing.cc +++ b/src/grib_accessor_class_data_ccsds_packing.cc @@ -11,6 +11,7 @@ #include "grib_bits_any_endian_simple.h" #include "grib_scaling.h" #include +#include /* This is used by make_class.pl From db517e6ce1a75ade8ebf721e1e1ad5beab8284c3 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 22 Jun 2023 22:46:16 +0100 Subject: [PATCH 306/378] Single-precision mode --- fortran/grib_fortran.c | 55 ++++++++++++++++++++++++------------------ 1 file changed, 31 insertions(+), 24 deletions(-) diff --git a/fortran/grib_fortran.c b/fortran/grib_fortran.c index a8b10fda5..26191cc2c 100644 --- a/fortran/grib_fortran.c +++ b/fortran/grib_fortran.c @@ -2781,43 +2781,50 @@ int grib_f_get_real4(int* gid, char* key, float* val, int len){ return grib_f_get_real4_( gid, key, val, len); } -int grib_f_get_real4_array_(int* gid, char* key, float *val, int* size, int len) +int grib_f_get_real4_array_(int* gid, char* key, float* val, int* size, int len) { /* See ECC-1579: - * Ideally we should be calling: + * Ideally we should ALWAYS be calling: * err = grib_get_float_array(h, cast_char(buf,key,len), val, &lsize); - * - */ + */ - grib_handle *h = get_handle(*gid); - int err = GRIB_SUCCESS; + grib_handle* h = get_handle(*gid); + size_t lsize = *size; char buf[1024]; - size_t lsize = *size; - double* val8 = NULL; - size_t i; + int err = GRIB_SUCCESS; + const int single_precision_mode = (h->context->single_precision != 0); - if(!h) return GRIB_INVALID_GRIB; + if (!h) return GRIB_INVALID_GRIB; - if(*size) - val8 = (double*)grib_context_malloc(h->context,(*size)*(sizeof(double))); - else - val8 = (double*)grib_context_malloc(h->context,sizeof(double)); + if (single_precision_mode) { + err = grib_get_float_array(h, cast_char(buf, key, len), val, &lsize); + } + else { + double* val8 = NULL; + size_t i; - if(!val8) return GRIB_OUT_OF_MEMORY; + if (*size) + val8 = (double*)grib_context_malloc(h->context, (*size) * (sizeof(double))); + else + val8 = (double*)grib_context_malloc(h->context, sizeof(double)); - err = grib_get_double_array(h, cast_char(buf,key,len), val8, &lsize); - if (err) { - grib_context_free(h->context,val8); - return err; - } + if (!val8) return GRIB_OUT_OF_MEMORY; - for(i=0;icontext, val8); + return err; + } - grib_context_free(h->context,val8); + for (i = 0; i < lsize; i++) + val[i] = val8[i]; - return err; + grib_context_free(h->context, val8); + } + + return err; } + int grib_f_get_real4_array__(int* gid, char* key, float* val, int* size, int len){ return grib_f_get_real4_array_( gid, key, val, size, len); } From 3ac52316c7b162e2531c0db99e66a25693f8997c Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 23 Jun 2023 14:53:37 +0100 Subject: [PATCH 307/378] Testing: Check all product definition templated exist --- tests/grib2_templates.sh | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/tests/grib2_templates.sh b/tests/grib2_templates.sh index 403010e2a..93daa7e5d 100755 --- a/tests/grib2_templates.sh +++ b/tests/grib2_templates.sh @@ -19,6 +19,19 @@ tempFilt=temp.$label.filt tempText=temp.$label.txt sample2=$ECCODES_SAMPLES_PATH/GRIB2.tmpl +# Go thru all templates listed in the most recent Code Table 4.0 +# and ensure each has a template in section 4 +# ----------------------------------------------- +latestOfficial=`${tools_dir}/grib_get -p tablesVersionLatestOfficial $sample2` + +latest_codetable_file=$ECCODES_DEFINITION_PATH/grib2/tables/$latestOfficial/4.0.table +awk '$1 !~ /#/ && $1 < 65000 {print $1}' $latest_codetable_file | while read pdtn; do + if [ ! -f "$ECCODES_DEFINITION_PATH/grib2/template.4.$pdtn.def" ]; then + echo "GRIB2 template for product definition $pdtn does not exist!" + exit 1 + fi +done + # Template 4.86 # ------------- From 9dd080de8ac739834d63898b25d6d27943e87729 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 23 Jun 2023 14:09:45 +0000 Subject: [PATCH 308/378] ECC-1504: GRIB2: Make deprecated WMO parameters legacy --- definitions/grib2/cfVarName.def | 54 -------------------------- definitions/grib2/name.def | 54 -------------------------- definitions/grib2/name.legacy.def | 54 ++++++++++++++++++++++++++ definitions/grib2/paramId.def | 54 -------------------------- definitions/grib2/paramId.legacy.def | 54 ++++++++++++++++++++++++++ definitions/grib2/shortName.def | 54 -------------------------- definitions/grib2/shortName.legacy.def | 54 ++++++++++++++++++++++++++ definitions/grib2/units.def | 54 -------------------------- definitions/grib2/units.legacy.def | 54 ++++++++++++++++++++++++++ tests/grib_check_param_concepts.sh | 21 ++++++++++ 10 files changed, 237 insertions(+), 270 deletions(-) create mode 100644 definitions/grib2/name.legacy.def create mode 100644 definitions/grib2/paramId.legacy.def create mode 100644 definitions/grib2/shortName.legacy.def create mode 100644 definitions/grib2/units.legacy.def diff --git a/definitions/grib2/cfVarName.def b/definitions/grib2/cfVarName.def index f6543f634..911d10d3d 100644 --- a/definitions/grib2/cfVarName.def +++ b/definitions/grib2/cfVarName.def @@ -8210,12 +8210,6 @@ parameterCategory = 0 ; parameterNumber = 8 ; } -#Volumetric soil moisture content -'soilw' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 9 ; - } #Ground heat flux 'gflux' = { discipline = 2 ; @@ -8306,60 +8300,12 @@ parameterCategory = 0 ; parameterNumber = 27 ; } -#Upper layer soil temperature -'uplst' = { - discipline = 2 ; - parameterCategory = 3 ; - parameterNumber = 1 ; - } -#Upper layer soil moisture -'uplsm' = { - discipline = 2 ; - parameterCategory = 3 ; - parameterNumber = 2 ; - } -#Lower layer soil moisture -'lowlsm' = { - discipline = 2 ; - parameterCategory = 3 ; - parameterNumber = 3 ; - } -#Bottom layer soil temperature -'botlst' = { - discipline = 2 ; - parameterCategory = 3 ; - parameterNumber = 4 ; - } -#Liquid volumetric soil moisture (non-frozen) -'soill' = { - discipline = 2 ; - parameterCategory = 3 ; - parameterNumber = 5 ; - } #Number of soil layers in root zone 'rlyrs' = { discipline = 2 ; parameterCategory = 3 ; parameterNumber = 6 ; } -#Transpiration stress-onset (soil moisture) -'smref' = { - discipline = 2 ; - parameterCategory = 3 ; - parameterNumber = 7 ; - } -#Direct evaporation cease (soil moisture) -'smdry' = { - discipline = 2 ; - parameterCategory = 3 ; - parameterNumber = 8 ; - } -#Soil porosity -'poros' = { - discipline = 2 ; - parameterCategory = 3 ; - parameterNumber = 9 ; - } #Liquid volumetric soil moisture (non-frozen) 'liqvsm' = { discipline = 2 ; diff --git a/definitions/grib2/name.def b/definitions/grib2/name.def index 7ade8b153..d805dcb1f 100644 --- a/definitions/grib2/name.def +++ b/definitions/grib2/name.def @@ -8210,12 +8210,6 @@ parameterCategory = 0 ; parameterNumber = 8 ; } -#Volumetric soil moisture content -'Volumetric soil moisture content' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 9 ; - } #Ground heat flux 'Ground heat flux' = { discipline = 2 ; @@ -8306,60 +8300,12 @@ parameterCategory = 0 ; parameterNumber = 27 ; } -#Upper layer soil temperature -'Upper layer soil temperature' = { - discipline = 2 ; - parameterCategory = 3 ; - parameterNumber = 1 ; - } -#Upper layer soil moisture -'Upper layer soil moisture' = { - discipline = 2 ; - parameterCategory = 3 ; - parameterNumber = 2 ; - } -#Lower layer soil moisture -'Lower layer soil moisture' = { - discipline = 2 ; - parameterCategory = 3 ; - parameterNumber = 3 ; - } -#Bottom layer soil temperature -'Bottom layer soil temperature' = { - discipline = 2 ; - parameterCategory = 3 ; - parameterNumber = 4 ; - } -#Liquid volumetric soil moisture (non-frozen) -'Liquid volumetric soil moisture (non-frozen)' = { - discipline = 2 ; - parameterCategory = 3 ; - parameterNumber = 5 ; - } #Number of soil layers in root zone 'Number of soil layers in root zone' = { discipline = 2 ; parameterCategory = 3 ; parameterNumber = 6 ; } -#Transpiration stress-onset (soil moisture) -'Transpiration stress-onset (soil moisture)' = { - discipline = 2 ; - parameterCategory = 3 ; - parameterNumber = 7 ; - } -#Direct evaporation cease (soil moisture) -'Direct evaporation cease (soil moisture)' = { - discipline = 2 ; - parameterCategory = 3 ; - parameterNumber = 8 ; - } -#Soil porosity -'Soil porosity' = { - discipline = 2 ; - parameterCategory = 3 ; - parameterNumber = 9 ; - } #Liquid volumetric soil moisture (non-frozen) 'Liquid volumetric soil moisture (non-frozen)' = { discipline = 2 ; diff --git a/definitions/grib2/name.legacy.def b/definitions/grib2/name.legacy.def new file mode 100644 index 000000000..d0329b676 --- /dev/null +++ b/definitions/grib2/name.legacy.def @@ -0,0 +1,54 @@ +#Volumetric soil moisture content +'Volumetric soil moisture content' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 9 ; + } +#Upper layer soil temperature +'Upper layer soil temperature' = { + discipline = 2 ; + parameterCategory = 3 ; + parameterNumber = 1 ; + } +#Upper layer soil moisture +'Upper layer soil moisture' = { + discipline = 2 ; + parameterCategory = 3 ; + parameterNumber = 2 ; + } +#Lower layer soil moisture +'Lower layer soil moisture' = { + discipline = 2 ; + parameterCategory = 3 ; + parameterNumber = 3 ; + } +#Bottom layer soil temperature +'Bottom layer soil temperature' = { + discipline = 2 ; + parameterCategory = 3 ; + parameterNumber = 4 ; + } +#Liquid volumetric soil moisture (non-frozen) +'Liquid volumetric soil moisture (non-frozen)' = { + discipline = 2 ; + parameterCategory = 3 ; + parameterNumber = 5 ; + } +#Transpiration stress-onset (soil moisture) +'Transpiration stress-onset (soil moisture)' = { + discipline = 2 ; + parameterCategory = 3 ; + parameterNumber = 7 ; + } +#Direct evaporation cease (soil moisture) +'Direct evaporation cease (soil moisture)' = { + discipline = 2 ; + parameterCategory = 3 ; + parameterNumber = 8 ; + } +#Soil porosity +'Soil porosity' = { + discipline = 2 ; + parameterCategory = 3 ; + parameterNumber = 9 ; + } diff --git a/definitions/grib2/paramId.def b/definitions/grib2/paramId.def index 0fa34d573..7eed486ab 100644 --- a/definitions/grib2/paramId.def +++ b/definitions/grib2/paramId.def @@ -8210,12 +8210,6 @@ parameterCategory = 0 ; parameterNumber = 8 ; } -#Volumetric soil moisture content -'260185' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 9 ; - } #Ground heat flux '260186' = { discipline = 2 ; @@ -8306,60 +8300,12 @@ parameterCategory = 0 ; parameterNumber = 27 ; } -#Upper layer soil temperature -'260201' = { - discipline = 2 ; - parameterCategory = 3 ; - parameterNumber = 1 ; - } -#Upper layer soil moisture -'260202' = { - discipline = 2 ; - parameterCategory = 3 ; - parameterNumber = 2 ; - } -#Lower layer soil moisture -'260203' = { - discipline = 2 ; - parameterCategory = 3 ; - parameterNumber = 3 ; - } -#Bottom layer soil temperature -'260204' = { - discipline = 2 ; - parameterCategory = 3 ; - parameterNumber = 4 ; - } -#Liquid volumetric soil moisture (non-frozen) -'260205' = { - discipline = 2 ; - parameterCategory = 3 ; - parameterNumber = 5 ; - } #Number of soil layers in root zone '260206' = { discipline = 2 ; parameterCategory = 3 ; parameterNumber = 6 ; } -#Transpiration stress-onset (soil moisture) -'260207' = { - discipline = 2 ; - parameterCategory = 3 ; - parameterNumber = 7 ; - } -#Direct evaporation cease (soil moisture) -'260208' = { - discipline = 2 ; - parameterCategory = 3 ; - parameterNumber = 8 ; - } -#Soil porosity -'260209' = { - discipline = 2 ; - parameterCategory = 3 ; - parameterNumber = 9 ; - } #Liquid volumetric soil moisture (non-frozen) '260210' = { discipline = 2 ; diff --git a/definitions/grib2/paramId.legacy.def b/definitions/grib2/paramId.legacy.def new file mode 100644 index 000000000..32269c201 --- /dev/null +++ b/definitions/grib2/paramId.legacy.def @@ -0,0 +1,54 @@ +#Volumetric soil moisture content +'260185' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 9 ; + } +#Upper layer soil temperature +'260201' = { + discipline = 2 ; + parameterCategory = 3 ; + parameterNumber = 1 ; + } +#Upper layer soil moisture +'260202' = { + discipline = 2 ; + parameterCategory = 3 ; + parameterNumber = 2 ; + } +#Lower layer soil moisture +'260203' = { + discipline = 2 ; + parameterCategory = 3 ; + parameterNumber = 3 ; + } +#Bottom layer soil temperature +'260204' = { + discipline = 2 ; + parameterCategory = 3 ; + parameterNumber = 4 ; + } +#Liquid volumetric soil moisture (non-frozen) +'260205' = { + discipline = 2 ; + parameterCategory = 3 ; + parameterNumber = 5 ; + } +#Transpiration stress-onset (soil moisture) +'260207' = { + discipline = 2 ; + parameterCategory = 3 ; + parameterNumber = 7 ; + } +#Direct evaporation cease (soil moisture) +'260208' = { + discipline = 2 ; + parameterCategory = 3 ; + parameterNumber = 8 ; + } +#Soil porosity +'260209' = { + discipline = 2 ; + parameterCategory = 3 ; + parameterNumber = 9 ; + } diff --git a/definitions/grib2/shortName.def b/definitions/grib2/shortName.def index cf7d9b352..301dc51a5 100644 --- a/definitions/grib2/shortName.def +++ b/definitions/grib2/shortName.def @@ -8210,12 +8210,6 @@ parameterCategory = 0 ; parameterNumber = 8 ; } -#Volumetric soil moisture content -'soilw' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 9 ; - } #Ground heat flux 'gflux' = { discipline = 2 ; @@ -8306,60 +8300,12 @@ parameterCategory = 0 ; parameterNumber = 27 ; } -#Upper layer soil temperature -'uplst' = { - discipline = 2 ; - parameterCategory = 3 ; - parameterNumber = 1 ; - } -#Upper layer soil moisture -'uplsm' = { - discipline = 2 ; - parameterCategory = 3 ; - parameterNumber = 2 ; - } -#Lower layer soil moisture -'lowlsm' = { - discipline = 2 ; - parameterCategory = 3 ; - parameterNumber = 3 ; - } -#Bottom layer soil temperature -'botlst' = { - discipline = 2 ; - parameterCategory = 3 ; - parameterNumber = 4 ; - } -#Liquid volumetric soil moisture (non-frozen) -'soill' = { - discipline = 2 ; - parameterCategory = 3 ; - parameterNumber = 5 ; - } #Number of soil layers in root zone 'rlyrs' = { discipline = 2 ; parameterCategory = 3 ; parameterNumber = 6 ; } -#Transpiration stress-onset (soil moisture) -'smref' = { - discipline = 2 ; - parameterCategory = 3 ; - parameterNumber = 7 ; - } -#Direct evaporation cease (soil moisture) -'smdry' = { - discipline = 2 ; - parameterCategory = 3 ; - parameterNumber = 8 ; - } -#Soil porosity -'poros' = { - discipline = 2 ; - parameterCategory = 3 ; - parameterNumber = 9 ; - } #Liquid volumetric soil moisture (non-frozen) 'liqvsm' = { discipline = 2 ; diff --git a/definitions/grib2/shortName.legacy.def b/definitions/grib2/shortName.legacy.def new file mode 100644 index 000000000..ab51bf25c --- /dev/null +++ b/definitions/grib2/shortName.legacy.def @@ -0,0 +1,54 @@ +#Volumetric soil moisture content +'soilw' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 9 ; + } +#Upper layer soil temperature +'uplst' = { + discipline = 2 ; + parameterCategory = 3 ; + parameterNumber = 1 ; + } +#Upper layer soil moisture +'uplsm' = { + discipline = 2 ; + parameterCategory = 3 ; + parameterNumber = 2 ; + } +#Lower layer soil moisture +'lowlsm' = { + discipline = 2 ; + parameterCategory = 3 ; + parameterNumber = 3 ; + } +#Bottom layer soil temperature +'botlst' = { + discipline = 2 ; + parameterCategory = 3 ; + parameterNumber = 4 ; + } +#Liquid volumetric soil moisture (non-frozen) +'soill' = { + discipline = 2 ; + parameterCategory = 3 ; + parameterNumber = 5 ; + } +#Transpiration stress-onset (soil moisture) +'smref' = { + discipline = 2 ; + parameterCategory = 3 ; + parameterNumber = 7 ; + } +#Direct evaporation cease (soil moisture) +'smdry' = { + discipline = 2 ; + parameterCategory = 3 ; + parameterNumber = 8 ; + } +#Soil porosity +'poros' = { + discipline = 2 ; + parameterCategory = 3 ; + parameterNumber = 9 ; + } diff --git a/definitions/grib2/units.def b/definitions/grib2/units.def index b215a7bcd..040c67ac2 100644 --- a/definitions/grib2/units.def +++ b/definitions/grib2/units.def @@ -8210,12 +8210,6 @@ parameterCategory = 0 ; parameterNumber = 8 ; } -#Volumetric soil moisture content -'Proportion' = { - discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 9 ; - } #Ground heat flux 'W m**-2' = { discipline = 2 ; @@ -8306,60 +8300,12 @@ parameterCategory = 0 ; parameterNumber = 27 ; } -#Upper layer soil temperature -'K' = { - discipline = 2 ; - parameterCategory = 3 ; - parameterNumber = 1 ; - } -#Upper layer soil moisture -'kg m**-3' = { - discipline = 2 ; - parameterCategory = 3 ; - parameterNumber = 2 ; - } -#Lower layer soil moisture -'kg m**-3' = { - discipline = 2 ; - parameterCategory = 3 ; - parameterNumber = 3 ; - } -#Bottom layer soil temperature -'K' = { - discipline = 2 ; - parameterCategory = 3 ; - parameterNumber = 4 ; - } -#Liquid volumetric soil moisture (non-frozen) -'Proportion' = { - discipline = 2 ; - parameterCategory = 3 ; - parameterNumber = 5 ; - } #Number of soil layers in root zone 'Numeric' = { discipline = 2 ; parameterCategory = 3 ; parameterNumber = 6 ; } -#Transpiration stress-onset (soil moisture) -'Proportion' = { - discipline = 2 ; - parameterCategory = 3 ; - parameterNumber = 7 ; - } -#Direct evaporation cease (soil moisture) -'Proportion' = { - discipline = 2 ; - parameterCategory = 3 ; - parameterNumber = 8 ; - } -#Soil porosity -'Proportion' = { - discipline = 2 ; - parameterCategory = 3 ; - parameterNumber = 9 ; - } #Liquid volumetric soil moisture (non-frozen) 'm**3 m**-3' = { discipline = 2 ; diff --git a/definitions/grib2/units.legacy.def b/definitions/grib2/units.legacy.def new file mode 100644 index 000000000..4c55cbbbc --- /dev/null +++ b/definitions/grib2/units.legacy.def @@ -0,0 +1,54 @@ +#Volumetric soil moisture content +'Proportion' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 9 ; + } +#Upper layer soil temperature +'K' = { + discipline = 2 ; + parameterCategory = 3 ; + parameterNumber = 1 ; + } +#Upper layer soil moisture +'kg m**-3' = { + discipline = 2 ; + parameterCategory = 3 ; + parameterNumber = 2 ; + } +#Lower layer soil moisture +'kg m**-3' = { + discipline = 2 ; + parameterCategory = 3 ; + parameterNumber = 3 ; + } +#Bottom layer soil temperature +'K' = { + discipline = 2 ; + parameterCategory = 3 ; + parameterNumber = 4 ; + } +#Liquid volumetric soil moisture (non-frozen) +'Proportion' = { + discipline = 2 ; + parameterCategory = 3 ; + parameterNumber = 5 ; + } +#Transpiration stress-onset (soil moisture) +'Proportion' = { + discipline = 2 ; + parameterCategory = 3 ; + parameterNumber = 7 ; + } +#Direct evaporation cease (soil moisture) +'Proportion' = { + discipline = 2 ; + parameterCategory = 3 ; + parameterNumber = 8 ; + } +#Soil porosity +'Proportion' = { + discipline = 2 ; + parameterCategory = 3 ; + parameterNumber = 9 ; + } diff --git a/tests/grib_check_param_concepts.sh b/tests/grib_check_param_concepts.sh index 405e39afd..72ae83e21 100755 --- a/tests/grib_check_param_concepts.sh +++ b/tests/grib_check_param_concepts.sh @@ -78,6 +78,25 @@ done cd $test_dir +# ------------------------------- +echo "WMO legacy parameters..." +# ------------------------------- +ECMF_DIR=$ECCODES_DEFINITION_PATH/grib2 + +tempDir=temp.${label}.dir +rm -fr $tempDir +mkdir -p $tempDir +cd $tempDir +#cp $ECMF_DIR/cfName.legacy.def cfName.def +#cp $ECMF_DIR/cfVarName.legacy.def cfVarName.def +cp $ECMF_DIR/name.legacy.def name.def +cp $ECMF_DIR/paramId.legacy.def paramId.def +cp $ECMF_DIR/shortName.legacy.def shortName.def +cp $ECMF_DIR/units.legacy.def units.def +$CHECK_DEFS +cd $test_dir +rm -fr $tempDir + # ------------------------------- echo "ECMWF legacy parameters..." # ------------------------------- @@ -94,6 +113,8 @@ cp $ECMF_DIR/paramId.legacy.def paramId.def cp $ECMF_DIR/shortName.legacy.def shortName.def cp $ECMF_DIR/units.legacy.def units.def $CHECK_DEFS +cd $test_dir +rm -fr $tempDir # ------------------------------- echo "Check duplicates" From d2012457b0e466754f0477603e8d59e610e92304 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 23 Jun 2023 16:35:01 +0100 Subject: [PATCH 309/378] Include what you use --- examples/C/bufr_missing.c | 1 - 1 file changed, 1 deletion(-) diff --git a/examples/C/bufr_missing.c b/examples/C/bufr_missing.c index 0c9fcc867..3c985d282 100644 --- a/examples/C/bufr_missing.c +++ b/examples/C/bufr_missing.c @@ -15,7 +15,6 @@ */ #include "eccodes.h" -#include int main(int argc, char* argv[]) { From 0354dc86e26e1c95e0b4dad7280d0148b67aeb0c Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 23 Jun 2023 16:40:06 +0100 Subject: [PATCH 310/378] Include what you use --- src/grib_accessor_class_codetable.cc | 2 +- src/grib_accessor_class_lookup.cc | 2 +- src/grib_accessor_class_smart_table.cc | 2 +- src/grib_dumper_class_bufr_decode_C.cc | 2 +- src/grib_dumper_class_bufr_decode_filter.cc | 2 +- src/grib_dumper_class_bufr_decode_fortran.cc | 2 +- src/grib_dumper_class_bufr_decode_python.cc | 2 +- src/grib_dumper_class_bufr_encode_C.cc | 2 +- src/grib_dumper_class_bufr_encode_filter.cc | 2 +- src/grib_dumper_class_bufr_encode_fortran.cc | 2 +- src/grib_dumper_class_bufr_encode_python.cc | 2 +- src/grib_dumper_class_bufr_simple.cc | 2 +- src/grib_dumper_class_debug.cc | 2 +- src/grib_dumper_class_default.cc | 2 +- src/grib_dumper_class_json.cc | 2 +- src/grib_dumper_class_serialize.cc | 2 +- src/grib_dumper_class_wmo.cc | 2 +- src/grib_header_compute.cc | 2 +- src/grib_loader_from_array.cc | 2 +- 19 files changed, 19 insertions(+), 19 deletions(-) diff --git a/src/grib_accessor_class_codetable.cc b/src/grib_accessor_class_codetable.cc index 93058b81b..bdc83f46e 100644 --- a/src/grib_accessor_class_codetable.cc +++ b/src/grib_accessor_class_codetable.cc @@ -13,7 +13,7 @@ ****************************************/ #include "grib_api_internal.h" -#include +#include #if GRIB_PTHREADS static pthread_once_t once = PTHREAD_ONCE_INIT; diff --git a/src/grib_accessor_class_lookup.cc b/src/grib_accessor_class_lookup.cc index 2e174bdf2..53f7a9039 100644 --- a/src/grib_accessor_class_lookup.cc +++ b/src/grib_accessor_class_lookup.cc @@ -9,7 +9,7 @@ */ #include "grib_api_internal.h" -#include +#include /* This is used by make_class.pl diff --git a/src/grib_accessor_class_smart_table.cc b/src/grib_accessor_class_smart_table.cc index f23ef85f2..0e5653cc2 100644 --- a/src/grib_accessor_class_smart_table.cc +++ b/src/grib_accessor_class_smart_table.cc @@ -13,7 +13,7 @@ ****************************************/ #include "grib_api_internal.h" -#include +#include /* This is used by make_class.pl diff --git a/src/grib_dumper_class_bufr_decode_C.cc b/src/grib_dumper_class_bufr_decode_C.cc index e658a29ba..294f7931e 100644 --- a/src/grib_dumper_class_bufr_decode_C.cc +++ b/src/grib_dumper_class_bufr_decode_C.cc @@ -9,7 +9,7 @@ */ #include "grib_api_internal.h" -#include +#include /* This is used by make_class.pl diff --git a/src/grib_dumper_class_bufr_decode_filter.cc b/src/grib_dumper_class_bufr_decode_filter.cc index 1c7434cdb..ca1e7f454 100644 --- a/src/grib_dumper_class_bufr_decode_filter.cc +++ b/src/grib_dumper_class_bufr_decode_filter.cc @@ -9,7 +9,7 @@ */ #include "grib_api_internal.h" -#include +#include /* This is used by make_class.pl diff --git a/src/grib_dumper_class_bufr_decode_fortran.cc b/src/grib_dumper_class_bufr_decode_fortran.cc index 9a3871c40..739ec1362 100644 --- a/src/grib_dumper_class_bufr_decode_fortran.cc +++ b/src/grib_dumper_class_bufr_decode_fortran.cc @@ -9,7 +9,7 @@ */ #include "grib_api_internal.h" -#include +#include /* This is used by make_class.pl diff --git a/src/grib_dumper_class_bufr_decode_python.cc b/src/grib_dumper_class_bufr_decode_python.cc index 3b6cffba0..8c77c8325 100644 --- a/src/grib_dumper_class_bufr_decode_python.cc +++ b/src/grib_dumper_class_bufr_decode_python.cc @@ -9,7 +9,7 @@ */ #include "grib_api_internal.h" -#include +#include /* This is used by make_class.pl diff --git a/src/grib_dumper_class_bufr_encode_C.cc b/src/grib_dumper_class_bufr_encode_C.cc index 385474470..b69f765c6 100644 --- a/src/grib_dumper_class_bufr_encode_C.cc +++ b/src/grib_dumper_class_bufr_encode_C.cc @@ -9,7 +9,7 @@ */ #include "grib_api_internal.h" -#include +#include /* This is used by make_class.pl diff --git a/src/grib_dumper_class_bufr_encode_filter.cc b/src/grib_dumper_class_bufr_encode_filter.cc index 308d5f7b4..38a704842 100644 --- a/src/grib_dumper_class_bufr_encode_filter.cc +++ b/src/grib_dumper_class_bufr_encode_filter.cc @@ -9,7 +9,7 @@ */ #include "grib_api_internal.h" -#include +#include /* This is used by make_class.pl diff --git a/src/grib_dumper_class_bufr_encode_fortran.cc b/src/grib_dumper_class_bufr_encode_fortran.cc index 5596718c6..8ddc771b6 100644 --- a/src/grib_dumper_class_bufr_encode_fortran.cc +++ b/src/grib_dumper_class_bufr_encode_fortran.cc @@ -9,7 +9,7 @@ */ #include "grib_api_internal.h" -#include +#include /* This is used by make_class.pl diff --git a/src/grib_dumper_class_bufr_encode_python.cc b/src/grib_dumper_class_bufr_encode_python.cc index 53c9a9352..ba2a0998a 100644 --- a/src/grib_dumper_class_bufr_encode_python.cc +++ b/src/grib_dumper_class_bufr_encode_python.cc @@ -9,7 +9,7 @@ */ #include "grib_api_internal.h" -#include +#include /* This is used by make_class.pl diff --git a/src/grib_dumper_class_bufr_simple.cc b/src/grib_dumper_class_bufr_simple.cc index 19094f7c7..eb5ec5e44 100644 --- a/src/grib_dumper_class_bufr_simple.cc +++ b/src/grib_dumper_class_bufr_simple.cc @@ -9,7 +9,7 @@ */ #include "grib_api_internal.h" -#include +#include /* This is used by make_class.pl diff --git a/src/grib_dumper_class_debug.cc b/src/grib_dumper_class_debug.cc index 7621762b9..75a6c858c 100644 --- a/src/grib_dumper_class_debug.cc +++ b/src/grib_dumper_class_debug.cc @@ -9,7 +9,7 @@ */ #include "grib_api_internal.h" -#include +#include /* This is used by make_class.pl diff --git a/src/grib_dumper_class_default.cc b/src/grib_dumper_class_default.cc index 0b64ce88a..fb69995de 100644 --- a/src/grib_dumper_class_default.cc +++ b/src/grib_dumper_class_default.cc @@ -14,7 +14,7 @@ #include "grib_api_internal.h" -#include +#include /* This is used by make_class.pl diff --git a/src/grib_dumper_class_json.cc b/src/grib_dumper_class_json.cc index 7ccf07f7f..3615595b2 100644 --- a/src/grib_dumper_class_json.cc +++ b/src/grib_dumper_class_json.cc @@ -9,7 +9,7 @@ */ #include "grib_api_internal.h" -#include +#include /* This is used by make_class.pl diff --git a/src/grib_dumper_class_serialize.cc b/src/grib_dumper_class_serialize.cc index e826a846a..163a01f6b 100644 --- a/src/grib_dumper_class_serialize.cc +++ b/src/grib_dumper_class_serialize.cc @@ -13,7 +13,7 @@ #include "grib_api_internal.h" -#include +#include /* This is used by make_class.pl diff --git a/src/grib_dumper_class_wmo.cc b/src/grib_dumper_class_wmo.cc index 86270e0b2..6d84a0b28 100644 --- a/src/grib_dumper_class_wmo.cc +++ b/src/grib_dumper_class_wmo.cc @@ -14,7 +14,7 @@ #include "grib_api_internal.h" -#include +#include /* This is used by make_class.pl diff --git a/src/grib_header_compute.cc b/src/grib_header_compute.cc index fab399e43..41180a1b2 100644 --- a/src/grib_header_compute.cc +++ b/src/grib_header_compute.cc @@ -17,7 +17,7 @@ #include "grib_api_internal.h" #include #include -#include +#include #include static grib_math* readpower(grib_context* c, char** form, int* err); diff --git a/src/grib_loader_from_array.cc b/src/grib_loader_from_array.cc index 8876d493a..e8b0477c9 100644 --- a/src/grib_loader_from_array.cc +++ b/src/grib_loader_from_array.cc @@ -13,7 +13,7 @@ #include "grib_api_internal.h" -#include +#include int grib_lookup_long_from_array(grib_context* gc, grib_loader* loader, const char* name, long* lvalue) { From fd6bc69160cd5d4bc9d2848ea9abbe8ecaf8bbc9 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 23 Jun 2023 17:13:23 +0100 Subject: [PATCH 311/378] Include what you use --- src/grib_accessor_class_data_complex_packing.cc | 2 +- src/grib_accessor_class_data_g2bifourier_packing.cc | 2 +- src/grib_accessor_class_data_sh_packed.cc | 2 +- src/grib_accessor_class_data_sh_unpacked.cc | 2 +- src/grib_accessor_class_from_scale_factor_scaled_value.cc | 2 +- src/grib_accessor_class_g2grid.cc | 2 +- src/grib_geography.cc | 2 +- src/grib_header_compute.cc | 2 +- src/grib_iterator_class_gaussian.cc | 2 +- src/grib_iterator_class_gaussian_reduced.cc | 2 +- src/grib_iterator_class_lambert_azimuthal_equal_area.cc | 2 +- src/grib_iterator_class_lambert_conformal.cc | 2 +- src/grib_iterator_class_latlon_reduced.cc | 2 +- src/grib_iterator_class_mercator.cc | 2 +- src/grib_iterator_class_polar_stereographic.cc | 2 +- src/grib_iterator_class_regular.cc | 2 +- src/grib_iterator_class_space_view.cc | 2 +- src/grib_optimize_decimal_factor.cc | 2 +- tools/grib_to_netcdf.cc | 2 +- 19 files changed, 19 insertions(+), 19 deletions(-) diff --git a/src/grib_accessor_class_data_complex_packing.cc b/src/grib_accessor_class_data_complex_packing.cc index 06b2bcbb8..f8595a858 100644 --- a/src/grib_accessor_class_data_complex_packing.cc +++ b/src/grib_accessor_class_data_complex_packing.cc @@ -10,7 +10,7 @@ #include "grib_ieeefloat.h" #include "grib_scaling.h" -#include +#include #include /* This is used by make_class.pl diff --git a/src/grib_accessor_class_data_g2bifourier_packing.cc b/src/grib_accessor_class_data_g2bifourier_packing.cc index 76980612e..bc9abe56f 100644 --- a/src/grib_accessor_class_data_g2bifourier_packing.cc +++ b/src/grib_accessor_class_data_g2bifourier_packing.cc @@ -15,7 +15,7 @@ #include "grib_scaling.h" #include "grib_api_internal.h" #include "grib_optimize_decimal_factor.h" -#include +#include #include /* diff --git a/src/grib_accessor_class_data_sh_packed.cc b/src/grib_accessor_class_data_sh_packed.cc index db2f63ce8..b1c24e6cd 100644 --- a/src/grib_accessor_class_data_sh_packed.cc +++ b/src/grib_accessor_class_data_sh_packed.cc @@ -10,7 +10,7 @@ #include "grib_scaling.h" #include "grib_api_internal.h" -#include +#include /* This is used by make_class.pl diff --git a/src/grib_accessor_class_data_sh_unpacked.cc b/src/grib_accessor_class_data_sh_unpacked.cc index 604c3947f..0b7499118 100644 --- a/src/grib_accessor_class_data_sh_unpacked.cc +++ b/src/grib_accessor_class_data_sh_unpacked.cc @@ -10,7 +10,7 @@ #include "grib_scaling.h" #include "grib_api_internal.h" -#include +#include /* This is used by make_class.pl diff --git a/src/grib_accessor_class_from_scale_factor_scaled_value.cc b/src/grib_accessor_class_from_scale_factor_scaled_value.cc index edf8b1d48..21a41a1e3 100644 --- a/src/grib_accessor_class_from_scale_factor_scaled_value.cc +++ b/src/grib_accessor_class_from_scale_factor_scaled_value.cc @@ -9,7 +9,7 @@ */ #include "grib_api_internal.h" -#include +#include #ifdef ECCODES_ON_WINDOWS #include #endif diff --git a/src/grib_accessor_class_g2grid.cc b/src/grib_accessor_class_g2grid.cc index 69a8bb6bf..cbb6bdd20 100644 --- a/src/grib_accessor_class_g2grid.cc +++ b/src/grib_accessor_class_g2grid.cc @@ -13,7 +13,7 @@ ***********************************************/ #include "grib_api_internal.h" -#include +#include /* This is used by make_class.pl diff --git a/src/grib_geography.cc b/src/grib_geography.cc index 84b1029f3..b385ceb10 100644 --- a/src/grib_geography.cc +++ b/src/grib_geography.cc @@ -13,7 +13,7 @@ ***************************************************************************/ #include "grib_api_internal.h" -#include +#include #include #define NUMBER(x) (sizeof(x) / sizeof(x[0])) diff --git a/src/grib_header_compute.cc b/src/grib_header_compute.cc index 41180a1b2..d8723742e 100644 --- a/src/grib_header_compute.cc +++ b/src/grib_header_compute.cc @@ -15,7 +15,7 @@ */ #include "grib_api_internal.h" -#include +#include #include #include #include diff --git a/src/grib_iterator_class_gaussian.cc b/src/grib_iterator_class_gaussian.cc index 366505b71..ede3dba7f 100644 --- a/src/grib_iterator_class_gaussian.cc +++ b/src/grib_iterator_class_gaussian.cc @@ -12,7 +12,7 @@ **************************************/ #include "grib_api_internal.h" -#include +#include /* This is used by make_class.pl diff --git a/src/grib_iterator_class_gaussian_reduced.cc b/src/grib_iterator_class_gaussian_reduced.cc index 95608dd91..44ca0c385 100644 --- a/src/grib_iterator_class_gaussian_reduced.cc +++ b/src/grib_iterator_class_gaussian_reduced.cc @@ -14,7 +14,7 @@ #include "grib_api_internal.h" -#include +#include /* This is used by make_class.pl diff --git a/src/grib_iterator_class_lambert_azimuthal_equal_area.cc b/src/grib_iterator_class_lambert_azimuthal_equal_area.cc index f77b23afc..f9b76d702 100644 --- a/src/grib_iterator_class_lambert_azimuthal_equal_area.cc +++ b/src/grib_iterator_class_lambert_azimuthal_equal_area.cc @@ -9,7 +9,7 @@ */ #include "grib_api_internal.h" -#include +#include /* This is used by make_class.pl diff --git a/src/grib_iterator_class_lambert_conformal.cc b/src/grib_iterator_class_lambert_conformal.cc index 8c5fed223..61e17d97c 100644 --- a/src/grib_iterator_class_lambert_conformal.cc +++ b/src/grib_iterator_class_lambert_conformal.cc @@ -9,7 +9,7 @@ */ #include "grib_api_internal.h" -#include +#include /* This is used by make_class.pl diff --git a/src/grib_iterator_class_latlon_reduced.cc b/src/grib_iterator_class_latlon_reduced.cc index 90154ff22..c27dcb2d1 100644 --- a/src/grib_iterator_class_latlon_reduced.cc +++ b/src/grib_iterator_class_latlon_reduced.cc @@ -14,7 +14,7 @@ #include "grib_api_internal.h" -#include +#include /* This is used by make_class.pl diff --git a/src/grib_iterator_class_mercator.cc b/src/grib_iterator_class_mercator.cc index fd67bd833..bd60e3424 100644 --- a/src/grib_iterator_class_mercator.cc +++ b/src/grib_iterator_class_mercator.cc @@ -9,7 +9,7 @@ */ #include "grib_api_internal.h" -#include +#include /* This is used by make_class.pl diff --git a/src/grib_iterator_class_polar_stereographic.cc b/src/grib_iterator_class_polar_stereographic.cc index 1f8b0d17b..fe1d03202 100644 --- a/src/grib_iterator_class_polar_stereographic.cc +++ b/src/grib_iterator_class_polar_stereographic.cc @@ -9,7 +9,7 @@ */ #include "grib_api_internal.h" -#include +#include /* This is used by make_class.pl diff --git a/src/grib_iterator_class_regular.cc b/src/grib_iterator_class_regular.cc index ddbaa3044..cc870e70a 100644 --- a/src/grib_iterator_class_regular.cc +++ b/src/grib_iterator_class_regular.cc @@ -9,7 +9,7 @@ */ #include "grib_api_internal.h" -#include +#include /* This is used by make_class.pl diff --git a/src/grib_iterator_class_space_view.cc b/src/grib_iterator_class_space_view.cc index 70299278b..ce8294d0d 100644 --- a/src/grib_iterator_class_space_view.cc +++ b/src/grib_iterator_class_space_view.cc @@ -9,7 +9,7 @@ */ #include "grib_api_internal.h" -#include +#include /* This is used by make_class.pl diff --git a/src/grib_optimize_decimal_factor.cc b/src/grib_optimize_decimal_factor.cc index 342bb974a..ea6ac3a08 100644 --- a/src/grib_optimize_decimal_factor.cc +++ b/src/grib_optimize_decimal_factor.cc @@ -11,7 +11,7 @@ #include "grib_scaling.h" #include "grib_api_internal.h" #include "grib_optimize_decimal_factor.h" -#include +#include #include #include diff --git a/tools/grib_to_netcdf.cc b/tools/grib_to_netcdf.cc index a9af32dbd..29df9d385 100644 --- a/tools/grib_to_netcdf.cc +++ b/tools/grib_to_netcdf.cc @@ -12,7 +12,7 @@ #ifdef HAVE_NETCDF -#include +#include #include #include #include From 0ccd1badb7ab3c23119e149523af7215b9d2f1d1 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 23 Jun 2023 19:00:47 +0100 Subject: [PATCH 312/378] Dead code removal --- ...b_accessor_class_data_g1complex_packing.cc | 44 +++++++++---------- src/grib_accessor_class_g2grid.cc | 12 ++--- src/grib_filepool.cc | 26 ++++------- src/grib_handle.cc | 31 ------------- 4 files changed, 33 insertions(+), 80 deletions(-) diff --git a/src/grib_accessor_class_data_g1complex_packing.cc b/src/grib_accessor_class_data_g1complex_packing.cc index 9cc256d6a..f0b560660 100644 --- a/src/grib_accessor_class_data_g1complex_packing.cc +++ b/src/grib_accessor_class_data_g1complex_packing.cc @@ -173,29 +173,27 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) if (*len == 0) return GRIB_NO_VALUES; -#if 0 - /* TODO: spectral_ieee does not work */ - if (c->ieee_packing && self->ieee_packing) { - grib_handle* h = grib_handle_of_accessor(a); - grib_context* c = a->context; - char* packingType_s = NULL; - char* ieee_packing_s = NULL; - long precision = c->ieee_packing == 32 ? 1 : 2; - size_t lenstr = strlen(self->ieee_packing); - - packingType_s = grib_context_strdup(c, self->packingType); - ieee_packing_s = grib_context_strdup(c, self->ieee_packing); - precision_s = grib_context_strdup(c, self->precision); - - grib_set_string(h, packingType_s, ieee_packing_s, &lenstr); - grib_set_long(h, precision_s, precision); - - grib_context_free(c, packingType_s); - grib_context_free(c, ieee_packing_s); - grib_context_free(c, precision_s); - return grib_set_double_array(h, "values", val, *len); - } -#endif +// /* TODO: spectral_ieee does not work */ +// if (c->ieee_packing && self->ieee_packing) { +// grib_handle* h = grib_handle_of_accessor(a); +// grib_context* c = a->context; +// char* packingType_s = NULL; +// char* ieee_packing_s = NULL; +// long precision = c->ieee_packing == 32 ? 1 : 2; +// size_t lenstr = strlen(self->ieee_packing); + +// packingType_s = grib_context_strdup(c, self->packingType); +// ieee_packing_s = grib_context_strdup(c, self->ieee_packing); +// precision_s = grib_context_strdup(c, self->precision); + +// grib_set_string(h, packingType_s, ieee_packing_s, &lenstr); +// grib_set_long(h, precision_s, precision); + +// grib_context_free(c, packingType_s); +// grib_context_free(c, ieee_packing_s); +// grib_context_free(c, precision_s); +// return grib_set_double_array(h, "values", val, *len); +// } if ((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->sub_j, &sub_j)) != GRIB_SUCCESS) return ret; diff --git a/src/grib_accessor_class_g2grid.cc b/src/grib_accessor_class_g2grid.cc index cbb6bdd20..242c9565a 100644 --- a/src/grib_accessor_class_g2grid.cc +++ b/src/grib_accessor_class_g2grid.cc @@ -8,10 +8,6 @@ * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. */ -/************************************************* - * Enrico Fucile - ***********************************************/ - #include "grib_api_internal.h" #include /* @@ -275,11 +271,9 @@ static int trial(const double* val, long v[6], long* basic_angle, long* sub_divi *basic_angle = 360; *sub_division = lcm(ni, nj); -#if 0 - printf("ni = %ld, nj = %ld , basic_angle=%ld sub_division = %ld\n", - ni,nj, - *basic_angle,*sub_division); -#endif + // printf("ni = %ld, nj = %ld , basic_angle=%ld sub_division = %ld\n", + // ni, nj, *basic_angle,*sub_division); + if (*sub_division < 0) return 0; diff --git a/src/grib_filepool.cc b/src/grib_filepool.cc index 84d87ab2c..ab9c6b35c 100644 --- a/src/grib_filepool.cc +++ b/src/grib_filepool.cc @@ -8,12 +8,6 @@ * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. */ -/* - * - * Description: file pool - * - */ - #include "grib_api_internal.h" #define GRIB_MAX_OPENED_FILES 200 @@ -436,21 +430,19 @@ grib_file* grib_file_new(grib_context* c, const char* name, int* err) void grib_file_delete(grib_file* file) { - { - if (!file) - return; - } + if (!file) return; + GRIB_MUTEX_INIT_ONCE(&once, &init); GRIB_MUTEX_LOCK(&mutex1); /* GRIB-803: cannot call fclose yet! Causes crash */ /* TODO: Set handle to NULL in filepool too */ -#if 0 - if (file->handle) { - if (fclose(file->handle) != 0) { - perror(file->name); - } - } -#endif + + //if (file->handle) { + // if (fclose(file->handle) != 0) { + // perror(file->name); + // } + //} + if (file->name) free(file->name); if (file->mode) diff --git a/src/grib_handle.cc b/src/grib_handle.cc index 0178dc868..8c1b29fc7 100644 --- a/src/grib_handle.cc +++ b/src/grib_handle.cc @@ -14,37 +14,6 @@ ***************************************************************************/ #include "grib_api_internal.h" -#if 0 - /* #if GRIB_PTHREADS */ - static pthread_once_t once = PTHREAD_ONCE_INIT; - static pthread_mutex_t mutex1 = PTHREAD_MUTEX_INITIALIZER; - static pthread_mutex_t mutex2 = PTHREAD_MUTEX_INITIALIZER; - static void init() { - pthread_mutexattr_t attr; - pthread_mutexattr_init(&attr); - pthread_mutexattr_settype(&attr,PTHREAD_MUTEX_RECURSIVE); - pthread_mutex_init(&mutex1,&attr); - pthread_mutex_init(&mutex2,&attr); - pthread_mutexattr_destroy(&attr); - } - /* #elif GRIB_OMP_THREADS */ - static int once = 0; - static omp_nest_lock_t mutex1; - static omp_nest_lock_t mutex2; - static void init() - { - GRIB_OMP_CRITICAL(lock_grib_handle_c) - { - if (once == 0) - { - omp_init_nest_lock(&mutex1); - omp_init_nest_lock(&mutex2); - once = 1; - } - } - } -#endif - static grib_handle* grib_handle_new_from_file_no_multi(grib_context* c, FILE* f, int headers_only, int* error); static grib_handle* grib_handle_new_from_file_multi(grib_context* c, FILE* f, int* error); static int grib2_get_next_section(unsigned char* msgbegin, size_t msglen, unsigned char** secbegin, size_t* seclen, int* secnum, int* err); From 6a6fb1bab569d70f546a7802ff556d4ade46fb67 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 23 Jun 2023 19:12:51 +0100 Subject: [PATCH 313/378] Dead code removal --- ...b_accessor_class_g2end_step.unpack_long.cc | 73 ++++++++++++++++++ src/grib_accessor_class_abstract_vector.cc | 4 - src/grib_accessor_class_g2end_step.cc | 77 +------------------ 3 files changed, 76 insertions(+), 78 deletions(-) create mode 100644 src/deprecated/grib_accessor_class_g2end_step.unpack_long.cc diff --git a/src/deprecated/grib_accessor_class_g2end_step.unpack_long.cc b/src/deprecated/grib_accessor_class_g2end_step.unpack_long.cc new file mode 100644 index 000000000..3bbd6916d --- /dev/null +++ b/src/deprecated/grib_accessor_class_g2end_step.unpack_long.cc @@ -0,0 +1,73 @@ + +static int unpack_long(grib_accessor* a, long* val, size_t *len) +{ + grib_accessor_g2end_step* self = (grib_accessor_g2end_step*)a; + int err = 0; + long start_step; + long unit; + long coded_unit; + long coded_time_range, typeOfTimeIncrement, numberOfTimeRange; + long coded_time_range_sec=0; + int factor; + long u2sf,u2sf_step_unit; + int add_time_range = 1; /* whether we add lengthOfTimeRange */ + + grib_handle* h=grib_handle_of_accessor(a); + + if((err = grib_get_long_internal(h,self->start_step,&start_step))) return err; + + /*point in time */ + if (self->year == NULL) { + *val=start_step; + return 0; + } + + if((err = grib_get_long_internal(h,self->unit,&unit))) return err; + + if((err = grib_get_long_internal(h,self->coded_unit,&coded_unit))) return err; + if((err = grib_get_long_internal(h,self->coded_time_range, &coded_time_range))) return err; + if((err = grib_get_long_internal(h,self->typeOfTimeIncrement, &typeOfTimeIncrement))) return err; + if((err = grib_get_long_internal(h,self->numberOfTimeRange, &numberOfTimeRange))) return err; + + Assert(numberOfTimeRange == 1 || numberOfTimeRange == 2); + + err = convert_time_range(h, unit, coded_unit, &coded_time_range); + if (err != GRIB_SUCCESS) return err; + +#if 0 + if (coded_unit!=unit) { + coded_time_range_sec=coded_time_range*u2s2[coded_unit]; + if (coded_time_range_sec<0) { + factor=60; + if (u2s2[coded_unit] % factor) return GRIB_DECODING_ERROR; + if (u2s[unit] % factor) return GRIB_DECODING_ERROR; + u2sf=u2s2[coded_unit]/factor; + coded_time_range_sec=coded_time_range*u2sf; + u2sf_step_unit=u2s[unit]/factor; + } else { + u2sf_step_unit=u2s[unit]; + } + if (coded_time_range_sec % u2sf_step_unit!=0) { + grib_context_log(h->context,GRIB_LOG_ERROR,"unable to convert endStep in stepUnits"); + return GRIB_WRONG_STEP_UNIT; + } + coded_time_range = coded_time_range_sec / u2sf_step_unit; + } +#endif + if (typeOfTimeIncrement == 1) { + /* See GRIB-488 */ + /* Note: For this case, lengthOfTimeRange is not related to step and should not be used to calculate step */ + add_time_range = 0; + if (is_special_expver(h)) { + add_time_range = 1; + } + } + if (add_time_range) { + *val = start_step + coded_time_range; + } else { + *val = start_step; + } + + return GRIB_SUCCESS; +} + diff --git a/src/grib_accessor_class_abstract_vector.cc b/src/grib_accessor_class_abstract_vector.cc index dc1053f0a..025d9123d 100644 --- a/src/grib_accessor_class_abstract_vector.cc +++ b/src/grib_accessor_class_abstract_vector.cc @@ -8,10 +8,6 @@ * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. */ -/****************************************************************** - * Enrico Fucile - ******************************************************************/ - #include "grib_api_internal.h" /* This is used by make_class.pl diff --git a/src/grib_accessor_class_g2end_step.cc b/src/grib_accessor_class_g2end_step.cc index f25b6b9e5..2c009d162 100644 --- a/src/grib_accessor_class_g2end_step.cc +++ b/src/grib_accessor_class_g2end_step.cc @@ -365,6 +365,9 @@ static int unpack_multiple_time_ranges(grib_accessor* a, long* val, size_t* len) return GRIB_DECODING_ERROR; } +// For the old implementation of unpack_long, see +// src/deprecated/grib_accessor_class_g2end_step.unpack_long.cc +// static int unpack_long(grib_accessor* a, long* val, size_t* len) { grib_accessor_g2end_step* self = (grib_accessor_g2end_step*)a; @@ -395,80 +398,6 @@ static int unpack_long(grib_accessor* a, long* val, size_t* len) } } -#if 0 -static int unpack_long(grib_accessor* a, long* val, size_t *len) -{ - grib_accessor_g2end_step* self = (grib_accessor_g2end_step*)a; - int err = 0; - long start_step; - long unit; - long coded_unit; - long coded_time_range, typeOfTimeIncrement, numberOfTimeRange; - long coded_time_range_sec=0; - int factor; - long u2sf,u2sf_step_unit; - int add_time_range = 1; /* whether we add lengthOfTimeRange */ - - grib_handle* h=grib_handle_of_accessor(a); - - if((err = grib_get_long_internal(h,self->start_step,&start_step))) return err; - - /*point in time */ - if (self->year == NULL) { - *val=start_step; - return 0; - } - - if((err = grib_get_long_internal(h,self->unit,&unit))) return err; - - if((err = grib_get_long_internal(h,self->coded_unit,&coded_unit))) return err; - if((err = grib_get_long_internal(h,self->coded_time_range, &coded_time_range))) return err; - if((err = grib_get_long_internal(h,self->typeOfTimeIncrement, &typeOfTimeIncrement))) return err; - if((err = grib_get_long_internal(h,self->numberOfTimeRange, &numberOfTimeRange))) return err; - - Assert(numberOfTimeRange == 1 || numberOfTimeRange == 2); - - err = convert_time_range(h, unit, coded_unit, &coded_time_range); - if (err != GRIB_SUCCESS) return err; - -#if 0 - if (coded_unit!=unit) { - coded_time_range_sec=coded_time_range*u2s2[coded_unit]; - if (coded_time_range_sec<0) { - factor=60; - if (u2s2[coded_unit] % factor) return GRIB_DECODING_ERROR; - if (u2s[unit] % factor) return GRIB_DECODING_ERROR; - u2sf=u2s2[coded_unit]/factor; - coded_time_range_sec=coded_time_range*u2sf; - u2sf_step_unit=u2s[unit]/factor; - } else { - u2sf_step_unit=u2s[unit]; - } - if (coded_time_range_sec % u2sf_step_unit!=0) { - grib_context_log(h->context,GRIB_LOG_ERROR,"unable to convert endStep in stepUnits"); - return GRIB_WRONG_STEP_UNIT; - } - coded_time_range = coded_time_range_sec / u2sf_step_unit; - } -#endif - if (typeOfTimeIncrement == 1) { - /* See GRIB-488 */ - /* Note: For this case, lengthOfTimeRange is not related to step and should not be used to calculate step */ - add_time_range = 0; - if (is_special_expver(h)) { - add_time_range = 1; - } - } - if (add_time_range) { - *val = start_step + coded_time_range; - } else { - *val = start_step; - } - - return GRIB_SUCCESS; -} -#endif - static int pack_long(grib_accessor* a, const long* val, size_t* len) { grib_accessor_g2end_step* self = (grib_accessor_g2end_step*)a; From 2ea8127cf7dc7daa5c2d40b00d039fcb6b3d31e8 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 23 Jun 2023 19:20:30 +0100 Subject: [PATCH 314/378] Dead code removal --- ...er_general_extended_packing.pack_double.cc | 604 +++++++++++++++++ ...g1second_order_general_extended_packing.cc | 614 +----------------- 2 files changed, 608 insertions(+), 610 deletions(-) create mode 100644 src/deprecated/grib_accessor_class_data_g1second_order_general_extended_packing.pack_double.cc diff --git a/src/deprecated/grib_accessor_class_data_g1second_order_general_extended_packing.pack_double.cc b/src/deprecated/grib_accessor_class_data_g1second_order_general_extended_packing.pack_double.cc new file mode 100644 index 000000000..36fcc42a9 --- /dev/null +++ b/src/deprecated/grib_accessor_class_data_g1second_order_general_extended_packing.pack_double.cc @@ -0,0 +1,604 @@ +/* Old implementation. Now superseded. See ECC-441 and ECC-261 */ +static int pack_double_old(grib_accessor* a, const double* val, size_t *len) +{ + grib_accessor_data_g1second_order_general_extended_packing* self = (grib_accessor_data_g1second_order_general_extended_packing*)a; + int ret=0; + int grib2=0; + long bits_per_value,orderOfSPD,binary_scale_factor; + long numberOfValues; + double max,min; + double decimal,divisor; + double reference_value; + size_t size,sizebits; + long half_byte; + long* X; + long* Xp; + long i; + long incrementGroupLengthA,groupWidthA,prevGroupLength,offsetD,remainingValuesB,groupLengthB; + long maxB,minB,maxAB,minAB; + long offsetBeforeData,offsetSection4; + unsigned char* buffer = NULL; + long maxWidth,maxLength,widthOfWidths,NL,widthOfLengths,N1,N2,extraValues,codedNumberOfGroups,numberOfSecondOrderPackedValues; + long pos; + + long numberOfGroups; + long groupLengthC,groupLengthA,remainingValues,count; + long maxA=0,minA=0; + long maxC,minC,offsetC; + long maxAC,minAC; + long range,bias=0,maxSPD; + long firstOrderValuesMax,offset,groupLength,j,groupWidth,firstOrderValue,lengthOfSecondOrderValues; + long *groupLengths,*groupWidths,*firstOrderValues; + /* long groupLengths[MAX_NUMBER_OF_GROUPS],groupWidths[MAX_NUMBER_OF_GROUPS],firstOrderValues[MAX_NUMBER_OF_GROUPS]; */ + + /* TODO put these parameters in def file */ + long startGroupLength=15; + long incrementGroupLength=3; + long minGroupLength=3; + long widthOfSPD=0,widthOfBias=0; + long *offsets; + long widthOfFirstOrderValues; + int computeGroupA=1; + long dataHeadersLength,widthsLength,lengthsLength,firstOrderValuesLength; + long decimal_scale_factor; + grib_handle* handle = grib_handle_of_accessor(a); + + self->dirty=1; + + numberOfValues=*len; + + max = val[0]; + min = max; + for(i=1;i< numberOfValues;i++) { + if (val[i] > max ) max = val[i]; + else if (val[i] < min ) min = val[i]; + } + + /* For constant fields set decimal scale factor to 0 (See GRIB-165) */ + if (min==max) { + grib_set_long_internal(handle,self->decimal_scale_factor, 0); + } + + if((ret = grib_get_long_internal(handle,self->decimal_scale_factor, &decimal_scale_factor)) + != GRIB_SUCCESS) + return ret; + decimal = codes_power(decimal_scale_factor,10); + + max*=decimal; + min*=decimal; + + if (grib_get_nearest_smaller_value(handle,self->reference_value,min,&reference_value) + !=GRIB_SUCCESS) { + grib_context_log(a->context,GRIB_LOG_ERROR, + "unable to find nearest_smaller_value of %g for %s",min,self->reference_value); + return GRIB_INTERNAL_ERROR; + } + if((ret = grib_set_double_internal(handle,self->reference_value, reference_value)) != + GRIB_SUCCESS) + return ret; + + if((ret=grib_get_long_internal(handle,self->bits_per_value,&bits_per_value)) != GRIB_SUCCESS) + return ret; + + if((ret=grib_get_long_internal(handle,self->offsetdata,&offsetBeforeData)) != GRIB_SUCCESS) + return ret; + + if((ret=grib_get_long_internal(handle,self->offsetsection,&offsetSection4)) != GRIB_SUCCESS) + return ret; + + if((ret=grib_get_long_internal(handle,self->orderOfSPD,&orderOfSPD)) != GRIB_SUCCESS) + return ret; + + binary_scale_factor = grib_get_binary_scale_fact(max,reference_value,bits_per_value,&ret); + if (ret != GRIB_SUCCESS) return ret; + + if((ret = grib_set_long_internal(handle,self->binary_scale_factor, binary_scale_factor)) != + GRIB_SUCCESS) + return ret; + + divisor = codes_power(-binary_scale_factor,2); + X=(long*)grib_context_malloc_clear(a->context,sizeof(long)*numberOfValues); + for(i=0;i< numberOfValues;i++){ + X[i] = (((val[i]*decimal)-reference_value)*divisor)+0.5; + } + + groupLengths=(long*)grib_context_malloc_clear(a->context,sizeof(long)*numberOfValues); + groupWidths=(long*)grib_context_malloc_clear(a->context,sizeof(long)*numberOfValues); + firstOrderValues=(long*)grib_context_malloc_clear(a->context,sizeof(long)*numberOfValues); + + /* spatial differencing */ + switch (orderOfSPD) { + case 1: + for (i=numberOfValues-1;i>0;i--) { + X[i]-=X[i-1]; + } + break; + case 2: + for (i=numberOfValues-1;i>1;i--) { + X[i]-=2*X[i-1]-X[i-2]; + } + break; + case 3: + for (i=numberOfValues-1;i>2;i--) { + X[i]-=3*(X[i-1]-X[i-2])+X[i-3]; + } + break; + } + if (orderOfSPD) { + Assert(orderOfSPD >=0 && orderOfSPD < numberOfValues); + bias=X[orderOfSPD]; + for (i=orderOfSPD+1;i X[i] ) bias=X[i]; + } + for (i=orderOfSPD;iX[count+i]) minA=X[count+i]; + } + } + groupWidthA=number_of_bits(handle, maxA-minA); + range=(long)codes_power(groupWidthA,2)-1; + + offsetC=count+groupLengthA; + if (offsetC==numberOfValues) { + /* no more values close group A and end loop */ + groupLengths[numberOfGroups]=groupLengthA; + groupWidths[numberOfGroups]=groupWidthA; + /* firstOrderValues[numberOfGroups]=minA; */ + /* to optimise the width of first order variable */ + firstOrderValues[numberOfGroups] = maxA-range > 0 ? maxA-range : 0; + numberOfGroups++; + break; + } + + /* group C created with length=incrementGroupLength (fixed) + or remaining values if close to end + */ + groupLengthC=incrementGroupLength; + if ( groupLengthC + offsetC > numberOfValues - startGroupLength/2) { + groupLengthC=numberOfValues-offsetC; + } + maxC=X[offsetC]; + minC=X[offsetC]; + for (i=1;iX[offsetC+i]) minC=X[offsetC+i]; + } + + maxAC= maxA > maxC ? maxA : maxC; + minAC= minA < minC ? minA : minC; + + /* check if A+C can be represented with the same width as A*/ + if (maxAC-minAC > range) { + /* A could not be expanded adding C. Check if A could be expanded taking + some elements from preceding group. The condition is always that width of + A doesn't increase. + */ + if (numberOfGroups>0 && groupWidths[numberOfGroups-1] > groupWidthA ) { + prevGroupLength=groupLengths[numberOfGroups-1]-incrementGroupLength; + offsetC=count-incrementGroupLength; + /* preceding group length cannot be less than a minimum value */ + while (prevGroupLength >= minGroupLength) { + maxAC=maxA; + minAC=minA; + for (i=0;iX[offsetC+i]) minAC=X[offsetC+i]; + } + + /* no more elements can be transfered, exit loop*/ + if (maxAC-minAC > range) break; + + maxA=maxAC; + minA=minAC; + groupLengths[numberOfGroups-1]-=incrementGroupLength; + groupLengthA+=incrementGroupLength; + count-=incrementGroupLength; + remainingValues+=incrementGroupLength; + + offsetC-=incrementGroupLength; + prevGroupLength-=incrementGroupLength; + } + } + /* close group A*/ + groupLengths[numberOfGroups]=groupLengthA; + groupWidths[numberOfGroups]=groupWidthA; + /* firstOrderValues[numberOfGroups]=minA; */ + /* to optimise the width of first order variable */ + firstOrderValues[numberOfGroups] = maxA-range > 0 ? maxA-range : 0; + count+=groupLengthA; + remainingValues-=groupLengthA; + numberOfGroups++; + /* incrementGroupLengthA is reset to the fixed startGroupLength as it + could have been changed after the A+C or A+B ok condition. + */ + incrementGroupLengthA=startGroupLength; + computeGroupA=1; +#if 0 + if (numberOfGroups==MAX_NUMBER_OF_GROUPS) { + groupLengthA= remainingValues ; + maxA=X[count]; + minA=X[count]; + for (i=1;iX[count+i]) minA=X[count+i]; + } + groupWidthA=number_of_bits(maxA-minA); + range=(long)codes_power(groupWidthA,2)-1; + groupLengths[numberOfGroups]=groupLengthA; + groupWidths[numberOfGroups]=groupWidthA; + firstOrderValues[numberOfGroups] = maxA-range > 0 ? maxA-range : 0; + break; + } +#endif + continue; + } + + /* A+C could be coded with the same width as A*/ + offsetD=offsetC+groupLengthC; + if (offsetD==numberOfValues) { + groupLengths[numberOfGroups]=groupLengthA+groupLengthC; + groupWidths[numberOfGroups]=groupWidthA; + + /* range of AC is the same as A*/ + /* firstOrderValues[numberOfGroups]=minAC; */ + /* to optimise the width of first order variable */ + firstOrderValues[numberOfGroups] = maxAC-range > 0 ? maxAC-range : 0; + numberOfGroups++; + break; + } + + /* group B is created with length startGroupLength, starting at the + same offset as C. + */ + remainingValuesB=numberOfValues-offsetC; + groupLengthB= startGroupLength < remainingValuesB ? startGroupLength : remainingValuesB ; + maxB=maxC; + minB=minC; + for (i=groupLengthC;iX[offsetC+i]) minB=X[offsetC+i]; + } + + /* check if group B can be coded with a smaller width than A */ + if (maxB-minB <= range/2 && range>0 ) { + + /* TODO Add code to try if A can be expanded taking some elements + from the left (preceding) group. + A possible variation is to do this left check (and the previous one) + in the final loop when checking that the width of each group. + */ + + /* close group A and continue loop*/ + groupLengths[numberOfGroups]=groupLengthA; + groupWidths[numberOfGroups]=groupWidthA; + /* firstOrderValues[numberOfGroups]=minA; */ + /* to optimise the width of first order variable */ + firstOrderValues[numberOfGroups] = maxA-range > 0 ? maxA-range : 0; + count+=groupLengthA; + remainingValues-=groupLengthA; + numberOfGroups++; +#if 0 + if (numberOfGroups==MAX_NUMBER_OF_GROUPS) { + groupLengthA= remainingValues ; + maxA=X[count]; + minA=X[count]; + for (i=1;iX[count+i]) minA=X[count+i]; + } + groupWidthA=number_of_bits(maxA-minA); + range=(long)codes_power(groupWidthA,2)-1; + groupLengths[numberOfGroups]=groupLengthA; + groupWidths[numberOfGroups]=groupWidthA; + firstOrderValues[numberOfGroups] = maxA-range > 0 ? maxA-range : 0; + break; + } +#endif + incrementGroupLengthA=startGroupLength; + computeGroupA=1; + continue; + } + + /* check if A+B can be coded with same with as A */ + maxAB= maxA > maxB ? maxA : maxB; + minAB= minA < minB ? minA : minB; + if (maxAB-minAB <= range) { + /* A+B can be merged. The increment used at the beginning of the loop to + build group C is increased to the size of group B + */ + incrementGroupLengthA+=groupLengthB; + maxA=maxAB; + minA=minAB; + computeGroupA=0; + continue; + } + + /* A+B cannot be merged, A+C can be merged*/ + incrementGroupLengthA+=groupLengthC; + computeGroupA=1; + + } /* end of the while*/ + + /* computing bitsPerValue as the number of bits needed to represent + the firstOrderValues. + */ + max=firstOrderValues[0]; + min=firstOrderValues[0]; + for (i=1;ifirstOrderValues[i]) min=firstOrderValues[i]; + } + widthOfFirstOrderValues=number_of_bits(handle, max-min); + firstOrderValuesMax=(long)codes_power(widthOfFirstOrderValues,2)-1; + + if (numberOfGroups>2) { + /* loop through all the groups except the last in reverse order to + check if each group width is still appropriate for the group. + Focus on groups which have been shrank as left groups of an A group taking + some of their elements. + */ + offsets=(long*)grib_context_malloc_clear(a->context,sizeof(long)*numberOfGroups); + offsets[0]=orderOfSPD; + for (i=1;i=0;i--) { + offset=offsets[i]; + groupLength=groupLengths[i]; + + if (groupLength >= startGroupLength) continue; + + max=X[offset]; + min=X[offset]; + for (j=1;jX[offset+j]) min=X[offset+j]; + } + groupWidth=number_of_bits(handle, max-min); + range=(long)codes_power(groupWidth,2)-1; + + /* width of first order values has to be unchanged.*/ + for (j=groupWidth;jrange ? max-range : 0; + if (firstOrderValue <= firstOrderValuesMax ) { + groupWidths[i]=j; + firstOrderValues[i]=firstOrderValue; + break; + } + } + + offsetC=offset; + /* group width of the current group (i) can have been reduced + and it is worth to try to expand the group to get some elements + from the left group if it has bigger width. + */ + if (i>0 && (groupWidths[i-1] > groupWidths[i]) ) { + prevGroupLength=groupLengths[i-1]-incrementGroupLength; + offsetC-=incrementGroupLength; + while (prevGroupLength >= minGroupLength) { + for (j=0;jX[offsetC+j]) min=X[offsetC+j]; + } + + /* width of first order values has to be unchanged*/ + firstOrderValue=max>range ? max-range : 0; + if (max-min > range || firstOrderValue > firstOrderValuesMax ) break; + + groupLengths[i-1]-=incrementGroupLength; + groupLengths[i]+=incrementGroupLength; + firstOrderValues[i]=firstOrderValue; + + offsetC-=incrementGroupLength; + prevGroupLength-=incrementGroupLength; + } + } + + } + grib_context_free(a->context,offsets); + } + + maxWidth=groupWidths[0]; + maxLength=groupLengths[0]; + for (i=1;iparent->h->context, GRIB_LOG_ERROR, "Cannot compute parameters for second order packing."); + return GRIB_ENCODING_ERROR; + } + widthOfWidths=number_of_bits(handle, maxWidth); + widthOfLengths=number_of_bits(handle, maxLength); + + lengthOfSecondOrderValues=0; + for ( i=0; icontext->no_big_group_split) { + grib_split_long_groups(handle, a->context,&numberOfGroups,&lengthOfSecondOrderValues, + groupLengths,&widthOfLengths,groupWidths,widthOfWidths, + firstOrderValues,widthOfFirstOrderValues); + } + + Xp=X+orderOfSPD; + for ( i=0; iwidthOfSPD, widthOfSPD)) + != GRIB_SUCCESS) + return ret; + } + + /* end writing SPD */ + if((ret = grib_set_long_internal(handle,self->widthOfFirstOrderValues, widthOfFirstOrderValues)) + != GRIB_SUCCESS) + return ret; + + dataHeadersLength=25; + if (orderOfSPD) dataHeadersLength+=1+((orderOfSPD+1)*widthOfSPD+7)/8; + widthsLength=(widthOfWidths*numberOfGroups+7)/8; + lengthsLength=(widthOfLengths*numberOfGroups+7)/8; + firstOrderValuesLength=(widthOfFirstOrderValues*numberOfGroups+7)/8; + + NL=widthsLength+dataHeadersLength+1; + N1=NL+lengthsLength; + N2=N1+firstOrderValuesLength; + + NL= NL > 65535 ? 65535 : NL; + N2= N2 > 65535 ? 65535 : N2; + N1= N1 > 65535 ? 65535 : N1; + + grib_set_long(handle,self->NL, NL); + grib_set_long(handle,self->N1, N1); + grib_set_long(handle,self->N2, N2); + + if (numberOfGroups > 65535 ) { + extraValues=numberOfGroups/65536; + codedNumberOfGroups=numberOfGroups%65536; + } else { + extraValues=0; + codedNumberOfGroups=numberOfGroups; + } + + /* if no extraValues key present it is a GRIB2*/ + grib2=0; + if((ret = grib_set_long(handle,self->extraValues, extraValues)) != GRIB_SUCCESS) { + codedNumberOfGroups=numberOfGroups; + grib2=1; + } + + if((ret = grib_set_long_internal(handle,self->codedNumberOfGroups, codedNumberOfGroups)) != GRIB_SUCCESS) + return ret; + + numberOfSecondOrderPackedValues=numberOfValues-orderOfSPD; + if (!grib2 && numberOfSecondOrderPackedValues > 65535 ) + numberOfSecondOrderPackedValues= 65535; + + if((ret = grib_set_long_internal(handle,self->numberOfSecondOrderPackedValues, numberOfSecondOrderPackedValues)) + != GRIB_SUCCESS) + return ret; + + if (grib2) { + if((ret = grib_set_long_internal(handle,self->bits_per_value, bits_per_value)) != GRIB_SUCCESS) + return ret; + } else { + if((ret = grib_set_long_internal(handle,self->bits_per_value, 0)) != GRIB_SUCCESS) + return ret; + } + + if((ret = grib_set_long_internal(handle,self->widthOfWidths, widthOfWidths)) != GRIB_SUCCESS) + return ret; + + if((ret = grib_set_long_internal(handle,self->widthOfLengths, widthOfLengths)) != GRIB_SUCCESS) + return ret; + + lengthOfSecondOrderValues=0; + for ( i=0; ihalf_byte, half_byte)) != GRIB_SUCCESS) + return ret; + + buffer=(unsigned char*)grib_context_malloc_clear(a->context,size); + + pos=0; + if (orderOfSPD) { + long SPD[4]={0,}; + size_t nSPD=orderOfSPD+1; + Assert(orderOfSPD<=3); + for (i=0;iSPD,SPD,nSPD); + if(ret) return ret; + } + + ret=grib_set_long_array_internal(handle,self->groupWidths,groupWidths,(size_t)numberOfGroups); + if(ret) return ret; + + ret=grib_set_long_array_internal(handle,self->groupLengths,groupLengths,(size_t)numberOfGroups); + if(ret) return ret; + + ret=grib_set_long_array_internal(handle,self->firstOrderValues,firstOrderValues,(size_t)numberOfGroups); + if(ret) return ret; + + Xp=X+orderOfSPD; + pos=0; + count=0; + for (i=0;i0) { + for (j=0;jparent->h,self->number_of_values, *len); + if(ret) return ret; + + grib_buffer_replace(a, buffer, size,1,1); + + grib_context_free(a->context,buffer); + grib_context_free(a->context,X); + grib_context_free(a->context,groupLengths); + grib_context_free(a->context,groupWidths); + grib_context_free(a->context,firstOrderValues); + + return ret; +} diff --git a/src/grib_accessor_class_data_g1second_order_general_extended_packing.cc b/src/grib_accessor_class_data_g1second_order_general_extended_packing.cc index 7161bdecf..b7fe05f52 100644 --- a/src/grib_accessor_class_data_g1second_order_general_extended_packing.cc +++ b/src/grib_accessor_class_data_g1second_order_general_extended_packing.cc @@ -468,9 +468,7 @@ static int unpack(grib_accessor* a, double* dvalues, float* fvalues, size_t* len #if 0 for (j=0;jdirty=1; - - numberOfValues=*len; - - max = val[0]; - min = max; - for(i=1;i< numberOfValues;i++) { - if (val[i] > max ) max = val[i]; - else if (val[i] < min ) min = val[i]; - } - - /* For constant fields set decimal scale factor to 0 (See GRIB-165) */ - if (min==max) { - grib_set_long_internal(handle,self->decimal_scale_factor, 0); - } - - if((ret = grib_get_long_internal(handle,self->decimal_scale_factor, &decimal_scale_factor)) - != GRIB_SUCCESS) - return ret; - decimal = codes_power(decimal_scale_factor,10); - - max*=decimal; - min*=decimal; - - if (grib_get_nearest_smaller_value(handle,self->reference_value,min,&reference_value) - !=GRIB_SUCCESS) { - grib_context_log(a->context,GRIB_LOG_ERROR, - "unable to find nearest_smaller_value of %g for %s",min,self->reference_value); - return GRIB_INTERNAL_ERROR; - } - if((ret = grib_set_double_internal(handle,self->reference_value, reference_value)) != - GRIB_SUCCESS) - return ret; - - if((ret=grib_get_long_internal(handle,self->bits_per_value,&bits_per_value)) != GRIB_SUCCESS) - return ret; - - if((ret=grib_get_long_internal(handle,self->offsetdata,&offsetBeforeData)) != GRIB_SUCCESS) - return ret; - - if((ret=grib_get_long_internal(handle,self->offsetsection,&offsetSection4)) != GRIB_SUCCESS) - return ret; - - if((ret=grib_get_long_internal(handle,self->orderOfSPD,&orderOfSPD)) != GRIB_SUCCESS) - return ret; - - binary_scale_factor = grib_get_binary_scale_fact(max,reference_value,bits_per_value,&ret); - if (ret != GRIB_SUCCESS) return ret; - - if((ret = grib_set_long_internal(handle,self->binary_scale_factor, binary_scale_factor)) != - GRIB_SUCCESS) - return ret; - - divisor = codes_power(-binary_scale_factor,2); - X=(long*)grib_context_malloc_clear(a->context,sizeof(long)*numberOfValues); - for(i=0;i< numberOfValues;i++){ - X[i] = (((val[i]*decimal)-reference_value)*divisor)+0.5; - } - - groupLengths=(long*)grib_context_malloc_clear(a->context,sizeof(long)*numberOfValues); - groupWidths=(long*)grib_context_malloc_clear(a->context,sizeof(long)*numberOfValues); - firstOrderValues=(long*)grib_context_malloc_clear(a->context,sizeof(long)*numberOfValues); - - /* spatial differencing */ - switch (orderOfSPD) { - case 1: - for (i=numberOfValues-1;i>0;i--) { - X[i]-=X[i-1]; - } - break; - case 2: - for (i=numberOfValues-1;i>1;i--) { - X[i]-=2*X[i-1]-X[i-2]; - } - break; - case 3: - for (i=numberOfValues-1;i>2;i--) { - X[i]-=3*(X[i-1]-X[i-2])+X[i-3]; - } - break; - } - if (orderOfSPD) { - Assert(orderOfSPD >=0 && orderOfSPD < numberOfValues); - bias=X[orderOfSPD]; - for (i=orderOfSPD+1;i X[i] ) bias=X[i]; - } - for (i=orderOfSPD;iX[count+i]) minA=X[count+i]; - } - } - groupWidthA=number_of_bits(handle, maxA-minA); - range=(long)codes_power(groupWidthA,2)-1; - - offsetC=count+groupLengthA; - if (offsetC==numberOfValues) { - /* no more values close group A and end loop */ - groupLengths[numberOfGroups]=groupLengthA; - groupWidths[numberOfGroups]=groupWidthA; - /* firstOrderValues[numberOfGroups]=minA; */ - /* to optimise the width of first order variable */ - firstOrderValues[numberOfGroups] = maxA-range > 0 ? maxA-range : 0; - numberOfGroups++; - break; - } - - /* group C created with length=incrementGroupLength (fixed) - or remaining values if close to end - */ - groupLengthC=incrementGroupLength; - if ( groupLengthC + offsetC > numberOfValues - startGroupLength/2) { - groupLengthC=numberOfValues-offsetC; - } - maxC=X[offsetC]; - minC=X[offsetC]; - for (i=1;iX[offsetC+i]) minC=X[offsetC+i]; - } - - maxAC= maxA > maxC ? maxA : maxC; - minAC= minA < minC ? minA : minC; - - /* check if A+C can be represented with the same width as A*/ - if (maxAC-minAC > range) { - /* A could not be expanded adding C. Check if A could be expanded taking - some elements from preceding group. The condition is always that width of - A doesn't increase. - */ - if (numberOfGroups>0 && groupWidths[numberOfGroups-1] > groupWidthA ) { - prevGroupLength=groupLengths[numberOfGroups-1]-incrementGroupLength; - offsetC=count-incrementGroupLength; - /* preceding group length cannot be less than a minimum value */ - while (prevGroupLength >= minGroupLength) { - maxAC=maxA; - minAC=minA; - for (i=0;iX[offsetC+i]) minAC=X[offsetC+i]; - } - - /* no more elements can be transfered, exit loop*/ - if (maxAC-minAC > range) break; - - maxA=maxAC; - minA=minAC; - groupLengths[numberOfGroups-1]-=incrementGroupLength; - groupLengthA+=incrementGroupLength; - count-=incrementGroupLength; - remainingValues+=incrementGroupLength; - - offsetC-=incrementGroupLength; - prevGroupLength-=incrementGroupLength; - } - } - /* close group A*/ - groupLengths[numberOfGroups]=groupLengthA; - groupWidths[numberOfGroups]=groupWidthA; - /* firstOrderValues[numberOfGroups]=minA; */ - /* to optimise the width of first order variable */ - firstOrderValues[numberOfGroups] = maxA-range > 0 ? maxA-range : 0; - count+=groupLengthA; - remainingValues-=groupLengthA; - numberOfGroups++; - /* incrementGroupLengthA is reset to the fixed startGroupLength as it - could have been changed after the A+C or A+B ok condition. - */ - incrementGroupLengthA=startGroupLength; - computeGroupA=1; -#if 0 - if (numberOfGroups==MAX_NUMBER_OF_GROUPS) { - groupLengthA= remainingValues ; - maxA=X[count]; - minA=X[count]; - for (i=1;iX[count+i]) minA=X[count+i]; - } - groupWidthA=number_of_bits(maxA-minA); - range=(long)codes_power(groupWidthA,2)-1; - groupLengths[numberOfGroups]=groupLengthA; - groupWidths[numberOfGroups]=groupWidthA; - firstOrderValues[numberOfGroups] = maxA-range > 0 ? maxA-range : 0; - break; - } -#endif - continue; - } - - /* A+C could be coded with the same width as A*/ - offsetD=offsetC+groupLengthC; - if (offsetD==numberOfValues) { - groupLengths[numberOfGroups]=groupLengthA+groupLengthC; - groupWidths[numberOfGroups]=groupWidthA; - - /* range of AC is the same as A*/ - /* firstOrderValues[numberOfGroups]=minAC; */ - /* to optimise the width of first order variable */ - firstOrderValues[numberOfGroups] = maxAC-range > 0 ? maxAC-range : 0; - numberOfGroups++; - break; - } - - /* group B is created with length startGroupLength, starting at the - same offset as C. - */ - remainingValuesB=numberOfValues-offsetC; - groupLengthB= startGroupLength < remainingValuesB ? startGroupLength : remainingValuesB ; - maxB=maxC; - minB=minC; - for (i=groupLengthC;iX[offsetC+i]) minB=X[offsetC+i]; - } - - /* check if group B can be coded with a smaller width than A */ - if (maxB-minB <= range/2 && range>0 ) { - - /* TODO Add code to try if A can be expanded taking some elements - from the left (preceding) group. - A possible variation is to do this left check (and the previous one) - in the final loop when checking that the width of each group. - */ - - /* close group A and continue loop*/ - groupLengths[numberOfGroups]=groupLengthA; - groupWidths[numberOfGroups]=groupWidthA; - /* firstOrderValues[numberOfGroups]=minA; */ - /* to optimise the width of first order variable */ - firstOrderValues[numberOfGroups] = maxA-range > 0 ? maxA-range : 0; - count+=groupLengthA; - remainingValues-=groupLengthA; - numberOfGroups++; -#if 0 - if (numberOfGroups==MAX_NUMBER_OF_GROUPS) { - groupLengthA= remainingValues ; - maxA=X[count]; - minA=X[count]; - for (i=1;iX[count+i]) minA=X[count+i]; - } - groupWidthA=number_of_bits(maxA-minA); - range=(long)codes_power(groupWidthA,2)-1; - groupLengths[numberOfGroups]=groupLengthA; - groupWidths[numberOfGroups]=groupWidthA; - firstOrderValues[numberOfGroups] = maxA-range > 0 ? maxA-range : 0; - break; - } -#endif - incrementGroupLengthA=startGroupLength; - computeGroupA=1; - continue; - } - - /* check if A+B can be coded with same with as A */ - maxAB= maxA > maxB ? maxA : maxB; - minAB= minA < minB ? minA : minB; - if (maxAB-minAB <= range) { - /* A+B can be merged. The increment used at the beginning of the loop to - build group C is increased to the size of group B - */ - incrementGroupLengthA+=groupLengthB; - maxA=maxAB; - minA=minAB; - computeGroupA=0; - continue; - } - - /* A+B cannot be merged, A+C can be merged*/ - incrementGroupLengthA+=groupLengthC; - computeGroupA=1; - - } /* end of the while*/ - - /* computing bitsPerValue as the number of bits needed to represent - the firstOrderValues. - */ - max=firstOrderValues[0]; - min=firstOrderValues[0]; - for (i=1;ifirstOrderValues[i]) min=firstOrderValues[i]; - } - widthOfFirstOrderValues=number_of_bits(handle, max-min); - firstOrderValuesMax=(long)codes_power(widthOfFirstOrderValues,2)-1; - - if (numberOfGroups>2) { - /* loop through all the groups except the last in reverse order to - check if each group width is still appropriate for the group. - Focus on groups which have been shrank as left groups of an A group taking - some of their elements. - */ - offsets=(long*)grib_context_malloc_clear(a->context,sizeof(long)*numberOfGroups); - offsets[0]=orderOfSPD; - for (i=1;i=0;i--) { - offset=offsets[i]; - groupLength=groupLengths[i]; - - if (groupLength >= startGroupLength) continue; - - max=X[offset]; - min=X[offset]; - for (j=1;jX[offset+j]) min=X[offset+j]; - } - groupWidth=number_of_bits(handle, max-min); - range=(long)codes_power(groupWidth,2)-1; - - /* width of first order values has to be unchanged.*/ - for (j=groupWidth;jrange ? max-range : 0; - if (firstOrderValue <= firstOrderValuesMax ) { - groupWidths[i]=j; - firstOrderValues[i]=firstOrderValue; - break; - } - } - - offsetC=offset; - /* group width of the current group (i) can have been reduced - and it is worth to try to expand the group to get some elements - from the left group if it has bigger width. - */ - if (i>0 && (groupWidths[i-1] > groupWidths[i]) ) { - prevGroupLength=groupLengths[i-1]-incrementGroupLength; - offsetC-=incrementGroupLength; - while (prevGroupLength >= minGroupLength) { - for (j=0;jX[offsetC+j]) min=X[offsetC+j]; - } - - /* width of first order values has to be unchanged*/ - firstOrderValue=max>range ? max-range : 0; - if (max-min > range || firstOrderValue > firstOrderValuesMax ) break; - - groupLengths[i-1]-=incrementGroupLength; - groupLengths[i]+=incrementGroupLength; - firstOrderValues[i]=firstOrderValue; - - offsetC-=incrementGroupLength; - prevGroupLength-=incrementGroupLength; - } - } - - } - grib_context_free(a->context,offsets); - } - - maxWidth=groupWidths[0]; - maxLength=groupLengths[0]; - for (i=1;iparent->h->context, GRIB_LOG_ERROR, "Cannot compute parameters for second order packing."); - return GRIB_ENCODING_ERROR; - } - widthOfWidths=number_of_bits(handle, maxWidth); - widthOfLengths=number_of_bits(handle, maxLength); - - lengthOfSecondOrderValues=0; - for ( i=0; icontext->no_big_group_split) { - grib_split_long_groups(handle, a->context,&numberOfGroups,&lengthOfSecondOrderValues, - groupLengths,&widthOfLengths,groupWidths,widthOfWidths, - firstOrderValues,widthOfFirstOrderValues); - } - - Xp=X+orderOfSPD; - for ( i=0; iwidthOfSPD, widthOfSPD)) - != GRIB_SUCCESS) - return ret; - } - - /* end writing SPD */ - if((ret = grib_set_long_internal(handle,self->widthOfFirstOrderValues, widthOfFirstOrderValues)) - != GRIB_SUCCESS) - return ret; - - dataHeadersLength=25; - if (orderOfSPD) dataHeadersLength+=1+((orderOfSPD+1)*widthOfSPD+7)/8; - widthsLength=(widthOfWidths*numberOfGroups+7)/8; - lengthsLength=(widthOfLengths*numberOfGroups+7)/8; - firstOrderValuesLength=(widthOfFirstOrderValues*numberOfGroups+7)/8; - - NL=widthsLength+dataHeadersLength+1; - N1=NL+lengthsLength; - N2=N1+firstOrderValuesLength; - - NL= NL > 65535 ? 65535 : NL; - N2= N2 > 65535 ? 65535 : N2; - N1= N1 > 65535 ? 65535 : N1; - - grib_set_long(handle,self->NL, NL); - grib_set_long(handle,self->N1, N1); - grib_set_long(handle,self->N2, N2); - - if (numberOfGroups > 65535 ) { - extraValues=numberOfGroups/65536; - codedNumberOfGroups=numberOfGroups%65536; - } else { - extraValues=0; - codedNumberOfGroups=numberOfGroups; - } - - /* if no extraValues key present it is a GRIB2*/ - grib2=0; - if((ret = grib_set_long(handle,self->extraValues, extraValues)) != GRIB_SUCCESS) { - codedNumberOfGroups=numberOfGroups; - grib2=1; - } - - if((ret = grib_set_long_internal(handle,self->codedNumberOfGroups, codedNumberOfGroups)) != GRIB_SUCCESS) - return ret; - - numberOfSecondOrderPackedValues=numberOfValues-orderOfSPD; - if (!grib2 && numberOfSecondOrderPackedValues > 65535 ) - numberOfSecondOrderPackedValues= 65535; - - if((ret = grib_set_long_internal(handle,self->numberOfSecondOrderPackedValues, numberOfSecondOrderPackedValues)) - != GRIB_SUCCESS) - return ret; - - if (grib2) { - if((ret = grib_set_long_internal(handle,self->bits_per_value, bits_per_value)) != GRIB_SUCCESS) - return ret; - } else { - if((ret = grib_set_long_internal(handle,self->bits_per_value, 0)) != GRIB_SUCCESS) - return ret; - } - - if((ret = grib_set_long_internal(handle,self->widthOfWidths, widthOfWidths)) != GRIB_SUCCESS) - return ret; - - if((ret = grib_set_long_internal(handle,self->widthOfLengths, widthOfLengths)) != GRIB_SUCCESS) - return ret; - - lengthOfSecondOrderValues=0; - for ( i=0; ihalf_byte, half_byte)) != GRIB_SUCCESS) - return ret; - - buffer=(unsigned char*)grib_context_malloc_clear(a->context,size); - - pos=0; - if (orderOfSPD) { - long SPD[4]={0,}; - size_t nSPD=orderOfSPD+1; - Assert(orderOfSPD<=3); - for (i=0;iSPD,SPD,nSPD); - if(ret) return ret; - } - - ret=grib_set_long_array_internal(handle,self->groupWidths,groupWidths,(size_t)numberOfGroups); - if(ret) return ret; - - ret=grib_set_long_array_internal(handle,self->groupLengths,groupLengths,(size_t)numberOfGroups); - if(ret) return ret; - - ret=grib_set_long_array_internal(handle,self->firstOrderValues,firstOrderValues,(size_t)numberOfGroups); - if(ret) return ret; - - Xp=X+orderOfSPD; - pos=0; - count=0; - for (i=0;i0) { - for (j=0;jparent->h,self->number_of_values, *len); - if(ret) return ret; - - grib_buffer_replace(a, buffer, size,1,1); - - grib_context_free(a->context,buffer); - grib_context_free(a->context,X); - grib_context_free(a->context,groupLengths); - grib_context_free(a->context,groupWidths); - grib_context_free(a->context,firstOrderValues); - - return ret; -} -#endif - static int get_bits_per_value(grib_handle* h, const char* bits_per_value_str, long* bits_per_value) { int err = 0; @@ -1319,6 +710,9 @@ static int get_bits_per_value(grib_handle* h, const char* bits_per_value_str, lo return err; } +// For the old implementation of pack_double, see +// src/deprecated/grib_accessor_class_data_g1second_order_general_extended_packing.pack_double.cc +// See ECC-441 and ECC-261 static int pack_double(grib_accessor* a, const double* val, size_t* len) { grib_accessor_data_g1second_order_general_extended_packing* self = (grib_accessor_data_g1second_order_general_extended_packing*)a; From 1f392203d5a0a7e6cebf8f17e13b5aa9ca5493c9 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sat, 24 Jun 2023 12:28:28 +0100 Subject: [PATCH 315/378] Dead code removal --- ...ccessor_class_number_of_points_gaussian.cc | 67 ++++++++++++++ src/grib_accessor_class.cc | 91 ++++++++----------- ...grib_accessor_class_data_simple_packing.cc | 72 +++++++-------- src/grib_accessor_class_g2level.cc | 9 +- src/grib_accessor_class_ksec1expver.cc | 14 +-- src/grib_accessor_class_laplacian.cc | 28 ++---- ...ccessor_class_number_of_points_gaussian.cc | 78 ++-------------- src/grib_accessor_class_proj_string.cc | 30 +++--- src/grib_accessor_class_scale.cc | 47 ++++------ src/grib_accessor_class_unpack_bufr_values.cc | 16 ++-- 10 files changed, 204 insertions(+), 248 deletions(-) create mode 100644 src/deprecated/grib_accessor_class_number_of_points_gaussian.cc diff --git a/src/deprecated/grib_accessor_class_number_of_points_gaussian.cc b/src/deprecated/grib_accessor_class_number_of_points_gaussian.cc new file mode 100644 index 000000000..0f586926b --- /dev/null +++ b/src/deprecated/grib_accessor_class_number_of_points_gaussian.cc @@ -0,0 +1,67 @@ +#if 0 +/*Legacy mode*/ +static long num_points_reduced_gauss_old(grib_handle* h, long nj, long pl[], + long max_pl, double lats[], + double angular_precision, + double lat_first, double lat_last, + double lon_first, double lon_last) +{ + long result=0; + int is_global=0; + size_t plsize=0; + long ilon_first=0,ilon_last=0; + double lon_first_row=0,lon_last_row=0; + float d = 0; + is_global=is_gaussian_global(lat_first,lat_last,lon_first,lon_last,max_pl,lats,angular_precision); + d=fabs(lats[0]-lats[1]); + if ( !is_global ) { + long j = 0; + /*sub area*/ + (void)d; +#if EFDEBUG + printf("-------- subarea fabs(lat_first-lats[0])=%g d=%g\n",fabs(lat_first-lats[0]),d); + printf("-------- subarea fabs(lat_last+lats[0])=%g d=%g\n",fabs(lat_last+lats[0]),d); + printf("-------- subarea lon_last=%g order=%ld 360.0-90.0/order=%g\n", + lon_last,order,360.0-90.0/order); + printf("-------- subarea lon_first=%g fabs(lon_last -( 360.0-90.0/order))=%g 90.0/order=%g\n", + lon_first,fabs(lon_last - (360.0-90.0/order)),90.0/order); +#endif + for (j=0;jblock->last) { a->offset = grib_get_next_position_offset(p->block->last); -#if 0 - printf("offset: p->block->last %s %s %ld %ld\n", - p->block->last->cclass->name, - p->block->last->name,(long)p->block->last->offset,(long)p->block->last->length); -#endif + + //printf("offset: p->block->last %s %s %ld %ld\n", + // p->block->last->cclass->name, + // p->block->last->name,(long)p->block->last->offset,(long)p->block->last->length); + } else { if (p->owner) { @@ -354,54 +354,41 @@ int grib_get_block_length(grib_section* s, size_t* l) { *l = s->length; return GRIB_SUCCESS; -#if 0 - - /* TODO: Because grib_pack_long takes a SIGNED value, we may have problems */ - - if(s->aclength) - { - size_t len = 1; - long plen = 0; - - int ret = grib_unpack_long(s->aclength, &plen, &len); - if(ret == GRIB_SUCCESS && plen != 0) - { - *l = plen; - return GRIB_SUCCESS; - } - } - - /* empty block */ - if(s->block->first == NULL) - { - *l = 0; - return GRIB_SUCCESS; - } - /* no accessor for block length */ - if(s->owner) - *l = grib_get_next_position_offset(s->block->last) - s->owner->offset; - else - *l = grib_get_next_position_offset(s->block->last); - - if(s->aclength) - { - size_t len = 1; - long plen = *l; - - int ret = grib_pack_long(s->aclength, &plen, &len); - if(ret != GRIB_SUCCESS) - ; - if(s->h->context->debug) - printf("SECTION updating length %ld %s\n",plen,s->owner->name); - } - - /* - if(s->aclength) - Assert(*l == plen);*/ - - return GRIB_SUCCESS; -#endif +// TODO: Because grib_pack_long takes a SIGNED value, we may have problems +// if(s->aclength) { +// size_t len = 1; +// long plen = 0; + +// int ret = grib_unpack_long(s->aclength, &plen, &len); +// if(ret == GRIB_SUCCESS && plen != 0) +// { +// *l = plen; +// return GRIB_SUCCESS; +// } +// } + +// // empty block +// if(s->block->first == NULL) { +// *l = 0; +// return GRIB_SUCCESS; +// } +// // no accessor for block length +// if(s->owner) *l = grib_get_next_position_offset(s->block->last) - s->owner->offset; +// else *l = grib_get_next_position_offset(s->block->last); + +// if(s->aclength) { +// size_t len = 1; +// long plen = *l; + +// int ret = grib_pack_long(s->aclength, &plen, &len); +// if(ret != GRIB_SUCCESS) +// ; +// if(s->h->context->debug) +// printf("SECTION updating length %ld %s\n",plen,s->owner->name); +// } +// // if(s->aclength) Assert(*l == plen); +// return GRIB_SUCCESS; } grib_accessor* find_paddings(grib_section* s) diff --git a/src/grib_accessor_class_data_simple_packing.cc b/src/grib_accessor_class_data_simple_packing.cc index 7ef410546..6141a6c60 100644 --- a/src/grib_accessor_class_data_simple_packing.cc +++ b/src/grib_accessor_class_data_simple_packing.cc @@ -396,15 +396,13 @@ static int unpack(grib_accessor* a, T* val, size_t* len) return GRIB_DECODING_ERROR; } } -#if 0 - if (offsetBeforeData == offsetAfterData) { - /* Crazy case: Constant field with bitsPerValue > 0 */ - for (i = 0; i < n_vals; i++) - val[i] = reference_value; - *len = n_vals; - return GRIB_SUCCESS; - } -#endif + // if (offsetBeforeData == offsetAfterData) { + // /* Crazy case: Constant field with bitsPerValue > 0 */ + // for (i = 0; i < n_vals; i++) + // val[i] = reference_value; + // *len = n_vals; + // return GRIB_SUCCESS; + // } } grib_context_log(a->context, GRIB_LOG_DEBUG, @@ -533,15 +531,14 @@ static int _unpack_double(grib_accessor* a, double* val, size_t* len, unsigned c return GRIB_DECODING_ERROR; } } -#if 0 - if (offsetBeforeData == offsetAfterData) { - /* Crazy case: Constant field with bitsPerValue > 0 */ - for (i = 0; i < n_vals; i++) - val[i] = reference_value; - *len = n_vals; - return GRIB_SUCCESS; - } -#endif + + // if (offsetBeforeData == offsetAfterData) { + // /* Crazy case: Constant field with bitsPerValue > 0 */ + // for (i = 0; i < n_vals; i++) + // val[i] = reference_value; + // *len = n_vals; + // return GRIB_SUCCESS; + // } } grib_context_log(a->context, GRIB_LOG_DEBUG, @@ -591,27 +588,24 @@ static int unpack_double_subarray(grib_accessor* a, double* val, size_t start, s #undef restrict #endif -#if 0 -static int grib_producing_large_constant_fields(const grib_context* c, grib_handle* h, int edition) -{ - /* GRIB-802: If override key is set, ignore env. var and produce compressed fields */ - if (c->large_constant_fields) { /* This is set by the environment variable */ - /* check the override key */ - int err = 0; - long override_large_constant_fields = 0; - err = grib_get_long_internal(h, "override_large_constant_fields", &override_large_constant_fields); - if (err == GRIB_SUCCESS && override_large_constant_fields) { - return 0; - } - return 1; - } - if (c->gribex_mode_on==1 && edition==1) { - return 1; - } - - return 0; -} -#endif +// static int grib_producing_large_constant_fields(const grib_context* c, grib_handle* h, int edition) +// { +// /* GRIB-802: If override key is set, ignore env. var and produce compressed fields */ +// if (c->large_constant_fields) { /* This is set by the environment variable */ +// /* check the override key */ +// int err = 0; +// long override_large_constant_fields = 0; +// err = grib_get_long_internal(h, "override_large_constant_fields", &override_large_constant_fields); +// if (err == GRIB_SUCCESS && override_large_constant_fields) { +// return 0; +// } +// return 1; +// } +// if (c->gribex_mode_on==1 && edition==1) { +// return 1; +// } +// return 0; +// } static int pack_double(grib_accessor* a, const double* val, size_t* len) { diff --git a/src/grib_accessor_class_g2level.cc b/src/grib_accessor_class_g2level.cc index b6f401cf5..68cb1ff36 100644 --- a/src/grib_accessor_class_g2level.cc +++ b/src/grib_accessor_class_g2level.cc @@ -353,11 +353,10 @@ static int pack_long(grib_accessor* a, const long* val, size_t* len) // In this scenario we do not want to change the scale/value. // However when the user directly sets the level or when we are changing edition, then // we do want to change the scale/value. -#if 0 - if (hand->loader && hand->loader->changing_edition==0) { - change_scale_and_value = 0; - } -#endif + // if (hand->loader && hand->loader->changing_edition==0) { + // change_scale_and_value = 0; + // } + if (change_scale_and_value) { if (type_first > 9) { if ((ret = grib_set_long_internal(hand, self->scale_first, scale_first)) != GRIB_SUCCESS) diff --git a/src/grib_accessor_class_ksec1expver.cc b/src/grib_accessor_class_ksec1expver.cc index 4cb19a4a1..dcee3553c 100644 --- a/src/grib_accessor_class_ksec1expver.cc +++ b/src/grib_accessor_class_ksec1expver.cc @@ -143,13 +143,13 @@ static int unpack_long(grib_accessor* a, long* val, size_t* len) expver[2] = *pTemp++; expver[3] = *pTemp++; expver[4] = 0; -#if 0 - expver[0] = intc[0]; - expver[1] = intc[1]; - expver[2] = intc[2]; - expver[3] = intc[3]; - expver[4] = 0; -#endif + +// expver[0] = intc[0]; +// expver[1] = intc[1]; +// expver[2] = intc[2]; +// expver[3] = intc[3]; +// expver[4] = 0; + /* if there is a difference, have to reverse*/ if (strcmp(refexpver, expver)) { intc[0] = expver[3]; diff --git a/src/grib_accessor_class_laplacian.cc b/src/grib_accessor_class_laplacian.cc index 1dbc4b670..49d82db4a 100644 --- a/src/grib_accessor_class_laplacian.cc +++ b/src/grib_accessor_class_laplacian.cc @@ -8,11 +8,6 @@ * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. */ -/************************************** - * Enrico Fucile - **************************************/ - - #include "grib_api_internal.h" /* This is used by make_class.pl @@ -242,18 +237,15 @@ static int is_missing(grib_accessor* a) if (!av) return GRIB_NOT_FOUND; return grib_is_missing_internal(av); -#if 0 - int ret=0; - long value=0; - - if((ret = grib_get_long_internal(grib_handle_of_accessor(a),self->value, - &value) ) != GRIB_SUCCESS){ - grib_context_log(a->context, GRIB_LOG_ERROR, - "Accessor %s cannot gather value for %s error %d", a->name, - self->value, ret); - return 0; - } - return (value == GRIB_MISSING_LONG); -#endif + // int ret=0; + // long value=0; + // if((ret = grib_get_long_internal(grib_handle_of_accessor(a),self->value, + // &value) ) != GRIB_SUCCESS){ + // grib_context_log(a->context, GRIB_LOG_ERROR, + // "Accessor %s cannot gather value for %s error %d", a->name, + // self->value, ret); + // return 0; + // } + // return (value == GRIB_MISSING_LONG); } diff --git a/src/grib_accessor_class_number_of_points_gaussian.cc b/src/grib_accessor_class_number_of_points_gaussian.cc index d8f3f0c2d..42dba0515 100644 --- a/src/grib_accessor_class_number_of_points_gaussian.cc +++ b/src/grib_accessor_class_number_of_points_gaussian.cc @@ -150,73 +150,10 @@ static void init(grib_accessor* a, const long l, grib_arguments* c) a->flags |= GRIB_ACCESSOR_FLAG_FUNCTION; a->length = 0; } -#if 0 -/*Legacy mode*/ -static long num_points_reduced_gauss_old(grib_handle* h, long nj, long pl[], - long max_pl, double lats[], - double angular_precision, - double lat_first, double lat_last, - double lon_first, double lon_last) -{ - long result=0; - int is_global=0; - size_t plsize=0; - long ilon_first=0,ilon_last=0; - double lon_first_row=0,lon_last_row=0; - float d = 0; - is_global=is_gaussian_global(lat_first,lat_last,lon_first,lon_last,max_pl,lats,angular_precision); - d=fabs(lats[0]-lats[1]); - if ( !is_global ) { - long j = 0; - /*sub area*/ - (void)d; -#if EFDEBUG - printf("-------- subarea fabs(lat_first-lats[0])=%g d=%g\n",fabs(lat_first-lats[0]),d); - printf("-------- subarea fabs(lat_last+lats[0])=%g d=%g\n",fabs(lat_last+lats[0]),d); - printf("-------- subarea lon_last=%g order=%ld 360.0-90.0/order=%g\n", - lon_last,order,360.0-90.0/order); - printf("-------- subarea lon_first=%g fabs(lon_last -( 360.0-90.0/order))=%g 90.0/order=%g\n", - lon_first,fabs(lon_last - (360.0-90.0/order)),90.0/order); -#endif - for (j=0;jcontext, GRIB_LOG_ERROR, - "Accessor %s cannot gather value for %s and/or %s error %d", - a->name, self->multiplier, self->divisor, ret); + "Accessor %s cannot gather value for %s and/or %s", + a->name, self->multiplier, self->divisor); return ret; } @@ -161,7 +161,6 @@ static int unpack_double(grib_accessor* a, double* val, size_t* len) *val = GRIB_MISSING_DOUBLE; else *val = ((double)(value * multiplier)) / divisor; - /*printf("unpack_double: divisor=%ld multiplier=%ld long_value=%ld scaled_value=%.30f\n",(double)divisor,(double)multiplier,value,*val);*/ if (ret == GRIB_SUCCESS) *len = 1; @@ -187,25 +186,19 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) double x; ret = grib_get_long_internal(grib_handle_of_accessor(a), self->divisor, &divisor); - if (ret != GRIB_SUCCESS) { - grib_context_log(a->context, GRIB_LOG_ERROR, "Accessor %s cannot gather value for %s error %d \n", a->name, self->divisor, ret); - return ret; - } + if (ret != GRIB_SUCCESS) return ret; + ret = grib_get_long_internal(grib_handle_of_accessor(a), self->multiplier, &multiplier); - if (ret != GRIB_SUCCESS) { - grib_context_log(a->context, GRIB_LOG_ERROR, "Accessor %s cannot gather value for %s error %d \n", a->name, self->divisor, ret); - return ret; - } + if (ret != GRIB_SUCCESS) return ret; + if (self->truncating) { ret = grib_get_long_internal(grib_handle_of_accessor(a), self->truncating, &truncating); - if (ret != GRIB_SUCCESS) { - grib_context_log(a->context, GRIB_LOG_ERROR, "Accessor %s cannot gather value for %s error %d \n", a->name, self->truncating, ret); - return ret; - } + if (ret != GRIB_SUCCESS) return ret; } if (multiplier == 0) { - grib_context_log(a->context, GRIB_LOG_ERROR, "Accessor %s cannot divide by a zero multiplier %s error %d \n", a->name, self->multiplier, ret); + grib_context_log(a->context, GRIB_LOG_ERROR, "Accessor %s: cannot divide by a zero multiplier %s", + a->name, self->multiplier); return GRIB_ENCODING_ERROR; } @@ -239,17 +232,13 @@ static int is_missing(grib_accessor* a) if (!av) return GRIB_NOT_FOUND; return grib_is_missing_internal(av); -#if 0 - int ret=0; - long value=0; - - if((ret = grib_get_long_internal(grib_handle_of_accessor(a),self->value, &value))!= GRIB_SUCCESS){ - grib_context_log(a->context, GRIB_LOG_ERROR, - "Accessor %s cannot gather value for %s error %d \n", a->name, - self->value, ret); - return 0; - } - - return (value == GRIB_MISSING_LONG); -#endif + // int ret=0; + // long value=0; + // if((ret = grib_get_long_internal(grib_handle_of_accessor(a),self->value, &value))!= GRIB_SUCCESS){ + // grib_context_log(a->context, GRIB_LOG_ERROR, + // "Accessor %s cannot gather value for %s error %d \n", a->name, + // self->value, ret); + // return 0; + // } + // return (value == GRIB_MISSING_LONG); } diff --git a/src/grib_accessor_class_unpack_bufr_values.cc b/src/grib_accessor_class_unpack_bufr_values.cc index d08df9011..15e949ab8 100644 --- a/src/grib_accessor_class_unpack_bufr_values.cc +++ b/src/grib_accessor_class_unpack_bufr_values.cc @@ -179,15 +179,13 @@ static int get_native_type(grib_accessor* a) return GRIB_TYPE_LONG; } -#if 0 -static const char* mode_to_str(int p) -{ - if (p==CODES_BUFR_UNPACK_STRUCTURE) return "CODES_BUFR_UNPACK_STRUCTURE"; - if (p==CODES_BUFR_UNPACK_FLAT) return "CODES_BUFR_UNPACK_FLAT"; - if (p==CODES_BUFR_NEW_DATA) return "CODES_BUFR_NEW_DATA"; - return "unknown proc flag"; -} -#endif +// static const char* mode_to_str(int p) +// { +// if (p==CODES_BUFR_UNPACK_STRUCTURE) return "CODES_BUFR_UNPACK_STRUCTURE"; +// if (p==CODES_BUFR_UNPACK_FLAT) return "CODES_BUFR_UNPACK_FLAT"; +// if (p==CODES_BUFR_NEW_DATA) return "CODES_BUFR_NEW_DATA"; +// return "unknown proc flag"; +// } static int pack_long(grib_accessor* a, const long* val, size_t* len) { From 413d7da7942599be94fc6b2a58c7dc2f93a4e280 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sat, 24 Jun 2023 12:49:25 +0100 Subject: [PATCH 316/378] Dead code removal --- ...accessor_class_data_apply_gdsnotpresent.cc | 12 +- ...g1second_order_general_extended_packing.cc | 90 +++--- ...ib_accessor_class_data_g22order_packing.cc | 140 +++++---- src/grib_buffer.cc | 159 +++++----- src/grib_oarray.cc | 32 +- src/grib_util.cc | 279 +++++++++--------- 6 files changed, 345 insertions(+), 367 deletions(-) diff --git a/src/grib_accessor_class_data_apply_gdsnotpresent.cc b/src/grib_accessor_class_data_apply_gdsnotpresent.cc index 4de0cb09c..113927332 100644 --- a/src/grib_accessor_class_data_apply_gdsnotpresent.cc +++ b/src/grib_accessor_class_data_apply_gdsnotpresent.cc @@ -271,13 +271,11 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) return ret; } -#if 0 - if(!grib_find_accessor(grib_handle_of_accessor(a),self->bitmap)){ - grib_context_log(a->context, GRIB_LOG_ERROR, - "Accessor %s cannot access bitmap \n", a->name, self->bitmap_present, ret); - return ret; - } -#endif +// if(!grib_find_accessor(grib_handle_of_accessor(a),self->bitmap)){ +// grib_context_log(a->context, GRIB_LOG_ERROR, +// "Accessor %s cannot access bitmap \n", a->name, self->bitmap_present, ret); +// return ret; +// } ret = grib_set_double_array_internal(grib_handle_of_accessor(a), self->coded_values, val, *len); if (ret) { diff --git a/src/grib_accessor_class_data_g1second_order_general_extended_packing.cc b/src/grib_accessor_class_data_g1second_order_general_extended_packing.cc index b7fe05f52..85e1ed461 100644 --- a/src/grib_accessor_class_data_g1second_order_general_extended_packing.cc +++ b/src/grib_accessor_class_data_g1second_order_general_extended_packing.cc @@ -465,15 +465,15 @@ static int unpack(grib_accessor* a, double* dvalues, float* fvalues, size_t* len count++; n++; } -#if 0 - for (j=0;jX[count+i]) minA=X[count+i]; - } - groupWidthA=number_of_bits(maxA-minA); - range=(long)codes_power(groupWidthA,2)-1; - groupLengths[numberOfGroups]=groupLengthA; - groupWidths[numberOfGroups]=groupWidthA; - firstOrderValues[numberOfGroups] = maxA-range > 0 ? maxA-range : 0; - break; - } -#endif + + // if (numberOfGroups==MAX_NUMBER_OF_GROUPS) { + // groupLengthA= remainingValues ; + // maxA=X[count]; + // minA=X[count]; + // for (i=1;iX[count+i]) minA=X[count+i]; + // } + // groupWidthA=number_of_bits(maxA-minA); + // range=(long)codes_power(groupWidthA,2)-1; + // groupLengths[numberOfGroups]=groupLengthA; + // groupWidths[numberOfGroups]=groupWidthA; + // firstOrderValues[numberOfGroups] = maxA-range > 0 ? maxA-range : 0; + // break; + // } + continue; } @@ -1057,23 +1057,23 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) count += groupLengthA; remainingValues -= groupLengthA; numberOfGroups++; -#if 0 - if (numberOfGroups==MAX_NUMBER_OF_GROUPS) { - groupLengthA= remainingValues ; - maxA=X[count]; - minA=X[count]; - for (i=1;iX[count+i]) minA=X[count+i]; - } - groupWidthA=number_of_bits(maxA-minA); - range=(long)codes_power(groupWidthA,2)-1; - groupLengths[numberOfGroups]=groupLengthA; - groupWidths[numberOfGroups]=groupWidthA; - firstOrderValues[numberOfGroups] = maxA-range > 0 ? maxA-range : 0; - break; - } -#endif + + // if (numberOfGroups==MAX_NUMBER_OF_GROUPS) { + // groupLengthA= remainingValues ; + // maxA=X[count]; + // minA=X[count]; + // for (i=1;iX[count+i]) minA=X[count+i]; + // } + // groupWidthA=number_of_bits(maxA-minA); + // range=(long)codes_power(groupWidthA,2)-1; + // groupLengths[numberOfGroups]=groupLengthA; + // groupWidths[numberOfGroups]=groupWidthA; + // firstOrderValues[numberOfGroups] = maxA-range > 0 ? maxA-range : 0; + // break; + // } + incrementGroupLengthA = startGroupLength; computeGroupA = 1; continue; @@ -1331,8 +1331,8 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) if (ret) return ret; - Xp = X + orderOfSPD; - pos = 0; + Xp = X + orderOfSPD; + pos = 0; #if EFDEBUG count = 0; #endif diff --git a/src/grib_accessor_class_data_g22order_packing.cc b/src/grib_accessor_class_data_g22order_packing.cc index b1a7afa99..8751480db 100644 --- a/src/grib_accessor_class_data_g22order_packing.cc +++ b/src/grib_accessor_class_data_g22order_packing.cc @@ -384,77 +384,75 @@ static int min_max_array(double* data, unsigned int n, double* min, double* max) return GRIB_SUCCESS; } -#if 0 -static void uint_char(unsigned int i, unsigned char* p) -{ - p[0] = (i >> 24) & 255; - p[1] = (i >> 16) & 255; - p[2] = (i >> 8) & 255; - p[3] = (i)&255; -} - -static unsigned char* mk_bms(grib_accessor* a, double* data, unsigned int* ndata) -{ - int bms_size; - unsigned char *bms, *cbits; - unsigned int nn, i, start, c, imask, i0; - - nn = *ndata; - - /* find first grid point with undefined data */ - for (i = 0; i < nn; i++) { - if (UNDEFINED_VAL(data[i])) break; - } - - if (i == nn) { /* all defined values, no need for bms */ - bms = reinterpret_cast(grib_context_malloc(a->context, 6)); - if (bms == NULL) - grib_context_log(a->context, GRIB_LOG_ERROR, "mk_bms: memory allocation problem", ""); - uint_char(6, bms); // length of section 6 - bms[4] = 6; // section 6 - bms[5] = 255; // no bitmap - return bms; - } - - bms_size = 6 + (nn + 7) / 8; - bms = reinterpret_cast(grib_context_malloc(a->context, bms_size)); - if (bms == NULL) - grib_context_log(a->context, GRIB_LOG_ERROR, "mk_bms: memory allocation problem", ""); - - uint_char(bms_size, bms); // length of section 6 - bms[4] = 6; // section 6 - bms[5] = 0; // has bitmap - - /* bitmap is accessed by bytes, make i0=i/8 bytes of bitmap */ - cbits = bms + 6; - i0 = i >> 3; // Number of bytes, required to store the bitmap - for (i = 0; i < i0; i++) { - // Set all bits in the bitmap to 1 - *cbits++ = 255; - } - - /* start processing data, skip i0*8 */ - - c = 0; // counter: c += imask - imask = 128; // 100.0000 - i0 = i0 << 3; // Number of bits in the bitmap - start = i0; - for (i = i0; i < nn; i++) { - if (DEFINED_VAL(data[i])) { - c += imask; - data[start++] = data[i]; - } - if ((imask >>= 1) == 0) { - *cbits++ = c; - c = 0; - imask = 128; - } - } - if (imask != 128) *cbits = c; - *ndata = start; - return bms; -} -#endif +// static void uint_char(unsigned int i, unsigned char* p) +// { +// p[0] = (i >> 24) & 255; +// p[1] = (i >> 16) & 255; +// p[2] = (i >> 8) & 255; +// p[3] = (i)&255; +// } + +// static unsigned char* mk_bms(grib_accessor* a, double* data, unsigned int* ndata) +// { +// int bms_size; +// unsigned char *bms, *cbits; +// unsigned int nn, i, start, c, imask, i0; + +// nn = *ndata; + +// /* find first grid point with undefined data */ +// for (i = 0; i < nn; i++) { +// if (UNDEFINED_VAL(data[i])) break; +// } + +// if (i == nn) { /* all defined values, no need for bms */ +// bms = reinterpret_cast(grib_context_malloc(a->context, 6)); +// if (bms == NULL) +// grib_context_log(a->context, GRIB_LOG_ERROR, "mk_bms: memory allocation problem", ""); +// uint_char(6, bms); // length of section 6 +// bms[4] = 6; // section 6 +// bms[5] = 255; // no bitmap +// return bms; +// } + +// bms_size = 6 + (nn + 7) / 8; +// bms = reinterpret_cast(grib_context_malloc(a->context, bms_size)); +// if (bms == NULL) +// grib_context_log(a->context, GRIB_LOG_ERROR, "mk_bms: memory allocation problem", ""); + +// uint_char(bms_size, bms); // length of section 6 +// bms[4] = 6; // section 6 +// bms[5] = 0; // has bitmap + +// /* bitmap is accessed by bytes, make i0=i/8 bytes of bitmap */ +// cbits = bms + 6; +// i0 = i >> 3; // Number of bytes, required to store the bitmap +// for (i = 0; i < i0; i++) { +// // Set all bits in the bitmap to 1 +// *cbits++ = 255; +// } + +// /* start processing data, skip i0*8 */ + +// c = 0; // counter: c += imask +// imask = 128; // 100.0000 +// i0 = i0 << 3; // Number of bits in the bitmap +// start = i0; +// for (i = i0; i < nn; i++) { +// if (DEFINED_VAL(data[i])) { +// c += imask; +// data[start++] = data[i]; +// } +// if ((imask >>= 1) == 0) { +// *cbits++ = c; +// c = 0; +// imask = 128; +// } +// } +// if (imask != 128) *cbits = c; +// *ndata = start; +// return bms; +// } static int post_process(grib_context* c, long* vals, long len, long order, long bias, const unsigned long extras[2]) { diff --git a/src/grib_buffer.cc b/src/grib_buffer.cc index 6f3bb1911..6de5dabc5 100644 --- a/src/grib_buffer.cc +++ b/src/grib_buffer.cc @@ -9,8 +9,7 @@ */ /*************************************************************************** - * Jean Baptiste Filippi - 01.11.2005 * - * * + * Jean Baptiste Filippi - 01.11.2005 * ***************************************************************************/ #include "grib_api_internal.h" @@ -31,7 +30,7 @@ grib_buffer* grib_create_growable_buffer(const grib_context* c) grib_buffer* b = (grib_buffer*)grib_context_malloc_clear(c, sizeof(grib_buffer)); if (b == NULL) { - grib_context_log(c, GRIB_LOG_ERROR, "grib_new_buffer: cannot allocate buffer"); + grib_context_log(c, GRIB_LOG_ERROR, "%s: cannot allocate buffer", __func__); return NULL; } @@ -42,7 +41,7 @@ grib_buffer* grib_create_growable_buffer(const grib_context* c) b->growable = 1; if (!b->data) { - grib_context_log(c, GRIB_LOG_ERROR, "grib_new_buffer: cannot allocate buffer"); + grib_context_log(c, GRIB_LOG_ERROR, "%s: cannot allocate buffer", __func__); grib_context_free(c, b); return NULL; } @@ -55,7 +54,7 @@ grib_buffer* grib_new_buffer(const grib_context* c, const unsigned char* data, s grib_buffer* b = (grib_buffer*)grib_context_malloc_clear(c, sizeof(grib_buffer)); if (b == NULL) { - grib_context_log(c, GRIB_LOG_ERROR, "grib_new_buffer: cannot allocate buffer"); + grib_context_log(c, GRIB_LOG_ERROR, "%s: cannot allocate buffer", __func__); return NULL; } @@ -138,87 +137,75 @@ static void update_offsets_after(grib_accessor* a, long len) } } -#if 0 -/* new GCC compiler v4.5.0 complains function is defined but not used*/ -void grib_recompute_sections_lengths(grib_section* s) -{ - if(s) - { - long plen = 0; - size_t len = 1; - - grib_accessor* a = s->block->first; - - while(a) - { - /* grib_recompute_sections_lengths(grib_get_sub_section(a)); */ - grib_recompute_sections_lengths(a->sub_section); - a = a->next; - } - - if(s->aclength) - { - int ret; - if(s->owner) - plen = grib_get_next_position_offset(s->block->last) - s->owner->offset; - else - plen = grib_get_next_position_offset(s->block->last); - - if((ret = grib_pack_long(s->aclength, &plen, &len)) != GRIB_SUCCESS) - ; - -#if 0 - if(s->h->context->debug) - printf("SECTION updating length %ld .. %s\n",plen,s->owner->name); -#endif - - } - } -} -#endif - - -#if 0 -/* new GCC compiler v4.5.0 complains function is defined but not used*/ -static void update_sections_lengths(grib_section* s) -{ - long plen = 0; - size_t len = 1; - - if(!s) return; - - - if(s->aclength) - { - int ret; - if(s->owner) - plen = grib_get_next_position_offset(s->block->last) - s->owner->offset; - else - plen = grib_get_next_position_offset(s->block->last); - - /* if(s->owner) */ - /* s->owner->length = plen; */ - - /* if(s->aclength) */ - if((ret = grib_pack_long(s->aclength, &plen, &len)) != GRIB_SUCCESS) - ; - - if(s->h->context->debug) - { - printf("SECTION updating length %ld .. %s\n",plen,s->owner->name); - printf("NEXT_POS = %ld, owner offset= %ld %s %s\n", - grib_get_next_position_offset(s->block->last), - s->owner ? s->owner->offset : 0L, s->owner->name, - s->block->last->name); - } - } - - if(s->owner) - update_sections_lengths(s->owner->parent); - -} -#endif - +// /* new GCC compiler v4.5.0 complains function is defined but not used*/ +// void grib_recompute_sections_lengths(grib_section* s) +// { +// if(s) +// { +// long plen = 0; +// size_t len = 1; + +// grib_accessor* a = s->block->first; + +// while(a) +// { +// /* grib_recompute_sections_lengths(grib_get_sub_section(a)); */ +// grib_recompute_sections_lengths(a->sub_section); +// a = a->next; +// } + +// if(s->aclength) +// { +// int ret; +// if(s->owner) +// plen = grib_get_next_position_offset(s->block->last) - s->owner->offset; +// else +// plen = grib_get_next_position_offset(s->block->last); + +// if((ret = grib_pack_long(s->aclength, &plen, &len)) != GRIB_SUCCESS) +// ; + +// +// if(s->h->context->debug) +// printf("SECTION updating length %ld .. %s\n",plen,s->owner->name); +// } +// } +// } + +// /* new GCC compiler v4.5.0 complains function is defined but not used*/ +// static void update_sections_lengths(grib_section* s) +// { +// long plen = 0; +// size_t len = 1; + +// if(!s) return; +// if(s->aclength) +// { +// int ret; +// if(s->owner) +// plen = grib_get_next_position_offset(s->block->last) - s->owner->offset; +// else +// plen = grib_get_next_position_offset(s->block->last); + +// /* if(s->owner) */ +// /* s->owner->length = plen; */ + +// /* if(s->aclength) */ +// if((ret = grib_pack_long(s->aclength, &plen, &len)) != GRIB_SUCCESS) +// ; + +// if(s->h->context->debug) +// { +// printf("SECTION updating length %ld .. %s\n",plen,s->owner->name); +// printf("NEXT_POS = %ld, owner offset= %ld %s %s\n", +// grib_get_next_position_offset(s->block->last), +// s->owner ? s->owner->offset : 0L, s->owner->name, +// s->block->last->name); +// } +// } +// if(s->owner) +// update_sections_lengths(s->owner->parent); +// } void grib_buffer_replace(grib_accessor* a, const unsigned char* data, size_t newsize, int update_lengths, int update_paddings) diff --git a/src/grib_oarray.cc b/src/grib_oarray.cc index 5e51751c5..7afd33ea6 100644 --- a/src/grib_oarray.cc +++ b/src/grib_oarray.cc @@ -82,23 +82,21 @@ void grib_oarray_delete(grib_context* c, grib_oarray* v) grib_context_free(c, v); } -#if 0 -void grib_oarray_delete_content(grib_context* c, grib_oarray* v) -{ - int i; - if (!v || !v->v) - return; - if (!c) - c = grib_context_get_default(); - for (i = 0; i < v->n; i++) { - if (v->v[i]) { - grib_context_free(c, v->v[i]); - v->v[i] = 0; - } - } - v->n = 0; -} -#endif +// void grib_oarray_delete_content(grib_context* c, grib_oarray* v) +// { +// int i; +// if (!v || !v->v) +// return; +// if (!c) +// c = grib_context_get_default(); +// for (i = 0; i < v->n; i++) { +// if (v->v[i]) { +// grib_context_free(c, v->v[i]); +// v->v[i] = 0; +// } +// } +// v->n = 0; +// } void** grib_oarray_get_array(grib_context* c, grib_oarray* v) { diff --git a/src/grib_util.cc b/src/grib_util.cc index 56581e90f..9e69d269d 100644 --- a/src/grib_util.cc +++ b/src/grib_util.cc @@ -434,23 +434,22 @@ static void print_values(grib_context* c, fprintf(stderr, "ECCODES DEBUG grib_util: packing_spec->packing_type = %s\n", get_packing_spec_packing_type_name(packing_spec->packing_type)); -#if 0 - if (spec->bitmapPresent) { - int missing = 0; - size_t j = 0; - double min = 1e100; - for(j = 0; j < data_values_count ; j++) - { - double d = data_values[j] - spec->missingValue; - if(d < 0) d = -d; - if(d < min) { - min = d; - } - if(data_values[j] == spec->missingValue) - missing++; - } - } -#endif +// if (spec->bitmapPresent) { +// int missing = 0; +// size_t j = 0; +// double min = 1e100; +// for(j = 0; j < data_values_count ; j++) +// { +// double d = data_values[j] - spec->missingValue; +// if(d < 0) d = -d; +// if(d < min) { +// min = d; +// } +// if(data_values[j] == spec->missingValue) +// missing++; +// } +// } + } /* @@ -459,33 +458,32 @@ static int DBL_EQUAL(double d1, double d2, double tolerance) return fabs(d1-d2) < tolerance; } */ -#if 0 -/* Returns a boolean: 1 if angle can be encoded, 0 otherwise */ -static int grib1_angle_can_be_encoded(const double angle) -{ - const double angle_milliDegrees = angle * 1000; - double rounded = (int)(angle_milliDegrees+0.5)/1000.0; - if (angle<0) { - rounded = (int)(angle_milliDegrees-0.5)/1000.0; - } - if (angle == rounded) return 1; - return 0; /* sub millidegree. Cannot be encoded in grib1 */ -} -/* Returns a boolean: 1 if angle can be encoded, 0 otherwise */ -static int angle_can_be_encoded(const double angle, const double angular_precision) -{ - const double angle_expanded = angle * angular_precision; - Assert(angular_precision>0); - double rounded = (long)(angle_expanded+0.5)/angular_precision; - if (angle<0) { - rounded = (long)(angle_expanded-0.5)/angular_precision; - } - if (angle == rounded) return 1; - /*printf(" ......... angle cannot be encoded: %.10e\n", angle);*/ - return 0; /* Cannot be encoded */ -} -#endif +// /* Returns a boolean: 1 if angle can be encoded, 0 otherwise */ +// static int grib1_angle_can_be_encoded(const double angle) +// { +// const double angle_milliDegrees = angle * 1000; +// double rounded = (int)(angle_milliDegrees+0.5)/1000.0; +// if (angle<0) { +// rounded = (int)(angle_milliDegrees-0.5)/1000.0; +// } +// if (angle == rounded) return 1; +// return 0; /* sub millidegree. Cannot be encoded in grib1 */ +// } + +// /* Returns a boolean: 1 if angle can be encoded, 0 otherwise */ +// static int angle_can_be_encoded(const double angle, const double angular_precision) +// { +// const double angle_expanded = angle * angular_precision; +// Assert(angular_precision>0); +// double rounded = (long)(angle_expanded+0.5)/angular_precision; +// if (angle<0) { +// rounded = (long)(angle_expanded-0.5)/angular_precision; +// } +// if (angle == rounded) return 1; +// /*printf(" ......... angle cannot be encoded: %.10e\n", angle);*/ +// return 0; /* Cannot be encoded */ +// } /* Returns a boolean: 1 if angle can be encoded, 0 otherwise */ static int angle_can_be_encoded(grib_handle* h, const double angle) @@ -1612,17 +1610,17 @@ grib_handle* grib_util_set_spec2(grib_handle* h, } /* Disable check: need to re-examine GRIB-864 */ -#if 0 - if ( (*err = check_handle_against_spec(h_out, editionNumber, spec, global_grid)) != GRIB_SUCCESS) { - grib_context* c=grib_context_get_default(); - fprintf(stderr,"GRIB_UTIL_SET_SPEC: Geometry check failed: %s\n", grib_get_error_message(*err)); - if (editionNumber == 1) { - fprintf(stderr,"Note: in GRIB edition 1 latitude and longitude values cannot be represented with sub-millidegree precision.\n"); - } - if (c->write_on_fail) grib_write_message(h_out,"error.grib","w"); - goto cleanup; - } -#endif + +// if ( (*err = check_handle_against_spec(h_out, editionNumber, spec, global_grid)) != GRIB_SUCCESS) { +// grib_context* c=grib_context_get_default(); +// fprintf(stderr,"GRIB_UTIL_SET_SPEC: Geometry check failed: %s\n", grib_get_error_message(*err)); +// if (editionNumber == 1) { +// fprintf(stderr,"Note: in GRIB edition 1 latitude and longitude values cannot be represented with sub-millidegree precision.\n"); +// } +// if (c->write_on_fail) grib_write_message(h_out,"error.grib","w"); +// goto cleanup; +// } + if (h->context->debug == -1) fprintf(stderr, "ECCODES DEBUG grib_util: grib_util_set_spec end\n"); return h_out; @@ -1632,94 +1630,93 @@ grib_handle* grib_util_set_spec2(grib_handle* h, grib_handle_delete(h_out); return NULL; } -#if 0 -int grib_moments(grib_handle* h, double east, double north, double west, double south, int order, double* moments, long* count) -{ - grib_iterator* iter = NULL; - int ret = 0, i, j, l; - size_t n = 0, numberOfPoints = 0; - double *lat, *lon, *values; - double vlat, vlon, val; - double dx, dy, ddx, ddy; - double mass, centroidX, centroidY; - double missingValue; - grib_context* c = grib_context_get_default(); - - ret = grib_get_size(h, "values", &n); - if (ret) - return ret; - - lat = (double*)grib_context_malloc_clear(c, sizeof(double) * n); - lon = (double*)grib_context_malloc_clear(c, sizeof(double) * n); - values = (double*)grib_context_malloc_clear(c, sizeof(double) * n); - - iter = grib_iterator_new(h, 0, &ret); - numberOfPoints = 0; - while (grib_iterator_next(iter, &vlat, &vlon, &val)) { - if (vlon >= east && vlon <= west && vlat >= south && vlat <= north) { - lat[numberOfPoints] = vlat; - lon[numberOfPoints] = vlon; - values[numberOfPoints] = val; - numberOfPoints++; - } - } - grib_iterator_delete(iter); - - ret = grib_get_double(h, "missingValue", &missingValue); - - centroidX = 0; - centroidY = 0; - mass = 0; - *count = 0; - for (i = 0; i < numberOfPoints; i++) { - if (values[i] != missingValue) { - centroidX += lon[i] * values[i]; - centroidY += lat[i] * values[i]; - mass += values[i]; - (*count)++; - } - } - centroidX /= mass; - centroidY /= mass; - mass /= *count; - - for (j = 0; j < order * order; j++) - moments[j] = 0; - - for (i = 0; i < numberOfPoints; i++) { - if (values[i] != missingValue) { - dx = (lon[i] - centroidX); - dy = (lat[i] - centroidY); - ddx = 1; - for (j = 0; j < order; j++) { - ddy = 1; - for (l = 0; l < order; l++) { - moments[j * order + l] += ddx * ddy * values[i]; - ddy *= dy; - } - ddx *= dx; - } - } - } - for (j = 0; j < order; j++) { - for (l = 0; l < order; l++) { - if (j + l > 1) { - moments[j * order + l] = pow(fabs(moments[j * order + l]), 1.0 / (j + l)) / *count; - } - else { - moments[j * order + l] /= *count; - } - } - } - grib_context_free(c, lat); - grib_context_free(c, lon); - grib_context_free(c, values); - (void)mass; - - return ret; -} -#endif +// int grib_moments(grib_handle* h, double east, double north, double west, double south, int order, double* moments, long* count) +// { +// grib_iterator* iter = NULL; +// int ret = 0, i, j, l; +// size_t n = 0, numberOfPoints = 0; +// double *lat, *lon, *values; +// double vlat, vlon, val; +// double dx, dy, ddx, ddy; +// double mass, centroidX, centroidY; +// double missingValue; +// grib_context* c = grib_context_get_default(); + +// ret = grib_get_size(h, "values", &n); +// if (ret) +// return ret; + +// lat = (double*)grib_context_malloc_clear(c, sizeof(double) * n); +// lon = (double*)grib_context_malloc_clear(c, sizeof(double) * n); +// values = (double*)grib_context_malloc_clear(c, sizeof(double) * n); + +// iter = grib_iterator_new(h, 0, &ret); +// numberOfPoints = 0; +// while (grib_iterator_next(iter, &vlat, &vlon, &val)) { +// if (vlon >= east && vlon <= west && vlat >= south && vlat <= north) { +// lat[numberOfPoints] = vlat; +// lon[numberOfPoints] = vlon; +// values[numberOfPoints] = val; +// numberOfPoints++; +// } +// } +// grib_iterator_delete(iter); + +// ret = grib_get_double(h, "missingValue", &missingValue); + +// centroidX = 0; +// centroidY = 0; +// mass = 0; +// *count = 0; +// for (i = 0; i < numberOfPoints; i++) { +// if (values[i] != missingValue) { +// centroidX += lon[i] * values[i]; +// centroidY += lat[i] * values[i]; +// mass += values[i]; +// (*count)++; +// } +// } +// centroidX /= mass; +// centroidY /= mass; +// mass /= *count; + +// for (j = 0; j < order * order; j++) +// moments[j] = 0; + +// for (i = 0; i < numberOfPoints; i++) { +// if (values[i] != missingValue) { +// dx = (lon[i] - centroidX); +// dy = (lat[i] - centroidY); +// ddx = 1; +// for (j = 0; j < order; j++) { +// ddy = 1; +// for (l = 0; l < order; l++) { +// moments[j * order + l] += ddx * ddy * values[i]; +// ddy *= dy; +// } +// ddx *= dx; +// } +// } +// } +// for (j = 0; j < order; j++) { +// for (l = 0; l < order; l++) { +// if (j + l > 1) { +// moments[j * order + l] = pow(fabs(moments[j * order + l]), 1.0 / (j + l)) / *count; +// } +// else { +// moments[j * order + l] /= *count; +// } +// } +// } + +// grib_context_free(c, lat); +// grib_context_free(c, lon); +// grib_context_free(c, values); +// (void)mass; + +// return ret; +// } // Helper function for 'parse_keyval_string' static void set_value(grib_values* value, char* str, int equal) From e049d14f381ea6bfa84eea313a6eceef67b82865 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sat, 24 Jun 2023 12:58:32 +0100 Subject: [PATCH 317/378] Dead code removal --- src/grib_db.cc | 213 ++++++++++++-------------- src/grib_dependency.cc | 25 ++- src/grib_expression_class_binop.cc | 54 ++++--- src/grib_iterator_class_space_view.cc | 80 +++++----- src/grib_templates.cc | 47 +++--- 5 files changed, 197 insertions(+), 222 deletions(-) diff --git a/src/grib_db.cc b/src/grib_db.cc index c55be2f3c..84c941076 100644 --- a/src/grib_db.cc +++ b/src/grib_db.cc @@ -250,64 +250,55 @@ static int grib_db_column_copy_from_handle(grib_handle* h, grib_db* db, int i) return err; } -/* --------------- grib_db functions ------------------*/ -#if 0 -grib_db* grib_db_new_from_files(grib_context* c, char* filenames[], - int nfiles, char** keys, int nkeys, int* err) -{ - int i = 0; - int ret = GRIB_SUCCESS; - - grib_db* db = 0; - - if (!c) - c = grib_context_get_default(); - - if (((!keys || nkeys == 0)) || !filenames) { - *err = GRIB_INVALID_ARGUMENT; - return NULL; - } - - db = grib_db_new_from_file(c, filenames[0], keys, nkeys, err); - if (!db || *err != GRIB_SUCCESS) - return db; - - *err = GRIB_SUCCESS; - for (i = 1; i < nfiles; i++) { - ret = grib_db_load(db, filenames[i]); - if (ret != GRIB_SUCCESS) - *err = ret; - } - - return db; -} - -grib_db* grib_db_new_from_file(grib_context* c, char* filename, - char** keys, int nkeys, int* err) -{ - int i = 0; - int ret = GRIB_SUCCESS; - - grib_db* db = 0; - - if (!c) - c = grib_context_get_default(); - - if (((!keys || nkeys == 0)) || !filename) { - *err = GRIB_INVALID_ARGUMENT; - return NULL; - } +// grib_db* grib_db_new_from_files(grib_context* c, char* filenames[], +// int nfiles, char** keys, int nkeys, int* err) +// { +// int i = 0; +// int ret = GRIB_SUCCESS; +// grib_db* db = 0; +// if (!c) c = grib_context_get_default(); + +// if (((!keys || nkeys == 0)) || !filenames) { +// *err = GRIB_INVALID_ARGUMENT; +// return NULL; +// } + +// db = grib_db_new_from_file(c, filenames[0], keys, nkeys, err); +// if (!db || *err != GRIB_SUCCESS) +// return db; + +// *err = GRIB_SUCCESS; +// for (i = 1; i < nfiles; i++) { +// ret = grib_db_load(db, filenames[i]); +// if (ret != GRIB_SUCCESS) +// *err = ret; +// } +// return db; +// } + +// grib_db* grib_db_new_from_file(grib_context* c, char* filename, +// char** keys, int nkeys, int* err) +// { +// int i = 0; +// int ret = GRIB_SUCCESS; +// grib_db* db = 0; + +// if (!c) +// c = grib_context_get_default(); + +// if (((!keys || nkeys == 0)) || !filename) { +// *err = GRIB_INVALID_ARGUMENT; +// return NULL; +// } + +// db = grib_db_create_from_keys(c, keys, nkeys, err); +// *err = GRIB_SUCCESS; +// ret = grib_db_load(db, filename); +// if (ret != GRIB_SUCCESS) +// *err = ret; +// return db; +// } - db = grib_db_create_from_keys(c, keys, nkeys, err); - - *err = GRIB_SUCCESS; - ret = grib_db_load(db, filename); - if (ret != GRIB_SUCCESS) - *err = ret; - - return db; -} -#endif static grib_db* grib_db_create_from_keys(grib_context* c, char** keys, int nkeys, int* err) { @@ -495,61 +486,59 @@ int grib_db_apply_order_by(grib_fieldset* set) return err; } -#if 0 -static int grib_fieldset_compare(grib_fieldset* set, int* i, int* j) -{ - int ret = 0; - double d = 0; - int idkey = 0; - grib_order_by* ob = 0; - int ii = 0, jj = 0; - int *order = 0, *filter = 0; - - if (!set || !set->order_by) - return GRIB_INVALID_ARGUMENT; - ob = set->query->order_by; - order = set->order->el; - filter = set->filter->el; - - ii = *(set->filter->el + *(order + *i)); - jj = *(set->filter->el + *(order + *j)); - - while (ob) { - idkey = ob->idkey; - switch (set->db->columns[idkey].type) { - case GRIB_TYPE_STRING: - ret = grib_inline_strcmp(set->db->columns[idkey].string_values[ii], - set->db->columns[idkey].string_values[jj]); - break; - - case GRIB_TYPE_DOUBLE: - d = set->db->columns[idkey].double_values[ii] - - set->db->columns[idkey].double_values[jj]; - if (d > 0) - ret = 1; - else if (d == 0) - ret = 0; - else - ret = -1; - break; - - case GRIB_TYPE_LONG: - ret = set->db->columns[idkey].long_values[ii] - - set->db->columns[idkey].long_values[jj]; - break; - default: - return GRIB_INVALID_TYPE; - } - if (ret != 0) { - ret *= ob->mode; - break; - } - ob = ob->next; - } - - return ret; -} -#endif +// static int grib_fieldset_compare(grib_fieldset* set, int* i, int* j) +// { +// int ret = 0; +// double d = 0; +// int idkey = 0; +// grib_order_by* ob = 0; +// int ii = 0, jj = 0; +// int *order = 0, *filter = 0; + +// if (!set || !set->order_by) +// return GRIB_INVALID_ARGUMENT; +// ob = set->query->order_by; +// order = set->order->el; +// filter = set->filter->el; + +// ii = *(set->filter->el + *(order + *i)); +// jj = *(set->filter->el + *(order + *j)); + +// while (ob) { +// idkey = ob->idkey; +// switch (set->db->columns[idkey].type) { +// case GRIB_TYPE_STRING: +// ret = grib_inline_strcmp(set->db->columns[idkey].string_values[ii], +// set->db->columns[idkey].string_values[jj]); +// break; + +// case GRIB_TYPE_DOUBLE: +// d = set->db->columns[idkey].double_values[ii] - +// set->db->columns[idkey].double_values[jj]; +// if (d > 0) +// ret = 1; +// else if (d == 0) +// ret = 0; +// else +// ret = -1; +// break; + +// case GRIB_TYPE_LONG: +// ret = set->db->columns[idkey].long_values[ii] - +// set->db->columns[idkey].long_values[jj]; +// break; +// default: +// return GRIB_INVALID_TYPE; +// } +// if (ret != 0) { +// ret *= ob->mode; +// break; +// } +// ob = ob->next; +// } + +// return ret; +// } static void grib_db_sort(grib_set* set, int beg, int theEnd) { diff --git a/src/grib_dependency.cc b/src/grib_dependency.cc index 9d6bab0f7..6d8b7a48f 100644 --- a/src/grib_dependency.cc +++ b/src/grib_dependency.cc @@ -10,8 +10,6 @@ /*************************************************************************** * Jean Baptiste Filippi - 01.11.2005 - * Enrico Fucile - * * ***************************************************************************/ #include "grib_api_internal.h" @@ -69,15 +67,12 @@ void grib_dependency_add(grib_accessor* observer, grib_accessor* observed) d = d->next; } -#if 0 - d = h->dependencies; - while(d) - { - last = d; - d = d->next; - } - -#endif +// d = h->dependencies; +// while(d) +// { +// last = d; +// d = d->next; +// } d = (grib_dependency*)grib_context_malloc_clear(h->context, sizeof(grib_dependency)); Assert(d); @@ -86,11 +81,9 @@ void grib_dependency_add(grib_accessor* observer, grib_accessor* observed) d->observer = observer; d->next = 0; - /*printf("observe %p %p %s %s\n",(void*)observed,(void*)observer, observed->name,observer->name);*/ -#if 0 - d->next = h->dependencies; - h->dependencies = d; -#endif + //printf("observe %p %p %s %s\n",(void*)observed,(void*)observer, observed->name,observer->name); +// d->next = h->dependencies; +// h->dependencies = d; if (last) last->next = d; diff --git a/src/grib_expression_class_binop.cc b/src/grib_expression_class_binop.cc index b87947017..8d4770f46 100644 --- a/src/grib_expression_class_binop.cc +++ b/src/grib_expression_class_binop.cc @@ -99,20 +99,19 @@ static int evaluate_long(grib_expression* g, grib_handle* h, long* lres) int ret; grib_expression_binop* e = (grib_expression_binop*)g; -#if 0 /* DEBUGGING */ - { - int typeLeft, typeRight; - const char* nameLeft; - const char* nameRight; - typeLeft = grib_expression_native_type(h, e->left); - typeRight = grib_expression_native_type(h, e->right); - nameLeft = grib_expression_get_name(e->left); - nameRight= grib_expression_get_name(e->right); - printf("eval_long nameLeft=%s (type=%d), nameRight=%s (type=%d)\n",nameLeft,typeLeft, nameRight,typeRight); - grib_expression_print(h->context, g, h); - printf("\n"); - } -#endif +// #if DEBUGGING +// { +// int typeLeft, typeRight; +// const char* nameLeft; +// const char* nameRight; +// typeLeft = grib_expression_native_type(h, e->left); +// typeRight = grib_expression_native_type(h, e->right); +// nameLeft = grib_expression_get_name(e->left); +// nameRight= grib_expression_get_name(e->right); +// printf("eval_long nameLeft=%s (type=%d), nameRight=%s (type=%d)\n",nameLeft,typeLeft, nameRight,typeRight); +// grib_expression_print(h->context, g, h); +// printf("\n"); +// } ret = grib_expression_evaluate_long(h, e->left, &v1); if (ret != GRIB_SUCCESS) @@ -134,20 +133,19 @@ static int evaluate_double(grib_expression* g, grib_handle* h, double* dres) grib_expression_binop* e = (grib_expression_binop*)g; -#if 0 /* DEBUGGING */ - { - int typeLeft, typeRight; - const char* nameLeft; - const char* nameRight; - typeLeft = grib_expression_native_type(h, e->left); - typeRight = grib_expression_native_type(h, e->right); - nameLeft = grib_expression_get_name(e->left); - nameRight= grib_expression_get_name(e->right); - printf("eval_dbl nameLeft=%s (type=%d), nameRight=%s (type=%d)\n",nameLeft,typeLeft, nameRight,typeRight); - grib_expression_print(h->context, g, h); - printf("\n"); - } -#endif +// #if DEBUGGING +// { +// int typeLeft, typeRight; +// const char* nameLeft; +// const char* nameRight; +// typeLeft = grib_expression_native_type(h, e->left); +// typeRight = grib_expression_native_type(h, e->right); +// nameLeft = grib_expression_get_name(e->left); +// nameRight= grib_expression_get_name(e->right); +// printf("eval_dbl nameLeft=%s (type=%d), nameRight=%s (type=%d)\n",nameLeft,typeLeft, nameRight,typeRight); +// grib_expression_print(h->context, g, h); +// printf("\n"); +// } ret = grib_expression_evaluate_double(h, e->left, &v1); if (ret != GRIB_SUCCESS) diff --git a/src/grib_iterator_class_space_view.cc b/src/grib_iterator_class_space_view.cc index ce8294d0d..c2e402e59 100644 --- a/src/grib_iterator_class_space_view.cc +++ b/src/grib_iterator_class_space_view.cc @@ -97,47 +97,45 @@ static int next(grib_iterator* iter, double* lat, double* lon, double* val) return 1; } -#if 0 -static void adjustBadlyEncodedEcmwfGribs(grib_handle* h, - long* nx, long* ny, double* dx, double* dy, double* xp, double* yp) -{ - /* Correct the information provided in the headers of certain satellite imagery that - * we have available. This is specific to ECMWF. - * Obtained through trial-and-error to get the best match with the coastlines. - * - * Copied from Magics GribSatelliteInterpretor::AdjustBadlyEncodedGribs() - */ - long centre = 0; - int err = grib_get_long(h, "centre", ¢re); - if (!err && centre == 98) { - int err1 = 0, err2 = 0, err3 = 0; - long satelliteIdentifier, channelNumber, functionCode; - /* These keys are defined in the ECMWF local definition 24 - Satellite image simulation */ - err1 = grib_get_long(h, "satelliteIdentifier", &satelliteIdentifier); - err2 = grib_get_long(h, "channelNumber", &channelNumber); - err3 = grib_get_long(h, "functionCode", &functionCode); - if (!err1 && !err2 && !err3) { - if (satelliteIdentifier == 54 && channelNumber == 2 && *dx == 1179) { /* Meteosat 7, channel 2 */ - *nx = *ny = 900; - *dx = *dy = 853; - *xp = *yp = 450; - } - else if (satelliteIdentifier == 54 && channelNumber == 3 && *dx == 1179) { /* Meteosat 7, channel 3 */ - *dx = *dy = 1184; - *xp = *yp = 635; - } - else if (satelliteIdentifier == 259 && channelNumber == 4 && *dx == 1185) { /* GOES-15 (West) channel 4 */ - *dx = *dy = 880; - *xp = *yp = 450; - } - else if (satelliteIdentifier == 57 && *dx == 1732) { /* MSG (Meteosat second generation), non-HRV channels */ - *dx = *dy = 1811; - *xp = *yp = 928; - } - } - } -} -#endif +// static void adjustBadlyEncodedEcmwfGribs(grib_handle* h, +// long* nx, long* ny, double* dx, double* dy, double* xp, double* yp) +// { +// /* Correct the information provided in the headers of certain satellite imagery that +// * we have available. This is specific to ECMWF. +// * Obtained through trial-and-error to get the best match with the coastlines. +// * +// * Copied from Magics GribSatelliteInterpretor::AdjustBadlyEncodedGribs() +// */ +// long centre = 0; +// int err = grib_get_long(h, "centre", ¢re); +// if (!err && centre == 98) { +// int err1 = 0, err2 = 0, err3 = 0; +// long satelliteIdentifier, channelNumber, functionCode; +// /* These keys are defined in the ECMWF local definition 24 - Satellite image simulation */ +// err1 = grib_get_long(h, "satelliteIdentifier", &satelliteIdentifier); +// err2 = grib_get_long(h, "channelNumber", &channelNumber); +// err3 = grib_get_long(h, "functionCode", &functionCode); +// if (!err1 && !err2 && !err3) { +// if (satelliteIdentifier == 54 && channelNumber == 2 && *dx == 1179) { /* Meteosat 7, channel 2 */ +// *nx = *ny = 900; +// *dx = *dy = 853; +// *xp = *yp = 450; +// } +// else if (satelliteIdentifier == 54 && channelNumber == 3 && *dx == 1179) { /* Meteosat 7, channel 3 */ +// *dx = *dy = 1184; +// *xp = *yp = 635; +// } +// else if (satelliteIdentifier == 259 && channelNumber == 4 && *dx == 1185) { /* GOES-15 (West) channel 4 */ +// *dx = *dy = 880; +// *xp = *yp = 450; +// } +// else if (satelliteIdentifier == 57 && *dx == 1732) { /* MSG (Meteosat second generation), non-HRV channels */ +// *dx = *dy = 1811; +// *xp = *yp = 928; +// } +// } +// } +// } #define RAD2DEG 57.29577951308232087684 /* 180 over pi */ #define DEG2RAD 0.01745329251994329576 /* pi over 180 */ diff --git a/src/grib_templates.cc b/src/grib_templates.cc index 8a76900c9..37a5e99a1 100644 --- a/src/grib_templates.cc +++ b/src/grib_templates.cc @@ -14,31 +14,28 @@ #include #endif -#if 0 -/* This is a mechanism where we generate C code in grib_templates.h - * from our GRIB sample files and then include the header so one - * can instantiate samples without any disk access. - * This is now superseded by MEMFS - */ -typedef struct grib_templates { - const char* name; - const unsigned char* data; - size_t size; -} grib_templates; - -#define NUMBER(x) (sizeof(x) / sizeof(x[0])) - -grib_handle* grib_internal_sample(grib_context* c,const char* name) -{ - size_t i; - const size_t num_samples = NUMBER(templates); - Assert(0); - for(i = 0; i < num_samples; i++) - if(strcmp(name,templates[i].name) == 0) - return grib_handle_new_from_message_copy(c,templates[i].data,templates[i].size); - return NULL; -} -#endif +// This is a mechanism where we generate C code in grib_templates.h +// from our GRIB sample files and then include the header so one +// can instantiate samples without any disk access. +// Note: This is now superseded by MEMFS +// +// typedef struct grib_templates { +// const char* name; +// const unsigned char* data; +// size_t size; +// } grib_templates; + +// #define NUMBER(x) (sizeof(x) / sizeof(x[0])) +// grib_handle* grib_internal_sample(grib_context* c,const char* name) +// { +// size_t i; +// const size_t num_samples = NUMBER(templates); +// Assert(0); +// for(i = 0; i < num_samples; i++) +// if(strcmp(name,templates[i].name) == 0) +// return grib_handle_new_from_message_copy(c,templates[i].data,templates[i].size); +// return NULL; +// } /* Windows always has a colon in pathnames e.g. C:\temp\file. It uses semi-colons as delimiter */ #ifdef ECCODES_ON_WINDOWS From 6fcf3b7e1d92d47afad5659b0327f03d3f388e92 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sat, 24 Jun 2023 13:14:31 +0100 Subject: [PATCH 318/378] Dead code removal --- src/grib_context.cc | 70 +-- src/grib_darray.cc | 28 +- src/grib_dumper_class_default.cc | 140 +++--- src/grib_index.cc | 437 +++++++++--------- src/grib_iterator_class_gaussian_reduced.cc | 32 +- ...grib_iterator_class_polar_stereographic.cc | 122 +++-- src/grib_loader_from_array.cc | 342 +++++++------- 7 files changed, 578 insertions(+), 593 deletions(-) diff --git a/src/grib_context.cc b/src/grib_context.cc index 139217f10..b2983b49f 100644 --- a/src/grib_context.cc +++ b/src/grib_context.cc @@ -561,52 +561,52 @@ grib_context* grib_context_get_default() return &default_grib_context; } -#if 0 /* function removed */ -grib_context* grib_context_new(grib_context* parent) -{ - grib_context* c; -#if GRIB_PTHREADS - pthread_mutexattr_t attr; -#endif +// Do we really need this? +// grib_context* grib_context_new(grib_context* parent) +// { +// grib_context* c; +// #if GRIB_PTHREADS +// pthread_mutexattr_t attr; +// #endif - if (!parent) parent=grib_context_get_default(); +// if (!parent) parent=grib_context_get_default(); - GRIB_MUTEX_INIT_ONCE(&once,&init); - GRIB_MUTEX_LOCK(&(parent->mutex)); +// GRIB_MUTEX_INIT_ONCE(&once,&init); +// GRIB_MUTEX_LOCK(&(parent->mutex)); - c = (grib_context*)grib_context_malloc_clear_persistent(&default_grib_context,sizeof(grib_context)); +// c = (grib_context*)grib_context_malloc_clear_persistent(&default_grib_context,sizeof(grib_context)); - c->inited = default_grib_context.inited; - c->debug = default_grib_context.debug; +// c->inited = default_grib_context.inited; +// c->debug = default_grib_context.debug; - c->real_mode = default_grib_context.real_mode; +// c->real_mode = default_grib_context.real_mode; - c->free_mem = default_grib_context.free_mem; - c->alloc_mem = default_grib_context.alloc_mem; +// c->free_mem = default_grib_context.free_mem; +// c->alloc_mem = default_grib_context.alloc_mem; - c->free_persistent_mem = default_grib_context.free_persistent_mem; - c->alloc_persistent_mem= default_grib_context.alloc_persistent_mem; +// c->free_persistent_mem = default_grib_context.free_persistent_mem; +// c->alloc_persistent_mem= default_grib_context.alloc_persistent_mem; - c->read = default_grib_context.read; - c->write = default_grib_context.write; - c->tell = default_grib_context.tell; +// c->read = default_grib_context.read; +// c->write = default_grib_context.write; +// c->tell = default_grib_context.tell; - c->output_log = default_grib_context.output_log; - c->print = default_grib_context.print ; - c->user_data = default_grib_context.user_data; - c->def_files = default_grib_context.def_files; - c->lists = default_grib_context.lists; +// c->output_log = default_grib_context.output_log; +// c->print = default_grib_context.print ; +// c->user_data = default_grib_context.user_data; +// c->def_files = default_grib_context.def_files; +// c->lists = default_grib_context.lists; -#if GRIB_PTHREADS - pthread_mutexattr_settype(&attr,PTHREAD_MUTEX_RECURSIVE); - pthread_mutex_init(&mutex_c,&attr); - pthread_mutexattr_destroy(&attr); -#endif +// #if GRIB_PTHREADS +// pthread_mutexattr_settype(&attr,PTHREAD_MUTEX_RECURSIVE); +// pthread_mutex_init(&mutex_c,&attr); +// pthread_mutexattr_destroy(&attr); +// #endif + +// GRIB_MUTEX_UNLOCK(&(parent->mutex)); +// return c; +// } - GRIB_MUTEX_UNLOCK(&(parent->mutex)); - return c; -} -#endif /* function removed */ /* GRIB-235: Resolve path to expand symbolic links etc */ /* Note: return value is allocated. Client has to free */ diff --git a/src/grib_darray.cc b/src/grib_darray.cc index e37ba710f..3646e6937 100644 --- a/src/grib_darray.cc +++ b/src/grib_darray.cc @@ -22,23 +22,21 @@ void grib_darray_print(const char* title, const grib_darray* darray) printf("\n"); } -#if 0 -grib_darray* grib_darray_new_from_array(grib_context* c, double* src_array, size_t size) -{ - size_t i; - grib_darray* v; +// grib_darray* grib_darray_new_from_array(grib_context* c, double* src_array, size_t size) +// { +// size_t i; +// grib_darray* v; - if (!c) - c = grib_context_get_default(); +// if (!c) +// c = grib_context_get_default(); - v = grib_darray_new(c, size, 100); - for (i = 0; i < size; i++) - v->v[i] = src_array[i]; - v->n = size; - v->context = c; - return v; -} -#endif +// v = grib_darray_new(c, size, 100); +// for (i = 0; i < size; i++) +// v->v[i] = src_array[i]; +// v->n = size; +// v->context = c; +// return v; +// } grib_darray* grib_darray_new(grib_context* c, size_t size, size_t incsize) { diff --git a/src/grib_dumper_class_default.cc b/src/grib_dumper_class_default.cc index fb69995de..b3c87eb7e 100644 --- a/src/grib_dumper_class_default.cc +++ b/src/grib_dumper_class_default.cc @@ -466,77 +466,75 @@ static void dump_string(grib_dumper* d, grib_accessor* a, const char* comment) static void dump_bytes(grib_dumper* d, grib_accessor* a, const char* comment) { -#if 0 - grib_dumper_default *self = (grib_dumper_default*)d; - int i,k,err =0; - size_t more = 0; - size_t size = a->length; - unsigned char* buf = grib_context_malloc(d->context,size); - - if ( (a->flags & GRIB_ACCESSOR_FLAG_DUMP) == 0) - return; - - - if (a->flags & GRIB_ACCESSOR_FLAG_READ_ONLY) - fprintf(self->dumper.out,"-READ ONLY- "); - - /*for(i = 0; i < d->depth ; i++) fprintf(self->dumper.out," ");*/ - /*print_offset(self->dumper.out,self->begin,self->theEnd);*/ - if ((d->option_flags & GRIB_DUMP_FLAG_TYPE) != 0) - fprintf(self->dumper.out,"%s ",a->creator->op); - - fprintf(self->dumper.out,"%s = %ld",a->name,a->length); - aliases(d,a); - fprintf(self->dumper.out," {"); - - if(!buf) - { - if(size == 0) - fprintf(self->dumper.out,"}\n"); - else - fprintf(self->dumper.out," *** ERR cannot malloc(%ld) }\n",(long)size); - return; - } - - fprintf(self->dumper.out,"\n"); - - err = grib_unpack_bytes(a,buf,&size); - if(err){ - grib_context_free(d->context,buf); - fprintf(self->dumper.out," *** ERR=%d (%s) [grib_dumper_default::dump_bytes]\n}",err,grib_get_error_message(err)); - return ; - } - - if(size > 100) { - more = size - 100; - size = 100; - } - - k = 0; - /* if(size > 100) size = 100; */ - while(k < size) - { - int j; - for(i = 0; i < d->depth + 3 ; i++) fprintf(self->dumper.out," "); - for(j = 0; j < 16 && k < size; j++, k++) - { - fprintf(self->dumper.out,"%02x",buf[k]); - if(k != size-1) - fprintf(self->dumper.out,", "); - } - fprintf(self->dumper.out,"\n"); - } - - if(more) - { - for(i = 0; i < d->depth + 3 ; i++) fprintf(self->dumper.out," "); - fprintf(self->dumper.out,"... %lu more values\n", (unsigned long)more); - } - - for(i = 0; i < d->depth ; i++) fprintf(self->dumper.out," "); - fprintf(self->dumper.out,"} # %s %s \n",a->creator->op, a->name); - grib_context_free(d->context,buf); -#endif +// grib_dumper_default *self = (grib_dumper_default*)d; +// int i,k,err =0; +// size_t more = 0; +// size_t size = a->length; +// unsigned char* buf = grib_context_malloc(d->context,size); + +// if ( (a->flags & GRIB_ACCESSOR_FLAG_DUMP) == 0) +// return; + + +// if (a->flags & GRIB_ACCESSOR_FLAG_READ_ONLY) +// fprintf(self->dumper.out,"-READ ONLY- "); + +// /*for(i = 0; i < d->depth ; i++) fprintf(self->dumper.out," ");*/ +// /*print_offset(self->dumper.out,self->begin,self->theEnd);*/ +// if ((d->option_flags & GRIB_DUMP_FLAG_TYPE) != 0) +// fprintf(self->dumper.out,"%s ",a->creator->op); + +// fprintf(self->dumper.out,"%s = %ld",a->name,a->length); +// aliases(d,a); +// fprintf(self->dumper.out," {"); + +// if(!buf) +// { +// if(size == 0) +// fprintf(self->dumper.out,"}\n"); +// else +// fprintf(self->dumper.out," *** ERR cannot malloc(%ld) }\n",(long)size); +// return; +// } + +// fprintf(self->dumper.out,"\n"); + +// err = grib_unpack_bytes(a,buf,&size); +// if(err){ +// grib_context_free(d->context,buf); +// fprintf(self->dumper.out," *** ERR=%d (%s) [grib_dumper_default::dump_bytes]\n}",err,grib_get_error_message(err)); +// return ; +// } + +// if(size > 100) { +// more = size - 100; +// size = 100; +// } + +// k = 0; +// /* if(size > 100) size = 100; */ +// while(k < size) +// { +// int j; +// for(i = 0; i < d->depth + 3 ; i++) fprintf(self->dumper.out," "); +// for(j = 0; j < 16 && k < size; j++, k++) +// { +// fprintf(self->dumper.out,"%02x",buf[k]); +// if(k != size-1) +// fprintf(self->dumper.out,", "); +// } +// fprintf(self->dumper.out,"\n"); +// } + +// if(more) +// { +// for(i = 0; i < d->depth + 3 ; i++) fprintf(self->dumper.out," "); +// fprintf(self->dumper.out,"... %lu more values\n", (unsigned long)more); +// } + +// for(i = 0; i < d->depth ; i++) fprintf(self->dumper.out," "); +// fprintf(self->dumper.out,"} # %s %s \n",a->creator->op, a->name); +// grib_context_free(d->context,buf); } static void dump_values(grib_dumper* d, grib_accessor* a) diff --git a/src/grib_index.cc b/src/grib_index.cc index 87a9762a0..57efa359e 100644 --- a/src/grib_index.cc +++ b/src/grib_index.cc @@ -17,38 +17,36 @@ #define NOT_NULL_MARKER 255 /* #if GRIB_PTHREADS */ -#if 0 -static pthread_once_t once = PTHREAD_ONCE_INIT; -static pthread_mutex_t mutex1 = PTHREAD_MUTEX_INITIALIZER; -static pthread_mutex_t mutex2 = PTHREAD_MUTEX_INITIALIZER; - -static void init() { - pthread_mutexattr_t attr; - pthread_mutexattr_init(&attr); - pthread_mutexattr_settype(&attr,PTHREAD_MUTEX_RECURSIVE); - pthread_mutex_init(&mutex1,&attr); - pthread_mutex_init(&mutex2,&attr); - pthread_mutexattr_destroy(&attr); - -} -/* #elif GRIB_OMP_THREADS */ -static int once = 0; -static omp_nest_lock_t mutex1; -static omp_nest_lock_t mutex2; - -static void init() -{ - GRIB_OMP_CRITICAL(lock_grib_index_c) - { - if (once == 0) - { - omp_init_nest_lock(&mutex1); - omp_init_nest_lock(&mutex2); - once = 1; - } - } -} -#endif +// static pthread_once_t once = PTHREAD_ONCE_INIT; +// static pthread_mutex_t mutex1 = PTHREAD_MUTEX_INITIALIZER; +// static pthread_mutex_t mutex2 = PTHREAD_MUTEX_INITIALIZER; + +// static void init() { +// pthread_mutexattr_t attr; +// pthread_mutexattr_init(&attr); +// pthread_mutexattr_settype(&attr,PTHREAD_MUTEX_RECURSIVE); +// pthread_mutex_init(&mutex1,&attr); +// pthread_mutex_init(&mutex2,&attr); +// pthread_mutexattr_destroy(&attr); + +// } +// /* #elif GRIB_OMP_THREADS */ +// static int once = 0; +// static omp_nest_lock_t mutex1; +// static omp_nest_lock_t mutex2; + +// static void init() +// { +// GRIB_OMP_CRITICAL(lock_grib_index_c) +// { +// if (once == 0) +// { +// omp_init_nest_lock(&mutex1); +// omp_init_nest_lock(&mutex2); +// once = 1; +// } +// } +// } static const char* mars_keys = "mars.date,mars.time,mars.expver,mars.stream,mars.class,mars.type," @@ -1271,168 +1269,167 @@ int ecc__codes_index_add_file(grib_index* index, const char* filename, int messa return GRIB_SUCCESS; } -#if 0 -int grib_index_add_file(grib_index* index, const char* filename) -{ - double dval; - size_t svallen; - long length,lval; - char buf[1024]={0,}; - int err=0; - grib_file* indfile; - grib_file* newfile; +// int grib_index_add_file(grib_index* index, const char* filename) +// { +// double dval; +// size_t svallen; +// long length,lval; +// char buf[1024]={0,}; +// int err=0; +// grib_file* indfile; +// grib_file* newfile; + +// grib_index_key* index_key=NULL; +// grib_handle* h=NULL; +// grib_field* field; +// grib_field_tree* field_tree; +// grib_file* file=NULL; +// grib_context* c; + +// if (!index) return GRIB_NULL_INDEX; +// c=index->context; + +// file=grib_file_open(filename,"r",&err); + +// if (!file || !file->handle) return err; + +// if (!index->files) { +// grib_filesid++; +// newfile=(grib_file*)grib_context_malloc_clear(c,sizeof(grib_file)); +// newfile->id=grib_filesid; +// newfile->name=strdup(file->name); +// newfile->handle = file->handle; +// index->files=newfile; +// } else { +// indfile=index->files; +// while(indfile) { +// if (!strcmp(indfile->name,file->name)) return 0; +// indfile=indfile->next; +// } +// indfile=index->files; +// while(indfile->next) indfile=indfile->next; +// grib_filesid++; +// newfile=(grib_file*)grib_context_malloc_clear(c,sizeof(grib_file)); +// newfile->id=grib_filesid; +// newfile->name=strdup(file->name); +// newfile->handle = file->handle; +// indfile->next=newfile; +// } + +// fseeko(file->handle,0,SEEK_SET); + +// while ((h=grib_handle_new_from_file(c,file->handle,&err))!=NULL) { +// grib_string_list* v=0; +// index_key=index->keys; +// field_tree=index->fields; +// index_key->value[0]=0; + +// /* process only GRIB for the moment*/ +// svallen=1024; +// grib_get_string(h,"identifier",buf,&svallen); +// if (strcmp(buf,"GRIB")) { +// grib_handle_delete(h); +// return 0; +// } + +// while (index_key) { +// if (index_key->type==GRIB_TYPE_UNDEFINED) { +// err=grib_get_native_type(h,index_key->name,&(index_key->type)); +// if (err) index_key->type=GRIB_TYPE_STRING; +// } +// svallen=1024; +// switch (index_key->type) { +// case GRIB_TYPE_STRING: +// err=grib_get_string(h,index_key->name,buf,&svallen); +// if (err==GRIB_NOT_FOUND) snprintf(buf,1024,GRIB_KEY_UNDEF); +// break; +// case GRIB_TYPE_LONG: +// err=grib_get_long(h,index_key->name,&lval); +// if (err==GRIB_NOT_FOUND) snprintf(buf,1024,GRIB_KEY_UNDEF); +// else snprintf(buf,1024,"%ld",lval); +// break; +// case GRIB_TYPE_DOUBLE: +// err=grib_get_double(h,index_key->name,&dval); +// if (err==GRIB_NOT_FOUND) snprintf(buf,1024,GRIB_KEY_UNDEF); +// else snprintf(buf,1024,"%g",dval); +// break; +// default : +// err=GRIB_WRONG_TYPE; +// return err; +// } +// if (err && err != GRIB_NOT_FOUND) { +// grib_context_log(c,GRIB_LOG_ERROR,"unable to create index. \"%s\": %s",index_key->name,grib_get_error_message(err)); +// return err; +// } + +// if (!index_key->values->value) { +// index_key->values->value=grib_context_strdup(c,buf); +// index_key->values_count++; +// } else { +// v=index_key->values; +// while (v->next && strcmp(v->value,buf)) v=v->next; +// if (strcmp(v->value,buf)) { +// index_key->values_count++; +// if (v->next) v=v->next; +// v->next=(grib_string_list*)grib_context_malloc_clear(c,sizeof(grib_string_list)); +// v->next->value=grib_context_strdup(c,buf); +// } +// } + +// if (!field_tree->value) { +// field_tree->value=grib_context_strdup(c,buf); +// } else { +// while (field_tree->next && +// (field_tree->value==NULL || +// strcmp(field_tree->value,buf))) +// field_tree=field_tree->next; + +// if (!field_tree->value || strcmp(field_tree->value,buf)){ +// field_tree->next= +// (grib_field_tree*)grib_context_malloc_clear(c, +// sizeof(grib_field_tree)); +// field_tree=field_tree->next; +// field_tree->value=grib_context_strdup(c,buf); +// } +// } + +// if (index_key->next) { +// if (!field_tree->next_level) { +// field_tree->next_level= +// (grib_field_tree*)grib_context_malloc_clear(c,sizeof(grib_field_tree)); +// } +// field_tree=field_tree->next_level; +// } +// index_key=index_key->next; +// } + +// field=(grib_field*)grib_context_malloc_clear(c,sizeof(grib_field)); +// field->file=file; +// index->count++; +// field->offset=h->offset; + +// err=grib_get_long(h,"totalLength",&length); +// if (err) return err; +// field->length=length; + +// if (field_tree->field) { +// grib_field* pfield=field_tree->field; +// while (pfield->next) pfield=pfield->next; +// pfield->next=field; +// } else +// field_tree->field=field; + +// if (h) grib_handle_delete(h); + +// } + +// grib_file_close(file->name, 0, &err); + +// if (err) return err; +// index->rewind=1; +// return GRIB_SUCCESS; +// } - grib_index_key* index_key=NULL; - grib_handle* h=NULL; - grib_field* field; - grib_field_tree* field_tree; - grib_file* file=NULL; - grib_context* c; - - if (!index) return GRIB_NULL_INDEX; - c=index->context; - - file=grib_file_open(filename,"r",&err); - - if (!file || !file->handle) return err; - - if (!index->files) { - grib_filesid++; - newfile=(grib_file*)grib_context_malloc_clear(c,sizeof(grib_file)); - newfile->id=grib_filesid; - newfile->name=strdup(file->name); - newfile->handle = file->handle; - index->files=newfile; - } else { - indfile=index->files; - while(indfile) { - if (!strcmp(indfile->name,file->name)) return 0; - indfile=indfile->next; - } - indfile=index->files; - while(indfile->next) indfile=indfile->next; - grib_filesid++; - newfile=(grib_file*)grib_context_malloc_clear(c,sizeof(grib_file)); - newfile->id=grib_filesid; - newfile->name=strdup(file->name); - newfile->handle = file->handle; - indfile->next=newfile; - } - - fseeko(file->handle,0,SEEK_SET); - - while ((h=grib_handle_new_from_file(c,file->handle,&err))!=NULL) { - grib_string_list* v=0; - index_key=index->keys; - field_tree=index->fields; - index_key->value[0]=0; - - /* process only GRIB for the moment*/ - svallen=1024; - grib_get_string(h,"identifier",buf,&svallen); - if (strcmp(buf,"GRIB")) { - grib_handle_delete(h); - return 0; - } - - while (index_key) { - if (index_key->type==GRIB_TYPE_UNDEFINED) { - err=grib_get_native_type(h,index_key->name,&(index_key->type)); - if (err) index_key->type=GRIB_TYPE_STRING; - } - svallen=1024; - switch (index_key->type) { - case GRIB_TYPE_STRING: - err=grib_get_string(h,index_key->name,buf,&svallen); - if (err==GRIB_NOT_FOUND) snprintf(buf,1024,GRIB_KEY_UNDEF); - break; - case GRIB_TYPE_LONG: - err=grib_get_long(h,index_key->name,&lval); - if (err==GRIB_NOT_FOUND) snprintf(buf,1024,GRIB_KEY_UNDEF); - else snprintf(buf,1024,"%ld",lval); - break; - case GRIB_TYPE_DOUBLE: - err=grib_get_double(h,index_key->name,&dval); - if (err==GRIB_NOT_FOUND) snprintf(buf,1024,GRIB_KEY_UNDEF); - else snprintf(buf,1024,"%g",dval); - break; - default : - err=GRIB_WRONG_TYPE; - return err; - } - if (err && err != GRIB_NOT_FOUND) { - grib_context_log(c,GRIB_LOG_ERROR,"unable to create index. \"%s\": %s",index_key->name,grib_get_error_message(err)); - return err; - } - - if (!index_key->values->value) { - index_key->values->value=grib_context_strdup(c,buf); - index_key->values_count++; - } else { - v=index_key->values; - while (v->next && strcmp(v->value,buf)) v=v->next; - if (strcmp(v->value,buf)) { - index_key->values_count++; - if (v->next) v=v->next; - v->next=(grib_string_list*)grib_context_malloc_clear(c,sizeof(grib_string_list)); - v->next->value=grib_context_strdup(c,buf); - } - } - - if (!field_tree->value) { - field_tree->value=grib_context_strdup(c,buf); - } else { - while (field_tree->next && - (field_tree->value==NULL || - strcmp(field_tree->value,buf))) - field_tree=field_tree->next; - - if (!field_tree->value || strcmp(field_tree->value,buf)){ - field_tree->next= - (grib_field_tree*)grib_context_malloc_clear(c, - sizeof(grib_field_tree)); - field_tree=field_tree->next; - field_tree->value=grib_context_strdup(c,buf); - } - } - - if (index_key->next) { - if (!field_tree->next_level) { - field_tree->next_level= - (grib_field_tree*)grib_context_malloc_clear(c,sizeof(grib_field_tree)); - } - field_tree=field_tree->next_level; - } - index_key=index_key->next; - } - - field=(grib_field*)grib_context_malloc_clear(c,sizeof(grib_field)); - field->file=file; - index->count++; - field->offset=h->offset; - - err=grib_get_long(h,"totalLength",&length); - if (err) return err; - field->length=length; - - if (field_tree->field) { - grib_field* pfield=field_tree->field; - while (pfield->next) pfield=pfield->next; - pfield->next=field; - } else - field_tree->field=field; - - if (h) grib_handle_delete(h); - - } - - grib_file_close(file->name, 0, &err); - - if (err) return err; - index->rewind=1; - return GRIB_SUCCESS; -} -#endif grib_index* grib_index_new_from_file(grib_context* c, const char* filename, const char* keys, int* err) { @@ -1942,34 +1939,32 @@ void grib_index_rewind(grib_index* index) index->rewind = 1; } -#if 0 -static grib_index_key* search_key(grib_index_key* keys, grib_index_key* to_search) -{ - if (!keys || !strcmp(keys->name, to_search->name)) - return keys; - return search_key(keys->next, to_search); -} - -int grib_index_search(grib_index* index, grib_index_key* keys) -{ - grib_index_key* ki = index->keys; - grib_index_key* ks = keys; - - while (ks) { - ki = search_key(ki, ks); - if (!ki) { - ki = index->keys; - ki = search_key(ki, ks); - } - if (ki) - snprintf(ki->value, 1024, "%s", ks->value); - ks = ks->next; - } - - grib_index_rewind(index); - return 0; -} -#endif +// static grib_index_key* search_key(grib_index_key* keys, grib_index_key* to_search) +// { +// if (!keys || !strcmp(keys->name, to_search->name)) +// return keys; +// return search_key(keys->next, to_search); +// } + +// int grib_index_search(grib_index* index, grib_index_key* keys) +// { +// grib_index_key* ki = index->keys; +// grib_index_key* ks = keys; + +// while (ks) { +// ki = search_key(ki, ks); +// if (!ki) { +// ki = index->keys; +// ki = search_key(ki, ks); +// } +// if (ki) +// snprintf(ki->value, 1024, "%s", ks->value); +// ks = ks->next; +// } + +// grib_index_rewind(index); +// return 0; +// } int codes_index_set_product_kind(grib_index* index, ProductKind product_kind) { diff --git a/src/grib_iterator_class_gaussian_reduced.cc b/src/grib_iterator_class_gaussian_reduced.cc index 44ca0c385..0384eb5f9 100644 --- a/src/grib_iterator_class_gaussian_reduced.cc +++ b/src/grib_iterator_class_gaussian_reduced.cc @@ -230,15 +230,13 @@ static int iterate_reduced_gaussian_subarea_algorithm2(grib_iterator* iter, grib binary_search(lats, numlats - 1, lat_first, &l); Assert(l < numlats); -#if 0 - for(il=0; ile = 0; for (j = 0; j < plsize; j++) { @@ -282,15 +280,13 @@ static int iterate_reduced_gaussian_subarea_wrapper(grib_iterator* iter, grib_ha { return iterate_reduced_gaussian_subarea_algorithm2(iter, h, lat_first, lon_first, lat_last, lon_last, lats, pl, plsize, numlats); -#if 0 - /* Try legacy approach, if that fails try the next algorithm */ - int err = iterate_reduced_gaussian_subarea(iter, h, lat_first, lon_first, lat_last, lon_last, lats, pl, plsize, 0); - if (err == GRIB_WRONG_GRID) { - /* ECC-445: First attempt failed. Try again with a different algorithm */ - err = iterate_reduced_gaussian_subarea_algorithm2(iter, h, lat_first, lon_first, lat_last, lon_last, lats, pl, plsize); - } - return err; -#endif + // Try legacy approach, if that fails try the next algorithm + // int err = iterate_reduced_gaussian_subarea(iter, h, lat_first, lon_first, lat_last, lon_last, lats, pl, plsize, 0); + // if (err == GRIB_WRONG_GRID) { + // /* ECC-445: First attempt failed. Try again with a different algorithm */ + // err = iterate_reduced_gaussian_subarea_algorithm2(iter, h, lat_first, lon_first, lat_last, lon_last, lats, pl, plsize); + // } + // return err; } static int init(grib_iterator* iter, grib_handle* h, grib_arguments* args) diff --git a/src/grib_iterator_class_polar_stereographic.cc b/src/grib_iterator_class_polar_stereographic.cc index fe1d03202..753649141 100644 --- a/src/grib_iterator_class_polar_stereographic.cc +++ b/src/grib_iterator_class_polar_stereographic.cc @@ -292,68 +292,66 @@ static int init(grib_iterator* iter, grib_handle* h, grib_arguments* args) } y += Dy; } -#if 0 - /*standardParallel = (southPoleOnPlane == 1) ? -90 : +90;*/ - if (jPointsAreConsecutive) - { - x=xFirst; - for (i=0;i360) *lons -= 360; - lons++; - lats++; - - y+=Dy; - } - x+=Dx; - } - } - else - { - y=yFirst; - for (j=0;j360) *lons -= 360; - lons++; - lats++; - - x+=Dx; - } - y+=Dy; - } - } -#endif + +// /*standardParallel = (southPoleOnPlane == 1) ? -90 : +90;*/ +// if (jPointsAreConsecutive) +// { +// x=xFirst; +// for (i=0;i360) *lons -= 360; +// lons++; +// lats++; +// y+=Dy; +// } +// x+=Dx; +// } +// } +// else +// { +// y=yFirst; +// for (j=0;j360) *lons -= 360; +// lons++; +// lats++; +// x+=Dx; +// } +// y+=Dy; +// } +// } + iter->e = -1; /* Apply the scanning mode flags which may require data array to be transformed */ diff --git a/src/grib_loader_from_array.cc b/src/grib_loader_from_array.cc index e8b0477c9..6db8c8bac 100644 --- a/src/grib_loader_from_array.cc +++ b/src/grib_loader_from_array.cc @@ -55,176 +55,176 @@ int grib_lookup_long_from_array(grib_context* gc, grib_loader* loader, const cha return GRIB_SUCCESS; } -#if 0 -int grib_init_accessor_from_array(grib_loader* loader, grib_accessor* ga, grib_arguments* default_value) -{ - grib_handle* h = grib_handle_of_accessor(ga); - int retval = GRIB_SUCCESS; - char* strvalue; - size_t len = 0; - int type = 0; - double* dvalue = 0; - long* lvalue = 0; - long lval = 0; - double dval = 0; - int i = 0; - grib_associative_array* ar = NULL; - grib_runtime_type* value = NULL; - - ar = (grib_associative_array*)loader->data; - - grib_context_log(h->context, GRIB_LOG_DEBUG, "Initialize %s", ga->name); - - retval = grib_associative_array_get(ar, ga->name, &value); - - if ((retval != GRIB_ARRAY_SUCCESS) && default_value) { - grib_context_log(h->context, GRIB_LOG_DEBUG, "Setting %s to default value", ga->name); - grib_pack_expression(ga, grib_arguments_get_expression(h, default_value, 0)); - return GRIB_SUCCESS; - } - if (ga->flags & GRIB_ACCESSOR_FLAG_READ_ONLY) { - grib_context_log(h->context, GRIB_LOG_DEBUG, "Setting %s ignored (read only)", ga->name); - return GRIB_SUCCESS; - } - - if (retval != GRIB_ARRAY_SUCCESS) { - grib_context_log(h->context, GRIB_LOG_DEBUG, - "Grib array error %d", retval); - if ((ga->flags & GRIB_ACCESSOR_FLAG_CAN_BE_MISSING)) { - grib_context_log(h->context, GRIB_LOG_DEBUG, - "Setting %s ignored (optional or can be missing)", ga->name); - return GRIB_SUCCESS; - } - else { - grib_context_log(h->context, GRIB_LOG_ERROR, "%s required", ga->name); - return retval; - } - } - - if (value && grib_runtimetype_get_type(value, &type) == GRIB_RUNTIMETYPE_SUCCESS) { - if (type == GRIB_RUNTIMETYPE_CHAR) { - grib_runtimetype_get_char(value, &strvalue, &len); - switch (grib_accessor_get_native_type(ga)) { - case GRIB_TYPE_STRING: - grib_context_log(h->context, GRIB_LOG_DEBUG, "Setting %s to string %s", - ga->name, strvalue); - grib_set_string_internal(h, ga->name, strvalue, &len); - break; - - case GRIB_TYPE_LONG: - if (!strcmp(strvalue, "MISSING")) - lval = GRIB_MISSING_LONG; - else - lval = atol(strvalue); - grib_context_log(h->context, GRIB_LOG_DEBUG, "Setting %s to long %ld", ga->name, lval); - grib_set_long_internal(h, ga->name, lval); - break; - - case GRIB_TYPE_DOUBLE: - if (!strcmp(strvalue, "MISSING")) - dval = GRIB_MISSING_DOUBLE; - else if (sscanf(strvalue, "%lg", &dval) != 1) { - grib_context_log(h->context, GRIB_LOG_ERROR, "Unable to set %s wrong value format", ga->name); - } - grib_context_log(h->context, GRIB_LOG_DEBUG, "Setting %s to double %lg (%s)", ga->name, dval, strvalue); - grib_set_double_internal(h, ga->name, dval); - break; - - case GRIB_TYPE_BYTES: - grib_context_log(h->context, GRIB_LOG_DEBUG, "Setting %s to string %s", - ga->name, strvalue); - grib_set_bytes_internal(h, ga->name, (unsigned char*)strvalue, &len); - break; - - case GRIB_TYPE_LABEL: - break; - - default: - grib_context_log(h->context, GRIB_LOG_ERROR, "Setting %s, cannot establish type %d [%s]", ga->name, grib_accessor_get_native_type(ga), ga->creator->cclass->name); - break; - } - } - else { - if (grib_runtimetype_get_double(value, &dvalue, &len) == GRIB_RUNTIMETYPE_SUCCESS) { - switch (grib_accessor_get_native_type(ga)) { - case GRIB_TYPE_LONG: - lvalue = (long*)malloc(sizeof(long) * len); - Assert(lvalue); - for (i = 0; i < len; i++) - lvalue[i] = (long)dvalue[i]; - grib_context_log(h->context, GRIB_LOG_DEBUG, "Setting long array %s", ga->name); - grib_set_long_array(h, ga->name, lvalue, len); - free(lvalue); - break; - - case GRIB_TYPE_DOUBLE: - grib_context_log(h->context, GRIB_LOG_DEBUG, "Setting double array %s", ga->name); - grib_set_double_array(h, ga->name, dvalue, len); - break; - - default: - grib_context_log(h->context, GRIB_LOG_ERROR, "Setting array %s, wrong type [%d]", ga->name, grib_accessor_get_native_type(ga)); - break; - } - } - else - grib_context_log(h->context, GRIB_LOG_ERROR, "Unable to set %s to double, wrong type (%d)", - ga->name, type); - } -#if 0 - switch(grib_accessor_get_native_type(ga)) - { - case GRIB_TYPE_STRING: - if (grib_runtimetype_get_char(value,&strvalue,&strvalue_size) == GRIB_RUNTIMETYPE_SUCCESS) { - grib_context_log(h->context,GRIB_LOG_DEBUG, "Setting %s to string %s", - ga->name, strvalue); - len=strlen(strvalue); - grib_set_string_internal(h,ga->name,strvalue,&len); - } else - grib_context_log(h->context,GRIB_LOG_ERROR, "Unable to set %s to string, wrong type", - ga->name); - break; +// int grib_init_accessor_from_array(grib_loader* loader, grib_accessor* ga, grib_arguments* default_value) +// { +// grib_handle* h = grib_handle_of_accessor(ga); +// int retval = GRIB_SUCCESS; +// char* strvalue; +// size_t len = 0; +// int type = 0; +// double* dvalue = 0; +// long* lvalue = 0; +// long lval = 0; +// double dval = 0; +// int i = 0; +// grib_associative_array* ar = NULL; +// grib_runtime_type* value = NULL; + +// ar = (grib_associative_array*)loader->data; + +// grib_context_log(h->context, GRIB_LOG_DEBUG, "Initialize %s", ga->name); + +// retval = grib_associative_array_get(ar, ga->name, &value); + +// if ((retval != GRIB_ARRAY_SUCCESS) && default_value) { +// grib_context_log(h->context, GRIB_LOG_DEBUG, "Setting %s to default value", ga->name); +// grib_pack_expression(ga, grib_arguments_get_expression(h, default_value, 0)); +// return GRIB_SUCCESS; +// } + +// if (ga->flags & GRIB_ACCESSOR_FLAG_READ_ONLY) { +// grib_context_log(h->context, GRIB_LOG_DEBUG, "Setting %s ignored (read only)", ga->name); +// return GRIB_SUCCESS; +// } + +// if (retval != GRIB_ARRAY_SUCCESS) { +// grib_context_log(h->context, GRIB_LOG_DEBUG, +// "Grib array error %d", retval); +// if ((ga->flags & GRIB_ACCESSOR_FLAG_CAN_BE_MISSING)) { +// grib_context_log(h->context, GRIB_LOG_DEBUG, +// "Setting %s ignored (optional or can be missing)", ga->name); +// return GRIB_SUCCESS; +// } +// else { +// grib_context_log(h->context, GRIB_LOG_ERROR, "%s required", ga->name); +// return retval; +// } +// } + +// if (value && grib_runtimetype_get_type(value, &type) == GRIB_RUNTIMETYPE_SUCCESS) { +// if (type == GRIB_RUNTIMETYPE_CHAR) { +// grib_runtimetype_get_char(value, &strvalue, &len); +// switch (grib_accessor_get_native_type(ga)) { +// case GRIB_TYPE_STRING: +// grib_context_log(h->context, GRIB_LOG_DEBUG, "Setting %s to string %s", +// ga->name, strvalue); +// grib_set_string_internal(h, ga->name, strvalue, &len); +// break; + +// case GRIB_TYPE_LONG: +// if (!strcmp(strvalue, "MISSING")) +// lval = GRIB_MISSING_LONG; +// else +// lval = atol(strvalue); +// grib_context_log(h->context, GRIB_LOG_DEBUG, "Setting %s to long %ld", ga->name, lval); +// grib_set_long_internal(h, ga->name, lval); +// break; + +// case GRIB_TYPE_DOUBLE: +// if (!strcmp(strvalue, "MISSING")) +// dval = GRIB_MISSING_DOUBLE; +// else if (sscanf(strvalue, "%lg", &dval) != 1) { +// grib_context_log(h->context, GRIB_LOG_ERROR, "Unable to set %s wrong value format", ga->name); +// } +// grib_context_log(h->context, GRIB_LOG_DEBUG, "Setting %s to double %lg (%s)", ga->name, dval, strvalue); +// grib_set_double_internal(h, ga->name, dval); +// break; + +// case GRIB_TYPE_BYTES: +// grib_context_log(h->context, GRIB_LOG_DEBUG, "Setting %s to string %s", +// ga->name, strvalue); +// grib_set_bytes_internal(h, ga->name, (unsigned char*)strvalue, &len); +// break; + +// case GRIB_TYPE_LABEL: +// break; + +// default: +// grib_context_log(h->context, GRIB_LOG_ERROR, "Setting %s, cannot establish type %d [%s]", ga->name, grib_accessor_get_native_type(ga), ga->creator->cclass->name); +// break; +// } +// } +// else { +// if (grib_runtimetype_get_double(value, &dvalue, &len) == GRIB_RUNTIMETYPE_SUCCESS) { +// switch (grib_accessor_get_native_type(ga)) { +// case GRIB_TYPE_LONG: +// lvalue = (long*)malloc(sizeof(long) * len); +// Assert(lvalue); +// for (i = 0; i < len; i++) +// lvalue[i] = (long)dvalue[i]; +// grib_context_log(h->context, GRIB_LOG_DEBUG, "Setting long array %s", ga->name); +// grib_set_long_array(h, ga->name, lvalue, len); +// free(lvalue); +// break; + +// case GRIB_TYPE_DOUBLE: +// grib_context_log(h->context, GRIB_LOG_DEBUG, "Setting double array %s", ga->name); +// grib_set_double_array(h, ga->name, dvalue, len); +// break; + +// default: +// grib_context_log(h->context, GRIB_LOG_ERROR, "Setting array %s, wrong type [%d]", ga->name, grib_accessor_get_native_type(ga)); +// break; +// } +// } +// else +// grib_context_log(h->context, GRIB_LOG_ERROR, "Unable to set %s to double, wrong type (%d)", +// ga->name, type); +// } +// #if 0 +// switch(grib_accessor_get_native_type(ga)) +// { +// case GRIB_TYPE_STRING: +// if (grib_runtimetype_get_char(value,&strvalue,&strvalue_size) == GRIB_RUNTIMETYPE_SUCCESS) { +// grib_context_log(h->context,GRIB_LOG_DEBUG, "Setting %s to string %s", +// ga->name, strvalue); +// len=strlen(strvalue); +// grib_set_string_internal(h,ga->name,strvalue,&len); +// } else +// grib_context_log(h->context,GRIB_LOG_ERROR, "Unable to set %s to string, wrong type", +// ga->name); +// break; + +// case GRIB_TYPE_LONG: +// if (grib_runtimetype_get_long(value,&lval,&len) == GRIB_RUNTIMETYPE_SUCCESS) { +// grib_context_log(h->context,GRIB_LOG_DEBUG, "Setting %s to long %d", ga->name, lval); +// grib_set_long_internal(h,ga->name,*lval); +// } else +// grib_context_log(h->context,GRIB_LOG_ERROR, "Unable to set %s to long, wrong type", +// ga->name); +// break; + +// case GRIB_TYPE_DOUBLE: +// if (grib_runtimetype_get_double(value,&dval,&len) == GRIB_RUNTIMETYPE_SUCCESS) { +// grib_context_log(h->context,GRIB_LOG_DEBUG, "Setting %s to long %d", ga->name, dval); +// grib_set_double_internal(h,ga->name,*dval); +// } else +// grib_context_log(h->context,GRIB_LOG_ERROR, "Unable to set %s to double, wrong type", +// ga->name); +// break; + +// case GRIB_TYPE_BYTES: +// if (grib_runtimetype_get_char(value,&strvalue,&len) == GRIB_RUNTIMETYPE_SUCCESS) { +// grib_context_log(h->context,GRIB_LOG_DEBUG, "Setting %s to string %s", +// ga->name, strvalue); +// grib_set_bytes_internal(h,ga->name,(unsigned char*)strvalue,&len); +// } else +// grib_context_log(h->context,GRIB_LOG_ERROR, "Unable to set %s to string, wrong type", +// ga->name); +// break; + +// case GRIB_TYPE_LABEL: +// break; + +// default: +// grib_context_log(h->context,GRIB_LOG_ERROR, "Setting %s, cannot establish type %d [%s]" +// , ga->name,grib_accessor_get_native_type(ga),ga->creator->cclass->name); +// break; +// } +// #endif +// } + +// return retval; +// } - case GRIB_TYPE_LONG: - if (grib_runtimetype_get_long(value,&lval,&len) == GRIB_RUNTIMETYPE_SUCCESS) { - grib_context_log(h->context,GRIB_LOG_DEBUG, "Setting %s to long %d", ga->name, lval); - grib_set_long_internal(h,ga->name,*lval); - } else - grib_context_log(h->context,GRIB_LOG_ERROR, "Unable to set %s to long, wrong type", - ga->name); - break; - - case GRIB_TYPE_DOUBLE: - if (grib_runtimetype_get_double(value,&dval,&len) == GRIB_RUNTIMETYPE_SUCCESS) { - grib_context_log(h->context,GRIB_LOG_DEBUG, "Setting %s to long %d", ga->name, dval); - grib_set_double_internal(h,ga->name,*dval); - } else - grib_context_log(h->context,GRIB_LOG_ERROR, "Unable to set %s to double, wrong type", - ga->name); - break; - - case GRIB_TYPE_BYTES: - if (grib_runtimetype_get_char(value,&strvalue,&len) == GRIB_RUNTIMETYPE_SUCCESS) { - grib_context_log(h->context,GRIB_LOG_DEBUG, "Setting %s to string %s", - ga->name, strvalue); - grib_set_bytes_internal(h,ga->name,(unsigned char*)strvalue,&len); - } else - grib_context_log(h->context,GRIB_LOG_ERROR, "Unable to set %s to string, wrong type", - ga->name); - break; - - case GRIB_TYPE_LABEL: - break; - - default: - grib_context_log(h->context,GRIB_LOG_ERROR, "Setting %s, cannot establish type %d [%s]" - , ga->name,grib_accessor_get_native_type(ga),ga->creator->cclass->name); - break; - } -#endif - } - - return retval; -} -#endif From f7c5c47e94e40a4663af1a08dc3f993f876971c0 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sat, 24 Jun 2023 13:21:09 +0100 Subject: [PATCH 319/378] Dead code removal --- src/deprecated/grib_nearest_class_regular.cc | 109 ++++++++++++++++++ src/grib_nearest_class_regular.cc | 115 +------------------ 2 files changed, 112 insertions(+), 112 deletions(-) create mode 100644 src/deprecated/grib_nearest_class_regular.cc diff --git a/src/deprecated/grib_nearest_class_regular.cc b/src/deprecated/grib_nearest_class_regular.cc new file mode 100644 index 000000000..766dcc039 --- /dev/null +++ b/src/deprecated/grib_nearest_class_regular.cc @@ -0,0 +1,109 @@ +static int find(grib_nearest* nearest, grib_handle* h, + double inlat, double inlon,unsigned long flags, + double* outlats,double* outlons, + double *values,double *distances,int* indexes, size_t *len) { + grib_nearest_regular* self = (grib_nearest_regular*) nearest; + int ret=0,kk=0,ii=0,jj=0; + size_t nvalues=0; + double radiusInKm; + + if ((ret = grib_nearest_get_radius(h, &radiusInKm)) != GRIB_SUCCESS) + return ret; + + if (!nearest->h || (flags & GRIB_NEAREST_SAME_DATA)==0 || nearest->h!=h) { + grib_iterator* iter=NULL; + double lat=0,lon=0; + + if( (ret = grib_get_size(h,self->values_key,&nvalues))!= GRIB_SUCCESS) + return ret; + nearest->values_count = nvalues; + if (nearest->values) grib_context_free(nearest->context,nearest->values); + nearest->values = grib_context_malloc(h->context,nvalues*sizeof(double)); + if (!nearest->values) return GRIB_OUT_OF_MEMORY; + + ret=grib_get_double_array_internal( h,self->values_key, + nearest->values,&(nearest->values_count)); + if (ret!=GRIB_SUCCESS) grib_context_log(nearest->context,GRIB_LOG_ERROR, + "nearest: unable to get values array"); + + if (!nearest->h || (flags & GRIB_NEAREST_SAME_GRID)==0) { + double dummy=0; + double olat=1.e10, olon=1.e10; + int ilat=0,ilon=0; + long n=0; + + if( (ret = grib_get_long(h,self->Ni,&n))!= GRIB_SUCCESS) + return ret; + self->lons_count=n; + + if( (ret = grib_get_long(h,self->Nj,&n))!= GRIB_SUCCESS) + return ret; + self->lats_count=n; + + if (self->lats) grib_context_free(nearest->context,self->lats); + self->lats=grib_context_malloc( nearest->context, + self->lats_count* sizeof(double)); + if (!self->lats) return GRIB_OUT_OF_MEMORY; + + if (self->lons) grib_context_free(nearest->context,self->lons); + self->lons=grib_context_malloc( nearest->context, + self->lons_count*sizeof(double)); + if (!self->lons) return GRIB_OUT_OF_MEMORY; + + iter=grib_iterator_new(h,0,&ret); + if (ret) { + grib_context_log(nearest->context,GRIB_LOG_ERROR,"unable to create iterator"); + return ret; + } + while(grib_iterator_next(iter,&lat,&lon,&dummy)) { + if (olat != lat) { + self->lats[ilat++]=lat; + olat=lat; + } + if (ilonlons_count && olon != lon) { + self->lons[ilon++]=lon; + olon=lon; + } + } + grib_iterator_delete(iter); + + } + nearest->h=h; + } + + if (!self->distances || (flags & GRIB_NEAREST_SAME_POINT)==0 + || (flags & GRIB_NEAREST_SAME_GRID)==0) { + + grib_binary_search(self->lats,self->lats_count-1,inlat, + &(self->j[0]),&(self->j[1])); + grib_binary_search(self->lons,self->lons_count-1,inlon, + &(self->i[0]),&(self->i[1])); + if (!self->distances) + self->distances=(double*)grib_context_malloc( nearest->context,NUM_NEIGHBOURS*sizeof(double)); + if (!self->k) + self->k=(int*)grib_context_malloc( nearest->context,NUM_NEIGHBOURS*sizeof(int)); + kk=0; + for (ii=0;ii<2;ii++) { + for (jj=0;jj<2;jj++) { + self->k[kk]=self->i[ii]+self->lons_count*self->j[jj]-1; + self->distances[kk]=geographic_distance_spherical(radius,inlon,inlat, + self->lons[self->i[ii]],self->lats[self->j[jj]]); + kk++; + } + } + } + + kk=0; + for (ii=0;ii<2;ii++) { + for (jj=0;jj<2;jj++) { + distances[kk]=self->distances[kk]; + outlats[kk]=self->lats[self->j[jj]]; + outlons[kk]=self->lons[self->i[ii]]; + values[kk]=nearest->values[self->k[kk]]; + indexes[kk]=self->k[kk]; + kk++; + } + } + + return GRIB_SUCCESS; +} diff --git a/src/grib_nearest_class_regular.cc b/src/grib_nearest_class_regular.cc index ab2793181..4e007ce7a 100644 --- a/src/grib_nearest_class_regular.cc +++ b/src/grib_nearest_class_regular.cc @@ -102,117 +102,6 @@ static int init(grib_nearest* nearest, grib_handle* h, grib_arguments* args) return 0; } -#if 0 -static int find(grib_nearest* nearest, grib_handle* h, - double inlat, double inlon,unsigned long flags, - double* outlats,double* outlons, - double *values,double *distances,int* indexes, size_t *len) { - grib_nearest_regular* self = (grib_nearest_regular*) nearest; - int ret=0,kk=0,ii=0,jj=0; - size_t nvalues=0; - double radiusInKm; - - if ((ret = grib_nearest_get_radius(h, &radiusInKm)) != GRIB_SUCCESS) - return ret; - - if (!nearest->h || (flags & GRIB_NEAREST_SAME_DATA)==0 || nearest->h!=h) { - grib_iterator* iter=NULL; - double lat=0,lon=0; - - if( (ret = grib_get_size(h,self->values_key,&nvalues))!= GRIB_SUCCESS) - return ret; - nearest->values_count = nvalues; - if (nearest->values) grib_context_free(nearest->context,nearest->values); - nearest->values = grib_context_malloc(h->context,nvalues*sizeof(double)); - if (!nearest->values) return GRIB_OUT_OF_MEMORY; - - ret=grib_get_double_array_internal( h,self->values_key, - nearest->values,&(nearest->values_count)); - if (ret!=GRIB_SUCCESS) grib_context_log(nearest->context,GRIB_LOG_ERROR, - "nearest: unable to get values array"); - - if (!nearest->h || (flags & GRIB_NEAREST_SAME_GRID)==0) { - double dummy=0; - double olat=1.e10, olon=1.e10; - int ilat=0,ilon=0; - long n=0; - - if( (ret = grib_get_long(h,self->Ni,&n))!= GRIB_SUCCESS) - return ret; - self->lons_count=n; - - if( (ret = grib_get_long(h,self->Nj,&n))!= GRIB_SUCCESS) - return ret; - self->lats_count=n; - - if (self->lats) grib_context_free(nearest->context,self->lats); - self->lats=grib_context_malloc( nearest->context, - self->lats_count* sizeof(double)); - if (!self->lats) return GRIB_OUT_OF_MEMORY; - - if (self->lons) grib_context_free(nearest->context,self->lons); - self->lons=grib_context_malloc( nearest->context, - self->lons_count*sizeof(double)); - if (!self->lons) return GRIB_OUT_OF_MEMORY; - - iter=grib_iterator_new(h,0,&ret); - if (ret) { - grib_context_log(nearest->context,GRIB_LOG_ERROR,"unable to create iterator"); - return ret; - } - while(grib_iterator_next(iter,&lat,&lon,&dummy)) { - if (olat != lat) { - self->lats[ilat++]=lat; - olat=lat; - } - if (ilonlons_count && olon != lon) { - self->lons[ilon++]=lon; - olon=lon; - } - } - grib_iterator_delete(iter); - - } - nearest->h=h; - } - - if (!self->distances || (flags & GRIB_NEAREST_SAME_POINT)==0 - || (flags & GRIB_NEAREST_SAME_GRID)==0) { - - grib_binary_search(self->lats,self->lats_count-1,inlat, - &(self->j[0]),&(self->j[1])); - grib_binary_search(self->lons,self->lons_count-1,inlon, - &(self->i[0]),&(self->i[1])); - if (!self->distances) - self->distances=(double*)grib_context_malloc( nearest->context,NUM_NEIGHBOURS*sizeof(double)); - if (!self->k) - self->k=(int*)grib_context_malloc( nearest->context,NUM_NEIGHBOURS*sizeof(int)); - kk=0; - for (ii=0;ii<2;ii++) { - for (jj=0;jj<2;jj++) { - self->k[kk]=self->i[ii]+self->lons_count*self->j[jj]-1; - self->distances[kk]=geographic_distance_spherical(radius,inlon,inlat, - self->lons[self->i[ii]],self->lats[self->j[jj]]); - kk++; - } - } - } - - kk=0; - for (ii=0;ii<2;ii++) { - for (jj=0;jj<2;jj++) { - distances[kk]=self->distances[kk]; - outlats[kk]=self->lats[self->j[jj]]; - outlons[kk]=self->lons[self->i[ii]]; - values[kk]=nearest->values[self->k[kk]]; - indexes[kk]=self->k[kk]; - kk++; - } - } - - return GRIB_SUCCESS; -} -#else static bool is_rotated_grid(grib_handle* h) { long is_rotated = 0; @@ -222,6 +111,9 @@ static bool is_rotated_grid(grib_handle* h) return false; } +// Old implementation in +// src/deprecated/grib_nearest_class_regular.cc +// static int find(grib_nearest* nearest, grib_handle* h, double inlat, double inlon, unsigned long flags, double* outlats, double* outlons, @@ -467,7 +359,6 @@ static int find(grib_nearest* nearest, grib_handle* h, return GRIB_SUCCESS; } -#endif static int destroy(grib_nearest* nearest) { From 546f1d8cf3b27143d6a085f8bf1beb0b0acf034a Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sat, 24 Jun 2023 13:32:21 +0100 Subject: [PATCH 320/378] Dead code removal --- src/grib_bits_any_endian_simple.cc | 3 +- src/grib_iterator_class_gaussian.cc | 59 +++---- src/grib_memory.cc | 22 +-- src/grib_parse_utils.cc | 262 ++++++++++++++-------------- 4 files changed, 166 insertions(+), 180 deletions(-) diff --git a/src/grib_bits_any_endian_simple.cc b/src/grib_bits_any_endian_simple.cc index e7291c283..c01516bc0 100644 --- a/src/grib_bits_any_endian_simple.cc +++ b/src/grib_bits_any_endian_simple.cc @@ -10,7 +10,6 @@ /*************************************************************************** * Enrico Fucile - 19.06.2007 * - * * ***************************************************************************/ #include "grib_bits_any_endian_simple.h" @@ -84,7 +83,7 @@ int grib_decode_long_array(const unsigned char* p, long* bitp, long bitsPerValue // unsigned long lvalue = 0; // double x; -//#if 0 +//#if OLD_REF_CODE // [> slow reference code <] // int j=0; // for(i=0;i < n_vals;i++) { diff --git a/src/grib_iterator_class_gaussian.cc b/src/grib_iterator_class_gaussian.cc index ede3dba7f..3c6860328 100644 --- a/src/grib_iterator_class_gaussian.cc +++ b/src/grib_iterator_class_gaussian.cc @@ -191,34 +191,31 @@ static void binary_search_gaussian_latitudes(const double array[], const unsigne *j = -1; /* Not found */ } -#if 0 -static void binary_search_old(const double xx[], const unsigned long n, double x, long* j) -{ - /*This routine works only on descending ordered arrays*/ - unsigned long ju, jm, jl; - jl = 0; - ju = n; - if (fabs(x - xx[0]) < EPSILON) { - *j = 0; - return; - } - if (fabs(x - xx[n]) < EPSILON) { - *j = n; - return; - } - - while (ju - jl > 1) { - jm = (ju + jl) >> 1; - if (fabs(x - xx[jm]) < EPSILON) { - /* found something close enough. We're done */ - *j = jm; - return; - } - if (x < xx[jm]) - jl = jm; - else - ju = jm; - } - *j = jl; -} -#endif +// static void binary_search_old(const double xx[], const unsigned long n, double x, long* j) +// { +// /*This routine works only on descending ordered arrays*/ +// unsigned long ju, jm, jl; +// jl = 0; +// ju = n; +// if (fabs(x - xx[0]) < EPSILON) { +// *j = 0; +// return; +// } +// if (fabs(x - xx[n]) < EPSILON) { +// *j = n; +// return; +// } +// while (ju - jl > 1) { +// jm = (ju + jl) >> 1; +// if (fabs(x - xx[jm]) < EPSILON) { +// /* found something close enough. We're done */ +// *j = jm; +// return; +// } +// if (x < xx[jm]) +// jl = jm; +// else +// ju = jm; +// } +// *j = jl; +// } diff --git a/src/grib_memory.cc b/src/grib_memory.cc index a73e965a8..f32bede58 100644 --- a/src/grib_memory.cc +++ b/src/grib_memory.cc @@ -208,26 +208,20 @@ static void* fast_realloc(void* p, size_t s, mempool* pool) return q; } -#if 0 /* - void fast_memory_info(const char *title,mempool *pool) - { + void fast_memory_info(const char *title,mempool *pool) { memblk *m = (memblk*)pool->priv; int count = 0; int size = 0; - while(m) - { - count++; - size += m->size; - m = m->next; + while(m) { + count++; + size += m->size; + m = m->next; } - marslog(LOG_INFO,"%s : %sbytes %d blocks", - title, - bytename(size),count); + marslog(LOG_INFO,"%s : %sbytes %d blocks", title, bytename(size),count); } - void memory_info() - { + void memory_info() { memblk *r = reserve; long size = 0; while(r) @@ -237,13 +231,11 @@ static void* fast_realloc(void* p, size_t s, mempool* pool) size += r->size; r = r->next; } - marslog(LOG_INFO,"Total large : %sbytes",bytename(size)); fast_memory_info("Transient memory",transient_mem); fast_memory_info("Permanent memory",permanent_mem); } */ -#endif void* grib_transient_malloc(const grib_context* c, size_t s) { diff --git a/src/grib_parse_utils.cc b/src/grib_parse_utils.cc index 93d4ce50d..a3eb1422b 100644 --- a/src/grib_parse_utils.cc +++ b/src/grib_parse_utils.cc @@ -158,15 +158,15 @@ int grib_recompose_name(grib_handle* h, grib_accessor* observer, const char* una else if (uname[i] == '[') mode = 0; else { -#if 0 - int llen=strlen(fname); /* The strlen cost is too high */ - fname[llen]=uname[i]; - fname[llen+1]='\0'; -#else - /* Performance: faster to avoid call to strlen. Append to end */ + // Old way: Slow; The strlen cost is too high + //int llen=strlen(fname); + //fname[llen]=uname[i]; + //fname[llen+1]='\0'; + + // Faster to avoid call to strlen. Append to end *ptrEnd_fname++ = uname[i]; *ptrEnd_fname = '\0'; -#endif + type = GRIB_TYPE_STRING; } i++; @@ -175,131 +175,129 @@ int grib_recompose_name(grib_handle* h, grib_accessor* observer, const char* una return GRIB_SUCCESS; } -#if 0 -int grib_accessor_print(grib_accessor* a, const char* name, int type, const char* format, - const char* separator, int maxcols, int* newline, FILE* out) -{ - size_t size = 0; - char* sval = NULL; - char* p = NULL; - double* dval = 0; - long* lval = 0; - char sbuf[1024] = {0,}; - size_t replen = 0; - int ret = 0; - char* myformat = NULL; - char* myseparator = NULL; - char double_format[] = "%.12g"; /* default format for printing double keys */ - char long_format[] = "%ld"; /* default format for printing integer keys */ - char default_separator[] = " "; - grib_handle* h = grib_handle_of_accessor(a); - - if (type == -1) - type = grib_accessor_get_native_type(a); - switch (type) { - case GRIB_TYPE_STRING: - replen = sizeof(sbuf) / sizeof(*sbuf); - ret = grib_unpack_string(a, sbuf, &replen); - fprintf(out, "%s", sbuf); - break; - case GRIB_TYPE_DOUBLE: - myformat = format ? (char*)format : double_format; - myseparator = separator ? (char*)separator : default_separator; - if (name[0] == '/' || name[0] == '#') { - long count; - ret = grib_value_count(a, &count); - size = count; - } - else { - ret = ecc__grib_get_size(h, a, &size); - } - if (ret) return ret; - dval = (double*)grib_context_malloc_clear(h->context, sizeof(double) * size); - if (name[0] == '/' || name[0] == '#') { - replen = size; - ret = grib_unpack_double(a, dval, &replen); - } - else { - replen = 0; - ret = ecc__grib_get_double_array_internal(h, a, dval, size, &replen); - } - if (replen == 1) - fprintf(out, myformat, dval[0]); - else { - int i = 0; - int cols = 0; - for (i = 0; i < replen; i++) { - *newline = 1; - fprintf(out, myformat, dval[i]); - if (i < replen - 1) - fprintf(out, "%s", myseparator); - cols++; - if (cols >= maxcols) { - fprintf(out, "\n"); - *newline = 1; - cols = 0; - } - } - } - grib_context_free(h->context, dval); - break; - case GRIB_TYPE_LONG: - myformat = format ? (char*)format : long_format; - myseparator = separator ? (char*)separator : default_separator; - if (name[0] == '/' || name[0] == '#') { - long count; - ret = grib_value_count(a, &count); - size = count; - } - else { - ret = ecc__grib_get_size(h, a, &size); - } - if (ret) return ret; - lval = (long*)grib_context_malloc_clear(h->context, sizeof(long) * size); - if (name[0] == '/' || name[0] == '#') { - replen = size; - ret = grib_unpack_long(a, lval, &replen); - } - else { - replen = 0; - ret = ecc__grib_get_long_array_internal(h, a, lval, size, &replen); - } - if (replen == 1) - fprintf(out, myformat, lval[0]); - else { - int i = 0; - int cols = 0; - for (i = 0; i < replen; i++) { - *newline = 1; - fprintf(out, myformat, lval[i]); - if (i < replen - 1) - fprintf(out, "%s", myseparator); - cols++; - if (cols >= maxcols) { - fprintf(out, "\n"); - *newline = 1; - cols = 0; - } - } - } - grib_context_free(h->context, lval); - break; - case GRIB_TYPE_BYTES: - replen = a->length; - sval = (char*)grib_context_malloc(h->context, replen * sizeof(char)); - ret = grib_unpack_string(a, sval, &replen); - p = sval; - while ((replen--) > 0) - fprintf(out, "%c", *(p++)); - grib_context_free(h->context, sval); - *newline = 0; - break; - default: - grib_context_log(h->context, GRIB_LOG_WARNING, "grib_accessor_print: Problem to print \"%s\", invalid type %d", a->name, type); - } - return ret; -} -#endif +// int grib_accessor_print(grib_accessor* a, const char* name, int type, const char* format, +// const char* separator, int maxcols, int* newline, FILE* out) +// { +// size_t size = 0; +// char* sval = NULL; +// char* p = NULL; +// double* dval = 0; +// long* lval = 0; +// char sbuf[1024] = {0,}; +// size_t replen = 0; +// int ret = 0; +// char* myformat = NULL; +// char* myseparator = NULL; +// char double_format[] = "%.12g"; /* default format for printing double keys */ +// char long_format[] = "%ld"; /* default format for printing integer keys */ +// char default_separator[] = " "; +// grib_handle* h = grib_handle_of_accessor(a); + +// if (type == -1) +// type = grib_accessor_get_native_type(a); +// switch (type) { +// case GRIB_TYPE_STRING: +// replen = sizeof(sbuf) / sizeof(*sbuf); +// ret = grib_unpack_string(a, sbuf, &replen); +// fprintf(out, "%s", sbuf); +// break; +// case GRIB_TYPE_DOUBLE: +// myformat = format ? (char*)format : double_format; +// myseparator = separator ? (char*)separator : default_separator; +// if (name[0] == '/' || name[0] == '#') { +// long count; +// ret = grib_value_count(a, &count); +// size = count; +// } +// else { +// ret = ecc__grib_get_size(h, a, &size); +// } +// if (ret) return ret; +// dval = (double*)grib_context_malloc_clear(h->context, sizeof(double) * size); +// if (name[0] == '/' || name[0] == '#') { +// replen = size; +// ret = grib_unpack_double(a, dval, &replen); +// } +// else { +// replen = 0; +// ret = ecc__grib_get_double_array_internal(h, a, dval, size, &replen); +// } +// if (replen == 1) +// fprintf(out, myformat, dval[0]); +// else { +// int i = 0; +// int cols = 0; +// for (i = 0; i < replen; i++) { +// *newline = 1; +// fprintf(out, myformat, dval[i]); +// if (i < replen - 1) +// fprintf(out, "%s", myseparator); +// cols++; +// if (cols >= maxcols) { +// fprintf(out, "\n"); +// *newline = 1; +// cols = 0; +// } +// } +// } +// grib_context_free(h->context, dval); +// break; +// case GRIB_TYPE_LONG: +// myformat = format ? (char*)format : long_format; +// myseparator = separator ? (char*)separator : default_separator; +// if (name[0] == '/' || name[0] == '#') { +// long count; +// ret = grib_value_count(a, &count); +// size = count; +// } +// else { +// ret = ecc__grib_get_size(h, a, &size); +// } +// if (ret) return ret; +// lval = (long*)grib_context_malloc_clear(h->context, sizeof(long) * size); +// if (name[0] == '/' || name[0] == '#') { +// replen = size; +// ret = grib_unpack_long(a, lval, &replen); +// } +// else { +// replen = 0; +// ret = ecc__grib_get_long_array_internal(h, a, lval, size, &replen); +// } +// if (replen == 1) +// fprintf(out, myformat, lval[0]); +// else { +// int i = 0; +// int cols = 0; +// for (i = 0; i < replen; i++) { +// *newline = 1; +// fprintf(out, myformat, lval[i]); +// if (i < replen - 1) +// fprintf(out, "%s", myseparator); +// cols++; +// if (cols >= maxcols) { +// fprintf(out, "\n"); +// *newline = 1; +// cols = 0; +// } +// } +// } +// grib_context_free(h->context, lval); +// break; +// case GRIB_TYPE_BYTES: +// replen = a->length; +// sval = (char*)grib_context_malloc(h->context, replen * sizeof(char)); +// ret = grib_unpack_string(a, sval, &replen); +// p = sval; +// while ((replen--) > 0) +// fprintf(out, "%c", *(p++)); +// grib_context_free(h->context, sval); +// *newline = 0; +// break; +// default: +// grib_context_log(h->context, GRIB_LOG_WARNING, "grib_accessor_print: Problem to print \"%s\", invalid type %d", a->name, type); +// } +// return ret; +// } int grib_accessors_list_print(grib_handle* h, grib_accessors_list* al, const char* name, int type, const char* format, const char* separator, int maxcols, int* newline, FILE* out) From a0d123257eaa780489726d53198cfaf758b8835c Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sat, 24 Jun 2023 17:34:25 +0100 Subject: [PATCH 321/378] Dead code removal --- src/CMakeLists.txt | 1 - src/{ => deprecated}/grib_header_compute.cc | 0 src/eccodes_prototypes.h | 5 ----- src/grib_db.cc | 9 +++------ src/grib_fieldset.cc | 19 +++++++------------ 5 files changed, 10 insertions(+), 24 deletions(-) rename src/{ => deprecated}/grib_header_compute.cc (100%) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 1e6301fde..bc6d5d541 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -291,7 +291,6 @@ list( APPEND eccodes_src_files grib_filepool.cc grib_geography.cc grib_handle.cc - grib_header_compute.cc grib_hash_keys.cc grib_io.cc grib_trie.cc diff --git a/src/grib_header_compute.cc b/src/deprecated/grib_header_compute.cc similarity index 100% rename from src/grib_header_compute.cc rename to src/deprecated/grib_header_compute.cc diff --git a/src/eccodes_prototypes.h b/src/eccodes_prototypes.h index 78e51e65b..91706ed27 100644 --- a/src/eccodes_prototypes.h +++ b/src/eccodes_prototypes.h @@ -1070,11 +1070,6 @@ int grib_handle_prepare_action(grib_handle* h, grib_action* a); void grib_multi_support_reset_file(grib_context* c, FILE* f); void grib_multi_support_reset(grib_context* c); -/* grib_header_compute.cc*/ -void print_math(grib_math* m); -void grib_math_delete(grib_context* c, grib_math* m); -grib_math* grib_math_new(grib_context* c, const char* formula, int* err); - /* grib_hash_keys.cc*/ const struct grib_keys_hash* grib_keys_hash_get(const char* str, size_t len); grib_itrie* grib_hash_keys_new(grib_context* c, int* count); diff --git a/src/grib_db.cc b/src/grib_db.cc index 84c941076..56571c104 100644 --- a/src/grib_db.cc +++ b/src/grib_db.cc @@ -449,12 +449,9 @@ int grib_db_apply_where(grib_fieldset* set) if (!set) return GRIB_INVALID_ARGUMENT; - /* - m=grib_math_new(set->context,where_string,&err); - - print_math(m); - printf("\n"); - */ + // m=grib_math_new(set->context,where_string,&err); + // print_math(m); + // printf("\n"); if (set->filter) grib_db_delete_int_array(set->filter); diff --git a/src/grib_fieldset.cc b/src/grib_fieldset.cc index 0c7ba5652..88eabeb7b 100644 --- a/src/grib_fieldset.cc +++ b/src/grib_fieldset.cc @@ -411,21 +411,16 @@ static grib_fieldset* grib_fieldset_create_from_order_by(grib_context* c, grib_o return set; } -/* Experimental: Needs more work */ +// Experimental: Needs more work int grib_fieldset_apply_where(grib_fieldset* set, const char* where_string) { - int err = GRIB_NOT_IMPLEMENTED; - grib_math* m = NULL; + // grib_math* m = NULL; + // m = grib_math_new(set->context, where_string, &err); + // if (err || !m) return err; - if (!set) - return GRIB_INVALID_ARGUMENT; - - m = grib_math_new(set->context, where_string, &err); - if (err || !m) return err; - - print_math(m); - printf("\n"); - grib_math_delete(set->context, m); + // print_math(m); + // printf("\n"); + // grib_math_delete(set->context, m); return GRIB_NOT_IMPLEMENTED; } From cbe18dfedac93dc94fc5dd482eadd9d2599dfcfe Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sat, 24 Jun 2023 18:19:52 +0100 Subject: [PATCH 322/378] Dead code removal --- src/eccodes_prototypes.h | 2 -- src/grib_viarray.cc | 36 +++++++++++++++--------------------- 2 files changed, 15 insertions(+), 23 deletions(-) diff --git a/src/eccodes_prototypes.h b/src/eccodes_prototypes.h index 91706ed27..ff623067c 100644 --- a/src/eccodes_prototypes.h +++ b/src/eccodes_prototypes.h @@ -267,8 +267,6 @@ grib_viarray* grib_viarray_new(grib_context* c, size_t size, size_t incsize); grib_viarray* grib_viarray_push(grib_context* c, grib_viarray* v, grib_iarray* val); void grib_viarray_delete(grib_context* c, grib_viarray* v); void grib_viarray_delete_content(grib_context* c, grib_viarray* v); -grib_iarray** grib_viarray_get_array(grib_context* c, grib_viarray* v); -size_t grib_viarray_used_size(grib_viarray* v); /* grib_accessor_class_array.cc*/ diff --git a/src/grib_viarray.cc b/src/grib_viarray.cc index dde75f8de..5a9aa4ddb 100644 --- a/src/grib_viarray.cc +++ b/src/grib_viarray.cc @@ -8,12 +8,6 @@ * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. */ -/*************************************************************************** - * - * Enrico Fucile - * - ***************************************************************************/ - #include "grib_api_internal.h" /* For debugging purposes */ @@ -110,19 +104,19 @@ void grib_viarray_delete_content(grib_context* c, grib_viarray* v) v->n = 0; } -grib_iarray** grib_viarray_get_array(grib_context* c, grib_viarray* v) -{ - grib_iarray** ret; - size_t i = 0; - if (!v) - return NULL; - ret = (grib_iarray**)grib_context_malloc_clear(c, sizeof(grib_iarray*) * v->n); - for (i = 0; i < v->n; i++) - ret[i] = v->v[i]; - return ret; -} +// grib_iarray** grib_viarray_get_array(grib_context* c, grib_viarray* v) +// { +// grib_iarray** ret; +// size_t i = 0; +// if (!v) +// return NULL; +// ret = (grib_iarray**)grib_context_malloc_clear(c, sizeof(grib_iarray*) * v->n); +// for (i = 0; i < v->n; i++) +// ret[i] = v->v[i]; +// return ret; +// } -size_t grib_viarray_used_size(grib_viarray* v) -{ - return v->n; -} +// size_t grib_viarray_used_size(grib_viarray* v) +// { +// return v->n; +// } From 3c936cd539ba9f27d67213712ba52110992127dd Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sat, 24 Jun 2023 22:03:50 +0100 Subject: [PATCH 323/378] Testing: codes_info --- tests/CMakeLists.txt | 1 + tests/codes_info.sh | 35 +++++++++++++++++++++++++++++++++++ 2 files changed, 36 insertions(+) create mode 100755 tests/codes_info.sh diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 08deb84d5..d3ebf38ba 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -71,6 +71,7 @@ if( HAVE_BUILD_TOOLS ) # These tests do not require any data downloads # and are generally quick list(APPEND tests_basic + codes_info unit_tests julian grib_dump_samples diff --git a/tests/codes_info.sh b/tests/codes_info.sh new file mode 100755 index 000000000..610232cd5 --- /dev/null +++ b/tests/codes_info.sh @@ -0,0 +1,35 @@ +#!/bin/sh +# (C) Copyright 2005- ECMWF. +# +# This software is licensed under the terms of the Apache Licence Version 2.0 +# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. +# +# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by +# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. +# + +. ./include.ctest.sh + +label="codes_info_test" +tempLog=temp.$label.log + +${tools_dir}/codes_info > $tempLog +grep -q "ecCodes Version" $tempLog + +# Check output is nonzero +result=`${tools_dir}/codes_info -v` +[ -n "$result" ] +result=`${tools_dir}/codes_info -s` +[ -n "$result" ] + +# Invalid option +set +e +${tools_dir}/codes_info -X > $tempLog 2>&1 +status=$? +set -e +[ $status -eq 1 ] +grep -q "illegal option" $tempLog + + +# Clean up +rm -f $tempLog From 4c46a76d115fe34fd733fe67c4c5a964c54c1708 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sat, 24 Jun 2023 22:21:25 +0100 Subject: [PATCH 324/378] Fix broken test --- tests/codes_info.sh | 1 - 1 file changed, 1 deletion(-) diff --git a/tests/codes_info.sh b/tests/codes_info.sh index 610232cd5..2c89ae6bc 100755 --- a/tests/codes_info.sh +++ b/tests/codes_info.sh @@ -28,7 +28,6 @@ ${tools_dir}/codes_info -X > $tempLog 2>&1 status=$? set -e [ $status -eq 1 ] -grep -q "illegal option" $tempLog # Clean up From 7aa34831f8352f42567ca3fa942efbd9174eec5d Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sun, 25 Jun 2023 12:17:55 +0100 Subject: [PATCH 325/378] Scripts: Legacy parameter encodings --- ...gacy_def.sh => create_legacy_ecmf_defs.sh} | 4 +- definitions/create_legacy_wmo_defs.sh | 80 +++++++++++++++++++ 2 files changed, 82 insertions(+), 2 deletions(-) rename definitions/{create_legacy_def.sh => create_legacy_ecmf_defs.sh} (96%) create mode 100755 definitions/create_legacy_wmo_defs.sh diff --git a/definitions/create_legacy_def.sh b/definitions/create_legacy_ecmf_defs.sh similarity index 96% rename from definitions/create_legacy_def.sh rename to definitions/create_legacy_ecmf_defs.sh index 23300813c..3d257ec6c 100755 --- a/definitions/create_legacy_def.sh +++ b/definitions/create_legacy_ecmf_defs.sh @@ -2,7 +2,7 @@ set -eu # Usage: -# create_legacy_def.sh $paramId $paramId... +# $0 $paramId $paramId... # # This script will insert the local ECMWF GRIB2 representation # for each paramId into the files: @@ -31,7 +31,7 @@ fi pids="$@" sample2=samples/GRIB2.tmpl -temp=$TMPDIR/temp.create_legacy_def.grib +temp=$TMPDIR/temp.create_legacy_ecmf_def.grib defs=definitions/grib2/localConcepts/ecmf output_def() diff --git a/definitions/create_legacy_wmo_defs.sh b/definitions/create_legacy_wmo_defs.sh new file mode 100755 index 000000000..5a9976fd6 --- /dev/null +++ b/definitions/create_legacy_wmo_defs.sh @@ -0,0 +1,80 @@ +: +set -eu + +# Usage: +# create_legacy_def.sh $paramId $paramId... +# +# This script will insert the local ECMWF GRIB2 representation +# for each paramId into the files: +# definitions/grib2/paramId.legacy.def +# definitions/grib2/shortName.legacy.def +# etc +# This is normally run for those GRIB2 parameters which had +# a WMO representation which later became deprecated. +# +# Assumptions: +# The ecCodes tools grib_set and grib_get are available +# + +if [ $# -eq 0 ]; then + echo "Usage: $0 pid1 pid2 ..." 2>&1 + exit 1 +fi + +# Input list of paramId values +pids="$@" + +sample2=samples/GRIB2.tmpl +temp=$TMPDIR/temp.create_legacy_def.grib +defs=definitions/grib2 + +create_legacy_def() +{ + _name=$1 + _dir=$2 + _file=$3 + + _legacy=$(echo $_file | sed -e 's/\.def/.legacy.def/') + #echo "Doing |$dir| f=|$file| l=|$legacy|" + grep -q "^#$_name$" $_dir/$_file + if [ $? -eq 0 ]; then + _name="#$_name" + found=1 + echo "$_name" >> $_dir/$_legacy + sed -e "1,/^$_name$/d" -e '/#/,$d' $_dir/$_file | tr -d '\t' >> $_dir/$_legacy + fi +} + +create_legacy_defs() +{ + name="$1" + create_legacy_def "$name" $defs paramId.def + create_legacy_def "$name" $defs shortName.def + create_legacy_def "$name" $defs name.def + create_legacy_def "$name" $defs units.def +} + +# For each paramId, get its full name +count=0 +for pid in $pids; do + echo "Doing $pid ..." + set +e + grib_set -s paramId=$pid $sample2 $temp 2>/dev/null + status=$? + set -e + if [ $status -ne 0 ]; then + grib_set -s stepType=accum,paramId=$pid $sample2 $temp + fi + name=$(grib_get -p name $temp) + count=$((count+1)) + rm -f $temp + + create_legacy_defs "$name" +done + + +echo "Number of legacy parameters added: $count" +if [ $count -gt 0 ]; then + echo "Files updated. Check directory $defs" +fi +rm -f $temp From ccf5ed8f55ea8e43efa7008db29291dae22d7054 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sun, 25 Jun 2023 12:27:04 +0100 Subject: [PATCH 326/378] Scripts: Legacy parameter encodings --- definitions/create_legacy_wmo_defs.sh | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/definitions/create_legacy_wmo_defs.sh b/definitions/create_legacy_wmo_defs.sh index 5a9976fd6..940e5a5bb 100755 --- a/definitions/create_legacy_wmo_defs.sh +++ b/definitions/create_legacy_wmo_defs.sh @@ -4,16 +4,17 @@ set -eu # Usage: # create_legacy_def.sh $paramId $paramId... # -# This script will insert the local ECMWF GRIB2 representation -# for each paramId into the files: +# This script will insert the WMO GRIB2 representation +# for each given paramId into the files: # definitions/grib2/paramId.legacy.def # definitions/grib2/shortName.legacy.def -# etc -# This is normally run for those GRIB2 parameters which had +# etc. +# This is run for those GRIB2 parameters which had # a WMO representation which later became deprecated. # # Assumptions: # The ecCodes tools grib_set and grib_get are available +# TMPDIR is defined and points to a temporary directory # if [ $# -eq 0 ]; then @@ -36,10 +37,12 @@ create_legacy_def() _legacy=$(echo $_file | sed -e 's/\.def/.legacy.def/') #echo "Doing |$dir| f=|$file| l=|$legacy|" + # First check the given name exists in the file grep -q "^#$_name$" $_dir/$_file if [ $? -eq 0 ]; then _name="#$_name" found=1 + # Copy the parameter definition from the file to its legacy version echo "$_name" >> $_dir/$_legacy sed -e "1,/^$_name$/d" -e '/#/,$d' $_dir/$_file | tr -d '\t' >> $_dir/$_legacy fi @@ -52,12 +55,13 @@ create_legacy_defs() create_legacy_def "$name" $defs shortName.def create_legacy_def "$name" $defs name.def create_legacy_def "$name" $defs units.def + create_legacy_def "$name" $defs cfVarName.def } # For each paramId, get its full name count=0 for pid in $pids; do - echo "Doing $pid ..." + echo "Doing paramId=$pid ..." set +e grib_set -s paramId=$pid $sample2 $temp 2>/dev/null status=$? From 91949de28dcfba698d2ba893770dcecd7db163af Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sun, 25 Jun 2023 12:30:56 +0100 Subject: [PATCH 327/378] ECC-1504: Add cfVarName.legacy.def --- definitions/grib2/cfVarName.legacy.def | 54 ++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 definitions/grib2/cfVarName.legacy.def diff --git a/definitions/grib2/cfVarName.legacy.def b/definitions/grib2/cfVarName.legacy.def new file mode 100644 index 000000000..ab51bf25c --- /dev/null +++ b/definitions/grib2/cfVarName.legacy.def @@ -0,0 +1,54 @@ +#Volumetric soil moisture content +'soilw' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 9 ; + } +#Upper layer soil temperature +'uplst' = { + discipline = 2 ; + parameterCategory = 3 ; + parameterNumber = 1 ; + } +#Upper layer soil moisture +'uplsm' = { + discipline = 2 ; + parameterCategory = 3 ; + parameterNumber = 2 ; + } +#Lower layer soil moisture +'lowlsm' = { + discipline = 2 ; + parameterCategory = 3 ; + parameterNumber = 3 ; + } +#Bottom layer soil temperature +'botlst' = { + discipline = 2 ; + parameterCategory = 3 ; + parameterNumber = 4 ; + } +#Liquid volumetric soil moisture (non-frozen) +'soill' = { + discipline = 2 ; + parameterCategory = 3 ; + parameterNumber = 5 ; + } +#Transpiration stress-onset (soil moisture) +'smref' = { + discipline = 2 ; + parameterCategory = 3 ; + parameterNumber = 7 ; + } +#Direct evaporation cease (soil moisture) +'smdry' = { + discipline = 2 ; + parameterCategory = 3 ; + parameterNumber = 8 ; + } +#Soil porosity +'poros' = { + discipline = 2 ; + parameterCategory = 3 ; + parameterNumber = 9 ; + } From 91eee4e164f941e83bbac6664fe7518ad9138502 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sun, 25 Jun 2023 15:17:53 +0100 Subject: [PATCH 328/378] Dead code removal --- src/grib_bits_any_endian.cc | 22 +++++++++++----------- src/grib_bits_any_endian_omp.cc | 28 +++++++++++++--------------- src/grib_loader_from_array.cc | 2 +- src/grib_loader_from_handle.cc | 14 ++++++-------- src/md5.cc | 2 +- 5 files changed, 32 insertions(+), 36 deletions(-) diff --git a/src/grib_bits_any_endian.cc b/src/grib_bits_any_endian.cc index 5f01b4106..6b9b810b5 100644 --- a/src/grib_bits_any_endian.cc +++ b/src/grib_bits_any_endian.cc @@ -10,7 +10,6 @@ /*************************************************************************** * Enrico Fucile - 19.06.2007 * - * * ***************************************************************************/ #ifdef ECCODES_ON_WINDOWS @@ -223,15 +222,16 @@ unsigned long grib_decode_unsigned_long(const unsigned char* p, long* bitp, long return grib_decode_unsigned_long(p, bitp, bits); } -#if 0 - long ret2 = 0; - for(i=0; i< nbits;i++){ - ret2 <<= 1; - if(grib_get_bit( p, *bitp)) ret2 += 1; - *bitp += 1; - } - *bitp -= nbits; -#else + + // Old algorithm: + // long ret2 = 0; + // for(i=0; i< nbits;i++){ + // ret2 <<= 1; + // if(grib_get_bit( p, *bitp)) ret2 += 1; + // *bitp += 1; + // } + // *bitp -= nbits; + mask = BIT_MASK(nbits); /* pi: position of bitp in p[]. >>3 == /8 */ pi = oc; @@ -256,7 +256,7 @@ unsigned long grib_decode_unsigned_long(const unsigned char* p, long* bitp, long /* remove leading bits (from previous value) */ ret &= mask; /* printf("%d %d\n", ret2, ret);*/ -#endif + return ret; } diff --git a/src/grib_bits_any_endian_omp.cc b/src/grib_bits_any_endian_omp.cc index fa726a19b..31e2c4df5 100644 --- a/src/grib_bits_any_endian_omp.cc +++ b/src/grib_bits_any_endian_omp.cc @@ -10,7 +10,6 @@ /*************************************************************************** * Enrico Fucile - 19.06.2007 * - * * ***************************************************************************/ /** * decode an array of n_vals values from a octet-stream @@ -81,20 +80,19 @@ int grib_decode_double_array(const unsigned char* p, long* bitp, long bitsPerVal unsigned long lvalue = 0; double x; -#if 0 - /* slow reference code */ - int j=0; - for(i=0;i < n_vals;i++) { - lvalue=0; - for(j=0; j< bitsPerValue;j++){ - lvalue <<= 1; - if(grib_get_bit( p, *bitp)) lvalue += 1; - *bitp += 1; - } - x=((lvalue*s)+reference_value)*d; - val[i] = (double)x; - } -#endif +// Slow reference code +// int j=0; +// for(i=0;i < n_vals;i++) { +// lvalue=0; +// for(j=0; j< bitsPerValue;j++){ +// lvalue <<= 1; +// if(grib_get_bit( p, *bitp)) lvalue += 1; +// *bitp += 1; +// } +// x=((lvalue*s)+reference_value)*d; +// val[i] = (double)x; +// } + unsigned long mask = BIT_MASK(bitsPerValue); /* pi: position of bitp in p[]. >>3 == /8 */ diff --git a/src/grib_loader_from_array.cc b/src/grib_loader_from_array.cc index 6db8c8bac..c60f233d1 100644 --- a/src/grib_loader_from_array.cc +++ b/src/grib_loader_from_array.cc @@ -172,7 +172,7 @@ int grib_lookup_long_from_array(grib_context* gc, grib_loader* loader, const cha // grib_context_log(h->context, GRIB_LOG_ERROR, "Unable to set %s to double, wrong type (%d)", // ga->name, type); // } -// #if 0 +// #if defined(OLD_IMPL) // switch(grib_accessor_get_native_type(ga)) // { // case GRIB_TYPE_STRING: diff --git a/src/grib_loader_from_handle.cc b/src/grib_loader_from_handle.cc index c3510c1c4..ccda34362 100644 --- a/src/grib_loader_from_handle.cc +++ b/src/grib_loader_from_handle.cc @@ -96,14 +96,12 @@ int grib_init_accessor_from_handle(grib_loader* loader, grib_accessor* ga, grib_ return GRIB_SUCCESS; } -#if 0 - if(h->values) - if(copy_values(h,ga) == GRIB_SUCCESS) - { - grib_context_log(h->context,GRIB_LOG_DEBUG, "Copying: setting %s to multi-set-value", ga->name); - return GRIB_SUCCESS; - } -#endif +// if(h->values) +// if(copy_values(h,ga) == GRIB_SUCCESS) +// { +// grib_context_log(h->context,GRIB_LOG_DEBUG, "Copying: setting %s to multi-set-value", ga->name); +// return GRIB_SUCCESS; +// } #if 0 if(h->loader) diff --git a/src/md5.cc b/src/md5.cc index b039fa477..1d04a291b 100644 --- a/src/md5.cc +++ b/src/md5.cc @@ -275,7 +275,7 @@ void grib_md5_end(grib_md5_state* s, char* digest) U(s->h3 & 0xff), U((s->h3 >> 8) & 0xff), U((s->h3 >> 16) & 0xff), U((s->h3 >> 24) & 0xff)); } -#if 0 +#if defined(TESTING_MD5) main(int argc, char **argv) { From 76e97ca76f1e4e9b404391d3839598dd34548fba Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sun, 25 Jun 2023 16:01:22 +0100 Subject: [PATCH 329/378] Dead code removal --- tools/grib_compare.cc | 8 ------- tools/grib_options.cc | 46 ++++++++++++++++++++--------------------- tools/grib_set.cc | 16 +++++++------- tools/grib_to_netcdf.cc | 44 +++++++++++++++------------------------ tools/gts_compare.cc | 40 +++++++++++++++++------------------ tools/gts_copy.cc | 14 ------------- tools/metar_compare.cc | 22 -------------------- tools/metar_copy.cc | 14 ------------- 8 files changed, 65 insertions(+), 139 deletions(-) diff --git a/tools/grib_compare.cc b/tools/grib_compare.cc index 8fe18585d..2e6c4c274 100644 --- a/tools/grib_compare.cc +++ b/tools/grib_compare.cc @@ -1154,14 +1154,6 @@ static int compare_handles(grib_handle* h1, grib_handle* h2, grib_runtime_option } */ } -#if 0 - { - long of1,of2; /* Debugging: print offset of each handle */ - grib_get_long(h1, "offset", &of1); grib_get_long(h2, "offset", &of2); - printf("of1=%lu of2=%lu\n",of1,of2); - } -#endif - if (headerMode) { const void *msg1 = NULL, *msg2 = NULL; size_t size1 = 0, size2 = 0; diff --git a/tools/grib_options.cc b/tools/grib_options.cc index affc49efc..6f1af95fe 100644 --- a/tools/grib_options.cc +++ b/tools/grib_options.cc @@ -481,27 +481,25 @@ void usage_doxygen(void) exit(1); } -#if 0 -void usage_doxygen(void) { - int i=0; - printf("/*! \\page %s %s\n",tool_name,tool_name); - printf("\\section DESCRIPTION \n%s\n\n",tool_description); - printf("\\section USAGE \n%s \n%s\n\n",tool_name,tool_usage); - printf("\\section OPTIONS\n"); - printf("\n"); - for (i=0;i\n"); - printf("\n", - grib_options[i].id[0], - grib_options_get_args(grib_options[i].id)); - printf("\n"); - printf("", - grib_options_get_help(grib_options[i].id)); - printf("\n"); - } - } - printf("
-%c %s
%s
\n"); - exit(1); -} -#endif +// void usage_doxygen(void) { +// int i=0; +// printf("/*! \\page %s %s\n",tool_name,tool_name); +// printf("\\section DESCRIPTION \n%s\n\n",tool_description); +// printf("\\section USAGE \n%s \n%s\n\n",tool_name,tool_usage); +// printf("\\section OPTIONS\n"); +// printf("\n"); +// for (i=0;i\n"); +// printf("\n", +// grib_options[i].id[0], +// grib_options_get_args(grib_options[i].id)); +// printf("\n"); +// printf("", +// grib_options_get_help(grib_options[i].id)); +// printf("\n"); +// } +// } +// printf("
-%c %s
%s
\n"); +// exit(1); +// } diff --git a/tools/grib_set.cc b/tools/grib_set.cc index 1c4ace444..a8e562a21 100644 --- a/tools/grib_set.cc +++ b/tools/grib_set.cc @@ -80,15 +80,13 @@ int grib_tool_init(grib_runtime_options* options) exit(1); } -#if 0 - if (options->outfile && options->outfile->name) { - options->outfile->file = fopen(options->outfile->name,"w"); - if(!options->outfile->file) { - perror(options->outfile->name); - exit(1); - } - } -#endif +// if (options->outfile && options->outfile->name) { +// options->outfile->file = fopen(options->outfile->name,"w"); +// if(!options->outfile->file) { +// perror(options->outfile->name); +// exit(1); +// } +// } return 0; } diff --git a/tools/grib_to_netcdf.cc b/tools/grib_to_netcdf.cc index 29df9d385..7a83da0b7 100644 --- a/tools/grib_to_netcdf.cc +++ b/tools/grib_to_netcdf.cc @@ -1744,15 +1744,12 @@ static hypercube* new_hypercube_from_mars_request(const request* r) struct stuff_1 s; -#if 0 - const request *lang = mars_language_from_request(r); - int count = 0; - - count = init_axis(lang); - grib_context_log(ctx,GRIB_LOG_DEBUG,"cube %s",r->kind); - /* print_all_requests(mars_language_from_request(r)); */ - grib_context_log(ctx,GRIB_LOG_INFO,"NUMBER(axis): %d, number axisnew: %d",NUMBER(axis),count); -#endif +// const request *lang = mars_language_from_request(r); +// int count = 0; +// count = init_axis(lang); +// grib_context_log(ctx,GRIB_LOG_DEBUG,"cube %s",r->kind); +// /* print_all_requests(mars_language_from_request(r)); */ +// grib_context_log(ctx,GRIB_LOG_INFO,"NUMBER(axis): %d, number axisnew: %d",NUMBER(axis),count); s.c = new_hypercube(r); s.r = clone_one_request(r); @@ -2817,9 +2814,7 @@ static int put_data(hypercube* h, int ncid, const char* name, dataset_t* subset) return e; } -#if 0 - bool missing = (g->ksec4[0] < 0); /* If negative number of values, field is missing */ -#endif + // bool missing = (g->ksec4[0] < 0); /* If negative number of values, field is missing */ r = field_to_request(g); if (!missing) { @@ -3119,14 +3114,12 @@ static int define_netcdf_dimensions(hypercube* h, fieldset* fs, int ncid, datase check_err("nc_put_att_text", stat, __LINE__); } -#if 0 - if(subsets[i].att.other) - { - const char *txt = subsets[i].att.long_name; - stat = nc_put_att_text(ncid, var_id, "other",strlen(txt),txt); - check_err("nc_put_att_text", stat,__LINE__,__FILE__); - } -#endif + // if(subsets[i].att.other) + // { + // const char *txt = subsets[i].att.long_name; + // stat = nc_put_att_text(ncid, var_id, "other",strlen(txt),txt); + // check_err("nc_put_att_text", stat,__LINE__,__FILE__); + // } if (subsets[i].att.metadata) { parameter* p = subsets[i].att.metadata->params; @@ -3200,13 +3193,10 @@ static int define_netcdf_dimensions(hypercube* h, fieldset* fs, int ncid, datase stat = nc_put_att_text(ncid, NC_GLOBAL, "history", strlen(history), history); check_err("nc_put_att_text", stat, __LINE__); -#if 0 - stat = nc_put_att_text(ncid, NC_GLOBAL, "source",strlen(setup.source),setup.source); - check_err(stat,__LINE__,__FILE__); - - stat = nc_put_att_text(ncid, NC_GLOBAL, "institution",strlen(institution),institution); - check_err(stat,__LINE__,__FILE__); -#endif + //stat = nc_put_att_text(ncid, NC_GLOBAL, "source",strlen(setup.source),setup.source); + //check_err(stat,__LINE__,__FILE__); + //stat = nc_put_att_text(ncid, NC_GLOBAL, "institution",strlen(institution),institution); + //check_err(stat,__LINE__,__FILE__); if (setup.title) { stat = nc_put_att_text(ncid, NC_GLOBAL, "title", strlen(setup.title), setup.title); diff --git a/tools/gts_compare.cc b/tools/gts_compare.cc index e0237af03..0ae081661 100644 --- a/tools/gts_compare.cc +++ b/tools/gts_compare.cc @@ -900,28 +900,26 @@ static int compare_handles(grib_handle* h1, grib_handle* h2, grib_runtime_option if (size1 == size2 && !(memcmp_ret = memcmp(msg1, msg2, size1))) { return 0; } -#if 0 - else { - int lcount=count,ii; - if (options->current_infile) lcount=options->current_infile->filter_handle_count; - if (size1 != size2) { - printf("#%d different size: %d!=%d\n",lcount,(int)size1,(int)size2); - } - if (memcmp_ret) { - unsigned char *m1=(unsigned char*)msg1; - unsigned char *m2=(unsigned char*)msg2; - printf("=== list of different bytes for message %d\n",lcount); - for (ii=0;iicurrent_infile) lcount=options->current_infile->filter_handle_count; +// if (size1 != size2) { +// printf("#%d different size: %d!=%d\n",lcount,(int)size1,(int)size2); +// } +// if (memcmp_ret) { +// unsigned char *m1=(unsigned char*)msg1; +// unsigned char *m2=(unsigned char*)msg2; +// printf("=== list of different bytes for message %d\n",lcount); +// for (ii=0;iicompare_count; i++) { diff --git a/tools/gts_copy.cc b/tools/gts_copy.cc index eba1bc438..92dfe4530 100644 --- a/tools/gts_copy.cc +++ b/tools/gts_copy.cc @@ -57,15 +57,6 @@ int grib_tool_before_getopt(grib_runtime_options* options) int grib_tool_init(grib_runtime_options* options) { -#if 0 - if (options->outfile && options->outfile->name) { - options->outfile->file = fopen(options->outfile->name,"w"); - if(!options->outfile->file) { - perror(options->outfile->name); - exit(1); - } - } -#endif return 0; } @@ -107,11 +98,6 @@ void grib_tool_print_key_values(grib_runtime_options* options, grib_handle* h) int grib_tool_finalise_action(grib_runtime_options* options) { - /* - if (options->outfile->file) { - fclose(options->outfile->file); - } - */ return 0; } diff --git a/tools/metar_compare.cc b/tools/metar_compare.cc index eaf031092..e83535e72 100644 --- a/tools/metar_compare.cc +++ b/tools/metar_compare.cc @@ -1122,28 +1122,6 @@ static int compare_handles(grib_handle* h1, grib_handle* h2, grib_runtime_option if (size1 == size2 && !(memcmp_ret = memcmp(msg1, msg2, size1))) { return 0; } -#if 0 - else { - int lcount=count,ii; - if (options->current_infile) lcount=options->current_infile->filter_handle_count; - if (size1 != size2) { - printf("#%d different size: %d!=%d\n",lcount,(int)size1,(int)size2); - } - if (memcmp_ret) { - unsigned char *m1=(unsigned char*)msg1; - unsigned char *m2=(unsigned char*)msg2; - printf("=== list of different bytes for message %d\n",lcount); - for (ii=0;iicompare_count; i++) { diff --git a/tools/metar_copy.cc b/tools/metar_copy.cc index c9835eeb2..ce3ada95d 100644 --- a/tools/metar_copy.cc +++ b/tools/metar_copy.cc @@ -57,15 +57,6 @@ int grib_tool_before_getopt(grib_runtime_options* options) int grib_tool_init(grib_runtime_options* options) { -#if 0 - if (options->outfile && options->outfile->name) { - options->outfile->file = fopen(options->outfile->name,"w"); - if(!options->outfile->file) { - perror(options->outfile->name); - exit(1); - } - } -#endif return 0; } @@ -107,11 +98,6 @@ void grib_tool_print_key_values(grib_runtime_options* options, grib_handle* h) int grib_tool_finalise_action(grib_runtime_options* options) { - /* - if (options->outfile->file) { - fclose(options->outfile->file); - } - */ return 0; } From 8148b699c4cc736b090dd5320bc487cce8325216 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 26 Jun 2023 12:54:19 +0100 Subject: [PATCH 330/378] Dead code removal --- src/grib_accessor_class_long.cc | 17 ----------------- 1 file changed, 17 deletions(-) diff --git a/src/grib_accessor_class_long.cc b/src/grib_accessor_class_long.cc index 5f32746e1..5b650776b 100644 --- a/src/grib_accessor_class_long.cc +++ b/src/grib_accessor_class_long.cc @@ -165,23 +165,6 @@ static int pack_missing(grib_accessor* a) return GRIB_VALUE_CANNOT_BE_MISSING; } -/* -static int is_missing(grib_accessor* a){ - - size_t len = 1; - long value = GRIB_MISSING_LONG; - long ret=0; - - if(a->flags & GRIB_ACCESSOR_FLAG_CAN_BE_MISSING) - { - ret = grib_unpack_long(a,&value,&len); - Assert( ret == 0); - return value == GRIB_MISSING_LONG; - } - return 0; -} -*/ - static int unpack_double(grib_accessor* a, double* val, size_t* len) { size_t rlen = 0; From 02919adaf2a7a3e0fa7cd8a9f8523c6e46c57201 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 26 Jun 2023 13:11:16 +0100 Subject: [PATCH 331/378] Dead code removal --- .../grib_accessor_class_mars_param.cc | 192 ++++++++++++++++++ src/grib_accessor_class_mars_param.cc | 44 +--- 2 files changed, 195 insertions(+), 41 deletions(-) create mode 100644 src/deprecated/grib_accessor_class_mars_param.cc diff --git a/src/deprecated/grib_accessor_class_mars_param.cc b/src/deprecated/grib_accessor_class_mars_param.cc new file mode 100644 index 000000000..636993f49 --- /dev/null +++ b/src/deprecated/grib_accessor_class_mars_param.cc @@ -0,0 +1,192 @@ +/* + * (C) Copyright 2005- ECMWF. + * + * This software is licensed under the terms of the Apache Licence Version 2.0 + * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. + * + * In applying this licence, ECMWF does not waive the privileges and immunities granted to it by + * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. + */ + +#include "grib_api_internal.h" +/* + This is used by make_class.pl + + START_CLASS_DEF + CLASS = accessor + SUPER = grib_accessor_class_ascii + IMPLEMENTS = pack_string;unpack_string + IMPLEMENTS = init; string_length + MEMBERS= const char* paramId + MEMBERS= const char* table + MEMBERS= const char* param + END_CLASS_DEF + + */ + +/* START_CLASS_IMP */ + +/* + +Don't edit anything between START_CLASS_IMP and END_CLASS_IMP +Instead edit values between START_CLASS_DEF and END_CLASS_DEF +or edit "accessor.class" and rerun ./make_class.pl + +*/ + +static int pack_string(grib_accessor*, const char*, size_t* len); +static int unpack_string(grib_accessor*, char*, size_t* len); +static size_t string_length(grib_accessor*); +static void init(grib_accessor*, const long, grib_arguments*); +//static void init_class(grib_accessor_class*); + +typedef struct grib_accessor_mars_param +{ + grib_accessor att; + /* Members defined in gen */ + /* Members defined in ascii */ + /* Members defined in mars_param */ + const char* paramId; + const char* table; + const char* param; +} grib_accessor_mars_param; + +extern grib_accessor_class* grib_accessor_class_ascii; + +static grib_accessor_class _grib_accessor_class_mars_param = { + &grib_accessor_class_ascii, /* super */ + "mars_param", /* name */ + sizeof(grib_accessor_mars_param), /* size */ + 0, /* inited */ + 0, /* init_class */ + &init, /* init */ + 0, /* post_init */ + 0, /* destroy */ + 0, /* dump */ + 0, /* next_offset */ + &string_length, /* get length of string */ + 0, /* get number of values */ + 0, /* get number of bytes */ + 0, /* get offset to bytes */ + 0, /* get native type */ + 0, /* get sub_section */ + 0, /* pack_missing */ + 0, /* is_missing */ + 0, /* pack_long */ + 0, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + 0, /* unpack_double */ + 0, /* unpack_float */ + &pack_string, /* pack_string */ + &unpack_string, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_bytes */ + 0, /* pack_expression */ + 0, /* notify_change */ + 0, /* update_size */ + 0, /* preferred_size */ + 0, /* resize */ + 0, /* nearest_smaller_value */ + 0, /* next accessor */ + 0, /* compare vs. another accessor */ + 0, /* unpack only ith value (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ + 0, /* unpack a subarray */ + 0, /* clear */ + 0, /* clone accessor */ +}; + + +grib_accessor_class* grib_accessor_class_mars_param = &_grib_accessor_class_mars_param; + + +//static void init_class(grib_accessor_class* c) +//{ +// INIT +//} + +/* END_CLASS_IMP */ + +static void init(grib_accessor* a, const long l, grib_arguments* c) +{ + int n = 0; + grib_accessor_mars_param* self = (grib_accessor_mars_param*)a; + self->paramId = grib_arguments_get_name(grib_handle_of_accessor(a), c, n++); + self->table = grib_arguments_get_name(grib_handle_of_accessor(a), c, n++); + self->param = grib_arguments_get_name(grib_handle_of_accessor(a), c, n++); +} + +static int pack_string(grib_accessor* a, const char* val, size_t* len) +{ +#if 1 + return GRIB_NOT_IMPLEMENTED; +#else + grib_accessor_mars_param* self = (grib_accessor_mars_param*)a; + long paramId = 0; + long param = 0; + long table = 0; + char* p = (char*)val; + char* q = NULL; + + param = strtol(val, &p, 10); + if (*p != 0) + table = strtol(++p, &q, 10); + else + table = 128; + + paramId = table * 1000 + param; + + return grib_set_long_internal(grib_handle_of_accessor(a), self->paramId, paramId); +#endif +} + +static int unpack_string(grib_accessor* a, char* val, size_t* len) +{ + grib_accessor_mars_param* self = (grib_accessor_mars_param*)a; + long param = 0; + long table = 0; + int ret = 0; + +#if 1 + if (self->table != NULL && (ret = grib_get_long_internal(grib_handle_of_accessor(a), self->table, &table)) != GRIB_SUCCESS) + return ret; + if (self->param != NULL && (ret = grib_get_long_internal(grib_handle_of_accessor(a), self->param, ¶m)) != GRIB_SUCCESS) + return ret; +#else + { + long paramId = 0; + grib_get_long(grib_handle_of_accessor(a), self->paramId, ¶mId); + + if (paramId == 0 || (paramId < 4000 && paramId > 1000)) { + if (self->table != NULL && (ret = grib_get_long_internal(grib_handle_of_accessor(a), self->table, &table)) != GRIB_SUCCESS) + return ret; + if (self->param != NULL && (ret = grib_get_long_internal(grib_handle_of_accessor(a), self->param, ¶m)) != GRIB_SUCCESS) + return ret; + } + else if (paramId < 1000) { + table = 128; + param = paramId; + } + else { + table = paramId / 1000; + param = paramId - table * 1000; + } + } +#endif + + /*if (table==200) table=128;*/ + snprintf(val, 32, "%ld.%ld", param, table); + *len = strlen(val) + 1; + + return GRIB_SUCCESS; +} + +static size_t string_length(grib_accessor* a) +{ + return 7; +} diff --git a/src/grib_accessor_class_mars_param.cc b/src/grib_accessor_class_mars_param.cc index 636993f49..ae4e5b1a1 100644 --- a/src/grib_accessor_class_mars_param.cc +++ b/src/grib_accessor_class_mars_param.cc @@ -121,28 +121,12 @@ static void init(grib_accessor* a, const long l, grib_arguments* c) self->param = grib_arguments_get_name(grib_handle_of_accessor(a), c, n++); } +// For an alternative implementation of pack_string and unpack_string, see +// src/deprecated/grib_accessor_class_mars_param.cc +// static int pack_string(grib_accessor* a, const char* val, size_t* len) { -#if 1 return GRIB_NOT_IMPLEMENTED; -#else - grib_accessor_mars_param* self = (grib_accessor_mars_param*)a; - long paramId = 0; - long param = 0; - long table = 0; - char* p = (char*)val; - char* q = NULL; - - param = strtol(val, &p, 10); - if (*p != 0) - table = strtol(++p, &q, 10); - else - table = 128; - - paramId = table * 1000 + param; - - return grib_set_long_internal(grib_handle_of_accessor(a), self->paramId, paramId); -#endif } static int unpack_string(grib_accessor* a, char* val, size_t* len) @@ -152,32 +136,10 @@ static int unpack_string(grib_accessor* a, char* val, size_t* len) long table = 0; int ret = 0; -#if 1 if (self->table != NULL && (ret = grib_get_long_internal(grib_handle_of_accessor(a), self->table, &table)) != GRIB_SUCCESS) return ret; if (self->param != NULL && (ret = grib_get_long_internal(grib_handle_of_accessor(a), self->param, ¶m)) != GRIB_SUCCESS) return ret; -#else - { - long paramId = 0; - grib_get_long(grib_handle_of_accessor(a), self->paramId, ¶mId); - - if (paramId == 0 || (paramId < 4000 && paramId > 1000)) { - if (self->table != NULL && (ret = grib_get_long_internal(grib_handle_of_accessor(a), self->table, &table)) != GRIB_SUCCESS) - return ret; - if (self->param != NULL && (ret = grib_get_long_internal(grib_handle_of_accessor(a), self->param, ¶m)) != GRIB_SUCCESS) - return ret; - } - else if (paramId < 1000) { - table = 128; - param = paramId; - } - else { - table = paramId / 1000; - param = paramId - table * 1000; - } - } -#endif /*if (table==200) table=128;*/ snprintf(val, 32, "%ld.%ld", param, table); From ddd81e2f4facfdc04365de32421654e26c0af0af Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 26 Jun 2023 13:42:07 +0100 Subject: [PATCH 332/378] Dead code removal --- src/grib_accessor_class_bufr_data_array.cc | 68 +++++++++++----------- 1 file changed, 33 insertions(+), 35 deletions(-) diff --git a/src/grib_accessor_class_bufr_data_array.cc b/src/grib_accessor_class_bufr_data_array.cc index bf6fe5156..4db4e2ee3 100644 --- a/src/grib_accessor_class_bufr_data_array.cc +++ b/src/grib_accessor_class_bufr_data_array.cc @@ -7,6 +7,7 @@ * In applying this licence, ECMWF does not waive the privileges and immunities granted to it by * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. */ + #include "grib_scaling.h" #include "grib_api_internal.h" @@ -286,6 +287,7 @@ static void tableB_override_store_ref_val(grib_context* c, grib_accessor_bufr_da q->next = tb; } } + /* Operator 203YYY: Retrieve changed reference value from linked list */ static int tableB_override_get_ref_val(grib_accessor_bufr_data_array* self, int code, long* out_ref_val) { @@ -299,6 +301,7 @@ static int tableB_override_get_ref_val(grib_accessor_bufr_data_array* self, int } return GRIB_NOT_FOUND; } + /* Operator 203YYY: Clear and free linked list */ static void tableB_override_clear(grib_context* c, grib_accessor_bufr_data_array* self) { @@ -310,6 +313,7 @@ static void tableB_override_clear(grib_context* c, grib_accessor_bufr_data_array } self->tableb_override = NULL; } + /* Operator 203YYY: Copy contents of linked list to the transient array key */ static int tableB_override_set_key(grib_handle* h, grib_accessor_bufr_data_array* self) { @@ -347,18 +351,17 @@ static int check_overridden_reference_values(const grib_context* c, long* refVal } return GRIB_SUCCESS; } -/* -static void tableB_override_dump(grib_accessor_bufr_data_array *self) -{ - bufr_tableb_override* p = self->tableb_override; - int i = 1; - while (p) { - printf("ECCODES DEBUG: Table B Override: [%d] code=%d, rv=%ld\n", i, p->code, p->new_ref_val); - p = p->next; - ++i; - } -} - */ + +// static void tableB_override_dump(grib_accessor_bufr_data_array *self) +// { +// bufr_tableb_override* p = self->tableb_override; +// int i = 1; +// while (p) { +// printf("ECCODES DEBUG: Table B Override: [%d] code=%d, rv=%ld\n", i, p->code, p->new_ref_val); +// p = p->next; +// ++i; +// } +// } #define DYN_ARRAY_SIZE_INIT 1000 /* Initial size for grib_iarray_new and grib_darray_new */ #define DYN_ARRAY_SIZE_INCR 1000 /* Increment size for grib_iarray_new and grib_darray_new */ @@ -403,17 +406,15 @@ static void init(grib_accessor* a, const long v, grib_arguments* params) /* Assert(a->length>=0); */ } -/* -static void clean_string(char* s,int len) -{ - int i=len-1; - while (i) { - if (!isalnum(s[i])) s[i]=0; - else break; - i--; - } -} - */ +// static void clean_string(char* s,int len) +// { +// int i=len-1; +// while (i) { +// if (!isalnum(s[i])) s[i]=0; +// else break; +// i--; +// } +// } static int check_end_data(grib_context* c, bufr_descriptor* bd, grib_accessor_bufr_data_array* self, int size) { @@ -2207,14 +2208,12 @@ static grib_accessor* get_element_from_bitmap(const grib_accessor* a, bitmap_s* return bitmap->referredElement ? bitmap->referredElement->prev->accessor : NULL; } -/* -static GRIB_INLINE void reset_qualifiers(grib_accessor* significanceQualifierGroup[]) -{ - int i; - for (i=0;idataKeys->block); */ + // grib_accessor_bufr_data_array *self =(grib_accessor_bufr_data_array*)a; + // int err=process_elements(a,PROCESS_DECODE); + // grib_dump_section(dumper,a,self->dataKeys->block); return; } From 7932e4ac6a6cc64c28f24172410983740ad1dd0a Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 26 Jun 2023 15:50:25 +0100 Subject: [PATCH 333/378] Testing: Invalid key decoding --- tests/grib_proj_string.sh | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/tests/grib_proj_string.sh b/tests/grib_proj_string.sh index c056554ce..9dc1e8557 100755 --- a/tests/grib_proj_string.sh +++ b/tests/grib_proj_string.sh @@ -80,5 +80,23 @@ ${tools_dir}/grib_set -s gridType=polar_stereographic $grib2_sample $tempGrib ${tools_dir}/grib_get -p projString $tempGrib > $tempText grep -q "proj=stere" $tempText +# Test invalid decode +set +e +${tools_dir}/grib_get -p projString:i $grib2_sample > $tempText 2>&1 +status=$? +set -e +[ $status -ne 0 ] +grep -q "ERROR.*Cannot unpack projTargetString as long" $tempText +grep -q "Hint: Try unpacking as string" $tempText +set +e +${tools_dir}/grib_get -p projString:d $grib2_sample > $tempText 2>&1 +status=$? +set -e +[ $status -ne 0 ] +grep -q "ERROR.*Cannot unpack projTargetString as double" $tempText +grep -q "Hint: Try unpacking as string" $tempText + + +# Clean up rm -f $tempGrib $tempText From 132342b68326e201a314607bd89e62a4c4d3bb9f Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 26 Jun 2023 15:50:59 +0100 Subject: [PATCH 334/378] Better error messages --- src/grib_accessor_class_gen.cc | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/grib_accessor_class_gen.cc b/src/grib_accessor_class_gen.cc index 10d1aba09..2980eb3c9 100644 --- a/src/grib_accessor_class_gen.cc +++ b/src/grib_accessor_class_gen.cc @@ -320,12 +320,13 @@ static int unpack(grib_accessor* a, T* v, size_t* len) { static_assert(std::is_floating_point::value, "Requires floating point numbers"); int type = GRIB_TYPE_UNDEFINED; + const char* Tname = type_to_string(*v); if (a->cclass->unpack_long && a->cclass->unpack_long != &unpack_long) { long val = 0; size_t l = 1; grib_unpack_long(a, &val, &l); *v = val; - grib_context_log(a->context, GRIB_LOG_DEBUG, "Casting long %s to %s", a->name, type_to_string(*v)); + grib_context_log(a->context, GRIB_LOG_DEBUG, "Casting long %s to %s", a->name, Tname); return GRIB_SUCCESS; } @@ -337,12 +338,12 @@ static int unpack(grib_accessor* a, T* v, size_t* len) *v = strtod(val, &last); if (*last == 0) { /* conversion of string to double worked */ - grib_context_log(a->context, GRIB_LOG_DEBUG, "Casting string %s to long", a->name); + grib_context_log(a->context, GRIB_LOG_DEBUG, "Casting string %s to %s", a->name, Tname); return GRIB_SUCCESS; } } - grib_context_log(a->context, GRIB_LOG_ERROR, "Cannot unpack as %s", a->name); + grib_context_log(a->context, GRIB_LOG_ERROR, "Cannot unpack %s as %s", a->name, Tname); if (grib_get_native_type(grib_handle_of_accessor(a), a->name, &type) == GRIB_SUCCESS) { grib_context_log(a->context, GRIB_LOG_ERROR, "Hint: Try unpacking as %s", grib_get_type_name(type)); } From 9b9b649b9e2b479b67dd0fc6b8f3555a4add2502 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 26 Jun 2023 16:25:57 +0100 Subject: [PATCH 335/378] Dead code removal --- src/action_class_gen.cc | 43 ++-------------------------- src/deprecated/action_class_gen.cc | 46 ++++++++++++++++++++++++++++++ 2 files changed, 48 insertions(+), 41 deletions(-) create mode 100644 src/deprecated/action_class_gen.cc diff --git a/src/action_class_gen.cc b/src/action_class_gen.cc index 0eec6fdd5..8c5945889 100644 --- a/src/action_class_gen.cc +++ b/src/action_class_gen.cc @@ -127,47 +127,8 @@ static void dump(grib_action* act, FILE* f, int lvl) grib_context_print(act->context, f, "%s[%d] %s \n", act->op, a->len, act->name); } -// #define F(x) if (flg & x) { fprintf(f, "%s=>1,", #x); flg &= !x; } -// static int count = 0; -// static void xref(grib_action* act, FILE* f, const char* path) -// { -// grib_action_gen* a = (grib_action_gen*)act; -// unsigned long flg = act->flags; -// int position = a->len > 0 ? count++ : -1; - -// fprintf(f, "bless({path=>'%s',size => %ld, name=> '%s', position=> %d, ", path, (long)a->len, act->name, position); - -// fprintf(f, " params=> ["); -// grib_arguments_print(act->context, a->params, NULL); -// fprintf(f, "], flags=> {"); - -// F(GRIB_ACCESSOR_FLAG_READ_ONLY); -// F(GRIB_ACCESSOR_FLAG_DUMP); -// F(GRIB_ACCESSOR_FLAG_EDITION_SPECIFIC); -// F(GRIB_ACCESSOR_FLAG_CAN_BE_MISSING); -// F(GRIB_ACCESSOR_FLAG_HIDDEN); -// F(GRIB_ACCESSOR_FLAG_CONSTRAINT); -// F(GRIB_ACCESSOR_FLAG_NO_COPY); -// F(GRIB_ACCESSOR_FLAG_COPY_OK); -// F(GRIB_ACCESSOR_FLAG_FUNCTION); -// F(GRIB_ACCESSOR_FLAG_DATA); -// F(GRIB_ACCESSOR_FLAG_NO_FAIL); -// F(GRIB_ACCESSOR_FLAG_TRANSIENT); -// F(GRIB_ACCESSOR_FLAG_STRING_TYPE); -// F(GRIB_ACCESSOR_FLAG_LONG_TYPE); -// F(GRIB_ACCESSOR_FLAG_DOUBLE_TYPE); - -// /* make sure all flags are processed */ -// if (flg) { -// printf("FLG = %ld\n", (long)flg); -// } -// Assert(flg == 0); - -// fprintf(f, "}, defaults=> ["); -// grib_arguments_print(act->context, act->default_value, NULL); - -// fprintf(f, "]}, 'xref::%s'),\n", act->op); -// } +// For xref implementation see +// src/deprecated/action_class_gen.cc static void xref(grib_action* act, FILE* f, const char* path) { diff --git a/src/deprecated/action_class_gen.cc b/src/deprecated/action_class_gen.cc new file mode 100644 index 000000000..f2d33a390 --- /dev/null +++ b/src/deprecated/action_class_gen.cc @@ -0,0 +1,46 @@ +// #define F(x) if (flg & x) { fprintf(f, "%s=>1,", #x); flg &= !x; } +// static int count = 0; +// static void xref(grib_action* act, FILE* f, const char* path) +// { +// grib_action_gen* a = (grib_action_gen*)act; +// unsigned long flg = act->flags; +// int position = a->len > 0 ? count++ : -1; + +// fprintf(f, "bless({path=>'%s',size => %ld, name=> '%s', position=> %d, ", path, (long)a->len, act->name, position); + +// fprintf(f, " params=> ["); +// grib_arguments_print(act->context, a->params, NULL); +// fprintf(f, "], flags=> {"); + +// F(GRIB_ACCESSOR_FLAG_READ_ONLY); +// F(GRIB_ACCESSOR_FLAG_DUMP); +// F(GRIB_ACCESSOR_FLAG_EDITION_SPECIFIC); +// F(GRIB_ACCESSOR_FLAG_CAN_BE_MISSING); +// F(GRIB_ACCESSOR_FLAG_HIDDEN); +// F(GRIB_ACCESSOR_FLAG_CONSTRAINT); +// F(GRIB_ACCESSOR_FLAG_NO_COPY); +// F(GRIB_ACCESSOR_FLAG_COPY_OK); +// F(GRIB_ACCESSOR_FLAG_FUNCTION); +// F(GRIB_ACCESSOR_FLAG_DATA); +// F(GRIB_ACCESSOR_FLAG_NO_FAIL); +// F(GRIB_ACCESSOR_FLAG_TRANSIENT); +// F(GRIB_ACCESSOR_FLAG_STRING_TYPE); +// F(GRIB_ACCESSOR_FLAG_LONG_TYPE); +// F(GRIB_ACCESSOR_FLAG_DOUBLE_TYPE); + +// /* make sure all flags are processed */ +// if (flg) { +// printf("FLG = %ld\n", (long)flg); +// } +// Assert(flg == 0); + +// fprintf(f, "}, defaults=> ["); +// grib_arguments_print(act->context, act->default_value, NULL); + +// fprintf(f, "]}, 'xref::%s'),\n", act->op); +// } + +static void xref(grib_action* act, FILE* f, const char* path) +{ + Assert(!"xref is disabled"); +} From 82003e8b41fb2b4ea1a6d96687bde524ede34435 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 26 Jun 2023 16:55:08 +0100 Subject: [PATCH 336/378] Testing: Decode key as other types --- tests/grib_step.sh | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tests/grib_step.sh b/tests/grib_step.sh index 354e11c45..22855ecf3 100755 --- a/tests/grib_step.sh +++ b/tests/grib_step.sh @@ -128,6 +128,11 @@ grib_check_key_equals $temp stepType avg ${tools_dir}/grib_set -s stepType=avg $grib2_sample $temp grib_check_key_equals $temp typeOfTimeIncrement 3 +# Decode stepRange as an int and double +${tools_dir}/grib_set -s stepType=accum,stepRange=23-28 $grib2_sample $temp +grib_check_key_equals $temp "stepRange:s" "23-28" +grib_check_key_equals $temp "stepRange:i" "28" +grib_check_key_equals $temp "stepRange:d" "28" # Clean up rm -f $temp From c23156bdbe2b4e5fcf5c1c38e51c939e3e764932 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 26 Jun 2023 17:12:29 +0100 Subject: [PATCH 337/378] Testing: Decode key as other types --- tests/grib_step.sh | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/tests/grib_step.sh b/tests/grib_step.sh index 22855ecf3..7a79a6e6b 100755 --- a/tests/grib_step.sh +++ b/tests/grib_step.sh @@ -128,12 +128,19 @@ grib_check_key_equals $temp stepType avg ${tools_dir}/grib_set -s stepType=avg $grib2_sample $temp grib_check_key_equals $temp typeOfTimeIncrement 3 -# Decode stepRange as an int and double +# Decode/Encode stepRange as an int and double ${tools_dir}/grib_set -s stepType=accum,stepRange=23-28 $grib2_sample $temp grib_check_key_equals $temp "stepRange:s" "23-28" grib_check_key_equals $temp "stepRange:i" "28" grib_check_key_equals $temp "stepRange:d" "28" +${tools_dir}/grib_set -s stepRange:i=24 $grib2_sample $temp +grib_check_key_equals $temp "stepRange,startStep,endStep" "24 24 24" +# Should this be an error? currently this gets cast from double to int +${tools_dir}/grib_set -s stepRange:d=14.56 $grib2_sample $temp +grib_check_key_equals $temp "stepRange,startStep,endStep" "14 14 14" + + # Clean up rm -f $temp rm -f $grib2File.p8tmp ${grib2File}.tmp x.grib From 8b1e519ac304efe2790d149687cb30c25b8c3175 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 26 Jun 2023 19:27:37 +0100 Subject: [PATCH 338/378] Cleanup --- src/grib_accessor_class_data_apply_bitmap.cc | 4 ++-- src/grib_accessor_class_data_apply_boustrophedonic_bitmap.cc | 4 ++-- src/grib_accessor_class_data_apply_gdsnotpresent.cc | 4 ++-- src/grib_accessor_class_data_secondary_bitmap.cc | 5 ++--- 4 files changed, 8 insertions(+), 9 deletions(-) diff --git a/src/grib_accessor_class_data_apply_bitmap.cc b/src/grib_accessor_class_data_apply_bitmap.cc index 6fad8640a..092f01820 100644 --- a/src/grib_accessor_class_data_apply_bitmap.cc +++ b/src/grib_accessor_class_data_apply_bitmap.cc @@ -443,8 +443,8 @@ static int unpack_float(grib_accessor* a, float* val, size_t* len) static int get_native_type(grib_accessor* a) { - /* grib_accessor_data_apply_bitmap* self = (grib_accessor_data_apply_bitmap*)a; - return grib_accessor_get_native_type(grib_find_accessor(grib_handle_of_accessor(a),self->coded_values));*/ + //grib_accessor_data_apply_bitmap* self = (grib_accessor_data_apply_bitmap*)a; + //return grib_accessor_get_native_type(grib_find_accessor(grib_handle_of_accessor(a),self->coded_values)); return GRIB_TYPE_DOUBLE; } diff --git a/src/grib_accessor_class_data_apply_boustrophedonic_bitmap.cc b/src/grib_accessor_class_data_apply_boustrophedonic_bitmap.cc index 5da706cbd..ea5e6217a 100644 --- a/src/grib_accessor_class_data_apply_boustrophedonic_bitmap.cc +++ b/src/grib_accessor_class_data_apply_boustrophedonic_bitmap.cc @@ -504,8 +504,8 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) static int get_native_type(grib_accessor* a) { - /* grib_accessor_data_apply_boustrophedonic_bitmap* self = (grib_accessor_data_apply_boustrophedonic_bitmap*)a; - return grib_accessor_get_native_type(grib_find_accessor(grib_handle_of_accessor(a),self->coded_values));*/ + //grib_accessor_data_apply_boustrophedonic_bitmap* self = (grib_accessor_data_apply_boustrophedonic_bitmap*)a; + //return grib_accessor_get_native_type(grib_find_accessor(grib_handle_of_accessor(a),self->coded_values)); return GRIB_TYPE_DOUBLE; } diff --git a/src/grib_accessor_class_data_apply_gdsnotpresent.cc b/src/grib_accessor_class_data_apply_gdsnotpresent.cc index 113927332..2fffd3839 100644 --- a/src/grib_accessor_class_data_apply_gdsnotpresent.cc +++ b/src/grib_accessor_class_data_apply_gdsnotpresent.cc @@ -289,8 +289,8 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) static int get_native_type(grib_accessor* a) { - /* grib_accessor_data_apply_gdsnotpresent* self = (grib_accessor_data_apply_gdsnotpresent*)a; - return grib_accessor_get_native_type(grib_find_accessor(grib_handle_of_accessor(a),self->coded_values));*/ + // grib_accessor_data_apply_gdsnotpresent* self = (grib_accessor_data_apply_gdsnotpresent*)a; + // return grib_accessor_get_native_type(grib_find_accessor(grib_handle_of_accessor(a),self->coded_values)); return GRIB_TYPE_DOUBLE; } diff --git a/src/grib_accessor_class_data_secondary_bitmap.cc b/src/grib_accessor_class_data_secondary_bitmap.cc index 29d0f9f04..0bbc08886 100644 --- a/src/grib_accessor_class_data_secondary_bitmap.cc +++ b/src/grib_accessor_class_data_secondary_bitmap.cc @@ -215,8 +215,7 @@ static int unpack_double(grib_accessor* a, double* val, size_t* len) static int get_native_type(grib_accessor* a) { - /* grib_accessor_data_secondary_bitmap* self = (grib_accessor_data_secondary_bitmap*)a; - return grib_accessor_get_native_type(grib_find_accessor(grib_handle_of_accessor(a),self->coded_values));*/ - + // grib_accessor_data_secondary_bitmap* self = (grib_accessor_data_secondary_bitmap*)a; + //return grib_accessor_get_native_type(grib_find_accessor(grib_handle_of_accessor(a),self->coded_values)); return GRIB_TYPE_DOUBLE; } From 7dc8a1a4a6d62200f806d320537aeb4ff57d2749 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 26 Jun 2023 19:52:25 +0100 Subject: [PATCH 339/378] Terminate statements (with macros) with semi-colons --- src/action_class_concept.cc | 2 +- src/grib_accessor_class_smart_table.cc | 6 +++--- src/grib_ibmfloat.cc | 6 +++--- src/grib_ieeefloat.cc | 7 +++---- src/grib_itrie.cc | 2 +- src/grib_memory.cc | 26 +++++++++++++------------- src/grib_parse_utils.cc | 4 ++-- 7 files changed, 26 insertions(+), 27 deletions(-) diff --git a/src/action_class_concept.cc b/src/action_class_concept.cc index bbb8f9638..74fb25588 100644 --- a/src/action_class_concept.cc +++ b/src/action_class_concept.cc @@ -306,7 +306,7 @@ static grib_concept_value* get_concept_impl(grib_handle* h, grib_action_concept* static grib_concept_value* get_concept(grib_handle* h, grib_action_concept* self) { grib_concept_value* result = NULL; - GRIB_MUTEX_INIT_ONCE(&once, &init) + GRIB_MUTEX_INIT_ONCE(&once, &init); GRIB_MUTEX_LOCK(&mutex); result = get_concept_impl(h, self); diff --git a/src/grib_accessor_class_smart_table.cc b/src/grib_accessor_class_smart_table.cc index 0e5653cc2..e16ebc490 100644 --- a/src/grib_accessor_class_smart_table.cc +++ b/src/grib_accessor_class_smart_table.cc @@ -306,10 +306,10 @@ static int grib_load_smart_table(grib_context* c, const char* filename, t->recomposed_name[0] = grib_context_strdup_persistent(c, recomposed_name); t->next = c->smart_table; t->numberOfEntries = size; - GRIB_MUTEX_INIT_ONCE(&once, &thread_init) - GRIB_MUTEX_LOCK(&mutex) + GRIB_MUTEX_INIT_ONCE(&once, &thread_init); + GRIB_MUTEX_LOCK(&mutex); c->smart_table = t; - GRIB_MUTEX_UNLOCK(&mutex) + GRIB_MUTEX_UNLOCK(&mutex); } else if (t->filename[1] == NULL) { t->filename[1] = grib_context_strdup_persistent(c, filename); diff --git a/src/grib_ibmfloat.cc b/src/grib_ibmfloat.cc index 1b11ed3bf..d8dc76206 100644 --- a/src/grib_ibmfloat.cc +++ b/src/grib_ibmfloat.cc @@ -80,13 +80,13 @@ static void init_ibm_table() static void init_table_if_needed() { - GRIB_MUTEX_INIT_ONCE(&once, &init) - GRIB_MUTEX_LOCK(&mutex) + GRIB_MUTEX_INIT_ONCE(&once, &init); + GRIB_MUTEX_LOCK(&mutex); if (!ibm_table.inited) init_ibm_table(); - GRIB_MUTEX_UNLOCK(&mutex) + GRIB_MUTEX_UNLOCK(&mutex); } static void binary_search(const double xx[], const unsigned long n, double x, unsigned long* j) diff --git a/src/grib_ieeefloat.cc b/src/grib_ieeefloat.cc index 5ed74163a..642227fe2 100644 --- a/src/grib_ieeefloat.cc +++ b/src/grib_ieeefloat.cc @@ -10,7 +10,6 @@ /*************************************************************************** * Enrico Fucile - 06.01.2009 * - * * ***************************************************************************/ #include "grib_ieeefloat.h" @@ -86,13 +85,13 @@ static void init_ieee_table() static void init_table_if_needed() { - GRIB_MUTEX_INIT_ONCE(&once, &init) - GRIB_MUTEX_LOCK(&mutex) + GRIB_MUTEX_INIT_ONCE(&once, &init); + GRIB_MUTEX_LOCK(&mutex); if (!ieee_table.inited) init_ieee_table(); - GRIB_MUTEX_UNLOCK(&mutex) + GRIB_MUTEX_UNLOCK(&mutex); } static void binary_search(const double xx[], const unsigned long n, double x, unsigned long* j) diff --git a/src/grib_itrie.cc b/src/grib_itrie.cc index b6c0dc105..0421e4b84 100644 --- a/src/grib_itrie.cc +++ b/src/grib_itrie.cc @@ -319,7 +319,7 @@ grib_itrie* grib_itrie_new(grib_context* c, int* count) void grib_itrie_delete(grib_itrie* t) { - GRIB_MUTEX_INIT_ONCE(&once, &init) + GRIB_MUTEX_INIT_ONCE(&once, &init); GRIB_MUTEX_LOCK(&mutex); if (t) { diff --git a/src/grib_memory.cc b/src/grib_memory.cc index f32bede58..5eebf7965 100644 --- a/src/grib_memory.cc +++ b/src/grib_memory.cc @@ -108,8 +108,8 @@ static void* fast_new(size_t s, mempool* pool) char* p; memblk* m; - GRIB_MUTEX_INIT_ONCE(&once, &init) - GRIB_MUTEX_LOCK(&mutex) + GRIB_MUTEX_INIT_ONCE(&once, &init); + GRIB_MUTEX_LOCK(&mutex); m = (memblk*)pool->priv; @@ -141,7 +141,7 @@ static void* fast_new(size_t s, mempool* pool) p = (memblk*)(pool->clear ? calloc(size, 1) : malloc(size)); if (!p) { - GRIB_MUTEX_UNLOCK(&mutex) + GRIB_MUTEX_UNLOCK(&mutex); return NULL; } @@ -156,7 +156,7 @@ static void* fast_new(size_t s, mempool* pool) m->left -= s; m->cnt++; - GRIB_MUTEX_UNLOCK(&mutex) + GRIB_MUTEX_UNLOCK(&mutex); return p; } @@ -167,8 +167,8 @@ static void fast_delete(void* p, mempool* pool) memblk* m; memblk* n = NULL; - GRIB_MUTEX_INIT_ONCE(&once, &init) - GRIB_MUTEX_LOCK(&mutex) + GRIB_MUTEX_INIT_ONCE(&once, &init); + GRIB_MUTEX_LOCK(&mutex); m = (memblk*)pool->priv; @@ -183,7 +183,7 @@ static void fast_delete(void* p, mempool* pool) pool->priv = (void*)m->next; free((void*)m); } - GRIB_MUTEX_UNLOCK(&mutex) + GRIB_MUTEX_UNLOCK(&mutex); return; } @@ -271,8 +271,8 @@ void* grib_buffer_malloc(const grib_context* c, size_t s) { memblk* r; - GRIB_MUTEX_INIT_ONCE(&once, &init) - GRIB_MUTEX_LOCK(&mutex) + GRIB_MUTEX_INIT_ONCE(&once, &init); + GRIB_MUTEX_LOCK(&mutex); s = ((s + WORD - 1) / WORD) * WORD; r = reserve; @@ -297,7 +297,7 @@ void* grib_buffer_malloc(const grib_context* c, size_t s) r->size = s; r->cnt = 1; - GRIB_MUTEX_UNLOCK(&mutex) + GRIB_MUTEX_UNLOCK(&mutex); return &r->buffer[0]; } @@ -307,8 +307,8 @@ void grib_buffer_free(const grib_context* c, void* p) memblk* r; memblk* s; - GRIB_MUTEX_INIT_ONCE(&once, &init) - GRIB_MUTEX_LOCK(&mutex) + GRIB_MUTEX_INIT_ONCE(&once, &init); + GRIB_MUTEX_LOCK(&mutex); r = (memblk*)(((char*)p) - HEADER_SIZE); s = reserve; @@ -320,7 +320,7 @@ void grib_buffer_free(const grib_context* c, void* p) s->cnt = 0; } - GRIB_MUTEX_UNLOCK(&mutex) + GRIB_MUTEX_UNLOCK(&mutex); } void* grib_buffer_realloc(const grib_context* c, void* p, size_t s) diff --git a/src/grib_parse_utils.cc b/src/grib_parse_utils.cc index a3eb1422b..04beecb51 100644 --- a/src/grib_parse_utils.cc +++ b/src/grib_parse_utils.cc @@ -752,12 +752,12 @@ static grib_action* grib_parse_stream(grib_context* gc, const char* filename) if (parse(gc, filename) == 0) { if (grib_parser_all_actions) { - GRIB_MUTEX_UNLOCK(&mutex_stream) + GRIB_MUTEX_UNLOCK(&mutex_stream); return grib_parser_all_actions; } else { grib_action* ret = grib_action_create_noop(gc, filename); - GRIB_MUTEX_UNLOCK(&mutex_stream) + GRIB_MUTEX_UNLOCK(&mutex_stream); return ret; } } From aecac9dd98300138a3a15938ce59a08d6febf327 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 26 Jun 2023 21:21:07 +0100 Subject: [PATCH 340/378] Rename assertion macros --- src/action.cc | 12 ++-- src/bufr_keys_iterator.cc | 6 +- src/bufr_util.cc | 10 +-- src/grib_accessor.cc | 64 +++++++++---------- src/grib_accessor_class.cc | 4 +- src/grib_accessor_class_bufr_data_array.cc | 20 +++--- src/grib_accessor_class_bufr_data_element.cc | 36 +++++------ ...grib_accessor_class_bufr_elements_table.cc | 6 +- src/grib_accessor_class_codeflag.cc | 2 +- src/grib_accessor_class_codetable.cc | 2 +- src/grib_accessor_class_concept.cc | 2 +- ...accessor_class_data_apply_gdsnotpresent.cc | 6 +- src/grib_accessor_class_data_ccsds_packing.cc | 2 +- ...g1second_order_general_extended_packing.cc | 4 +- ...ib_accessor_class_data_g22order_packing.cc | 2 +- ...accessor_class_data_g2bifourier_packing.cc | 4 +- ...ata_g2simple_packing_with_preprocessing.cc | 4 +- ...rib_accessor_class_expanded_descriptors.cc | 4 +- ...ass_g1number_of_coded_values_sh_complex.cc | 2 +- ...lass_g1number_of_coded_values_sh_simple.cc | 2 +- src/grib_accessor_class_long_vector.cc | 2 +- ...b_accessor_class_number_of_coded_values.cc | 2 +- ...essor_class_second_order_bits_per_value.cc | 10 --- src/grib_accessor_class_smart_table.cc | 4 +- src/grib_accessor_class_trim.cc | 4 +- src/grib_api_internal.h | 8 +-- src/grib_bits_any_endian.cc | 10 +-- src/grib_buffer.cc | 4 +- src/grib_bufr_descriptors_array.cc | 2 +- src/grib_dependency.cc | 2 +- src/grib_dumper_class_bufr_simple.cc | 4 +- src/grib_filepool.cc | 2 +- src/grib_handle.cc | 6 +- src/grib_iarray.cc | 2 +- src/grib_ieeefloat.cc | 4 +- src/grib_iterator_class_gaussian.cc | 2 +- src/grib_iterator_class_gaussian_reduced.cc | 2 +- src/grib_iterator_class_lambert_conformal.cc | 2 +- src/grib_iterator_class_mercator.cc | 2 +- src/grib_oarray.cc | 2 +- src/grib_parse_utils.cc | 2 +- src/grib_query.cc | 10 +-- src/grib_templates.cc | 2 +- src/grib_trie_with_rank.cc | 4 +- src/grib_value.cc | 2 +- src/string_util.cc | 10 +-- tools/bufr_compare.cc | 2 +- tools/bufr_ls.cc | 2 +- tools/grib_compare.cc | 2 +- tools/grib_to_netcdf.cc | 6 +- 50 files changed, 151 insertions(+), 161 deletions(-) diff --git a/src/action.cc b/src/action.cc index a5a8679d1..b89cf74cf 100644 --- a/src/action.cc +++ b/src/action.cc @@ -95,7 +95,7 @@ void grib_dump(grib_action* a, FILE* f, int l) } c = c->super ? *(c->super) : NULL; } - DebugAssert(0); + DEBUG_ASSERT(0); } void grib_xref(grib_action* a, FILE* f, const char* path) @@ -111,7 +111,7 @@ void grib_xref(grib_action* a, FILE* f, const char* path) c = c->super ? *(c->super) : NULL; } printf("xref not implemented for %s\n", a->cclass->name); - DebugAssert(0); + DEBUG_ASSERT(0); } @@ -144,7 +144,7 @@ int grib_create_accessor(grib_section* p, grib_action* a, grib_loader* h) c = c->super ? *(c->super) : NULL; } fprintf(stderr, "Cannot create accessor %s %s\n", a->name, a->cclass->name); - DebugAssert(0); + DEBUG_ASSERT(0); return 0; } @@ -167,7 +167,7 @@ int grib_action_notify_change(grib_action* a, grib_accessor* observer, grib_acce c = c->super ? *(c->super) : NULL; } /*GRIB_MUTEX_UNLOCK(&mutex1);*/ - DebugAssert(0); + DEBUG_ASSERT(0); return 0; } @@ -180,7 +180,7 @@ grib_action* grib_action_reparse(grib_action* a, grib_accessor* acc, int* doit) return c->reparse(a, acc, doit); c = c->super ? *(c->super) : NULL; } - DebugAssert(0); + DEBUG_ASSERT(0); return 0; } @@ -193,7 +193,7 @@ int grib_action_execute(grib_action* a, grib_handle* h) return c->execute(a, h); c = c->super ? *(c->super) : NULL; } - DebugAssert(0); + DEBUG_ASSERT(0); return 0; } diff --git a/src/bufr_keys_iterator.cc b/src/bufr_keys_iterator.cc index ed4219820..cc8b1b3ca 100644 --- a/src/bufr_keys_iterator.cc +++ b/src/bufr_keys_iterator.cc @@ -29,7 +29,7 @@ bufr_keys_iterator* codes_bufr_keys_iterator_new(grib_handle* h, unsigned long f ki->filter_flags = filter_flags; ki->handle = h; - DebugAssert(h->product_kind == PRODUCT_BUFR); + DEBUG_ASSERT(h->product_kind == PRODUCT_BUFR); ki->key_name = NULL; ki->i_curr_attribute = 0; ki->accessor_flags_only = GRIB_ACCESSOR_FLAG_DUMP; @@ -56,7 +56,7 @@ bufr_keys_iterator* codes_bufr_data_section_keys_iterator_new(grib_handle* h) return NULL; ki->handle = h; - DebugAssert(h->product_kind == PRODUCT_BUFR); + DEBUG_ASSERT(h->product_kind == PRODUCT_BUFR); ki->i_curr_attribute = 0; ki->accessor_flags_only = GRIB_ACCESSOR_FLAG_BUFR_DATA | GRIB_ACCESSOR_FLAG_DUMP; ki->accessor_flags_skip = GRIB_ACCESSOR_FLAG_HIDDEN | GRIB_ACCESSOR_FLAG_READ_ONLY; @@ -200,7 +200,7 @@ char* codes_bufr_keys_iterator_get_name(const bufr_keys_iterator* ckiter) int* r = 0; char* ret = 0; grib_context* c = kiter->handle->context; - DebugAssert(kiter->current); + DEBUG_ASSERT(kiter->current); if (kiter->prefix) { int iattribute = kiter->i_curr_attribute - 1; diff --git a/src/bufr_util.cc b/src/bufr_util.cc index 765942d8f..000435488 100644 --- a/src/bufr_util.cc +++ b/src/bufr_util.cc @@ -19,20 +19,20 @@ int compute_bufr_key_rank(grib_handle* h, grib_string_list* keys, const char* ke int theRank = 0; size_t size = 0; grib_context* c = h->context; - DebugAssert(h->product_kind == PRODUCT_BUFR); + DEBUG_ASSERT(h->product_kind == PRODUCT_BUFR); while (next && next->value && strcmp(next->value, key)) { prev = next; next = next->next; } if (!next) { - DebugAssert(prev); + DEBUG_ASSERT(prev); if (prev) { prev->next = (grib_string_list*)grib_context_malloc_clear(c, sizeof(grib_string_list)); next = prev->next; } } - DebugAssert(next); + DEBUG_ASSERT(next); if (!next) return 0; if (!next->value) { @@ -166,7 +166,7 @@ static int bufr_decode_rdb_keys(const void* message, long offset_section2, codes unsigned char* p = (unsigned char*)message + offset_keyData; - DebugAssert(hdr->ecmwfLocalSectionPresent); + DEBUG_ASSERT(hdr->ecmwfLocalSectionPresent); hdr->rdbType = (long)grib_decode_unsigned_long(pMessage, &pos_rdbType, nbits_rdbType); hdr->oldSubtype = (long)grib_decode_unsigned_long(pMessage, &pos_oldSubtype, nbits_oldSubtype); @@ -218,7 +218,7 @@ static int bufr_decode_extra_rdb_keys(const void* message, long offset_section2, unsigned char* pKeyData = (unsigned char*)message + offset_keyData; char* pKeyMore = (char*)message + offset_keyMore; - DebugAssert(hdr->ecmwfLocalSectionPresent); + DEBUG_ASSERT(hdr->ecmwfLocalSectionPresent); if (hdr->rdbType == 2 || hdr->rdbType == 3 || hdr->rdbType == 8 || hdr->rdbType == 12) { isSatelliteType = true; diff --git a/src/grib_accessor.cc b/src/grib_accessor.cc index 6fa51d635..673eb2dcd 100644 --- a/src/grib_accessor.cc +++ b/src/grib_accessor.cc @@ -38,7 +38,7 @@ void grib_accessor_dump(grib_accessor* a, grib_dumper* f) } c = c->super ? *(c->super) : NULL; } - DebugAssert(0); + DEBUG_ASSERT(0); } int grib_pack_missing(grib_accessor* a) @@ -51,7 +51,7 @@ int grib_pack_missing(grib_accessor* a) } c = c->super ? *(c->super) : NULL; } - DebugAssert(0); + DEBUG_ASSERT(0); return 0; } @@ -65,7 +65,7 @@ int grib_pack_zero(grib_accessor* a) } c = c->super ? *(c->super) : NULL; } - DebugAssert(0); + DEBUG_ASSERT(0); return 0; } @@ -79,7 +79,7 @@ int grib_is_missing_internal(grib_accessor* a) } c = c->super ? *(c->super) : NULL; } - DebugAssert(0); + DEBUG_ASSERT(0); return 0; } @@ -93,7 +93,7 @@ int grib_pack_double(grib_accessor* a, const double* v, size_t* len) } c = c->super ? *(c->super) : NULL; } - DebugAssert(0); + DEBUG_ASSERT(0); return 0; } @@ -106,7 +106,7 @@ int grib_pack_float(grib_accessor* a, const float* v, size_t* len) } c = c->super ? *(c->super) : NULL; } - DebugAssert(0); + DEBUG_ASSERT(0); return 0; } @@ -120,7 +120,7 @@ int grib_pack_expression(grib_accessor* a, grib_expression* e) } c = c->super ? *(c->super) : NULL; } - DebugAssert(0); + DEBUG_ASSERT(0); return 0; } @@ -134,7 +134,7 @@ int grib_pack_string(grib_accessor* a, const char* v, size_t* len) } c = c->super ? *(c->super) : NULL; } - DebugAssert(0); + DEBUG_ASSERT(0); return 0; } @@ -148,7 +148,7 @@ int grib_pack_string_array(grib_accessor* a, const char** v, size_t* len) } c = c->super ? *(c->super) : NULL; } - DebugAssert(0); + DEBUG_ASSERT(0); return 0; } @@ -162,7 +162,7 @@ int grib_pack_long(grib_accessor* a, const long* v, size_t* len) } c = c->super ? *(c->super) : NULL; } - DebugAssert(0); + DEBUG_ASSERT(0); return 0; } @@ -176,7 +176,7 @@ int grib_pack_bytes(grib_accessor* a, const unsigned char* v, size_t* len) } c = c->super ? *(c->super) : NULL; } - DebugAssert(0); + DEBUG_ASSERT(0); return 0; } @@ -190,7 +190,7 @@ int grib_unpack_bytes(grib_accessor* a, unsigned char* v, size_t* len) } c = c->super ? *(c->super) : NULL; } - DebugAssert(0); + DEBUG_ASSERT(0); return 0; } @@ -203,7 +203,7 @@ int grib_unpack_double_subarray(grib_accessor* a, double* v, size_t start, size_ } c = c->super ? *(c->super) : NULL; } - DebugAssert(0); + DEBUG_ASSERT(0); return 0; } @@ -217,7 +217,7 @@ int grib_unpack_double(grib_accessor* a, double* v, size_t* len) } c = c->super ? *(c->super) : NULL; } - DebugAssert(0); + DEBUG_ASSERT(0); return 0; } @@ -231,7 +231,7 @@ int grib_unpack_float(grib_accessor* a, float* v, size_t* len) } c = c->super ? *(c->super) : NULL; } - DebugAssert(0); + DEBUG_ASSERT(0); return 0; } @@ -277,7 +277,7 @@ int grib_unpack_float_element(grib_accessor* a, size_t i, float* v) int grib_unpack_double_element_set(grib_accessor* a, const size_t* index_array, size_t len, double* val_array) { grib_accessor_class* c = a->cclass; - DebugAssert(len > 0); + DEBUG_ASSERT(len > 0); while (c) { if (c->unpack_double_element_set) { return c->unpack_double_element_set(a, index_array, len, val_array); @@ -290,7 +290,7 @@ int grib_unpack_float_element_set(grib_accessor* a, const size_t* index_array, s { /* *grib_accessor_class* c = a->cclass; - *DebugAssert(len > 0); + *DEBUG_ASSERT(len > 0); *while (c) { * if (c->unpack_float_element_set) { * return c->unpack_float_element_set(a, index_array, len, val_array); @@ -311,7 +311,7 @@ int grib_unpack_string(grib_accessor* a, char* v, size_t* len) } c = c->super ? *(c->super) : NULL; } - DebugAssert(0); + DEBUG_ASSERT(0); return 0; } @@ -324,7 +324,7 @@ int grib_unpack_string_array(grib_accessor* a, char** v, size_t* len) } c = c->super ? *(c->super) : NULL; } - DebugAssert(0); + DEBUG_ASSERT(0); return 0; } @@ -406,7 +406,7 @@ int grib_unpack_long(grib_accessor* a, long* v, size_t* len) } c = c->super ? *(c->super) : NULL; } - DebugAssert(0); + DEBUG_ASSERT(0); return 0; } @@ -421,7 +421,7 @@ long grib_accessor_get_native_type(grib_accessor* a) return c->get_native_type(a); c = c->super ? *(c->super) : NULL; } - DebugAssert(0); + DEBUG_ASSERT(0); return 0; } @@ -437,7 +437,7 @@ long grib_get_next_position_offset(grib_accessor* a) return c->next_offset(a); c = c->super ? *(c->super) : NULL; } - DebugAssert(0); + DEBUG_ASSERT(0); return 0; } @@ -452,7 +452,7 @@ long grib_string_length(grib_accessor* a) return c->string_length(a); c = c->super ? *(c->super) : NULL; } - DebugAssert(0); + DEBUG_ASSERT(0); return 0; } @@ -467,7 +467,7 @@ long grib_byte_offset(grib_accessor* a) return c->byte_offset(a); c = c->super ? *(c->super) : NULL; } - DebugAssert(0); + DEBUG_ASSERT(0); return 0; } @@ -482,7 +482,7 @@ long grib_byte_count(grib_accessor* a) return c->byte_count(a); c = c->super ? *(c->super) : NULL; } - DebugAssert(0); + DEBUG_ASSERT(0); return 0; } @@ -500,7 +500,7 @@ int grib_value_count(grib_accessor* a, long* count) } c = c->super ? *(c->super) : NULL; } - DebugAssert(0); + DEBUG_ASSERT(0); return 0; } @@ -529,7 +529,7 @@ int grib_accessor_notify_change(grib_accessor* a, grib_accessor* changed) } if (a && a->cclass) printf("notify_change not implemented for %s %s\n", a->cclass->name, a->name); - DebugAssert(0); + DEBUG_ASSERT(0); return 0; } @@ -593,7 +593,7 @@ void grib_update_size(grib_accessor* a, size_t len) } c = c->super ? *(c->super) : NULL; } - DebugAssert(0); + DEBUG_ASSERT(0); } int grib_nearest_smaller_value(grib_accessor* a, double val, double* nearest) @@ -605,7 +605,7 @@ int grib_nearest_smaller_value(grib_accessor* a, double val, double* nearest) } c = c->super ? *(c->super) : NULL; } - DebugAssert(0); + DEBUG_ASSERT(0); return 0; } @@ -620,7 +620,7 @@ size_t grib_preferred_size(grib_accessor* a, int from_handle) } c = c->super ? *(c->super) : NULL; } - DebugAssert(0); + DEBUG_ASSERT(0); return 0; } @@ -633,7 +633,7 @@ grib_accessor* grib_next_accessor(grib_accessor* a) } c = c->super ? *(c->super) : NULL; } - DebugAssert(0); + DEBUG_ASSERT(0); return 0; } @@ -648,7 +648,7 @@ void grib_resize(grib_accessor* a, size_t new_size) } c = c->super ? *(c->super) : NULL; } - DebugAssert(0); + DEBUG_ASSERT(0); return; } diff --git a/src/grib_accessor_class.cc b/src/grib_accessor_class.cc index 430e11f80..127f1ec7d 100644 --- a/src/grib_accessor_class.cc +++ b/src/grib_accessor_class.cc @@ -248,11 +248,11 @@ void grib_push_accessor(grib_accessor* a, grib_block_of_accessors* l) l->last = a; if (hand->use_trie) { - DebugAssert( a->all_names[0] ); + DEBUG_ASSERT( a->all_names[0] ); if (*(a->all_names[0]) != '_') { id = grib_hash_keys_get_id(a->context->keys, a->all_names[0]); - DebugAssert(id >= 0 && id < ACCESSORS_ARRAY_SIZE); + DEBUG_ASSERT(id >= 0 && id < ACCESSORS_ARRAY_SIZE); a->same = hand->accessors[id]; link_same_attributes(a, a->same); diff --git a/src/grib_accessor_class_bufr_data_array.cc b/src/grib_accessor_class_bufr_data_array.cc index 4db4e2ee3..1a3354c23 100644 --- a/src/grib_accessor_class_bufr_data_array.cc +++ b/src/grib_accessor_class_bufr_data_array.cc @@ -770,7 +770,7 @@ static int descriptor_get_min_max(bufr_descriptor* bd, long width, long referenc if (width <= 0) return GRIB_MISSING_BUFR_ENTRY; /* ECC-1395 */ - DebugAssert(width > 0 && width < 64); + DEBUG_ASSERT(width > 0 && width < 64); *maxAllowed = (max1 + reference) * factor; *minAllowed = reference * factor; @@ -1387,7 +1387,7 @@ static int encode_new_replication(grib_context* c, grib_accessor_bufr_data_array int err = 0; unsigned long repetitions = 1; bufr_descriptor** descriptors = self->expanded->v; - DebugAssert( buff->data == data ); + DEBUG_ASSERT( buff->data == data ); switch (descriptors[i]->code) { case 31000: @@ -1521,7 +1521,7 @@ static int encode_replication(grib_context* c, grib_accessor_bufr_data_array* se { /* Assert( buff->data == data); */ if (self->compressedData) { - DebugAssert(grib_darray_used_size(self->numericValues->v[elementIndex]) == 1); + DEBUG_ASSERT(grib_darray_used_size(self->numericValues->v[elementIndex]) == 1); *numberOfRepetitions = self->numericValues->v[elementIndex]->v[0]; } else { @@ -1757,7 +1757,7 @@ static int get_next_bitmap_descriptor_index_new_bitmap(grib_accessor_bufr_data_a i = self->bitmapCurrent; if (self->compressedData) { - DebugAssert(i < self->nInputBitmap); + DEBUG_ASSERT(i < self->nInputBitmap); if (i >= self->nInputBitmap) return GRIB_WRONG_BITMAP_SIZE; while (self->inputBitmap[i] == 1) { @@ -1797,7 +1797,7 @@ static int get_next_bitmap_descriptor_index(grib_accessor_bufr_data_array* self, self->bitmapCurrent++; self->bitmapCurrentElementsDescriptorsIndex++; i = self->bitmapCurrent + self->bitmapStart; - DebugAssert(i < self->numericValues->n); + DEBUG_ASSERT(i < self->numericValues->n); while (self->numericValues->v[i]->v[0] == 1) { self->bitmapCurrent++; self->bitmapCurrentElementsDescriptorsIndex++; @@ -1813,7 +1813,7 @@ static int get_next_bitmap_descriptor_index(grib_accessor_bufr_data_array* self, self->bitmapCurrent++; self->bitmapCurrentElementsDescriptorsIndex++; i = self->bitmapCurrent + self->bitmapStart; - DebugAssert(i < numericValues->n); + DEBUG_ASSERT(i < numericValues->n); while (numericValues->v[i] == 1) { self->bitmapCurrent++; self->bitmapCurrentElementsDescriptorsIndex++; @@ -1984,7 +1984,7 @@ static grib_accessor* create_accessor_from_descriptor(const grib_accessor* a, gr operatorCreator.name = (char*)"operator"; if (attribute) { - DebugAssert(attribute->parent == NULL); + DEBUG_ASSERT(attribute->parent == NULL); } if (add_dump_flag) { @@ -2538,7 +2538,7 @@ static int create_keys(const grib_accessor* a, long onlySubset, long startSubset if (descriptor->F == 0 && IS_COORDINATE_DESCRIPTOR(descriptor->X) && self->unpackMode == CODES_BUFR_UNPACK_STRUCTURE) { const int sidx = descriptor->Y + significanceQualifierIndexArray[descriptor->X] * NUMBER_OF_QUALIFIERS_PER_CATEGORY; - DebugAssert(sidx > 0); + DEBUG_ASSERT(sidx > 0); groupNumber++; add_coord_flag = 1; @@ -2875,7 +2875,7 @@ static int process_elements(grib_accessor* a, int flag, long onlySubset, long st decoding = 1; do_clean = 1; dataAccessor = grib_find_accessor(grib_handle_of_accessor(a), self->bufrDataEncodedName); - DebugAssert(dataAccessor); + DEBUG_ASSERT(dataAccessor); dataOffset = accessor_raw_get_offset(dataAccessor); pos = dataOffset * 8; codec_element = &decode_element; @@ -3036,7 +3036,7 @@ static int process_elements(grib_accessor* a, int flag, long onlySubset, long st /* Delayed replication */ inr = numberOfNestedRepetitions; numberOfNestedRepetitions++; - DebugAssert(numberOfNestedRepetitions <= MAX_NESTED_REPLICATIONS); + DEBUG_ASSERT(numberOfNestedRepetitions <= MAX_NESTED_REPLICATIONS); numberOfElementsToRepeat[inr] = descriptors[i]->X; n[inr] = numberOfElementsToRepeat[inr]; i++; diff --git a/src/grib_accessor_class_bufr_data_element.cc b/src/grib_accessor_class_bufr_data_element.cc index 0fa991ced..1fc97d9a5 100644 --- a/src/grib_accessor_class_bufr_data_element.cc +++ b/src/grib_accessor_class_bufr_data_element.cc @@ -284,9 +284,9 @@ static int unpack_string_array(grib_accessor* a, char** val, size_t* len) grib_context* c = a->context; if (self->compressedData) { - DebugAssert(self->index < self->numericValues->n); + DEBUG_ASSERT(self->index < self->numericValues->n); idx = ((int)self->numericValues->v[self->index]->v[0] / 1000 - 1) / self->numberOfSubsets; - DebugAssert(idx < self->stringValues->n); + DEBUG_ASSERT(idx < self->stringValues->n); count = grib_sarray_used_size(self->stringValues->v[idx]); for (i = 0; i < count; i++) { val[i] = grib_context_strdup(c, self->stringValues->v[idx]->v[i]); @@ -294,8 +294,8 @@ static int unpack_string_array(grib_accessor* a, char** val, size_t* len) *len = count; } else { - DebugAssert(self->subsetNumber < self->numericValues->n); - DebugAssert(self->index < self->numericValues->v[self->subsetNumber]->n); + DEBUG_ASSERT(self->subsetNumber < self->numericValues->n); + DEBUG_ASSERT(self->index < self->numericValues->v[self->subsetNumber]->n); idx = (int)self->numericValues->v[self->subsetNumber]->v[self->index] / 1000 - 1; val[0] = grib_context_strdup(c, self->stringValues->v[idx]->v[0]); *len = 1; @@ -359,18 +359,18 @@ static int unpack_string(grib_accessor* a, char* val, size_t* len) } if (self->compressedData) { - DebugAssert(self->index < self->numericValues->n); + DEBUG_ASSERT(self->index < self->numericValues->n); idx = ((int)self->numericValues->v[self->index]->v[0] / 1000 - 1) / self->numberOfSubsets; if (idx < 0) return GRIB_INTERNAL_ERROR; str = grib_context_strdup(c, self->stringValues->v[idx]->v[0]); } else { - DebugAssert(self->subsetNumber < self->numericValues->n); + DEBUG_ASSERT(self->subsetNumber < self->numericValues->n); idx = (int)self->numericValues->v[self->subsetNumber]->v[self->index] / 1000 - 1; if (idx < 0) return GRIB_INTERNAL_ERROR; - DebugAssert(idx < self->stringValues->n); + DEBUG_ASSERT(idx < self->stringValues->n); str = grib_context_strdup(c, self->stringValues->v[idx]->v[0]); } @@ -440,15 +440,15 @@ static int unpack_long(grib_accessor* a, long* val, size_t* len) if (self->compressedData) { for (i = 0; i < count; i++) { - DebugAssert(self->index < self->numericValues->n); - DebugAssert(i < self->numericValues->v[self->index]->n); + DEBUG_ASSERT(self->index < self->numericValues->n); + DEBUG_ASSERT(i < self->numericValues->v[self->index]->n); val[i] = self->numericValues->v[self->index]->v[i] == GRIB_MISSING_DOUBLE ? GRIB_MISSING_LONG : (long)self->numericValues->v[self->index]->v[i]; } *len = count; } else { - DebugAssert(self->subsetNumber < self->numericValues->n); - DebugAssert(self->index < self->numericValues->v[self->subsetNumber]->n); + DEBUG_ASSERT(self->subsetNumber < self->numericValues->n); + DEBUG_ASSERT(self->index < self->numericValues->v[self->subsetNumber]->n); val[0] = self->numericValues->v[self->subsetNumber]->v[self->index] == GRIB_MISSING_DOUBLE ? GRIB_MISSING_LONG : (long)self->numericValues->v[self->subsetNumber]->v[self->index]; *len = 1; } @@ -469,15 +469,15 @@ static int unpack_double(grib_accessor* a, double* val, size_t* len) if (self->compressedData) { for (i = 0; i < count; i++) { - DebugAssert(self->index < self->numericValues->n); - DebugAssert(i < self->numericValues->v[self->index]->n); + DEBUG_ASSERT(self->index < self->numericValues->n); + DEBUG_ASSERT(i < self->numericValues->v[self->index]->n); val[i] = self->numericValues->v[self->index]->v[i]; } *len = count; } else { - DebugAssert(self->subsetNumber < self->numericValues->n); - DebugAssert(self->index < self->numericValues->v[self->subsetNumber]->n); + DEBUG_ASSERT(self->subsetNumber < self->numericValues->n); + DEBUG_ASSERT(self->index < self->numericValues->v[self->subsetNumber]->n); val[0] = self->numericValues->v[self->subsetNumber]->v[self->index]; *len = 1; } @@ -558,12 +558,12 @@ static int value_count(grib_accessor* a, long* count) type = get_native_type(a); if (type == GRIB_TYPE_STRING) { - DebugAssert(self->index < self->numericValues->n); + DEBUG_ASSERT(self->index < self->numericValues->n); idx = ((int)self->numericValues->v[self->index]->v[0] / 1000 - 1) / self->numberOfSubsets; size = grib_sarray_used_size(self->stringValues->v[idx]); } else { - DebugAssert(self->index < self->numericValues->n); + DEBUG_ASSERT(self->index < self->numericValues->n); size = grib_darray_used_size(self->numericValues->v[self->index]); } @@ -597,7 +597,7 @@ static int get_native_type(grib_accessor* a) { grib_accessor_bufr_data_element* self = (grib_accessor_bufr_data_element*)a; int ret = GRIB_TYPE_DOUBLE; - DebugAssert(self); + DEBUG_ASSERT(self); switch (self->type) { case BUFR_DESCRIPTOR_TYPE_STRING: ret = GRIB_TYPE_STRING; diff --git a/src/grib_accessor_class_bufr_elements_table.cc b/src/grib_accessor_class_bufr_elements_table.cc index a4d0b1d47..4089082f9 100644 --- a/src/grib_accessor_class_bufr_elements_table.cc +++ b/src/grib_accessor_class_bufr_elements_table.cc @@ -241,7 +241,7 @@ static grib_trie* load_bufr_elements_table(grib_accessor* a, int* err) dictionary = grib_trie_new(c); while (fgets(line, sizeof(line) - 1, f)) { - DebugAssert( strlen(line) > 0 ); + DEBUG_ASSERT( strlen(line) > 0 ); if (line[0] == '#') continue; /* Ignore first line with column titles */ list = string_split(line, "|"); grib_trie_insert(dictionary, list[0], list); @@ -258,7 +258,7 @@ static grib_trie* load_bufr_elements_table(grib_accessor* a, int* err) } while (fgets(line, sizeof(line) - 1, f)) { - DebugAssert( strlen(line) > 0 ); + DEBUG_ASSERT( strlen(line) > 0 ); if (line[0] == '#') continue; /* Ignore first line with column titles */ list = string_split(line, "|"); /* Look for the descriptor code in the trie. It might be there from before */ @@ -383,7 +383,7 @@ bufr_descriptor* accessor_bufr_elements_table_get_descriptor(grib_accessor* a, i return NULL; c = a->context; - DebugAssert(c); + DEBUG_ASSERT(c); v = (bufr_descriptor*)grib_context_malloc_clear(c, sizeof(bufr_descriptor)); if (!v) { grib_context_log(c, GRIB_LOG_ERROR, diff --git a/src/grib_accessor_class_codeflag.cc b/src/grib_accessor_class_codeflag.cc index 000611f88..93f33fb14 100644 --- a/src/grib_accessor_class_codeflag.cc +++ b/src/grib_accessor_class_codeflag.cc @@ -124,7 +124,7 @@ static void init(grib_accessor* a, const long len, grib_arguments* param) static int test_bit(long a, long b) { - DebugAssert(b>=0); + DEBUG_ASSERT(b>=0); return a & (1 << b); } diff --git a/src/grib_accessor_class_codetable.cc b/src/grib_accessor_class_codetable.cc index bdc83f46e..dfc05ff62 100644 --- a/src/grib_accessor_class_codetable.cc +++ b/src/grib_accessor_class_codetable.cc @@ -168,7 +168,7 @@ static void init(grib_accessor* a, const long len, grib_arguments* params) grib_handle* hand = grib_handle_of_accessor(a); grib_accessor_codetable* self = (grib_accessor_codetable*)a; grib_action* act = (grib_action*)(a->creator); - DebugAssert(len == self->nbytes); + DEBUG_ASSERT(len == self->nbytes); if (new_len == 0) { /* ECC-485: When the codetable length is 0, it means we are passing diff --git a/src/grib_accessor_class_concept.cc b/src/grib_accessor_class_concept.cc index 1238081ce..f280ea39d 100644 --- a/src/grib_accessor_class_concept.cc +++ b/src/grib_accessor_class_concept.cc @@ -363,7 +363,7 @@ static int grib_concept_apply(grib_accessor* a, const char* name) grib_action* act = a->creator; int nofail = action_concept_get_nofail(a); - DebugAssert(concepts); + DEBUG_ASSERT(concepts); c = (grib_concept_value*)grib_trie_get(concepts->index, name); diff --git a/src/grib_accessor_class_data_apply_gdsnotpresent.cc b/src/grib_accessor_class_data_apply_gdsnotpresent.cc index 2fffd3839..120e0e043 100644 --- a/src/grib_accessor_class_data_apply_gdsnotpresent.cc +++ b/src/grib_accessor_class_data_apply_gdsnotpresent.cc @@ -230,17 +230,17 @@ static int unpack_double(grib_accessor* a, double* val, size_t* len) if (latitude_of_first_point == 0) { for (i = 0; i < number_of_values; i++) { - DebugAssert(coded_vals); + DEBUG_ASSERT(coded_vals); if (coded_vals) val[i] = coded_vals[i]; } for (i = number_of_values; i < number_of_points; i++) { - DebugAssert(coded_vals); + DEBUG_ASSERT(coded_vals); if (coded_vals) val[i] = coded_vals[number_of_values - 1]; } } else { for (i = 0; i < ni - 1; i++) { - DebugAssert(coded_vals); + DEBUG_ASSERT(coded_vals); if (coded_vals) val[i] = coded_vals[0]; } for (i = ni - 1; i < number_of_points; i++) { diff --git a/src/grib_accessor_class_data_ccsds_packing.cc b/src/grib_accessor_class_data_ccsds_packing.cc index 3ad5fafb0..1035ce9f1 100644 --- a/src/grib_accessor_class_data_ccsds_packing.cc +++ b/src/grib_accessor_class_data_ccsds_packing.cc @@ -330,7 +330,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) if (reference_value > min) { grib_context_log(a->context, GRIB_LOG_ERROR, "%s %s: reference_value=%g min_value=%g diff=%g", cclass_name, __func__, reference_value, min, reference_value - min); - DebugAssert(reference_value <= min); + DEBUG_ASSERT(reference_value <= min); return GRIB_INTERNAL_ERROR; } } diff --git a/src/grib_accessor_class_data_g1second_order_general_extended_packing.cc b/src/grib_accessor_class_data_g1second_order_general_extended_packing.cc index 85e1ed461..1c218bad4 100644 --- a/src/grib_accessor_class_data_g1second_order_general_extended_packing.cc +++ b/src/grib_accessor_class_data_g1second_order_general_extended_packing.cc @@ -901,7 +901,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) maxA = X[count]; minA = X[count]; for (i = 1; i < groupLengthA; i++) { - DebugAssertAccess(X, count + i, numberOfValues); + DEBUG_ASSERT_ACCESS(X, count + i, numberOfValues); if (maxA < X[count + i]) maxA = X[count + i]; if (minA > X[count + i]) @@ -933,7 +933,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) maxC = X[offsetC]; minC = X[offsetC]; for (i = 1; i < groupLengthC; i++) { - DebugAssertAccess(X, offsetC + i, numberOfValues); + DEBUG_ASSERT_ACCESS(X, offsetC + i, numberOfValues); if (maxC < X[offsetC + i]) maxC = X[offsetC + i]; if (minC > X[offsetC + i]) diff --git a/src/grib_accessor_class_data_g22order_packing.cc b/src/grib_accessor_class_data_g22order_packing.cc index 8751480db..e930fe264 100644 --- a/src/grib_accessor_class_data_g22order_packing.cc +++ b/src/grib_accessor_class_data_g22order_packing.cc @@ -662,7 +662,7 @@ static int unpack(grib_accessor* a, T* val, const size_t* len) if (missingValueManagementUsed == 0) { // No explicit missing values included within data values for (j = 0; j < nvals_per_group; j++) { - DebugAssertAccess(sec_val, (long)(vcount + j), n_vals); + DEBUG_ASSERT_ACCESS(sec_val, (long)(vcount + j), n_vals); sec_val[vcount + j] = group_ref_val + grib_decode_unsigned_long(buf_vals, &vals_p, nbits_per_group_val); // printf("sec_val[%ld]=%ld\n", vcount+j, sec_val[vcount+j]); } diff --git a/src/grib_accessor_class_data_g2bifourier_packing.cc b/src/grib_accessor_class_data_g2bifourier_packing.cc index bc9abe56f..04d76cb3a 100644 --- a/src/grib_accessor_class_data_g2bifourier_packing.cc +++ b/src/grib_accessor_class_data_g2bifourier_packing.cc @@ -418,8 +418,8 @@ static double laplam(bif_trunc_t* bt, const double val[]) else { int m, ll = itab1[i * i + j * j]; for (m = 0; m < 4; m++, isp++) { - DebugAssertAccess(znorm, (long)ll, (long)lmax); - DebugAssertAccess(val, (long)isp, (long)bt->n_vals_bif); + DEBUG_ASSERT_ACCESS(znorm, (long)ll, (long)lmax); + DEBUG_ASSERT_ACCESS(val, (long)isp, (long)bt->n_vals_bif); if (ll < lmax && isp < bt->n_vals_bif) { znorm[ll] = std::max(znorm[ll], fabs(val[isp])); } diff --git a/src/grib_accessor_class_data_g2simple_packing_with_preprocessing.cc b/src/grib_accessor_class_data_g2simple_packing_with_preprocessing.cc index 3cc885d9f..3cbbd1d64 100644 --- a/src/grib_accessor_class_data_g2simple_packing_with_preprocessing.cc +++ b/src/grib_accessor_class_data_g2simple_packing_with_preprocessing.cc @@ -176,7 +176,7 @@ static int pre_processing_func(double* values, long length, long pre_processing, if (min > 0) { *pre_processing_parameter = 0; for (i = 0; i < length; i++) { - DebugAssert(values[i] > 0); + DEBUG_ASSERT(values[i] > 0); values[i] = log(values[i]); } } @@ -187,7 +187,7 @@ static int pre_processing_func(double* values, long length, long pre_processing, return ret; ppp = *pre_processing_parameter; for (i = 0; i < length; i++) { - DebugAssert((values[i] + ppp) > 0); + DEBUG_ASSERT((values[i] + ppp) > 0); values[i] = log(values[i] + ppp); } } diff --git a/src/grib_accessor_class_expanded_descriptors.cc b/src/grib_accessor_class_expanded_descriptors.cc index b9fd65e3b..4cceae5d8 100644 --- a/src/grib_accessor_class_expanded_descriptors.cc +++ b/src/grib_accessor_class_expanded_descriptors.cc @@ -679,11 +679,11 @@ static int expand(grib_accessor* a) if (aDescriptor1->F == 2 && aDescriptor1->X == 6) { Assert(aDescriptor1->type == BUFR_DESCRIPTOR_TYPE_OPERATOR); operator206yyy_width = aDescriptor1->Y; /* Store the width for the following descriptor */ - DebugAssert(operator206yyy_width > 0); + DEBUG_ASSERT(operator206yyy_width > 0); } else if (operator206yyy_width > 0) { if (err == GRIB_NOT_FOUND) { - DebugAssert(aDescriptor1->type == BUFR_DESCRIPTOR_TYPE_UNKNOWN); + DEBUG_ASSERT(aDescriptor1->type == BUFR_DESCRIPTOR_TYPE_UNKNOWN); err = 0; /* Clear any error generated due to local descriptor */ aDescriptor1->nokey = aDescriptor2->nokey = 1; /* Do not show this descriptor in dump */ } diff --git a/src/grib_accessor_class_g1number_of_coded_values_sh_complex.cc b/src/grib_accessor_class_g1number_of_coded_values_sh_complex.cc index 742ca0d79..6308d5e75 100644 --- a/src/grib_accessor_class_g1number_of_coded_values_sh_complex.cc +++ b/src/grib_accessor_class_g1number_of_coded_values_sh_complex.cc @@ -176,7 +176,7 @@ static int unpack_long(grib_accessor* a, long* val, size_t* len) NS = (MS + 1) * (MS + 2); if (bpv != 0) { - DebugAssert(offsetAfterData > offsetBeforeData); + DEBUG_ASSERT(offsetAfterData > offsetBeforeData); *val = ((offsetAfterData - offsetBeforeData) * 8 - unusedBits + NS * (bpv - 32)) / bpv; } else { diff --git a/src/grib_accessor_class_g1number_of_coded_values_sh_simple.cc b/src/grib_accessor_class_g1number_of_coded_values_sh_simple.cc index 7ba17c547..1a98e26ce 100644 --- a/src/grib_accessor_class_g1number_of_coded_values_sh_simple.cc +++ b/src/grib_accessor_class_g1number_of_coded_values_sh_simple.cc @@ -152,7 +152,7 @@ static int unpack_long(grib_accessor* a, long* val, size_t* len) return ret; if (bpv != 0) { - DebugAssert(offsetAfterData > offsetBeforeData); + DEBUG_ASSERT(offsetAfterData > offsetBeforeData); *val = ((offsetAfterData - offsetBeforeData) * 8 - unusedBits) / bpv; } else { diff --git a/src/grib_accessor_class_long_vector.cc b/src/grib_accessor_class_long_vector.cc index ffd29f339..7a6d54322 100644 --- a/src/grib_accessor_class_long_vector.cc +++ b/src/grib_accessor_class_long_vector.cc @@ -164,7 +164,7 @@ static int unpack_long(grib_accessor* a, long* val, size_t* len) /*TODO implement the dirty mechanism to avoid to unpack every time */ err = grib_get_size(grib_handle_of_accessor(a), self->vector, &size); if (err) return err; - DebugAssert(size > 0); + DEBUG_ASSERT(size > 0); vector = (long*)grib_context_malloc(a->context, sizeof(long) * size); err = grib_unpack_long(va, vector, &size); grib_context_free(a->context, vector); diff --git a/src/grib_accessor_class_number_of_coded_values.cc b/src/grib_accessor_class_number_of_coded_values.cc index 6d49b5183..04dfcf347 100644 --- a/src/grib_accessor_class_number_of_coded_values.cc +++ b/src/grib_accessor_class_number_of_coded_values.cc @@ -155,7 +155,7 @@ static int unpack_long(grib_accessor* a, long* val, size_t* len) if (bpv != 0) { grib_context_log(a->context, GRIB_LOG_DEBUG, "grib_accessor_number_of_coded_values: offsetAfterData=%ld offsetBeforeData=%ld unusedBits=%ld bpv=%ld\n", offsetAfterData, offsetBeforeData, unusedBits, bpv); - DebugAssert(offsetAfterData > offsetBeforeData); + DEBUG_ASSERT(offsetAfterData > offsetBeforeData); *val = ((offsetAfterData - offsetBeforeData) * 8 - unusedBits) / bpv; } else { diff --git a/src/grib_accessor_class_second_order_bits_per_value.cc b/src/grib_accessor_class_second_order_bits_per_value.cc index 5eb4cc27a..d4f22423d 100644 --- a/src/grib_accessor_class_second_order_bits_per_value.cc +++ b/src/grib_accessor_class_second_order_bits_per_value.cc @@ -118,16 +118,6 @@ grib_accessor_class* grib_accessor_class_second_order_bits_per_value = &_grib_ac /* END_CLASS_IMP */ -/* -static const size_t nbits[32]={ - 0x1, 0x2, 0x4, 0x8, 0x10, 0x20, - 0x40, 0x80, 0x100, 0x200, 0x400, 0x800, - 0x1000, 0x2000, 0x4000, 0x8000, 0x10000, 0x20000, - 0x40000, 0x80000, 0x100000, 0x200000, 0x400000, 0x800000, - 0x1000000, 0x2000000, 0x4000000, 0x8000000, 0x10000000, 0x20000000, - 0x40000000, 0x80000000 -}; -*/ static const size_t nbits[64] = { 0x1, 0x2, 0x4, 0x8, 0x10, 0x20, 0x40, 0x80, diff --git a/src/grib_accessor_class_smart_table.cc b/src/grib_accessor_class_smart_table.cc index e16ebc490..2cde26cf3 100644 --- a/src/grib_accessor_class_smart_table.cc +++ b/src/grib_accessor_class_smart_table.cc @@ -351,13 +351,13 @@ static int grib_load_smart_table(grib_context* c, const char* filename, numberOfColumns = 0; /* The highest possible descriptor code must fit into t->numberOfEntries */ - DebugAssert(code < t->numberOfEntries); + DEBUG_ASSERT(code < t->numberOfEntries); while (*s) { char* tcol = t->entries[code].column[numberOfColumns]; if ( tcol ) grib_context_free_persistent(c, tcol); t->entries[code].column[numberOfColumns] = grib_context_strdup_persistent(c, s); numberOfColumns++; - DebugAssert(numberOfColumns < MAX_SMART_TABLE_COLUMNS); + DEBUG_ASSERT(numberOfColumns < MAX_SMART_TABLE_COLUMNS); p++; s = p; diff --git a/src/grib_accessor_class_trim.cc b/src/grib_accessor_class_trim.cc index 1c5cdfc3e..e41b44219 100644 --- a/src/grib_accessor_class_trim.cc +++ b/src/grib_accessor_class_trim.cc @@ -121,8 +121,8 @@ static void init(grib_accessor* a, const long l, grib_arguments* arg) self->input = grib_arguments_get_name(h, arg, n++); self->trim_left = grib_arguments_get_long(h, arg, n++); self->trim_right= grib_arguments_get_long(h, arg, n++); - DebugAssert(self->trim_left == 0 || self->trim_left == 1); - DebugAssert(self->trim_right == 0 || self->trim_right == 1); + DEBUG_ASSERT(self->trim_left == 0 || self->trim_left == 1); + DEBUG_ASSERT(self->trim_right == 0 || self->trim_right == 1); } static int unpack_string(grib_accessor* a, char* val, size_t* len) diff --git a/src/grib_api_internal.h b/src/grib_api_internal.h index 52424e3f3..94fd5e815 100644 --- a/src/grib_api_internal.h +++ b/src/grib_api_internal.h @@ -186,8 +186,8 @@ extern int pthread_mutexattr_settype(pthread_mutexattr_t* attr, int type); #endif #ifdef DEBUG -#define DebugAssert(a) Assert(a) -#define DebugAssertAccess(array, index, size) \ +#define DEBUG_ASSERT(a) Assert(a) +#define DEBUG_ASSERT_ACCESS(array, index, size) \ do { \ if (!((index) >= 0 && (index) < (size))) { \ printf("ARRAY ACCESS ERROR: array=%s idx=%ld size=%ld @ %s +%d \n", #array, index, size, __FILE__, __LINE__); \ @@ -195,8 +195,8 @@ extern int pthread_mutexattr_settype(pthread_mutexattr_t* attr, int type); } \ } while (0) #else -#define DebugAssert(a) -#define DebugAssertAccess(array, index, size) +#define DEBUG_ASSERT(a) +#define DEBUG_ASSERT_ACCESS(array, index, size) #endif /* Return true if two strings are equal */ diff --git a/src/grib_bits_any_endian.cc b/src/grib_bits_any_endian.cc index 6b9b810b5..33e643a19 100644 --- a/src/grib_bits_any_endian.cc +++ b/src/grib_bits_any_endian.cc @@ -60,7 +60,7 @@ static void init_bits_all_one() int size = sizeof(int64_t) * 8; int64_t* v = 0; uint64_t cmask = -1; - DebugAssert(!bits_all_one.inited); + DEBUG_ASSERT(!bits_all_one.inited); bits_all_one.size = size; bits_all_one.inited = 1; @@ -131,7 +131,7 @@ int grib_encode_string(unsigned char* bitStream, long* bitOffset, size_t numberO *bitOffset += numberOfCharacters * 8; return err; } - DebugAssert(remainderComplement >= 0); + DEBUG_ASSERT(remainderComplement >= 0); for (i = 0; i < numberOfCharacters; i++) { c = ((*s) >> remainder) & ~mask[remainder]; *p |= c; @@ -169,7 +169,7 @@ char* grib_decode_string(const unsigned char* bitStream, long* bitOffset, size_t return string; } - DebugAssert(remainderComplement >= 0); + DEBUG_ASSERT(remainderComplement >= 0); for (i = 0; i < numberOfCharacters; i++) { c = (*p) << remainder; p++; @@ -242,7 +242,7 @@ unsigned long grib_decode_unsigned_long(const unsigned char* p, long* bitp, long while (bitsToRead > 0) { ret <<= 8; /* ret += p[pi]; */ - DebugAssert((ret & p[pi]) == 0); + DEBUG_ASSERT((ret & p[pi]) == 0); ret = ret | p[pi]; pi++; bitsToRead -= usefulBitsInByte; @@ -366,7 +366,7 @@ size_t grib_decode_size_t(const unsigned char* p, long* bitp, long nbits) while (bitsToRead > 0) { ret <<= 8; /* ret += p[pi]; */ - DebugAssert((ret & p[pi]) == 0); + DEBUG_ASSERT((ret & p[pi]) == 0); ret = ret | p[pi]; pi++; bitsToRead -= usefulBitsInByte; diff --git a/src/grib_buffer.cc b/src/grib_buffer.cc index 6de5dabc5..581a66239 100644 --- a/src/grib_buffer.cc +++ b/src/grib_buffer.cc @@ -233,8 +233,8 @@ void grib_buffer_replace(grib_accessor* a, const unsigned char* data, message_length - offset - oldsize); /* copy new data */ - DebugAssert(buffer->data + offset); - DebugAssert(data || (newsize == 0)); /* if data==NULL then newsize must be 0 */ + DEBUG_ASSERT(buffer->data + offset); + DEBUG_ASSERT(data || (newsize == 0)); /* if data==NULL then newsize must be 0 */ if (data) { /* Note: memcpy behaviour is undefined if either dest or src is NULL */ memcpy(buffer->data + offset, data, newsize); diff --git a/src/grib_bufr_descriptors_array.cc b/src/grib_bufr_descriptors_array.cc index b524caf26..a5967f26c 100644 --- a/src/grib_bufr_descriptors_array.cc +++ b/src/grib_bufr_descriptors_array.cc @@ -50,7 +50,7 @@ bufr_descriptor* grib_bufr_descriptors_array_pop_front(bufr_descriptors_array* a { bufr_descriptor* v = a->v[0]; if (a->n == 0) { - DebugAssert(0); + DEBUG_ASSERT(0); } a->n--; a->v++; diff --git a/src/grib_dependency.cc b/src/grib_dependency.cc index 6d8b7a48f..769ec49ce 100644 --- a/src/grib_dependency.cc +++ b/src/grib_dependency.cc @@ -26,7 +26,7 @@ grib_handle* grib_handle_of_accessor(const grib_accessor* a) static grib_handle* handle_of(grib_accessor* observed) { grib_handle* h = NULL; - DebugAssert(observed); + DEBUG_ASSERT(observed); /* printf("+++++ %s->parent = %p\n",observed->name,observed->parent); */ /* printf("+++++ %s = %p\n",observed->name,observed); */ /* printf("+++++ h=%p\n",observed->h); */ diff --git a/src/grib_dumper_class_bufr_simple.cc b/src/grib_dumper_class_bufr_simple.cc index eb5ec5e44..7dc758bc4 100644 --- a/src/grib_dumper_class_bufr_simple.cc +++ b/src/grib_dumper_class_bufr_simple.cc @@ -315,9 +315,9 @@ static void dump_long(grib_dumper* d, grib_accessor* a, const char* comment) /* Note: the "subsetNumber" key is only there for UNCOMPRESSED BUFR messages */ if (self->numberOfSubsets > 1 && strcmp(a->name, "subsetNumber") == 0) { err = grib_unpack_long(a, &value, &size); - DebugAssert(!err); + DEBUG_ASSERT(!err); fprintf(self->dumper.out, "%s=%ld\n", a->name, value); - DebugAssert(!grib_is_missing_long(a, value)); + DEBUG_ASSERT(!grib_is_missing_long(a, value)); (void)err; return; } diff --git a/src/grib_filepool.cc b/src/grib_filepool.cc index ab9c6b35c..4ba9a2432 100644 --- a/src/grib_filepool.cc +++ b/src/grib_filepool.cc @@ -290,7 +290,7 @@ void grib_file_pool_delete_file(grib_file* file) break; prev = prev->next; } - DebugAssert(prev); + DEBUG_ASSERT(prev); if (prev) { prev->next = file->next; } diff --git a/src/grib_handle.cc b/src/grib_handle.cc index 8c1b29fc7..8b14a7161 100644 --- a/src/grib_handle.cc +++ b/src/grib_handle.cc @@ -769,7 +769,7 @@ static grib_handle* grib_handle_new_from_file_multi(grib_context* c, FILE* f, in if (c->gts_header_on && gtslen >= 8) { gl->gts_header = (char*)grib_context_malloc_clear(c, sizeof(unsigned char) * gtslen); - DebugAssert(gts_header); + DEBUG_ASSERT(gts_header); if (gts_header) memcpy(gl->gts_header, gts_header, gtslen); gl->gts_header_len = gtslen; grib_context_free(c, save_gts_header); @@ -1002,7 +1002,7 @@ grib_handle* bufr_new_from_file(grib_context* c, FILE* f, int* error) if (c->gts_header_on && gtslen >= 8) { gl->gts_header = (char*)grib_context_malloc(c, sizeof(unsigned char) * gtslen); - DebugAssert(gts_header); + DEBUG_ASSERT(gts_header); if (gts_header) memcpy(gl->gts_header, gts_header, gtslen); gl->gts_header_len = gtslen; grib_context_free(c, save_gts_header); @@ -1125,7 +1125,7 @@ static grib_handle* grib_handle_new_from_file_no_multi(grib_context* c, FILE* f, if (c->gts_header_on && gtslen >= 8) { gl->gts_header = (char*)grib_context_malloc(c, sizeof(unsigned char) * gtslen); - DebugAssert(gts_header); + DEBUG_ASSERT(gts_header); if (gts_header) memcpy(gl->gts_header, gts_header, gtslen); gl->gts_header_len = gtslen; grib_context_free(c, save_gts_header); diff --git a/src/grib_iarray.cc b/src/grib_iarray.cc index 4429703d4..93621dd83 100644 --- a/src/grib_iarray.cc +++ b/src/grib_iarray.cc @@ -217,7 +217,7 @@ long* grib_iarray_get_array(grib_iarray* v) long* vv; size_t i; grib_context* c = v->context; - DebugAssert(c); + DEBUG_ASSERT(c); vv = (long*)grib_context_malloc_clear(c, sizeof(long) * v->n); for (i = 0; i < v->n; i++) diff --git a/src/grib_ieeefloat.cc b/src/grib_ieeefloat.cc index 642227fe2..8be76e556 100644 --- a/src/grib_ieeefloat.cc +++ b/src/grib_ieeefloat.cc @@ -330,7 +330,7 @@ int grib_nearest_smaller_ieee_float(double a, double* ret) unsigned long grib_ieee64_to_long(double x) { unsigned long lval; - DebugAssert(sizeof(double) == sizeof(long)); + DEBUG_ASSERT(sizeof(double) == sizeof(long)); memcpy(&lval, &x, sizeof(long)); return lval; } @@ -338,7 +338,7 @@ unsigned long grib_ieee64_to_long(double x) double grib_long_to_ieee64(unsigned long x) { double dval; - DebugAssert(sizeof(double) == sizeof(long)); + DEBUG_ASSERT(sizeof(double) == sizeof(long)); memcpy(&dval, &x, sizeof(long)); return dval; } diff --git a/src/grib_iterator_class_gaussian.cc b/src/grib_iterator_class_gaussian.cc index 3c6860328..7042b6233 100644 --- a/src/grib_iterator_class_gaussian.cc +++ b/src/grib_iterator_class_gaussian.cc @@ -148,7 +148,7 @@ static int init(grib_iterator* i, grib_handle* h, grib_arguments* args) if (jScansPositively) { for (lai = 0; lai < self->Nj; lai++) { - DebugAssert(istart >= 0); + DEBUG_ASSERT(istart >= 0); self->las[lai] = lats[istart--]; if (istart<0) istart=size-1; } diff --git a/src/grib_iterator_class_gaussian_reduced.cc b/src/grib_iterator_class_gaussian_reduced.cc index 0384eb5f9..e48db0a68 100644 --- a/src/grib_iterator_class_gaussian_reduced.cc +++ b/src/grib_iterator_class_gaussian_reduced.cc @@ -253,7 +253,7 @@ static int iterate_reduced_gaussian_subarea_algorithm2(grib_iterator* iter, grib return GRIB_WRONG_GRID; } self->los[iter->e] = lon2; - DebugAssert(j + l < numlats); + DEBUG_ASSERT(j + l < numlats); self->las[iter->e] = lats[j + l]; iter->e++; } diff --git a/src/grib_iterator_class_lambert_conformal.cc b/src/grib_iterator_class_lambert_conformal.cc index 61e17d97c..cf0000953 100644 --- a/src/grib_iterator_class_lambert_conformal.cc +++ b/src/grib_iterator_class_lambert_conformal.cc @@ -361,7 +361,7 @@ static int init_oblate(grib_handle* h, } lonRad = adjust_lon_radians(theta / ns + LoVInRadians); if (i == 0 && j == 0) { - DebugAssert(fabs(latFirstInRadians - latRad) <= EPSILON); + DEBUG_ASSERT(fabs(latFirstInRadians - latRad) <= EPSILON); } latDeg = latRad * RAD2DEG; /* Convert to degrees */ lonDeg = normalise_longitude_in_degrees(lonRad * RAD2DEG); diff --git a/src/grib_iterator_class_mercator.cc b/src/grib_iterator_class_mercator.cc index bd60e3424..1f19af9a8 100644 --- a/src/grib_iterator_class_mercator.cc +++ b/src/grib_iterator_class_mercator.cc @@ -217,7 +217,7 @@ static int init_mercator(grib_handle* h, } lonRad = adjust_lon_radians(orientationInRadians + _x / (earthMajorAxisInMetres * m1)); if (i == 0 && j == 0) { - DebugAssert(fabs(latFirstInRadians - latRad) <= EPSILON); + DEBUG_ASSERT(fabs(latFirstInRadians - latRad) <= EPSILON); } latDeg = latRad * RAD2DEG; /* Convert to degrees */ lonDeg = normalise_longitude_in_degrees(lonRad * RAD2DEG); diff --git a/src/grib_oarray.cc b/src/grib_oarray.cc index 7afd33ea6..54a4ca2a5 100644 --- a/src/grib_oarray.cc +++ b/src/grib_oarray.cc @@ -112,7 +112,7 @@ void** grib_oarray_get_array(grib_context* c, grib_oarray* v) void* grib_oarray_get(grib_oarray* v, int i) { - DebugAssert(i >= 0); + DEBUG_ASSERT(i >= 0); if (v == NULL || (size_t)i > v->n - 1) return NULL; return v->v[i]; diff --git a/src/grib_parse_utils.cc b/src/grib_parse_utils.cc index 04beecb51..e7c752f09 100644 --- a/src/grib_parse_utils.cc +++ b/src/grib_parse_utils.cc @@ -314,7 +314,7 @@ int grib_accessors_list_print(grib_handle* h, grib_accessors_list* al, const cha char long_format[] = "%ld"; /* default format for printing integer keys */ char default_separator[] = " "; grib_accessor* a = al->accessor; - DebugAssert(a); + DEBUG_ASSERT(a); /* Number of columns specified as 0 means print on ONE line i.e. num cols = infinity */ if (maxcols == 0) diff --git a/src/grib_query.cc b/src/grib_query.cc index df9aca973..c543f478a 100644 --- a/src/grib_query.cc +++ b/src/grib_query.cc @@ -78,7 +78,7 @@ static void rebuild_hash_keys(grib_handle* h, grib_section* s) int i = 0; int id = -1; const char* p; - DebugAssert(h == grib_handle_of_accessor(a)); + DEBUG_ASSERT(h == grib_handle_of_accessor(a)); while (i < MAX_ACCESSOR_NAMES && ((p = a->all_names[i]) != NULL)) { if (*p != '_') { @@ -88,7 +88,7 @@ static void rebuild_hash_keys(grib_handle* h, grib_section* s) grib_handle* hand = grib_handle_of_accessor(a); a->same = hand->accessors[id]; hand->accessors[id] = a; - DebugAssert(a->same != a); + DEBUG_ASSERT(a->same != a); } } i++; @@ -149,7 +149,7 @@ static char* get_rank(grib_context* c, const char* name, int* rank) *rank = -1; } else { - DebugAssert(c); + DEBUG_ASSERT(c); end++; ret = grib_context_strdup(c, end); } @@ -521,7 +521,7 @@ static grib_accessor* _grib_find_accessor(const grib_handle* ch, const char* nam grib_handle* h = (grib_handle*)ch; grib_accessor* a = NULL; char* p = NULL; - DebugAssert(name); + DEBUG_ASSERT(name); p = strchr((char*)name, '.'); if (p) { @@ -614,7 +614,7 @@ grib_accessor* grib_find_accessor_fast(grib_handle* h, const char* name) { grib_accessor* a = NULL; char* p = NULL; - DebugAssert(name); + DEBUG_ASSERT(name); p = strchr((char*)name, '.'); if (p) { diff --git a/src/grib_templates.cc b/src/grib_templates.cc index 37a5e99a1..01e0bc39f 100644 --- a/src/grib_templates.cc +++ b/src/grib_templates.cc @@ -92,7 +92,7 @@ static grib_handle* try_product_template(grib_context* c, ProductKind product_ki g = codes_bufr_handle_new_from_file(c, f, &err); } else { /* Note: Pseudo GRIBs like DIAG and BUDG also come here */ - DebugAssert(product_kind == PRODUCT_GRIB); + DEBUG_ASSERT(product_kind == PRODUCT_GRIB); g = grib_handle_new_from_file(c, f, &err); } if (!g) { diff --git a/src/grib_trie_with_rank.cc b/src/grib_trie_with_rank.cc index eeee669d5..9fd326701 100644 --- a/src/grib_trie_with_rank.cc +++ b/src/grib_trie_with_rank.cc @@ -361,7 +361,7 @@ static void grib_trie_with_rank_delete_container_list(grib_context* c,grib_trie_ static void _grib_trie_with_rank_delete_container(grib_trie_with_rank* t) { int i; - DebugAssert(t); + DEBUG_ASSERT(t); for (i = t->first; i <= t->last; i++) if (t->next[i]) { grib_trie_with_rank_delete_container(t->next[i]); @@ -453,7 +453,7 @@ int grib_trie_with_rank_insert(grib_trie_with_rank* t, const char* key, void* da { grib_trie_with_rank* last = t; const char* k = key; - DebugAssert(t); + DEBUG_ASSERT(t); if (!t) return -1; GRIB_MUTEX_INIT_ONCE(&once, &init); diff --git a/src/grib_value.cc b/src/grib_value.cc index 37caca6b2..38745c39f 100644 --- a/src/grib_value.cc +++ b/src/grib_value.cc @@ -1240,7 +1240,7 @@ int grib_get_native_type(const grib_handle* h, const char* name, int* type) grib_accessor* a = NULL; *type = GRIB_TYPE_UNDEFINED; - DebugAssert(name != NULL && strlen(name) > 0); + DEBUG_ASSERT(name != NULL && strlen(name) > 0); if (name[0] == '/') { al = grib_find_accessors_list(h, name); diff --git a/src/string_util.cc b/src/string_util.cc index 4bdf7546f..65583f93e 100644 --- a/src/string_util.cc +++ b/src/string_util.cc @@ -40,7 +40,7 @@ void string_rtrim(char* s) void string_lrtrim(char** x, int do_left, int do_right) { - DebugAssert(do_left || do_right); + DEBUG_ASSERT(do_left || do_right); if (do_left) { while (isspace(**x) && **x != '\0') (*x)++; @@ -91,8 +91,8 @@ char** string_split(char* inputString, const char* delimiter) size_t index = 0; char delimiterChar = 0; - DebugAssert(inputString); - DebugAssert(delimiter && (strlen(delimiter) == 1)); + DEBUG_ASSERT(inputString); + DEBUG_ASSERT(delimiter && (strlen(delimiter) == 1)); delimiterChar = delimiter[0]; while (*p) { const char ctmp = *p; @@ -165,7 +165,7 @@ int string_ends_with(const char* s, const char* suffix) int string_count_char(const char* str, char c) { int i = 0, count = 0; - DebugAssert(str); + DEBUG_ASSERT(str); for (i=0; str[i]; i++) { if (str[i] == c) count++; } @@ -225,7 +225,7 @@ char* string_replace_char(char *s, char oldc, char newc) void string_remove_char(char* str, char c) { size_t i, j; - DebugAssert(str); + DEBUG_ASSERT(str); size_t len = strlen(str); for(i=0; ilatlon); + DEBUG_ASSERT(!options->latlon); return 0; } diff --git a/tools/grib_compare.cc b/tools/grib_compare.cc index 2e6c4c274..7e9d5e2f0 100644 --- a/tools/grib_compare.cc +++ b/tools/grib_compare.cc @@ -662,7 +662,7 @@ static int compare_values(grib_runtime_options* options, grib_handle* h1, grib_h printf(" comparing %s", name); /* If key was blocklisted, then we should not have got here */ - DebugAssert(!blocklisted(name)); + DEBUG_ASSERT(!blocklisted(name)); if (type1 == GRIB_TYPE_UNDEFINED && (err = grib_get_native_type(h1, name, &type1)) != GRIB_SUCCESS) { printInfo(h1); diff --git a/tools/grib_to_netcdf.cc b/tools/grib_to_netcdf.cc index 7a83da0b7..e223a4c79 100644 --- a/tools/grib_to_netcdf.cc +++ b/tools/grib_to_netcdf.cc @@ -2245,7 +2245,7 @@ static int def_latlon(int ncid, fieldset* fs) field* g = get_field(fs, 0, expand_mem); - DebugAssert(check_grid(g) == GRIB_SUCCESS); + DEBUG_ASSERT(check_grid(g) == GRIB_SUCCESS); if ((e = get_num_latitudes_longitudes(g->handle, &nlats, &nlons)) != GRIB_SUCCESS) { grib_context_log(ctx, GRIB_LOG_ERROR, "ecCodes: cannot get lat/lon info: %s", grib_get_error_message(e)); @@ -2629,8 +2629,8 @@ static void scale(double* vals, long n, void* data, dataset_t* g) return; } */ - DebugAssert(vals); - DebugAssert(n > 0); + DEBUG_ASSERT(vals); + DEBUG_ASSERT(n > 0); if (!vals) return; switch (nctype) { From 5ab521e9e63e0c9060bbe66f100f6ec83acc6f84 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 27 Jun 2023 15:53:02 +0100 Subject: [PATCH 341/378] Dead code removal --- src/grib_accessor_class_double.cc | 14 -------------- src/grib_accessor_class_g1forecastmonth.cc | 7 +++---- 2 files changed, 3 insertions(+), 18 deletions(-) diff --git a/src/grib_accessor_class_double.cc b/src/grib_accessor_class_double.cc index cb5831fb9..be2c62df1 100644 --- a/src/grib_accessor_class_double.cc +++ b/src/grib_accessor_class_double.cc @@ -203,17 +203,3 @@ static int pack_missing(grib_accessor* a) return grib_pack_double(a, &value, &len); return GRIB_VALUE_CANNOT_BE_MISSING; } -/* -static int is_missing(grib_accessor* a){ - size_t one = 1; - double value = GRIB_MISSING_DOUBLE; - - if(a->flags & GRIB_ACCESSOR_FLAG_CAN_BE_MISSING) - { - int e=grib_unpack_double(a,&value,&one); - Assert(e == 0); - return value == GRIB_MISSING_DOUBLE; - } - return 0; -} -*/ diff --git a/src/grib_accessor_class_g1forecastmonth.cc b/src/grib_accessor_class_g1forecastmonth.cc index eea9d7fcc..df9b6ff1f 100644 --- a/src/grib_accessor_class_g1forecastmonth.cc +++ b/src/grib_accessor_class_g1forecastmonth.cc @@ -140,15 +140,14 @@ static void dump(grib_accessor* a, grib_dumper* dumper) grib_dump_long(dumper, a, NULL); } -static int calculate_fcmonth(grib_accessor* a, - long verification_yearmonth, long base_date, long day, long hour, long* result) +static int calculate_fcmonth(grib_accessor* a, long verification_yearmonth, long base_date, long day, long hour, long* result) { - long base_yearmonth = 0; + long base_yearmonth = 0; long vyear = 0; long vmonth = 0; long byear = 0; long bmonth = 0; - long fcmonth = 0; + long fcmonth = 0; base_yearmonth = base_date / 100; From 149fd274108b3da495d8f00261b0ec2916027bf1 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 27 Jun 2023 16:35:52 +0100 Subject: [PATCH 342/378] Dead code removal and cleanup --- src/grib_accessor_class_concept.cc | 47 ------------------- src/grib_accessor_class_count_missing.cc | 20 -------- ...rib_accessor_class_expanded_descriptors.cc | 7 ++- src/grib_accessor_class_g1_message_length.cc | 6 +-- src/grib_accessor_class_latlon_increment.cc | 6 +-- src/grib_accessor_class_variable.cc | 15 ------ src/grib_accessor_classes_hash.cc | 6 +-- 7 files changed, 9 insertions(+), 98 deletions(-) diff --git a/src/grib_accessor_class_concept.cc b/src/grib_accessor_class_concept.cc index f280ea39d..5f2c13cc0 100644 --- a/src/grib_accessor_class_concept.cc +++ b/src/grib_accessor_class_concept.cc @@ -593,53 +593,6 @@ static void destroy(grib_context* c, grib_accessor* a) //grib_context_free(c,self->cval); } -// static int is_local_ecmwf_grib2_param_key(grib_accessor* a, long edition, long centre) -// { -// if (edition == 2 && centre == 98) { -// if (a->parent->owner && a->parent->owner->name && strcmp(a->parent->owner->name, "parameters") == 0) -// return 1; -// } -// return 0; -// } - -// /* Try to get the name, shortName, units etc for a GRIB2 message with -// * local ECMWF coding i.e. discipline=192 etc -// */ -// static const char* get_ECMWF_local_parameter(grib_accessor* a, grib_handle* h) -// { -// int err = 0; -// const char* key_name = a->name; /*this is the key whose value we want*/ -// long edition, centre; -// if (h->product_kind != PRODUCT_GRIB) -// return NULL; -// err = grib_get_long(h, "centre", ¢re); -// if (err) -// return NULL; -// err = grib_get_long(h, "edition", &edition); -// if (err) -// return NULL; -// if (is_local_ecmwf_grib2_param_key(a, edition, centre)) { -// /* Must be one of: 'name', 'shortName', 'units', 'cfName' etc */ -// grib_accessor* a2 = NULL; -// const long pid_guess = guess_paramId(h); -// if (pid_guess == -1) -// return NULL; - -// /* Change the paramId so we can get the other string key*/ -// err = grib_set_long(h, "paramId", pid_guess); -// if (err) -// return NULL; -// /* Get the string value of key. Do not call grib_get_string() to avoid -// * dangers of infinite recursion as that calls unpack_string()! -// */ -// a2 = grib_find_accessor(h, key_name); -// if (!a2) -// return NULL; -// return concept_evaluate(a2); -// } -// return NULL; -// } - static int unpack_string(grib_accessor* a, char* val, size_t* len) { size_t slen; diff --git a/src/grib_accessor_class_count_missing.cc b/src/grib_accessor_class_count_missing.cc index be7e56d45..46680b92f 100644 --- a/src/grib_accessor_class_count_missing.cc +++ b/src/grib_accessor_class_count_missing.cc @@ -133,26 +133,6 @@ static const unsigned char bitsoff[] = { 0 }; -/* -static const unsigned char bitson[]={ -0, 1, 1, 2, 1, 2, 2, 3, 1, 2, 2, 3, 2, 3, 3, 4, 1, -2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5, 1, 2, -2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5, 2, 3, 3, -4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 1, 2, 2, 3, -2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5, 2, 3, 3, 4, 3, -4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 2, 3, 3, 4, 3, 4, -4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, -6, 4, 5, 5, 6, 5, 6, 6, 7, 1, 2, 2, 3, 2, 3, 3, 4, -2, 3, 3, 4, 3, 4, 4, 5, 2, 3, 3, 4, 3, 4, 4, 5, 3, -4, 4, 5, 4, 5, 5, 6, 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, -4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, -6, 5, 6, 6, 7, 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, -4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, -6, 6, 7, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, -6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, -8 }; -*/ - static void init(grib_accessor* a, const long len, grib_arguments* arg) { int n = 0; diff --git a/src/grib_accessor_class_expanded_descriptors.cc b/src/grib_accessor_class_expanded_descriptors.cc index 4cceae5d8..c019a40f6 100644 --- a/src/grib_accessor_class_expanded_descriptors.cc +++ b/src/grib_accessor_class_expanded_descriptors.cc @@ -837,10 +837,9 @@ static int value_count(grib_accessor* a, long* rlen) static void destroy(grib_context* c, grib_accessor* a) { - /* grib_accessor_expanded_descriptors* self = (grib_accessor_expanded_descriptors*)a; */ - /* if (self->rank==0 && self->expanded) { */ - /* grib_bufr_descriptors_array_delete(self->expanded); */ - /* } */ + // grib_accessor_expanded_descriptors* self = (grib_accessor_expanded_descriptors*)a; + // if (self->rank==0 && self->expanded) + // grib_bufr_descriptors_array_delete(self->expanded); } static int get_native_type(grib_accessor* a) diff --git a/src/grib_accessor_class_g1_message_length.cc b/src/grib_accessor_class_g1_message_length.cc index 2e7ed7d07..5ee61dd0d 100644 --- a/src/grib_accessor_class_g1_message_length.cc +++ b/src/grib_accessor_class_g1_message_length.cc @@ -200,10 +200,8 @@ static int pack_long(grib_accessor* a, const long* val, size_t* len) /* Do not do the length checks in this special case */ if ((ret = pack_long_unsigned_helper(a, &tlen, len, /*check=*/0)) != GRIB_SUCCESS) return ret; - /* - if((ret = super->pack_long(a,&tlen,len)) != GRIB_SUCCESS) - return ret; - */ + + // if((ret = super->pack_long(a,&tlen,len)) != GRIB_SUCCESS) return ret; { long total_length = -1, sec4_length = -1; diff --git a/src/grib_accessor_class_latlon_increment.cc b/src/grib_accessor_class_latlon_increment.cc index faf62d864..672a7df3c 100644 --- a/src/grib_accessor_class_latlon_increment.cc +++ b/src/grib_accessor_class_latlon_increment.cc @@ -293,10 +293,8 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) } } - /*ret = grib_set_long_internal(hand, self->numberOfPoints,numberOfPoints); - if(ret) - grib_context_log(a->context, GRIB_LOG_ERROR, "Accessor %s cannot pack value for %s error %d \n", a->name, self->numberOfPoints, ret); - */ + //ret = grib_set_long_internal(hand, self->numberOfPoints,numberOfPoints); + //if(ret) grib_context_log(a->context, GRIB_LOG_ERROR, "Accessor %s cannot pack value for %s error %d \n", a->name, self->numberOfPoints, ret); grib_get_long_internal(hand, self->numberOfPoints, &codedNumberOfPoints); diff --git a/src/grib_accessor_class_variable.cc b/src/grib_accessor_class_variable.cc index d78fe8174..3d5aa6766 100644 --- a/src/grib_accessor_class_variable.cc +++ b/src/grib_accessor_class_variable.cc @@ -346,21 +346,6 @@ static long byte_count(grib_accessor* a) return a->length; } -/* NOT ANY MORE -static long byte_count(grib_accessor* a) { - grib_accessor_variable *self = (grib_accessor_variable*)a; - char buf[80]={0,}; - - if(self->type == GRIB_TYPE_STRING) { - return strlen(self->cval) +1; - } else { - snprintf(buf,64,"%g",self->dval); - printf("========> \"%s\"\n",buf); - return strlen(buf)+1; - } -} -*/ - static int compare(grib_accessor* a, grib_accessor* b) { int retval = 0; diff --git a/src/grib_accessor_classes_hash.cc b/src/grib_accessor_classes_hash.cc index ad2e71d8b..a27a7a7a0 100644 --- a/src/grib_accessor_classes_hash.cc +++ b/src/grib_accessor_classes_hash.cc @@ -51,8 +51,7 @@ struct accessor_class_hash { char *name; grib_accessor_class **cclass;}; #endif #endif -static unsigned int -grib_accessor_classes_get_id (const char *str, size_t len) +static unsigned int grib_accessor_classes_get_id (const char *str, size_t len) { static const unsigned short asso_values[] = { @@ -687,8 +686,7 @@ static const struct accessor_class_hash classes[] = {"g1forecastmonth", &grib_accessor_class_g1forecastmonth} }; -static const struct accessor_class_hash * -grib_accessor_classes_hash (const char *str, size_t len) +static const struct accessor_class_hash* grib_accessor_classes_hash (const char *str, size_t len) { unsigned int key = grib_accessor_classes_get_id (str, len); From ee6d4eaba4c0495c43008c8278a99b7706f1e8b4 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 27 Jun 2023 16:39:53 +0100 Subject: [PATCH 343/378] ECC-1621: Valgrind error: grib_compare -H --- tools/grib_compare.cc | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/tools/grib_compare.cc b/tools/grib_compare.cc index 7e9d5e2f0..ddf90c4f6 100644 --- a/tools/grib_compare.cc +++ b/tools/grib_compare.cc @@ -1157,17 +1157,16 @@ static int compare_handles(grib_handle* h1, grib_handle* h2, grib_runtime_option if (headerMode) { const void *msg1 = NULL, *msg2 = NULL; size_t size1 = 0, size2 = 0; - grib_handle *h11, *h22; + size_t endOfHeadersOffset = 0; GRIB_CHECK_NOLINE(grib_get_message_headers(h1, &msg1, &size1), 0); GRIB_CHECK_NOLINE(grib_get_message_headers(h2, &msg2, &size2), 0); if (size1 == size2 && !memcmp(msg1, msg2, size1)) return 0; err = 0; - h11 = grib_handle_new_from_partial_message(h1->context, msg1, size1); - h22 = grib_handle_new_from_partial_message(h1->context, msg2, size2); + GRIB_CHECK_NOLINE(grib_get_offset(h1, "endOfHeadersMarker", &endOfHeadersOffset), 0); - iter = grib_keys_iterator_new(h11, GRIB_KEYS_ITERATOR_SKIP_COMPUTED, NULL); + iter = grib_keys_iterator_new(h1, GRIB_KEYS_ITERATOR_SKIP_COMPUTED, NULL); if (!iter) { grib_context_log(context, GRIB_LOG_ERROR, "unable to create the GRIB keys iterator"); @@ -1177,16 +1176,19 @@ static int compare_handles(grib_handle* h1, grib_handle* h2, grib_runtime_option while (grib_keys_iterator_next(iter)) { name = grib_keys_iterator_get_name(iter); /*printf("----- comparing %s\n",name);*/ + size_t keyOffset = 0; + GRIB_CHECK_NOLINE(grib_get_offset(h1, name, &keyOffset), 0); if (blocklisted(name)) continue; - if (compare_values(options, h11, h22, name, GRIB_TYPE_UNDEFINED)) - err++; + if (keyOffset < endOfHeadersOffset) { + if (compare_values(options, h1, h2, name, GRIB_TYPE_UNDEFINED)) { + err++; + } + } } grib_keys_iterator_delete(iter); - grib_handle_delete(h11); - grib_handle_delete(h22); return err; } From 4c55ce239ac39acd2e177b10c0e2480510337254 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 27 Jun 2023 16:44:29 +0100 Subject: [PATCH 344/378] Revert accidental commit (ECC-1621) - switching to a branch --- tools/grib_compare.cc | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/tools/grib_compare.cc b/tools/grib_compare.cc index ddf90c4f6..7e9d5e2f0 100644 --- a/tools/grib_compare.cc +++ b/tools/grib_compare.cc @@ -1157,16 +1157,17 @@ static int compare_handles(grib_handle* h1, grib_handle* h2, grib_runtime_option if (headerMode) { const void *msg1 = NULL, *msg2 = NULL; size_t size1 = 0, size2 = 0; - size_t endOfHeadersOffset = 0; + grib_handle *h11, *h22; GRIB_CHECK_NOLINE(grib_get_message_headers(h1, &msg1, &size1), 0); GRIB_CHECK_NOLINE(grib_get_message_headers(h2, &msg2, &size2), 0); if (size1 == size2 && !memcmp(msg1, msg2, size1)) return 0; err = 0; - GRIB_CHECK_NOLINE(grib_get_offset(h1, "endOfHeadersMarker", &endOfHeadersOffset), 0); + h11 = grib_handle_new_from_partial_message(h1->context, msg1, size1); + h22 = grib_handle_new_from_partial_message(h1->context, msg2, size2); - iter = grib_keys_iterator_new(h1, GRIB_KEYS_ITERATOR_SKIP_COMPUTED, NULL); + iter = grib_keys_iterator_new(h11, GRIB_KEYS_ITERATOR_SKIP_COMPUTED, NULL); if (!iter) { grib_context_log(context, GRIB_LOG_ERROR, "unable to create the GRIB keys iterator"); @@ -1176,19 +1177,16 @@ static int compare_handles(grib_handle* h1, grib_handle* h2, grib_runtime_option while (grib_keys_iterator_next(iter)) { name = grib_keys_iterator_get_name(iter); /*printf("----- comparing %s\n",name);*/ - size_t keyOffset = 0; - GRIB_CHECK_NOLINE(grib_get_offset(h1, name, &keyOffset), 0); if (blocklisted(name)) continue; - if (keyOffset < endOfHeadersOffset) { - if (compare_values(options, h1, h2, name, GRIB_TYPE_UNDEFINED)) { - err++; - } - } + if (compare_values(options, h11, h22, name, GRIB_TYPE_UNDEFINED)) + err++; } grib_keys_iterator_delete(iter); + grib_handle_delete(h11); + grib_handle_delete(h22); return err; } From 3214948a57fb637e5197a4ee28c652838f9e1456 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 28 Jun 2023 09:49:28 +0100 Subject: [PATCH 345/378] Tools: Remove -H option from metar compare --- tools/metar_compare.cc | 50 ++---------------------------------------- 1 file changed, 2 insertions(+), 48 deletions(-) diff --git a/tools/metar_compare.cc b/tools/metar_compare.cc index e83535e72..097efd61c 100644 --- a/tools/metar_compare.cc +++ b/tools/metar_compare.cc @@ -20,7 +20,6 @@ grib_option grib_options[] = { { "S:", "start", "First field to be processed.\n", 0, 1, 0 }, { "E:", "end", "Last field to be processed.\n", 0, 1, 0 }, { "a", 0, "-c option modifier. The keys listed with the option -c will be added to the list of keys compared without -c.\n", 0, 1, 0 }, - { "H", 0, "Compare only message headers. Bit-by-bit compare on. Incompatible with -c option.\n", 0, 1, 0 }, { "R:", 0, 0, 0, 1, 0 }, { "A:", 0, 0, 0, 1, 0 }, { "P", 0, "Compare data values using the packing error as tolerance.\n", 0, 1, 0 }, @@ -85,7 +84,6 @@ static int lastPrint = 0; static int force = 0; static double maxAbsoluteError = 1e-19; static int onlyListed = 1; -static int headerMode = 0; static int morein1 = 0; static int morein2 = 0; static int listFromCommandLine; @@ -231,11 +229,6 @@ int grib_tool_init(grib_runtime_options* options) else onlyListed = 1; - if (grib_options_on("H")) - headerMode = 1; - else - headerMode = 0; - if (grib_options_on("H") && grib_options_on("c:")) { printf("Error: -H and -c options are incompatible. Choose one of the two please.\n"); exit(1); @@ -1033,8 +1026,8 @@ static int compare_handles(grib_handle* h1, grib_handle* h2, grib_runtime_option grib_keys_iterator* iter = NULL; const char* name = NULL; - /* mask only if no -c option or headerMode (-H)*/ - if (blocklist && (!listFromCommandLine || headerMode)) { + /* mask only if no -c option (-H)*/ + if (blocklist && !listFromCommandLine) { grib_string_list* nextb = blocklist; while (nextb) { grib_clear(h1, nextb->value); @@ -1043,45 +1036,6 @@ static int compare_handles(grib_handle* h1, grib_handle* h2, grib_runtime_option } } - if (headerMode) { - const void *msg1 = NULL, *msg2 = NULL; - size_t size1 = 0, size2 = 0; - grib_handle *h11, *h22; - GRIB_CHECK_NOLINE(grib_get_message_headers(h1, &msg1, &size1), 0); - GRIB_CHECK_NOLINE(grib_get_message_headers(h2, &msg2, &size2), 0); - if (size1 == size2 && !memcmp(msg1, msg2, size1)) - return 0; - - err = 0; - h11 = grib_handle_new_from_partial_message(h1->context, msg1, size1); - h22 = grib_handle_new_from_partial_message(h1->context, msg2, size2); - - iter = grib_keys_iterator_new(h11, - GRIB_KEYS_ITERATOR_SKIP_COMPUTED, NULL); - - if (!iter) { - printf("ERROR: unable to get iterator\n"); - exit(1); - } - - while (grib_keys_iterator_next(iter)) { - name = grib_keys_iterator_get_name(iter); - /*printf("----- comparing %s\n",name);*/ - - if (blocklisted(name)) - continue; - if (compare_values(options, h11, h22, name, GRIB_TYPE_UNDEFINED)) { - err++; - write_messages(h11, h22); - } - } - - grib_keys_iterator_delete(iter); - grib_handle_delete(h11); - grib_handle_delete(h22); - return err; - } - if (listFromCommandLine && onlyListed) { for (i = 0; i < options->compare_count; i++) { if (blocklisted((char*)options->compare[i].name)) From d98f098cd9ecbfcce2362cbdaf81ea3a8548b7e8 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 28 Jun 2023 10:00:13 +0100 Subject: [PATCH 346/378] Dead code removal --- src/CMakeLists.txt | 3 +- src/{ => deprecated}/minmax_val.cc | 0 ...grib_accessor_class_data_simple_packing.cc | 30 +------------------ src/grib_accessor_class_to_double.cc | 10 ++----- 4 files changed, 4 insertions(+), 39 deletions(-) rename src/{ => deprecated}/minmax_val.cc (100%) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index bc6d5d541..332118567 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -396,8 +396,7 @@ list( APPEND eccodes_extra_src_files grib_bits_fast_big_endian_omp.cc grib_bits_any_endian_omp.cc encode_double_array.cc grib_bits_ibmpow.cc - grib_bits_ibmpow_opt.cc - minmax_val.cc ) + grib_bits_ibmpow_opt.cc ) if(UNIX) ecbuild_get_date(eccodes_BUILD_DATE) diff --git a/src/minmax_val.cc b/src/deprecated/minmax_val.cc similarity index 100% rename from src/minmax_val.cc rename to src/deprecated/minmax_val.cc diff --git a/src/grib_accessor_class_data_simple_packing.cc b/src/grib_accessor_class_data_simple_packing.cc index 6141a6c60..c24c53cd0 100644 --- a/src/grib_accessor_class_data_simple_packing.cc +++ b/src/grib_accessor_class_data_simple_packing.cc @@ -582,31 +582,6 @@ static int unpack_double_subarray(grib_accessor* a, double* val, size_t start, s return _unpack_double(a, val, plen, buf, pos, nvals); } -#if GRIB_IBMPOWER67_OPT -#define restrict -#include "minmax_val.cc" -#undef restrict -#endif - -// static int grib_producing_large_constant_fields(const grib_context* c, grib_handle* h, int edition) -// { -// /* GRIB-802: If override key is set, ignore env. var and produce compressed fields */ -// if (c->large_constant_fields) { /* This is set by the environment variable */ -// /* check the override key */ -// int err = 0; -// long override_large_constant_fields = 0; -// err = grib_get_long_internal(h, "override_large_constant_fields", &override_large_constant_fields); -// if (err == GRIB_SUCCESS && override_large_constant_fields) { -// return 0; -// } -// return 1; -// } -// if (c->gribex_mode_on==1 && edition==1) { -// return 1; -// } -// return 0; -// } - static int pack_double(grib_accessor* a, const double* val, size_t* len) { grib_accessor_data_simple_packing* self = (grib_accessor_data_simple_packing*)a; @@ -659,14 +634,11 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) max = val[0]; min = max; -#if GRIB_IBMPOWER67_OPT - minmax_val(val + 1, n_vals - 1, &min, &max); -#else for (i = 1; i < n_vals; i++) { if (val[i] > max) max = val[i]; else if (val[i] < min) min = val[i]; } -#endif + if ((err = grib_check_data_values_range(gh, min, max)) != GRIB_SUCCESS) { return err; } diff --git a/src/grib_accessor_class_to_double.cc b/src/grib_accessor_class_to_double.cc index 80168cf29..a561f6aab 100644 --- a/src/grib_accessor_class_to_double.cc +++ b/src/grib_accessor_class_to_double.cc @@ -22,7 +22,7 @@ IMPLEMENTS = unpack_long;pack_long IMPLEMENTS = unpack_double;pack_double IMPLEMENTS = init;dump;string_length - IMPLEMENTS = post_init;value_count + IMPLEMENTS = value_count IMPLEMENTS = next_offset IMPLEMENTS = get_native_type IMPLEMENTS = compare @@ -56,7 +56,6 @@ static long next_offset(grib_accessor*); static int value_count(grib_accessor*, long*); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -static void post_init(grib_accessor*); //static void init_class(grib_accessor_class*); static int compare(grib_accessor*, grib_accessor*); @@ -80,7 +79,7 @@ static grib_accessor_class _grib_accessor_class_to_double = { 0, /* inited */ 0, /* init_class */ &init, /* init */ - &post_init, /* post_init */ + 0, /* post_init */ 0, /* destroy */ &dump, /* dump */ &next_offset, /* next_offset */ @@ -147,11 +146,6 @@ static void init(grib_accessor* a, const long len, grib_arguments* arg) a->length = 0; } -static void post_init(grib_accessor* a) -{ - return; -} - static int value_count(grib_accessor* a, long* count) { grib_accessor_to_double* self = (grib_accessor_to_double*)a; From 52682564d77ea9e29a4fcc13942871bae4cd8000 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 28 Jun 2023 10:06:07 +0100 Subject: [PATCH 347/378] Refactoring --- src/grib_accessor_class_dictionary.cc | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/grib_accessor_class_dictionary.cc b/src/grib_accessor_class_dictionary.cc index aa543e34f..fbc739f3c 100644 --- a/src/grib_accessor_class_dictionary.cc +++ b/src/grib_accessor_class_dictionary.cc @@ -134,7 +134,7 @@ static void init(grib_accessor* a, const long len, grib_arguments* params) a->flags |= GRIB_ACCESSOR_FLAG_READ_ONLY; } -static grib_trie* load_dictionary(grib_context* c, grib_accessor* a, int* err) +static grib_trie* load_dictionary(grib_accessor* a, int* err) { grib_accessor_dictionary* self = (grib_accessor_dictionary*)a; @@ -151,6 +151,7 @@ static grib_trie* load_dictionary(grib_context* c, grib_accessor* a, int* err) FILE* f = NULL; int i = 0; grib_handle* h = grib_handle_of_accessor(a); + grib_context* c = a->context; *err = GRIB_SUCCESS; @@ -276,7 +277,7 @@ static int unpack_string(grib_accessor* a, char* buffer, size_t* len) size_t rsize = 0; int i = 0; - grib_trie* dictionary = load_dictionary(a->context, a, &err); + grib_trie* dictionary = load_dictionary(a, &err); if (err) return err; From 7e0c771748c9c8aea0b6f2a51e0bf47d4589cd2f Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 28 Jun 2023 10:07:23 +0100 Subject: [PATCH 348/378] Dead code removal --- src/deprecated/jgribapi_GribFile.h | 65 ----------- src/deprecated/jgribapi_GribHandle.h | 156 ------------------------- src/deprecated/jgribapi_GribIterator.h | 37 ------ 3 files changed, 258 deletions(-) delete mode 100644 src/deprecated/jgribapi_GribFile.h delete mode 100644 src/deprecated/jgribapi_GribHandle.h delete mode 100644 src/deprecated/jgribapi_GribIterator.h diff --git a/src/deprecated/jgribapi_GribFile.h b/src/deprecated/jgribapi_GribFile.h deleted file mode 100644 index 580118d80..000000000 --- a/src/deprecated/jgribapi_GribFile.h +++ /dev/null @@ -1,65 +0,0 @@ -/* - * (C) Copyright 2005- ECMWF. - * - * This software is licensed under the terms of the Apache Licence Version 2.0 - * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. - * - * In applying this licence, ECMWF does not waive the privileges and immunities granted to it by - * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. - */ - -/* DO NOT EDIT THIS FILE - it is machine generated */ -#include -/* Header for class jgribapi_GribFile */ - -#ifndef _Included_jgribapi_GribFile -#define _Included_jgribapi_GribFile -#ifdef __cplusplus -extern "C" { -#endif -/* - * Class: jgribapi_GribFile - * Method: gribGetNextHandle - * Signature: (J)Ljgribapi/GribHandle; - */ -JNIEXPORT jobject JNICALL Java_jgribapi_GribFile_gribGetNextHandle(JNIEnv*, jobject, jlong); - -/* - * Class: jgribapi_GribFile - * Method: gribEOFReached - * Signature: (J)J - */ -JNIEXPORT jlong JNICALL Java_jgribapi_GribFile_gribEOFReached(JNIEnv*, jobject, jlong); - -/* - * Class: jgribapi_GribFile - * Method: gribGetGribFile - * Signature: (Ljava/lang/String;)J - */ -JNIEXPORT jlong JNICALL Java_jgribapi_GribFile_gribGetGribFile(JNIEnv*, jobject, jstring); - -/* - * Class: jgribapi_GribFile - * Method: gribCloseFile - * Signature: (J)V - */ -JNIEXPORT void JNICALL Java_jgribapi_GribFile_gribCloseFile(JNIEnv*, jobject, jlong); - -/* - * Class: jgribapi_GribFile - * Method: gribNewFile - * Signature: (Ljava/lang/String;)J - */ -JNIEXPORT jlong JNICALL Java_jgribapi_GribFile_gribNewFile(JNIEnv*, jobject, jstring); - -/* - * Class: jgribapi_GribFile - * Method: gribWriteHandle - * Signature: (JJ)V - */ -JNIEXPORT void JNICALL Java_jgribapi_GribFile_gribWriteHandle(JNIEnv*, jobject, jlong, jlong); - -#ifdef __cplusplus -} -#endif -#endif diff --git a/src/deprecated/jgribapi_GribHandle.h b/src/deprecated/jgribapi_GribHandle.h deleted file mode 100644 index 668ea4f1f..000000000 --- a/src/deprecated/jgribapi_GribHandle.h +++ /dev/null @@ -1,156 +0,0 @@ -/* - * (C) Copyright 2005- ECMWF. - * - * This software is licensed under the terms of the Apache Licence Version 2.0 - * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. - * - * In applying this licence, ECMWF does not waive the privileges and immunities granted to it by - * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. - */ - -/* DO NOT EDIT THIS FILE - it is machine generated */ -#include -/* Header for class jgribapi_GribHandle */ - -#ifndef _Included_jgribapi_GribHandle -#define _Included_jgribapi_GribHandle -#ifdef __cplusplus -extern "C" { -#endif -/* - * Class: jgribapi_GribHandle - * Method: getIteratorID - * Signature: (J)J - */ -JNIEXPORT jlong JNICALL Java_jgribapi_GribHandle_getIteratorID(JNIEnv*, jobject, jlong); - -/* - * Class: jgribapi_GribHandle - * Method: gribGetString - * Signature: (JLjava/lang/String;)Ljava/lang/String; - */ -JNIEXPORT jstring JNICALL Java_jgribapi_GribHandle_gribGetString(JNIEnv*, jobject, jlong, jstring); - -/* - * Class: jgribapi_GribHandle - * Method: gribGetLong - * Signature: (JLjava/lang/String;)J - */ -JNIEXPORT jlong JNICALL Java_jgribapi_GribHandle_gribGetLong(JNIEnv*, jobject, jlong, jstring); - -/* - * Class: jgribapi_GribHandle - * Method: gribGetDouble - * Signature: (JLjava/lang/String;)D - */ -JNIEXPORT jdouble JNICALL Java_jgribapi_GribHandle_gribGetDouble(JNIEnv*, jobject, jlong, jstring); - -/* - * Class: jgribapi_GribHandle - * Method: gribGetLongArray - * Signature: (JLjava/lang/String;)[J - */ -JNIEXPORT jlongArray JNICALL Java_jgribapi_GribHandle_gribGetLongArray(JNIEnv*, jobject, jlong, jstring); - -/* - * Class: jgribapi_GribHandle - * Method: gribGetDoubleArray - * Signature: (JLjava/lang/String;)[D - */ -JNIEXPORT jdoubleArray JNICALL Java_jgribapi_GribHandle_gribGetDoubleArray(JNIEnv*, jobject, jlong, jstring); - -/* - * Class: jgribapi_GribHandle - * Method: gribSetString - * Signature: (JLjava/lang/String;Ljava/lang/String;)I - */ -JNIEXPORT jint JNICALL Java_jgribapi_GribHandle_gribSetString(JNIEnv*, jobject, jlong, jstring, jstring); - -/* - * Class: jgribapi_GribHandle - * Method: gribCreateNext - * Signature: (J)Ljgribapi/GribKey; - */ -JNIEXPORT jobject JNICALL Java_jgribapi_GribHandle_gribCreateNext(JNIEnv*, jobject, jlong); - -/* - * Class: jgribapi_GribHandle - * Method: gribSetSearch - * Signature: (JLjava/lang/String;)J - */ -JNIEXPORT jlong JNICALL Java_jgribapi_GribHandle_gribSetSearch(JNIEnv*, jobject, jlong, jstring); - -/* - * Class: jgribapi_GribHandle - * Method: gribSetLong - * Signature: (JLjava/lang/String;J)I - */ -JNIEXPORT jint JNICALL Java_jgribapi_GribHandle_gribSetLong(JNIEnv*, jobject, jlong, jstring, jlong); - -/* - * Class: jgribapi_GribHandle - * Method: gribSetDouble - * Signature: (JLjava/lang/String;D)I - */ -JNIEXPORT jint JNICALL Java_jgribapi_GribHandle_gribSetDouble(JNIEnv*, jobject, jlong, jstring, jdouble); - -/* - * Class: jgribapi_GribHandle - * Method: gribSetLongArray - * Signature: (JLjava/lang/String;[J)I - */ -JNIEXPORT jint JNICALL Java_jgribapi_GribHandle_gribSetLongArray(JNIEnv*, jobject, jlong, jstring, jlongArray); - -/* - * Class: jgribapi_GribHandle - * Method: gribSetDoubleArray - * Signature: (JLjava/lang/String;[D)I - */ -JNIEXPORT jint JNICALL Java_jgribapi_GribHandle_gribSetDoubleArray(JNIEnv*, jobject, jlong, jstring, jdoubleArray); - -/* - * Class: jgribapi_GribHandle - * Method: gribGetXml - * Signature: (J)Ljava/lang/String; - */ -JNIEXPORT jstring JNICALL Java_jgribapi_GribHandle_gribGetXml__J(JNIEnv*, jobject, jlong); - -/* - * Class: jgribapi_GribHandle - * Method: gribGetXml - * Signature: (JLjava/lang/String;)Ljava/lang/String; - */ -JNIEXPORT jstring JNICALL Java_jgribapi_GribHandle_gribGetXml__JLjava_lang_String_2(JNIEnv*, jobject, jlong, jstring); - -/* - * Class: jgribapi_GribHandle - * Method: gribGetAscii - * Signature: (JLjava/lang/String;)Ljava/lang/String; - */ -JNIEXPORT jstring JNICALL Java_jgribapi_GribHandle_gribGetAscii(JNIEnv*, jobject, jlong, jstring); - -/* - * Class: jgribapi_GribHandle - * Method: gribGetBytes - * Signature: (JLjava/lang/String;)[B - */ -JNIEXPORT jbyteArray JNICALL Java_jgribapi_GribHandle_gribGetBytes(JNIEnv*, jobject, jlong, jstring); - -/* - * Class: jgribapi_GribHandle - * Method: gribDeleteHandle - * Signature: (J)I - */ -JNIEXPORT jint JNICALL Java_jgribapi_GribHandle_gribDeleteHandle(JNIEnv*, jobject, jlong); - -/* - * Class: jgribapi_GribHandle - * Method: gribResetHandle - * Signature: (J)V - */ -JNIEXPORT void JNICALL Java_jgribapi_GribHandle_gribResetHandle(JNIEnv*, jobject, jlong); - -#ifdef __cplusplus -} -#endif -#endif diff --git a/src/deprecated/jgribapi_GribIterator.h b/src/deprecated/jgribapi_GribIterator.h deleted file mode 100644 index fcbad5b7b..000000000 --- a/src/deprecated/jgribapi_GribIterator.h +++ /dev/null @@ -1,37 +0,0 @@ -/* - * (C) Copyright 2005- ECMWF. - * - * This software is licensed under the terms of the Apache Licence Version 2.0 - * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. - * - * In applying this licence, ECMWF does not waive the privileges and immunities granted to it by - * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. - */ - -/* DO NOT EDIT THIS FILE - it is machine generated */ -#include -/* Header for class jgribapi_GribIterator */ - -#ifndef _Included_jgribapi_GribIterator -#define _Included_jgribapi_GribIterator -#ifdef __cplusplus -extern "C" { -#endif -/* - * Class: jgribapi_GribIterator - * Method: gribIteratorGetNext - * Signature: (J)Ljgribapi/GribPoint; - */ -JNIEXPORT jobject JNICALL Java_jgribapi_GribIterator_gribIteratorGetNext(JNIEnv*, jobject, jlong); - -/* - * Class: jgribapi_GribIterator - * Method: gribIteratorHasNext - * Signature: (J)J - */ -JNIEXPORT jlong JNICALL Java_jgribapi_GribIterator_gribIteratorHasNext(JNIEnv*, jobject, jlong); - -#ifdef __cplusplus -} -#endif -#endif From 30ebf99535b6398fc694e406489e70a06b939d6b Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 28 Jun 2023 10:35:39 +0100 Subject: [PATCH 349/378] Dead code removal --- src/grib_accessor_class_codetable.cc | 4 -- src/grib_accessor_class_codetable_title.cc | 4 -- ...b_accessor_class_data_g1complex_packing.cc | 16 +++--- src/grib_api_internal.h | 2 - src/grib_context.cc | 14 +++-- src/grib_date.cc | 18 +++---- src/grib_dumper_class_debug.cc | 9 +--- src/grib_dumper_class_default.cc | 6 --- src/grib_dumper_class_grib_encode_C.cc | 4 -- src/grib_dumper_class_wmo.cc | 13 ++--- src/grib_loader_from_handle.cc | 6 +-- src/md5.cc | 52 ------------------- 12 files changed, 28 insertions(+), 120 deletions(-) diff --git a/src/grib_accessor_class_codetable.cc b/src/grib_accessor_class_codetable.cc index dfc05ff62..1bed5b609 100644 --- a/src/grib_accessor_class_codetable.cc +++ b/src/grib_accessor_class_codetable.cc @@ -613,11 +613,7 @@ static int unpack_string(grib_accessor* a, char* buffer, size_t* len) strcpy(tmp, table->entries[value].abbreviation); } else { -#if 1 snprintf(tmp, sizeof(tmp), "%d", (int)value); -#else - return GRIB_DECODING_ERROR; -#endif } l = strlen(tmp) + 1; diff --git a/src/grib_accessor_class_codetable_title.cc b/src/grib_accessor_class_codetable_title.cc index d7ef6a6bc..c2c19b6aa 100644 --- a/src/grib_accessor_class_codetable_title.cc +++ b/src/grib_accessor_class_codetable_title.cc @@ -157,11 +157,7 @@ static int unpack_string(grib_accessor* a, char* buffer, size_t* len) strcpy(tmp, table->entries[value].title); } else { -#if 1 snprintf(tmp, sizeof(tmp), "%d", (int)value); -#else - return GRIB_DECODING_ERROR; -#endif } l = strlen(tmp) + 1; diff --git a/src/grib_accessor_class_data_g1complex_packing.cc b/src/grib_accessor_class_data_g1complex_packing.cc index f0b560660..0a4c0646e 100644 --- a/src/grib_accessor_class_data_g1complex_packing.cc +++ b/src/grib_accessor_class_data_g1complex_packing.cc @@ -210,17 +210,17 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) if (ret == GRIB_SUCCESS) { n = a->offset + 4 * ((sub_k + 1) * (sub_k + 2)); -#if 1 + /* Octet number starts from beginning of message but shouldn't */ if ((ret = grib_set_long_internal(grib_handle_of_accessor(a), self->N, n)) != GRIB_SUCCESS) return ret; -#else - ret = grib_get_long_internal(grib_handle_of_accessor(a), self->offsetsection, &offsetsection); - if (ret != GRIB_SUCCESS) - return ret; - if ((ret = grib_set_long_internal(grib_handle_of_accessor(a), self->N, n - offsetsection)) != GRIB_SUCCESS) - return ret; -#endif + + // ret = grib_get_long_internal(grib_handle_of_accessor(a), self->offsetsection, &offsetsection); + // if (ret != GRIB_SUCCESS) + // return ret; + // if ((ret = grib_set_long_internal(grib_handle_of_accessor(a), self->N, n - offsetsection)) != GRIB_SUCCESS) + // return ret; + ret = grib_get_long_internal(grib_handle_of_accessor(a), self->bits_per_value, &bits_per_value); if (ret != GRIB_SUCCESS) return ret; diff --git a/src/grib_api_internal.h b/src/grib_api_internal.h index 94fd5e815..9f413495b 100644 --- a/src/grib_api_internal.h +++ b/src/grib_api_internal.h @@ -1252,7 +1252,6 @@ struct grib_int_array int* el; }; -#if 1 struct grib_fieldset { grib_context* context; @@ -1267,7 +1266,6 @@ struct grib_fieldset long current; grib_field** fields; }; -#endif /* concept index structures */ diff --git a/src/grib_context.cc b/src/grib_context.cc index b2983b49f..90b531f6f 100644 --- a/src/grib_context.cc +++ b/src/grib_context.cc @@ -1069,17 +1069,15 @@ void grib_context_log(const grib_context* c, int level, const char* fmt, ...) level = level & ~GRIB_LOG_PERROR; /* #if HAS_STRERROR */ -#if 1 strcat(msg, " ("); strcat(msg, strerror(errsv)); strcat(msg, ")"); -#else - if (errsv > 0 && errsv < sys_nerr) { - strcat(msg, " ("); - strcat(msg, sys_errlist[errsv]); - strcat(msg, " )"); - } -#endif + + // if (errsv > 0 && errsv < sys_nerr) { + // strcat(msg, " ("); + // strcat(msg, sys_errlist[errsv]); + // strcat(msg, " )"); + // } } if (c->output_log) diff --git a/src/grib_date.cc b/src/grib_date.cc index cd2fc32cf..b069cb8b6 100644 --- a/src/grib_date.cc +++ b/src/grib_date.cc @@ -45,21 +45,19 @@ int grib_julian_to_datetime(double jd, long* year, long* month, long* day, *day = (long)dday; dday -= *day; -#if 1 /* ANF-CG 02.03.2012 */ s = ROUND((double)(dday * 86400)); /* total in sec , no msec*/ *hour = (long)s / 3600; *minute = (long)((s % 3600) / 60); *second = (long)(s % 60); -#else - /* Old algorithm, now replaced by above. See GRIB-180 */ - dhour = dday * 24; - *hour = (long)dhour; - dhour -= *hour; - dminute = dhour * 60; - *minute = (long)dminute; - *second = (long)((dminute - *minute) * 60); -#endif + + // Old algorithm, now replaced by above. See GRIB-180 + // dhour = dday * 24; + // *hour = (long)dhour; + // dhour -= *hour; + // dminute = dhour * 60; + // *minute = (long)dminute; + // *second = (long)((dminute - *minute) * 60); if (e < 14) *month = e - 1; diff --git a/src/grib_dumper_class_debug.cc b/src/grib_dumper_class_debug.cc index 75a6c858c..79c1ea29c 100644 --- a/src/grib_dumper_class_debug.cc +++ b/src/grib_dumper_class_debug.cc @@ -453,7 +453,6 @@ static void dump_values(grib_dumper* d, grib_accessor* a) k = 0; while (k < size) { -#if 1 int j; for (i = 0; i < d->depth + 3; i++) fprintf(self->dumper.out, " "); @@ -463,11 +462,6 @@ static void dump_values(grib_dumper* d, grib_accessor* a) fprintf(self->dumper.out, ", "); } fprintf(self->dumper.out, "\n"); -#else - - fprintf(self->dumper.out, "%d %g\n", k, buf[k]); - -#endif } if (more) { for (i = 0; i < d->depth + 3; i++) @@ -497,12 +491,11 @@ static void dump_section(grib_dumper* d, grib_accessor* a, grib_block_of_accesso /* grib_section* s = grib_get_sub_section(a); */ grib_section* s = a->sub_section; -#if 1 if (a->name[0] == '_') { grib_dump_accessors_block(d, block); return; } -#endif + for (i = 0; i < d->depth; i++) fprintf(self->dumper.out, " "); fprintf(self->dumper.out, "======> %s %s (%ld,%ld,%ld)\n", a->creator->op, diff --git a/src/grib_dumper_class_default.cc b/src/grib_dumper_class_default.cc index b3c87eb7e..61aface7f 100644 --- a/src/grib_dumper_class_default.cc +++ b/src/grib_dumper_class_default.cc @@ -611,7 +611,6 @@ static void dump_values(grib_dumper* d, grib_accessor* a) k = 0; while (k < size) { -#if 1 int j; fprintf(self->dumper.out, " "); for (j = 0; j < 5 && k < size; j++, k++) { @@ -620,11 +619,6 @@ static void dump_values(grib_dumper* d, grib_accessor* a) fprintf(self->dumper.out, ", "); } fprintf(self->dumper.out, "\n"); -#else - - fprintf(self->dumper.out, "%d %g\n", k, buf[k]); - -#endif } if (more) { fprintf(self->dumper.out, " "); diff --git a/src/grib_dumper_class_grib_encode_C.cc b/src/grib_dumper_class_grib_encode_C.cc index e6af382db..91d07b688 100644 --- a/src/grib_dumper_class_grib_encode_C.cc +++ b/src/grib_dumper_class_grib_encode_C.cc @@ -135,10 +135,8 @@ static void dump_long(grib_dumper* d, grib_accessor* a, const char* comment) if ((a->flags & GRIB_ACCESSOR_FLAG_READ_ONLY)) return; -#if 1 if (comment) pcomment(self->dumper.out, value, comment); -#endif if (((a->flags & GRIB_ACCESSOR_FLAG_CAN_BE_MISSING) != 0) && (value == GRIB_MISSING_LONG)) fprintf(self->dumper.out, " GRIB_CHECK(grib_set_missing(h,\"%s\"),%d);\n", a->name, 0); @@ -231,10 +229,8 @@ static void dump_string(grib_dumper* d, grib_accessor* a, const char* comment) if (a->length == 0) return; -#if 1 if (comment) fprintf(self->dumper.out, "/* %s */\n", comment); -#endif fprintf(self->dumper.out, " p = \"%s\";\n", value); fprintf(self->dumper.out, " size = strlen(p);\n"); diff --git a/src/grib_dumper_class_wmo.cc b/src/grib_dumper_class_wmo.cc index 6d84a0b28..7c898543a 100644 --- a/src/grib_dumper_class_wmo.cc +++ b/src/grib_dumper_class_wmo.cc @@ -486,7 +486,6 @@ static void dump_values(grib_dumper* d, grib_accessor* a) k = 0; while (k < size) { -#if 1 int j; /*for(i = 0; i < d->depth + 3 ; i++) fprintf(self->dumper.out," ");*/ for (j = 0; j < 8 && k < size; j++, k++) { @@ -498,14 +497,10 @@ static void dump_values(grib_dumper* d, grib_accessor* a) fprintf(self->dumper.out, ", "); } fprintf(self->dumper.out, "\n"); -#else - - if (is_char) - fprintf(self->dumper.out, "%d '%c'\n", k, (char)buf[k]); - else - fprintf(self->dumper.out, "%d %g\n", k, buf[k]); - -#endif + // if (is_char) + // fprintf(self->dumper.out, "%d '%c'\n", k, (char)buf[k]); + // else + // fprintf(self->dumper.out, "%d %g\n", k, buf[k]); } if (more) { /*for(i = 0; i < d->depth + 3 ; i++) fprintf(self->dumper.out," ");*/ diff --git a/src/grib_loader_from_handle.cc b/src/grib_loader_from_handle.cc index ccda34362..e47f9fa92 100644 --- a/src/grib_loader_from_handle.cc +++ b/src/grib_loader_from_handle.cc @@ -51,13 +51,9 @@ int grib_lookup_long_from_handle(grib_context* gc, grib_loader* loader, const ch if (b) return grib_unpack_long(b, value, &len); - /* TODO: fix me. For now, we don't fail on a lookup. */ -#if 1 + /* TODO: fix me. For now, we don't fail on a lookup. */ *value = -1; return GRIB_SUCCESS; -#else - return GRIB_NOT_FOUND; -#endif } int grib_init_accessor_from_handle(grib_loader* loader, grib_accessor* ga, grib_arguments* default_value) diff --git a/src/md5.cc b/src/md5.cc index 1d04a291b..2e011c2fd 100644 --- a/src/md5.cc +++ b/src/md5.cc @@ -154,58 +154,6 @@ static void grib_md5_flush(grib_md5_state* s) I_(c, d, a, b, 2, 62); I_(b, c, d, a, 9, 63); -#else - unsigned long i, g; - unsigned long a = s->h0; - unsigned long b = s->h1; - unsigned long c = s->h2; - unsigned long d = s->h3; - unsigned long f; - unsigned long temp; - unsigned long* w = &s->words[0]; - unsigned long h; - for (i = 0; i < 16; i++) { - f = F(b, c, d); - g = i; - temp = d; - d = c; - c = b; - h = a + f + k[i] + w[g]; - b = b + rotate(h, r[i]); - a = temp; - } - - for (i = 16; i < 32; i++) { - f = G(b, c, d); - g = (5 * i + 1) % 16; - temp = d; - d = c; - c = b; - h = a + f + k[i] + w[g]; - b = b + rotate(h, r[i]); - a = temp; - } - for (i = 32; i < 48; i++) { - f = H(b, c, d); - g = (3 * i + 5) % 16; - temp = d; - d = c; - c = b; - h = a + f + k[i] + w[g]; - b = b + rotate(h, r[i]); - a = temp; - } - for (i = 48; i < 64; i++) { - f = I(b, c, d); - g = (7 * i) % 16; - temp = d; - d = c; - c = b; - h = a + f + k[i] + w[g]; - b = b + rotate(h, r[i]); - a = temp; - } - #endif s->h0 += a; From 056e74a9543cee47368d6edf2f9a68055091ca56 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 28 Jun 2023 10:39:14 +0100 Subject: [PATCH 350/378] Dead code removal --- src/md5.cc | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/md5.cc b/src/md5.cc index 2e011c2fd..3231be905 100644 --- a/src/md5.cc +++ b/src/md5.cc @@ -67,7 +67,6 @@ static const unsigned long k[] = { static void grib_md5_flush(grib_md5_state* s) { -#if 1 unsigned long a = s->h0; unsigned long b = s->h1; unsigned long c = s->h2; @@ -154,8 +153,6 @@ static void grib_md5_flush(grib_md5_state* s) I_(c, d, a, b, 2, 62); I_(b, c, d, a, 9, 63); -#endif - s->h0 += a; s->h1 += b; s->h2 += c; From c9c7f7ad031d5d344df9443d20d8c1e6a3ba2bff Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 28 Jun 2023 11:17:45 +0100 Subject: [PATCH 351/378] Dead code removal: accessor_constant_set_ type/dval --- src/deprecated/md5.grib_md5_flush.cc | 178 +++++++++++++++++++++ src/eccodes_prototypes.h | 2 - src/grib_accessor_class_bufr_data_array.cc | 12 +- src/grib_accessor_class_constant.cc | 12 -- 4 files changed, 184 insertions(+), 20 deletions(-) create mode 100644 src/deprecated/md5.grib_md5_flush.cc diff --git a/src/deprecated/md5.grib_md5_flush.cc b/src/deprecated/md5.grib_md5_flush.cc new file mode 100644 index 000000000..525387bd5 --- /dev/null +++ b/src/deprecated/md5.grib_md5_flush.cc @@ -0,0 +1,178 @@ +#define ROT(x, c) ((x << c) | (x >> (32 - c))) + +#define ECC_F(x, y, z) ((x & y) | ((~x) & z)) +#define ECC_G(x, y, z) ((x & z) | (y & (~z))) +#define ECC_H(x, y, z) (x ^ y ^ z) +#define ECC_I(x, y, z) (y ^ (x | (~z))) + +#define F_(A, B, C, D, g, i) \ + A += ECC_F(B, C, D) + w[g] + k[i]; \ + A &= 0xffffffff; \ + A = ROT(A, r[i]); \ + A += B; +#define G_(A, B, C, D, g, i) \ + A += ECC_G(B, C, D) + w[g] + k[i]; \ + A &= 0xffffffff; \ + A = ROT(A, r[i]); \ + A += B; +#define H_(A, B, C, D, g, i) \ + A += ECC_H(B, C, D) + w[g] + k[i]; \ + A &= 0xffffffff; \ + A = ROT(A, r[i]); \ + A += B; +#define I_(A, B, C, D, g, i) \ + A += ECC_I(B, C, D) + w[g] + k[i]; \ + A &= 0xffffffff; \ + A = ROT(A, r[i]); \ + A += B; + +static void grib_md5_flush(grib_md5_state* s) +{ +#if 1 + unsigned long a = s->h0; + unsigned long b = s->h1; + unsigned long c = s->h2; + unsigned long d = s->h3; + unsigned long* w = &s->words[0]; + + F_(a, b, c, d, 0, 0); + F_(d, a, b, c, 1, 1); + F_(c, d, a, b, 2, 2); + F_(b, c, d, a, 3, 3); + + F_(a, b, c, d, 4, 4); + F_(d, a, b, c, 5, 5); + F_(c, d, a, b, 6, 6); + F_(b, c, d, a, 7, 7); + + F_(a, b, c, d, 8, 8); + F_(d, a, b, c, 9, 9); + F_(c, d, a, b, 10, 10); + F_(b, c, d, a, 11, 11); + + F_(a, b, c, d, 12, 12); + F_(d, a, b, c, 13, 13); + F_(c, d, a, b, 14, 14); + F_(b, c, d, a, 15, 15); + + G_(a, b, c, d, 1, 16); + G_(d, a, b, c, 6, 17); + G_(c, d, a, b, 11, 18); + G_(b, c, d, a, 0, 19); + + G_(a, b, c, d, 5, 20); + G_(d, a, b, c, 10, 21); + G_(c, d, a, b, 15, 22); + G_(b, c, d, a, 4, 23); + + G_(a, b, c, d, 9, 24); + G_(d, a, b, c, 14, 25); + G_(c, d, a, b, 3, 26); + G_(b, c, d, a, 8, 27); + + G_(a, b, c, d, 13, 28); + G_(d, a, b, c, 2, 29); + G_(c, d, a, b, 7, 30); + G_(b, c, d, a, 12, 31); + + H_(a, b, c, d, 5, 32); + H_(d, a, b, c, 8, 33); + H_(c, d, a, b, 11, 34); + H_(b, c, d, a, 14, 35); + + H_(a, b, c, d, 1, 36); + H_(d, a, b, c, 4, 37); + H_(c, d, a, b, 7, 38); + H_(b, c, d, a, 10, 39); + + H_(a, b, c, d, 13, 40); + H_(d, a, b, c, 0, 41); + H_(c, d, a, b, 3, 42); + H_(b, c, d, a, 6, 43); + + H_(a, b, c, d, 9, 44); + H_(d, a, b, c, 12, 45); + H_(c, d, a, b, 15, 46); + H_(b, c, d, a, 2, 47); + + I_(a, b, c, d, 0, 48); + I_(d, a, b, c, 7, 49); + I_(c, d, a, b, 14, 50); + I_(b, c, d, a, 5, 51); + + I_(a, b, c, d, 12, 52); + I_(d, a, b, c, 3, 53); + I_(c, d, a, b, 10, 54); + I_(b, c, d, a, 1, 55); + + I_(a, b, c, d, 8, 56); + I_(d, a, b, c, 15, 57); + I_(c, d, a, b, 6, 58); + I_(b, c, d, a, 13, 59); + + I_(a, b, c, d, 4, 60); + I_(d, a, b, c, 11, 61); + I_(c, d, a, b, 2, 62); + I_(b, c, d, a, 9, 63); + +#else + unsigned long i, g; + unsigned long a = s->h0; + unsigned long b = s->h1; + unsigned long c = s->h2; + unsigned long d = s->h3; + unsigned long f; + unsigned long temp; + unsigned long* w = &s->words[0]; + unsigned long h; + for (i = 0; i < 16; i++) { + f = F(b, c, d); + g = i; + temp = d; + d = c; + c = b; + h = a + f + k[i] + w[g]; + b = b + rotate(h, r[i]); + a = temp; + } + + for (i = 16; i < 32; i++) { + f = G(b, c, d); + g = (5 * i + 1) % 16; + temp = d; + d = c; + c = b; + h = a + f + k[i] + w[g]; + b = b + rotate(h, r[i]); + a = temp; + } + for (i = 32; i < 48; i++) { + f = H(b, c, d); + g = (3 * i + 5) % 16; + temp = d; + d = c; + c = b; + h = a + f + k[i] + w[g]; + b = b + rotate(h, r[i]); + a = temp; + } + for (i = 48; i < 64; i++) { + f = I(b, c, d); + g = (7 * i) % 16; + temp = d; + d = c; + c = b; + h = a + f + k[i] + w[g]; + b = b + rotate(h, r[i]); + a = temp; + } + +#endif + + s->h0 += a; + s->h1 += b; + s->h2 += c; + s->h3 += d; + + s->word_count = 0; +} diff --git a/src/eccodes_prototypes.h b/src/eccodes_prototypes.h index ff623067c..76960b58e 100644 --- a/src/eccodes_prototypes.h +++ b/src/eccodes_prototypes.h @@ -493,8 +493,6 @@ int grib_g1_step_get_steps(grib_accessor* a, long* start, long* theEnd); /* grib_accessor_class_ieeefloat.cc*/ /* grib_accessor_class_constant.cc*/ -void accessor_constant_set_type(grib_accessor* a, int type); -void accessor_constant_set_dval(grib_accessor* a, double dval); /* grib_accessor_class_iterator.cc*/ grib_iterator* grib_iterator_new(const grib_handle* h, unsigned long flags, int* error); diff --git a/src/grib_accessor_class_bufr_data_array.cc b/src/grib_accessor_class_bufr_data_array.cc index 1a3354c23..dc84b7214 100644 --- a/src/grib_accessor_class_bufr_data_array.cc +++ b/src/grib_accessor_class_bufr_data_array.cc @@ -2503,8 +2503,8 @@ static int create_keys(const grib_accessor* a, long onlySubset, long startSubset section = gaGroup->sub_section; /*rootSection=section;*/ /*sectionUp=self->dataKeys;*/ - accessor_constant_set_type(gaGroup, GRIB_TYPE_LONG); - accessor_constant_set_dval(gaGroup, groupNumber); + //accessor_constant_set_type(gaGroup, GRIB_TYPE_LONG); + //accessor_constant_set_dval(gaGroup, groupNumber); /* ECC-765: Don't empty out the section_4 keys otherwise there will be memory leaks. */ /* Setting first and last to zero effectively masks out those section 4 keys! */ /* self->dataKeys->block->first=0; */ @@ -2566,8 +2566,8 @@ static int create_keys(const grib_accessor* a, long onlySubset, long startSubset gaGroup->sub_section = grib_section_create(hand, gaGroup); gaGroup->bufr_group_number = groupNumber; - accessor_constant_set_type(gaGroup, GRIB_TYPE_LONG); - accessor_constant_set_dval(gaGroup, groupNumber); + //accessor_constant_set_type(gaGroup, GRIB_TYPE_LONG); + //accessor_constant_set_dval(gaGroup, groupNumber); grib_push_accessor(gaGroup, groupSection->block); section = gaGroup->sub_section; @@ -2610,8 +2610,8 @@ static int create_keys(const grib_accessor* a, long onlySubset, long startSubset gaGroup = grib_accessor_factory(groupSection, &creatorGroup, 0, NULL); gaGroup->sub_section = grib_section_create(hand, gaGroup); gaGroup->bufr_group_number = groupNumber; - accessor_constant_set_type(gaGroup, GRIB_TYPE_LONG); - accessor_constant_set_dval(gaGroup, groupNumber); + //accessor_constant_set_type(gaGroup, GRIB_TYPE_LONG); + //accessor_constant_set_dval(gaGroup, groupNumber); grib_push_accessor(gaGroup, groupSection->block); section = gaGroup->sub_section; diff --git a/src/grib_accessor_class_constant.cc b/src/grib_accessor_class_constant.cc index 6509fa0eb..750132419 100644 --- a/src/grib_accessor_class_constant.cc +++ b/src/grib_accessor_class_constant.cc @@ -115,18 +115,6 @@ grib_accessor_class* grib_accessor_class_constant = &_grib_accessor_class_consta /* END_CLASS_IMP */ -void accessor_constant_set_type(grib_accessor* a, int type) -{ - grib_accessor_constant* self = (grib_accessor_constant*)a; - self->type = type; -} - -void accessor_constant_set_dval(grib_accessor* a, double dval) -{ - grib_accessor_constant* self = (grib_accessor_constant*)a; - self->dval = dval; -} - static void init(grib_accessor* a, const long len, grib_arguments* arg) { a->flags |= GRIB_ACCESSOR_FLAG_READ_ONLY; From 8ca37974db6a08699d479c775fd223e1fe67324f Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 28 Jun 2023 11:43:06 +0100 Subject: [PATCH 352/378] Dead code removal --- src/accessor.class | 6 ------ src/action.class | 2 +- src/action_class_set_iarray.cc | 3 +++ src/dumper.class | 4 ++-- src/expression.class | 18 ++++++++---------- ...grib_accessor_class_abstract_long_vector.cc | 6 ------ src/grib_accessor_class_abstract_vector.cc | 6 ------ src/grib_accessor_class_array.cc | 6 ------ src/grib_accessor_class_ascii.cc | 6 ------ src/grib_accessor_class_assert.cc | 6 ------ src/grib_accessor_class_bit.cc | 6 ------ src/grib_accessor_class_bitmap.cc | 6 ------ src/grib_accessor_class_bits.cc | 6 ------ src/grib_accessor_class_bits_per_value.cc | 6 ------ src/grib_accessor_class_blob.cc | 6 ------ src/grib_accessor_class_budgdate.cc | 6 ------ src/grib_accessor_class_bufr_data_array.cc | 6 ------ src/grib_accessor_class_bufr_data_element.cc | 6 ------ src/grib_accessor_class_bufr_elements_table.cc | 6 ------ ...accessor_class_bufr_extract_area_subsets.cc | 6 ------ ...ssor_class_bufr_extract_datetime_subsets.cc | 6 ------ ...grib_accessor_class_bufr_extract_subsets.cc | 6 ------ src/grib_accessor_class_bufr_group.cc | 6 ------ ...grib_accessor_class_bufr_simple_thinning.cc | 6 ------ src/grib_accessor_class_bufr_string_values.cc | 6 ------ ...cessor_class_bufrdc_expanded_descriptors.cc | 6 ------ src/grib_accessor_class_bytes.cc | 6 ------ ...or_class_change_alternative_row_scanning.cc | 6 ------ ...accessor_class_change_scanning_direction.cc | 6 ------ ...ib_accessor_class_check_internal_version.cc | 6 ------ src/grib_accessor_class_closest_date.cc | 6 ------ src/grib_accessor_class_codeflag.cc | 6 ------ src/grib_accessor_class_codetable.cc | 6 ------ src/grib_accessor_class_codetable_title.cc | 6 ------ src/grib_accessor_class_codetable_units.cc | 6 ------ src/grib_accessor_class_concept.cc | 6 ------ src/grib_accessor_class_constant.cc | 6 ------ src/grib_accessor_class_count_file.cc | 6 ------ src/grib_accessor_class_count_missing.cc | 6 ------ src/grib_accessor_class_count_total.cc | 6 ------ src/grib_accessor_class_data_2order_packing.cc | 6 ------ src/grib_accessor_class_data_apply_bitmap.cc | 6 ------ ...ccessor_class_data_apply_boustrophedonic.cc | 6 ------ ..._class_data_apply_boustrophedonic_bitmap.cc | 6 ------ ..._accessor_class_data_apply_gdsnotpresent.cc | 6 ------ src/grib_accessor_class_data_ccsds_packing.cc | 6 ------ ...grib_accessor_class_data_complex_packing.cc | 6 ------ src/grib_accessor_class_data_dummy_field.cc | 6 ------ ...ib_accessor_class_data_g1complex_packing.cc | 6 ------ ...ta_g1second_order_constant_width_packing.cc | 6 ------ ..._g1second_order_general_extended_packing.cc | 9 ++------- ...lass_data_g1second_order_general_packing.cc | 6 ------ ...s_data_g1second_order_row_by_row_packing.cc | 6 ------ ...b_accessor_class_data_g1secondary_bitmap.cc | 6 ------ ...b_accessor_class_data_g1shsimple_packing.cc | 6 ------ ...rib_accessor_class_data_g1simple_packing.cc | 6 ------ ...rib_accessor_class_data_g22order_packing.cc | 6 ------ ..._accessor_class_data_g2bifourier_packing.cc | 6 ------ ...ib_accessor_class_data_g2complex_packing.cc | 6 ------ ...b_accessor_class_data_g2secondary_bitmap.cc | 6 ------ ...b_accessor_class_data_g2shsimple_packing.cc | 6 ------ ...rib_accessor_class_data_g2simple_packing.cc | 6 ------ ...data_g2simple_packing_with_preprocessing.cc | 6 ------ ...rib_accessor_class_data_jpeg2000_packing.cc | 6 ------ src/grib_accessor_class_data_png_packing.cc | 6 ------ src/grib_accessor_class_data_raw_packing.cc | 6 ------ ...b_accessor_class_data_run_length_packing.cc | 6 ------ ...rib_accessor_class_data_secondary_bitmap.cc | 6 ------ src/grib_accessor_class_data_sh_packed.cc | 6 ------ src/grib_accessor_class_data_sh_unpacked.cc | 6 ------ ...rib_accessor_class_data_shsimple_packing.cc | 6 ------ src/grib_accessor_class_data_simple_packing.cc | 6 ------ src/grib_accessor_class_decimal_precision.cc | 6 ------ src/grib_accessor_class_dictionary.cc | 6 ------ src/grib_accessor_class_dirty.cc | 6 ------ src/grib_accessor_class_divdouble.cc | 6 ------ src/grib_accessor_class_double.cc | 6 ------ src/grib_accessor_class_element.cc | 6 ------ src/grib_accessor_class_evaluate.cc | 6 ------ ...grib_accessor_class_expanded_descriptors.cc | 6 ------ ...sor_class_from_scale_factor_scaled_value.cc | 6 ------ ...rib_accessor_class_g1_half_byte_codeflag.cc | 6 ------ src/grib_accessor_class_g1_message_length.cc | 6 ------ src/grib_accessor_class_g1_section4_length.cc | 6 ------ src/grib_accessor_class_g1area.cc | 6 ------ src/grib_accessor_class_g1bitmap.cc | 6 ------ src/grib_accessor_class_g1date.cc | 6 ------ ...ib_accessor_class_g1day_of_the_year_date.cc | 6 ------ ...accessor_class_g1end_of_interval_monthly.cc | 6 ------ src/grib_accessor_class_g1fcperiod.cc | 6 ------ src/grib_accessor_class_g1forecastmonth.cc | 6 ------ src/grib_accessor_class_g1monthlydate.cc | 6 ------ ...lass_g1number_of_coded_values_sh_complex.cc | 6 ------ ...class_g1number_of_coded_values_sh_simple.cc | 6 ------ src/grib_accessor_class_g1step_range.cc | 6 ------ src/grib_accessor_class_g1verificationdate.cc | 6 ------ src/grib_accessor_class_g2_aerosol.cc | 6 ------ src/grib_accessor_class_g2_chemical.cc | 6 ------ src/grib_accessor_class_g2_eps.cc | 6 ------ src/grib_accessor_class_g2_mars_labeling.cc | 6 ------ src/grib_accessor_class_g2bitmap.cc | 6 ------ src/grib_accessor_class_g2bitmap_present.cc | 6 ------ src/grib_accessor_class_g2date.cc | 6 ------ src/grib_accessor_class_g2end_step.cc | 6 ------ src/grib_accessor_class_g2grid.cc | 6 ------ src/grib_accessor_class_g2latlon.cc | 6 ------ src/grib_accessor_class_g2level.cc | 6 ------ src/grib_accessor_class_g2lon.cc | 6 ------ src/grib_accessor_class_g2step_range.cc | 6 ------ src/grib_accessor_class_gaussian_grid_name.cc | 6 ------ src/grib_accessor_class_gds_is_present.cc | 6 ------ ...ib_accessor_class_gds_not_present_bitmap.cc | 6 ------ src/grib_accessor_class_gen.cc | 6 ------ src/grib_accessor_class_getenv.cc | 6 ------ src/grib_accessor_class_global_gaussian.cc | 6 ------ src/grib_accessor_class_group.cc | 6 ------ src/grib_accessor_class_gts_header.cc | 6 ------ src/grib_accessor_class_hash_array.cc | 6 ------ src/grib_accessor_class_headers_only.cc | 6 ------ src/grib_accessor_class_ibmfloat.cc | 6 ------ src/grib_accessor_class_ieeefloat.cc | 6 ------ src/grib_accessor_class_ifs_param.cc | 6 ------ src/grib_accessor_class_int16.cc | 6 ------ src/grib_accessor_class_int16_little_endian.cc | 6 ------ src/grib_accessor_class_int32.cc | 6 ------ src/grib_accessor_class_int32_little_endian.cc | 6 ------ src/grib_accessor_class_int64.cc | 6 ------ src/grib_accessor_class_int64_little_endian.cc | 6 ------ src/grib_accessor_class_int8.cc | 6 ------ src/grib_accessor_class_iterator.cc | 6 ------ src/grib_accessor_class_julian_date.cc | 6 ------ src/grib_accessor_class_julian_day.cc | 6 ------ src/grib_accessor_class_ksec1expver.cc | 6 ------ src/grib_accessor_class_label.cc | 6 ------ src/grib_accessor_class_laplacian.cc | 6 ------ src/grib_accessor_class_latitudes.cc | 6 ------ src/grib_accessor_class_latlon_increment.cc | 6 ------ src/grib_accessor_class_latlonvalues.cc | 6 ------ src/grib_accessor_class_library_version.cc | 6 ------ src/grib_accessor_class_local_definition.cc | 6 ------ src/grib_accessor_class_long.cc | 6 ------ src/grib_accessor_class_long_vector.cc | 6 ------ src/grib_accessor_class_longitudes.cc | 6 ------ src/grib_accessor_class_lookup.cc | 6 ------ src/grib_accessor_class_mars_param.cc | 6 ------ src/grib_accessor_class_mars_step.cc | 6 ------ src/grib_accessor_class_md5.cc | 6 ------ src/grib_accessor_class_message.cc | 6 ------ src/grib_accessor_class_message_copy.cc | 6 ------ src/grib_accessor_class_missing.cc | 6 ------ src/grib_accessor_class_nearest.cc | 6 ------ src/grib_accessor_class_non_alpha.cc | 6 ------ ...ib_accessor_class_number_of_coded_values.cc | 6 ------ src/grib_accessor_class_number_of_points.cc | 6 ------ ...accessor_class_number_of_points_gaussian.cc | 6 ------ src/grib_accessor_class_number_of_values.cc | 6 ------ ..._class_number_of_values_data_raw_packing.cc | 6 ------ src/grib_accessor_class_octahedral_gaussian.cc | 6 ------ src/grib_accessor_class_octet_number.cc | 6 ------ src/grib_accessor_class_offset_file.cc | 6 ------ src/grib_accessor_class_offset_values.cc | 6 ------ src/grib_accessor_class_pack_bufr_values.cc | 6 ------ src/grib_accessor_class_pad.cc | 6 ------ src/grib_accessor_class_padding.cc | 6 ------ src/grib_accessor_class_padto.cc | 6 ------ src/grib_accessor_class_padtoeven.cc | 6 ------ src/grib_accessor_class_padtomultiple.cc | 6 ------ src/grib_accessor_class_position.cc | 6 ------ src/grib_accessor_class_proj_string.cc | 6 ------ src/grib_accessor_class_raw.cc | 6 ------ src/grib_accessor_class_rdbtime_guess_date.cc | 6 ------ ...rib_accessor_class_reference_value_error.cc | 6 ------ src/grib_accessor_class_round.cc | 6 ------ src/grib_accessor_class_scale.cc | 6 ------ src/grib_accessor_class_scale_values.cc | 6 ------ ...cessor_class_second_order_bits_per_value.cc | 6 ------ src/grib_accessor_class_section.cc | 6 ------ src/grib_accessor_class_section_length.cc | 6 ------ src/grib_accessor_class_section_padding.cc | 6 ------ src/grib_accessor_class_section_pointer.cc | 6 ------ ...grib_accessor_class_select_step_template.cc | 6 ------ src/grib_accessor_class_sexagesimal2decimal.cc | 6 ------ src/grib_accessor_class_signed.cc | 6 ------ src/grib_accessor_class_signed_bits.cc | 6 ------ ...grib_accessor_class_simple_packing_error.cc | 6 ------ src/grib_accessor_class_size.cc | 6 ------ src/grib_accessor_class_smart_table.cc | 6 ------ src/grib_accessor_class_smart_table_column.cc | 6 ------ src/grib_accessor_class_spd.cc | 6 ------ src/grib_accessor_class_spectral_truncation.cc | 6 ------ src/grib_accessor_class_sprintf.cc | 6 ------ src/grib_accessor_class_statistics.cc | 6 ------ src/grib_accessor_class_statistics_spectral.cc | 6 ------ src/grib_accessor_class_step_human_readable.cc | 6 ------ src/grib_accessor_class_step_in_units.cc | 6 ------ src/grib_accessor_class_sum.cc | 6 ------ src/grib_accessor_class_suppressed.cc | 6 ------ src/grib_accessor_class_time.cc | 6 ------ src/grib_accessor_class_times.cc | 6 ------ src/grib_accessor_class_to_double.cc | 6 ------ src/grib_accessor_class_to_integer.cc | 6 ------ src/grib_accessor_class_to_string.cc | 6 ------ src/grib_accessor_class_transient.cc | 6 ------ src/grib_accessor_class_transient_darray.cc | 6 ------ src/grib_accessor_class_trim.cc | 6 ------ src/grib_accessor_class_uint16.cc | 6 ------ ...grib_accessor_class_uint16_little_endian.cc | 6 ------ src/grib_accessor_class_uint32.cc | 6 ------ ...grib_accessor_class_uint32_little_endian.cc | 6 ------ src/grib_accessor_class_uint64.cc | 6 ------ ...grib_accessor_class_uint64_little_endian.cc | 6 ------ src/grib_accessor_class_uint8.cc | 6 ------ ...ib_accessor_class_unexpanded_descriptors.cc | 6 ------ src/grib_accessor_class_unpack_bufr_values.cc | 6 ------ src/grib_accessor_class_unsigned.cc | 6 ------ src/grib_accessor_class_unsigned_bits.cc | 6 ------ src/grib_accessor_class_validity_date.cc | 6 ------ src/grib_accessor_class_validity_time.cc | 6 ------ src/grib_accessor_class_values.cc | 6 ------ src/grib_accessor_class_variable.cc | 6 ------ src/grib_accessor_class_vector.cc | 6 ------ src/grib_accessor_class_when.cc | 6 ------ src/grib_expression_class_accessor.cc | 14 ++++++-------- src/grib_expression_class_binop.cc | 14 ++++++-------- src/grib_expression_class_column.cc | 14 ++++++-------- src/grib_expression_class_constant.cc | 14 ++++++-------- src/grib_expression_class_double.cc | 14 ++++++-------- src/grib_expression_class_functor.cc | 14 ++++++-------- src/grib_expression_class_is_in_dict.cc | 14 ++++++-------- src/grib_expression_class_is_in_list.cc | 14 ++++++-------- src/grib_expression_class_is_integer.cc | 14 ++++++-------- src/grib_expression_class_length.cc | 14 ++++++-------- src/grib_expression_class_logical_and.cc | 14 ++++++-------- src/grib_expression_class_logical_or.cc | 14 ++++++-------- src/grib_expression_class_long.cc | 14 ++++++-------- src/grib_expression_class_string.cc | 14 ++++++-------- src/grib_expression_class_string_compare.cc | 14 ++++++-------- src/grib_expression_class_sub_string.cc | 14 ++++++-------- src/grib_expression_class_true.cc | 14 ++++++-------- src/grib_expression_class_unop.cc | 14 ++++++-------- 240 files changed, 124 insertions(+), 1466 deletions(-) diff --git a/src/accessor.class b/src/accessor.class index 9981e35cb..dd3853061 100644 --- a/src/accessor.class +++ b/src/accessor.class @@ -102,9 +102,3 @@ grib_accessor_class* grib_accessor_class_NAME = &_grib_accessor_class_NAME; ADD_TO_FILE grib_accessor_class.h extern grib_accessor_class* grib_accessor_class_NAME; ADD_TO_FILE grib_accessor_factory.h { "NAME", &grib_accessor_class_NAME, }, ADD_TO_FILE grib_accessor_factory_hash_list NAME, &grib_accessor_class_NAME - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - diff --git a/src/action.class b/src/action.class index 5f82e6ab1..772c328c6 100644 --- a/src/action.class +++ b/src/action.class @@ -10,7 +10,7 @@ static int execute(grib_action* a,grib_handle* h); typedef struct grib_action_NAME { - grib_action act; + grib_action act; MEMBERS } grib_action_NAME; diff --git a/src/action_class_set_iarray.cc b/src/action_class_set_iarray.cc index 5862cef86..e5e83d291 100644 --- a/src/action_class_set_iarray.cc +++ b/src/action_class_set_iarray.cc @@ -55,9 +55,12 @@ static grib_action_class _grib_action_class_set_iarray = { &init_class, /* init_class */ 0, /* init */ &destroy, /* destroy */ + &dump, /* dump */ &xref, /* xref */ + 0, /* create_accessor*/ + 0, /* notify_change */ 0, /* reparse */ &execute, /* execute */ diff --git a/src/dumper.class b/src/dumper.class index e0c879c68..62bc265db 100644 --- a/src/dumper.class +++ b/src/dumper.class @@ -14,8 +14,8 @@ static void header (grib_dumper*,grib_handle*); static void footer (grib_dumper*,grib_handle*); typedef struct grib_dumper_NAME { - grib_dumper dumper; -MEMBERS + grib_dumper dumper; +MEMBERS } grib_dumper_NAME; extern grib_dumper_class* SUPER; diff --git a/src/expression.class b/src/expression.class index ccd113b4c..9c11d39db 100644 --- a/src/expression.class +++ b/src/expression.class @@ -26,20 +26,18 @@ extern grib_expression_class* SUPER; static grib_expression_class _grib_expression_class_NAME = { &SUPER, /* super */ "NAME", /* name */ - sizeof(grib_expression_NAME),/* size of instance */ + sizeof(grib_expression_NAME),/* size of instance */ 0, /* inited */ &init_class, /* init_class */ &init, /* constructor */ &destroy, /* destructor */ - &print, - &add_dependency, - - &native_type, - &get_name, - - &evaluate_long, - &evaluate_double, - &evaluate_string, + &print, + &add_dependency, + &native_type, + &get_name, + &evaluate_long, + &evaluate_double, + &evaluate_string, }; grib_expression_class* grib_expression_class_NAME = &_grib_expression_class_NAME; diff --git a/src/grib_accessor_class_abstract_long_vector.cc b/src/grib_accessor_class_abstract_long_vector.cc index efdabab47..e62eb9bfc 100644 --- a/src/grib_accessor_class_abstract_long_vector.cc +++ b/src/grib_accessor_class_abstract_long_vector.cc @@ -101,10 +101,4 @@ static grib_accessor_class _grib_accessor_class_abstract_long_vector = { grib_accessor_class* grib_accessor_class_abstract_long_vector = &_grib_accessor_class_abstract_long_vector; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_abstract_vector.cc b/src/grib_accessor_class_abstract_vector.cc index 025d9123d..afdd17da8 100644 --- a/src/grib_accessor_class_abstract_vector.cc +++ b/src/grib_accessor_class_abstract_vector.cc @@ -96,10 +96,4 @@ static grib_accessor_class _grib_accessor_class_abstract_vector = { grib_accessor_class* grib_accessor_class_abstract_vector = &_grib_accessor_class_abstract_vector; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_array.cc b/src/grib_accessor_class_array.cc index dc77ee9f8..9898133d7 100644 --- a/src/grib_accessor_class_array.cc +++ b/src/grib_accessor_class_array.cc @@ -101,12 +101,6 @@ static grib_accessor_class _grib_accessor_class_array = { grib_accessor_class* grib_accessor_class_array = &_grib_accessor_class_array; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_ascii.cc b/src/grib_accessor_class_ascii.cc index 210e8941b..e6d85d600 100644 --- a/src/grib_accessor_class_ascii.cc +++ b/src/grib_accessor_class_ascii.cc @@ -113,12 +113,6 @@ static grib_accessor_class _grib_accessor_class_ascii = { grib_accessor_class* grib_accessor_class_ascii = &_grib_accessor_class_ascii; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long len, grib_arguments* arg) diff --git a/src/grib_accessor_class_assert.cc b/src/grib_accessor_class_assert.cc index 8e9ff7696..69e25a002 100644 --- a/src/grib_accessor_class_assert.cc +++ b/src/grib_accessor_class_assert.cc @@ -101,12 +101,6 @@ static grib_accessor_class _grib_accessor_class_assert = { grib_accessor_class* grib_accessor_class_assert = &_grib_accessor_class_assert; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long len, grib_arguments* arg) diff --git a/src/grib_accessor_class_bit.cc b/src/grib_accessor_class_bit.cc index 3aef2905c..0f159f0ca 100644 --- a/src/grib_accessor_class_bit.cc +++ b/src/grib_accessor_class_bit.cc @@ -103,12 +103,6 @@ static grib_accessor_class _grib_accessor_class_bit = { grib_accessor_class* grib_accessor_class_bit = &_grib_accessor_class_bit; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long len, grib_arguments* arg) diff --git a/src/grib_accessor_class_bitmap.cc b/src/grib_accessor_class_bitmap.cc index edb4d2858..881656109 100644 --- a/src/grib_accessor_class_bitmap.cc +++ b/src/grib_accessor_class_bitmap.cc @@ -119,12 +119,6 @@ static grib_accessor_class _grib_accessor_class_bitmap = { grib_accessor_class* grib_accessor_class_bitmap = &_grib_accessor_class_bitmap; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_bits.cc b/src/grib_accessor_class_bits.cc index bb291b439..7b0979bb6 100644 --- a/src/grib_accessor_class_bits.cc +++ b/src/grib_accessor_class_bits.cc @@ -125,12 +125,6 @@ static grib_accessor_class _grib_accessor_class_bits = { grib_accessor_class* grib_accessor_class_bits = &_grib_accessor_class_bits; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long l, grib_arguments* c) diff --git a/src/grib_accessor_class_bits_per_value.cc b/src/grib_accessor_class_bits_per_value.cc index 60301badd..66b323c53 100644 --- a/src/grib_accessor_class_bits_per_value.cc +++ b/src/grib_accessor_class_bits_per_value.cc @@ -104,12 +104,6 @@ static grib_accessor_class _grib_accessor_class_bits_per_value = { grib_accessor_class* grib_accessor_class_bits_per_value = &_grib_accessor_class_bits_per_value; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long l, grib_arguments* args) diff --git a/src/grib_accessor_class_blob.cc b/src/grib_accessor_class_blob.cc index ffd13c700..e889173b6 100644 --- a/src/grib_accessor_class_blob.cc +++ b/src/grib_accessor_class_blob.cc @@ -97,12 +97,6 @@ static grib_accessor_class _grib_accessor_class_blob = { grib_accessor_class* grib_accessor_class_blob = &_grib_accessor_class_blob; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long len, grib_arguments* arg) diff --git a/src/grib_accessor_class_budgdate.cc b/src/grib_accessor_class_budgdate.cc index effa6e8df..45bb10b97 100644 --- a/src/grib_accessor_class_budgdate.cc +++ b/src/grib_accessor_class_budgdate.cc @@ -104,12 +104,6 @@ static grib_accessor_class _grib_accessor_class_budgdate = { grib_accessor_class* grib_accessor_class_budgdate = &_grib_accessor_class_budgdate; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long l, grib_arguments* c) diff --git a/src/grib_accessor_class_bufr_data_array.cc b/src/grib_accessor_class_bufr_data_array.cc index dc84b7214..e4ac05852 100644 --- a/src/grib_accessor_class_bufr_data_array.cc +++ b/src/grib_accessor_class_bufr_data_array.cc @@ -208,12 +208,6 @@ static grib_accessor_class _grib_accessor_class_bufr_data_array = { grib_accessor_class* grib_accessor_class_bufr_data_array = &_grib_accessor_class_bufr_data_array; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ #define MAX_NESTED_REPLICATIONS 8 diff --git a/src/grib_accessor_class_bufr_data_element.cc b/src/grib_accessor_class_bufr_data_element.cc index 1fc97d9a5..45dd15f7d 100644 --- a/src/grib_accessor_class_bufr_data_element.cc +++ b/src/grib_accessor_class_bufr_data_element.cc @@ -139,12 +139,6 @@ static grib_accessor_class _grib_accessor_class_bufr_data_element = { grib_accessor_class* grib_accessor_class_bufr_data_element = &_grib_accessor_class_bufr_data_element; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static grib_accessor* make_clone(grib_accessor* a, grib_section* s, int* err) diff --git a/src/grib_accessor_class_bufr_elements_table.cc b/src/grib_accessor_class_bufr_elements_table.cc index 4089082f9..0565a8489 100644 --- a/src/grib_accessor_class_bufr_elements_table.cc +++ b/src/grib_accessor_class_bufr_elements_table.cc @@ -139,12 +139,6 @@ static grib_accessor_class _grib_accessor_class_bufr_elements_table = { grib_accessor_class* grib_accessor_class_bufr_elements_table = &_grib_accessor_class_bufr_elements_table; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long len, grib_arguments* params) diff --git a/src/grib_accessor_class_bufr_extract_area_subsets.cc b/src/grib_accessor_class_bufr_extract_area_subsets.cc index a7519615c..7fd1d70be 100644 --- a/src/grib_accessor_class_bufr_extract_area_subsets.cc +++ b/src/grib_accessor_class_bufr_extract_area_subsets.cc @@ -116,12 +116,6 @@ static grib_accessor_class _grib_accessor_class_bufr_extract_area_subsets = { grib_accessor_class* grib_accessor_class_bufr_extract_area_subsets = &_grib_accessor_class_bufr_extract_area_subsets; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long len, grib_arguments* arg) diff --git a/src/grib_accessor_class_bufr_extract_datetime_subsets.cc b/src/grib_accessor_class_bufr_extract_datetime_subsets.cc index b9daf0de0..46792a76a 100644 --- a/src/grib_accessor_class_bufr_extract_datetime_subsets.cc +++ b/src/grib_accessor_class_bufr_extract_datetime_subsets.cc @@ -102,12 +102,6 @@ static grib_accessor_class _grib_accessor_class_bufr_extract_datetime_subsets = grib_accessor_class* grib_accessor_class_bufr_extract_datetime_subsets = &_grib_accessor_class_bufr_extract_datetime_subsets; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long len, grib_arguments* arg) diff --git a/src/grib_accessor_class_bufr_extract_subsets.cc b/src/grib_accessor_class_bufr_extract_subsets.cc index 673c2b36d..969a8b59f 100644 --- a/src/grib_accessor_class_bufr_extract_subsets.cc +++ b/src/grib_accessor_class_bufr_extract_subsets.cc @@ -104,12 +104,6 @@ static grib_accessor_class _grib_accessor_class_bufr_extract_subsets = { grib_accessor_class* grib_accessor_class_bufr_extract_subsets = &_grib_accessor_class_bufr_extract_subsets; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void get_accessors(grib_accessor* a) diff --git a/src/grib_accessor_class_bufr_group.cc b/src/grib_accessor_class_bufr_group.cc index bffa53fe6..216cf308c 100644 --- a/src/grib_accessor_class_bufr_group.cc +++ b/src/grib_accessor_class_bufr_group.cc @@ -100,12 +100,6 @@ static grib_accessor_class _grib_accessor_class_bufr_group = { grib_accessor_class* grib_accessor_class_bufr_group = &_grib_accessor_class_bufr_group; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void dump(grib_accessor* a, grib_dumper* dumper) diff --git a/src/grib_accessor_class_bufr_simple_thinning.cc b/src/grib_accessor_class_bufr_simple_thinning.cc index 17404fa6d..96f9d5f0d 100644 --- a/src/grib_accessor_class_bufr_simple_thinning.cc +++ b/src/grib_accessor_class_bufr_simple_thinning.cc @@ -108,12 +108,6 @@ static grib_accessor_class _grib_accessor_class_bufr_simple_thinning = { grib_accessor_class* grib_accessor_class_bufr_simple_thinning = &_grib_accessor_class_bufr_simple_thinning; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long len, grib_arguments* arg) diff --git a/src/grib_accessor_class_bufr_string_values.cc b/src/grib_accessor_class_bufr_string_values.cc index a7e8a9690..541279332 100644 --- a/src/grib_accessor_class_bufr_string_values.cc +++ b/src/grib_accessor_class_bufr_string_values.cc @@ -116,12 +116,6 @@ static grib_accessor_class _grib_accessor_class_bufr_string_values = { grib_accessor_class* grib_accessor_class_bufr_string_values = &_grib_accessor_class_bufr_string_values; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long len, grib_arguments* args) diff --git a/src/grib_accessor_class_bufrdc_expanded_descriptors.cc b/src/grib_accessor_class_bufrdc_expanded_descriptors.cc index a887154ff..590c41860 100644 --- a/src/grib_accessor_class_bufrdc_expanded_descriptors.cc +++ b/src/grib_accessor_class_bufrdc_expanded_descriptors.cc @@ -114,12 +114,6 @@ static grib_accessor_class _grib_accessor_class_bufrdc_expanded_descriptors = { grib_accessor_class* grib_accessor_class_bufrdc_expanded_descriptors = &_grib_accessor_class_bufrdc_expanded_descriptors; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long len, grib_arguments* args) diff --git a/src/grib_accessor_class_bytes.cc b/src/grib_accessor_class_bytes.cc index c8499ecfd..8e8440815 100644 --- a/src/grib_accessor_class_bytes.cc +++ b/src/grib_accessor_class_bytes.cc @@ -98,12 +98,6 @@ static grib_accessor_class _grib_accessor_class_bytes = { grib_accessor_class* grib_accessor_class_bytes = &_grib_accessor_class_bytes; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long len, grib_arguments* arg) diff --git a/src/grib_accessor_class_change_alternative_row_scanning.cc b/src/grib_accessor_class_change_alternative_row_scanning.cc index d4c2056c9..548264158 100644 --- a/src/grib_accessor_class_change_alternative_row_scanning.cc +++ b/src/grib_accessor_class_change_alternative_row_scanning.cc @@ -106,12 +106,6 @@ static grib_accessor_class _grib_accessor_class_change_alternative_row_scanning grib_accessor_class* grib_accessor_class_change_alternative_row_scanning = &_grib_accessor_class_change_alternative_row_scanning; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long len, grib_arguments* args) diff --git a/src/grib_accessor_class_change_scanning_direction.cc b/src/grib_accessor_class_change_scanning_direction.cc index 078529963..85a518718 100644 --- a/src/grib_accessor_class_change_scanning_direction.cc +++ b/src/grib_accessor_class_change_scanning_direction.cc @@ -114,12 +114,6 @@ static grib_accessor_class _grib_accessor_class_change_scanning_direction = { grib_accessor_class* grib_accessor_class_change_scanning_direction = &_grib_accessor_class_change_scanning_direction; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long len, grib_arguments* args) diff --git a/src/grib_accessor_class_check_internal_version.cc b/src/grib_accessor_class_check_internal_version.cc index 91794ab1d..04f281cbb 100644 --- a/src/grib_accessor_class_check_internal_version.cc +++ b/src/grib_accessor_class_check_internal_version.cc @@ -97,12 +97,6 @@ static grib_accessor_class _grib_accessor_class_check_internal_version = { grib_accessor_class* grib_accessor_class_check_internal_version = &_grib_accessor_class_check_internal_version; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ /* This is the internal engine version number */ diff --git a/src/grib_accessor_class_closest_date.cc b/src/grib_accessor_class_closest_date.cc index fd1b68ae4..d898fa604 100644 --- a/src/grib_accessor_class_closest_date.cc +++ b/src/grib_accessor_class_closest_date.cc @@ -120,12 +120,6 @@ static grib_accessor_class _grib_accessor_class_closest_date = { grib_accessor_class* grib_accessor_class_closest_date = &_grib_accessor_class_closest_date; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long l, grib_arguments* c) diff --git a/src/grib_accessor_class_codeflag.cc b/src/grib_accessor_class_codeflag.cc index 93f33fb14..75570cc28 100644 --- a/src/grib_accessor_class_codeflag.cc +++ b/src/grib_accessor_class_codeflag.cc @@ -106,12 +106,6 @@ static grib_accessor_class _grib_accessor_class_codeflag = { grib_accessor_class* grib_accessor_class_codeflag = &_grib_accessor_class_codeflag; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long len, grib_arguments* param) diff --git a/src/grib_accessor_class_codetable.cc b/src/grib_accessor_class_codetable.cc index 1bed5b609..60e7b7cbf 100644 --- a/src/grib_accessor_class_codetable.cc +++ b/src/grib_accessor_class_codetable.cc @@ -150,12 +150,6 @@ static grib_accessor_class _grib_accessor_class_codetable = { grib_accessor_class* grib_accessor_class_codetable = &_grib_accessor_class_codetable; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static int grib_load_codetable(grib_context* c, const char* filename, diff --git a/src/grib_accessor_class_codetable_title.cc b/src/grib_accessor_class_codetable_title.cc index c2c19b6aa..0a80a0f31 100644 --- a/src/grib_accessor_class_codetable_title.cc +++ b/src/grib_accessor_class_codetable_title.cc @@ -98,12 +98,6 @@ static grib_accessor_class _grib_accessor_class_codetable_title = { grib_accessor_class* grib_accessor_class_codetable_title = &_grib_accessor_class_codetable_title; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ typedef struct grib_accessor_codetable diff --git a/src/grib_accessor_class_codetable_units.cc b/src/grib_accessor_class_codetable_units.cc index dee16e4e8..aaaf9cffd 100644 --- a/src/grib_accessor_class_codetable_units.cc +++ b/src/grib_accessor_class_codetable_units.cc @@ -98,12 +98,6 @@ static grib_accessor_class _grib_accessor_class_codetable_units = { grib_accessor_class* grib_accessor_class_codetable_units = &_grib_accessor_class_codetable_units; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ typedef struct grib_accessor_codetable diff --git a/src/grib_accessor_class_concept.cc b/src/grib_accessor_class_concept.cc index 5f2c13cc0..d69b8d1c1 100644 --- a/src/grib_accessor_class_concept.cc +++ b/src/grib_accessor_class_concept.cc @@ -115,12 +115,6 @@ static grib_accessor_class _grib_accessor_class_concept = { grib_accessor_class* grib_accessor_class_concept = &_grib_accessor_class_concept; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ #define MAX_CONCEPT_STRING_LENGTH 255 diff --git a/src/grib_accessor_class_constant.cc b/src/grib_accessor_class_constant.cc index 750132419..4e5524336 100644 --- a/src/grib_accessor_class_constant.cc +++ b/src/grib_accessor_class_constant.cc @@ -107,12 +107,6 @@ static grib_accessor_class _grib_accessor_class_constant = { grib_accessor_class* grib_accessor_class_constant = &_grib_accessor_class_constant; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long len, grib_arguments* arg) diff --git a/src/grib_accessor_class_count_file.cc b/src/grib_accessor_class_count_file.cc index 767a7c04b..56aae6dbf 100644 --- a/src/grib_accessor_class_count_file.cc +++ b/src/grib_accessor_class_count_file.cc @@ -99,12 +99,6 @@ static grib_accessor_class _grib_accessor_class_count_file = { grib_accessor_class* grib_accessor_class_count_file = &_grib_accessor_class_count_file; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long l, grib_arguments* c) diff --git a/src/grib_accessor_class_count_missing.cc b/src/grib_accessor_class_count_missing.cc index 46680b92f..acc68e404 100644 --- a/src/grib_accessor_class_count_missing.cc +++ b/src/grib_accessor_class_count_missing.cc @@ -106,12 +106,6 @@ static grib_accessor_class _grib_accessor_class_count_missing = { grib_accessor_class* grib_accessor_class_count_missing = &_grib_accessor_class_count_missing; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static const unsigned char bitsoff[] = { diff --git a/src/grib_accessor_class_count_total.cc b/src/grib_accessor_class_count_total.cc index 655c56cbe..df49818f3 100644 --- a/src/grib_accessor_class_count_total.cc +++ b/src/grib_accessor_class_count_total.cc @@ -101,12 +101,6 @@ static grib_accessor_class _grib_accessor_class_count_total = { grib_accessor_class* grib_accessor_class_count_total = &_grib_accessor_class_count_total; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long l, grib_arguments* c) diff --git a/src/grib_accessor_class_data_2order_packing.cc b/src/grib_accessor_class_data_2order_packing.cc index a501dbdf1..2f641eb64 100644 --- a/src/grib_accessor_class_data_2order_packing.cc +++ b/src/grib_accessor_class_data_2order_packing.cc @@ -154,12 +154,6 @@ static grib_accessor_class _grib_accessor_class_data_2order_packing = { grib_accessor_class* grib_accessor_class_data_2order_packing = &_grib_accessor_class_data_2order_packing; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long v, grib_arguments* args) diff --git a/src/grib_accessor_class_data_apply_bitmap.cc b/src/grib_accessor_class_data_apply_bitmap.cc index 092f01820..da64ece90 100644 --- a/src/grib_accessor_class_data_apply_bitmap.cc +++ b/src/grib_accessor_class_data_apply_bitmap.cc @@ -118,12 +118,6 @@ static grib_accessor_class _grib_accessor_class_data_apply_bitmap = { grib_accessor_class* grib_accessor_class_data_apply_bitmap = &_grib_accessor_class_data_apply_bitmap; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long v, grib_arguments* args) diff --git a/src/grib_accessor_class_data_apply_boustrophedonic.cc b/src/grib_accessor_class_data_apply_boustrophedonic.cc index 4177e8ef6..747e47653 100644 --- a/src/grib_accessor_class_data_apply_boustrophedonic.cc +++ b/src/grib_accessor_class_data_apply_boustrophedonic.cc @@ -116,12 +116,6 @@ static grib_accessor_class _grib_accessor_class_data_apply_boustrophedonic = { grib_accessor_class* grib_accessor_class_data_apply_boustrophedonic = &_grib_accessor_class_data_apply_boustrophedonic; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long v, grib_arguments* args) diff --git a/src/grib_accessor_class_data_apply_boustrophedonic_bitmap.cc b/src/grib_accessor_class_data_apply_boustrophedonic_bitmap.cc index ea5e6217a..f3c6fdb35 100644 --- a/src/grib_accessor_class_data_apply_boustrophedonic_bitmap.cc +++ b/src/grib_accessor_class_data_apply_boustrophedonic_bitmap.cc @@ -119,12 +119,6 @@ static grib_accessor_class _grib_accessor_class_data_apply_boustrophedonic_bitma grib_accessor_class* grib_accessor_class_data_apply_boustrophedonic_bitmap = &_grib_accessor_class_data_apply_boustrophedonic_bitmap; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long v, grib_arguments* args) diff --git a/src/grib_accessor_class_data_apply_gdsnotpresent.cc b/src/grib_accessor_class_data_apply_gdsnotpresent.cc index 120e0e043..89b42f160 100644 --- a/src/grib_accessor_class_data_apply_gdsnotpresent.cc +++ b/src/grib_accessor_class_data_apply_gdsnotpresent.cc @@ -123,12 +123,6 @@ static grib_accessor_class _grib_accessor_class_data_apply_gdsnotpresent = { grib_accessor_class* grib_accessor_class_data_apply_gdsnotpresent = &_grib_accessor_class_data_apply_gdsnotpresent; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long v, grib_arguments* args) diff --git a/src/grib_accessor_class_data_ccsds_packing.cc b/src/grib_accessor_class_data_ccsds_packing.cc index 1035ce9f1..7f0b511d3 100644 --- a/src/grib_accessor_class_data_ccsds_packing.cc +++ b/src/grib_accessor_class_data_ccsds_packing.cc @@ -135,12 +135,6 @@ static grib_accessor_class _grib_accessor_class_data_ccsds_packing = { grib_accessor_class* grib_accessor_class_data_ccsds_packing = &_grib_accessor_class_data_ccsds_packing; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long v, grib_arguments* args) diff --git a/src/grib_accessor_class_data_complex_packing.cc b/src/grib_accessor_class_data_complex_packing.cc index f8595a858..85cafae38 100644 --- a/src/grib_accessor_class_data_complex_packing.cc +++ b/src/grib_accessor_class_data_complex_packing.cc @@ -142,12 +142,6 @@ static grib_accessor_class _grib_accessor_class_data_complex_packing = { grib_accessor_class* grib_accessor_class_data_complex_packing = &_grib_accessor_class_data_complex_packing; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ typedef unsigned long (*encode_float_proc)(double); diff --git a/src/grib_accessor_class_data_dummy_field.cc b/src/grib_accessor_class_data_dummy_field.cc index 61391b800..69a14bbbd 100644 --- a/src/grib_accessor_class_data_dummy_field.cc +++ b/src/grib_accessor_class_data_dummy_field.cc @@ -128,12 +128,6 @@ static grib_accessor_class _grib_accessor_class_data_dummy_field = { grib_accessor_class* grib_accessor_class_data_dummy_field = &_grib_accessor_class_data_dummy_field; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long v, grib_arguments* args) diff --git a/src/grib_accessor_class_data_g1complex_packing.cc b/src/grib_accessor_class_data_g1complex_packing.cc index 0a4c0646e..2f2e7dfcc 100644 --- a/src/grib_accessor_class_data_g1complex_packing.cc +++ b/src/grib_accessor_class_data_g1complex_packing.cc @@ -135,12 +135,6 @@ static grib_accessor_class _grib_accessor_class_data_g1complex_packing = { grib_accessor_class* grib_accessor_class_data_g1complex_packing = &_grib_accessor_class_data_g1complex_packing; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long v, grib_arguments* args) diff --git a/src/grib_accessor_class_data_g1second_order_constant_width_packing.cc b/src/grib_accessor_class_data_g1second_order_constant_width_packing.cc index 74a70b3ac..33b28f508 100644 --- a/src/grib_accessor_class_data_g1second_order_constant_width_packing.cc +++ b/src/grib_accessor_class_data_g1second_order_constant_width_packing.cc @@ -155,12 +155,6 @@ static grib_accessor_class _grib_accessor_class_data_g1second_order_constant_wid grib_accessor_class* grib_accessor_class_data_g1second_order_constant_width_packing = &_grib_accessor_class_data_g1second_order_constant_width_packing; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long v, grib_arguments* args) diff --git a/src/grib_accessor_class_data_g1second_order_general_extended_packing.cc b/src/grib_accessor_class_data_g1second_order_general_extended_packing.cc index 1c218bad4..74515b430 100644 --- a/src/grib_accessor_class_data_g1second_order_general_extended_packing.cc +++ b/src/grib_accessor_class_data_g1second_order_general_extended_packing.cc @@ -48,9 +48,10 @@ MEMBERS=const char* dataFlag MEMBERS=double* dvalues MEMBERS=float* fvalues + MEMBERS=int double_dirty + MEMBERS=int float_dirty MEMBERS=size_t size - END_CLASS_DEF */ @@ -179,12 +180,6 @@ static grib_accessor_class _grib_accessor_class_data_g1second_order_general_exte grib_accessor_class* grib_accessor_class_data_g1second_order_general_extended_packing = &_grib_accessor_class_data_g1second_order_general_extended_packing; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ #define MAX_NUMBER_OF_GROUPS 65534 diff --git a/src/grib_accessor_class_data_g1second_order_general_packing.cc b/src/grib_accessor_class_data_g1second_order_general_packing.cc index 190220be5..d9388619b 100644 --- a/src/grib_accessor_class_data_g1second_order_general_packing.cc +++ b/src/grib_accessor_class_data_g1second_order_general_packing.cc @@ -154,12 +154,6 @@ static grib_accessor_class _grib_accessor_class_data_g1second_order_general_pack grib_accessor_class* grib_accessor_class_data_g1second_order_general_packing = &_grib_accessor_class_data_g1second_order_general_packing; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long v, grib_arguments* args) diff --git a/src/grib_accessor_class_data_g1second_order_row_by_row_packing.cc b/src/grib_accessor_class_data_g1second_order_row_by_row_packing.cc index 55e699aac..cc4c9ea9c 100644 --- a/src/grib_accessor_class_data_g1second_order_row_by_row_packing.cc +++ b/src/grib_accessor_class_data_g1second_order_row_by_row_packing.cc @@ -152,12 +152,6 @@ static grib_accessor_class _grib_accessor_class_data_g1second_order_row_by_row_p grib_accessor_class* grib_accessor_class_data_g1second_order_row_by_row_packing = &_grib_accessor_class_data_g1second_order_row_by_row_packing; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long v, grib_arguments* args) diff --git a/src/grib_accessor_class_data_g1secondary_bitmap.cc b/src/grib_accessor_class_data_g1secondary_bitmap.cc index 31ed7bef3..2e82646dc 100644 --- a/src/grib_accessor_class_data_g1secondary_bitmap.cc +++ b/src/grib_accessor_class_data_g1secondary_bitmap.cc @@ -104,12 +104,6 @@ static grib_accessor_class _grib_accessor_class_data_g1secondary_bitmap = { grib_accessor_class* grib_accessor_class_data_g1secondary_bitmap = &_grib_accessor_class_data_g1secondary_bitmap; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long v, grib_arguments* args) diff --git a/src/grib_accessor_class_data_g1shsimple_packing.cc b/src/grib_accessor_class_data_g1shsimple_packing.cc index 0f5e67328..d50c32830 100644 --- a/src/grib_accessor_class_data_g1shsimple_packing.cc +++ b/src/grib_accessor_class_data_g1shsimple_packing.cc @@ -99,12 +99,6 @@ static grib_accessor_class _grib_accessor_class_data_g1shsimple_packing = { grib_accessor_class* grib_accessor_class_data_g1shsimple_packing = &_grib_accessor_class_data_g1shsimple_packing; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_data_g1simple_packing.cc b/src/grib_accessor_class_data_g1simple_packing.cc index aeaf5f5c8..1b4d08e82 100644 --- a/src/grib_accessor_class_data_g1simple_packing.cc +++ b/src/grib_accessor_class_data_g1simple_packing.cc @@ -124,12 +124,6 @@ static grib_accessor_class _grib_accessor_class_data_g1simple_packing = { grib_accessor_class* grib_accessor_class_data_g1simple_packing = &_grib_accessor_class_data_g1simple_packing; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long v, grib_arguments* args) diff --git a/src/grib_accessor_class_data_g22order_packing.cc b/src/grib_accessor_class_data_g22order_packing.cc index e930fe264..262e96896 100644 --- a/src/grib_accessor_class_data_g22order_packing.cc +++ b/src/grib_accessor_class_data_g22order_packing.cc @@ -155,12 +155,6 @@ static grib_accessor_class _grib_accessor_class_data_g22order_packing = { grib_accessor_class* grib_accessor_class_data_g22order_packing = &_grib_accessor_class_data_g22order_packing; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long v, grib_arguments* args) diff --git a/src/grib_accessor_class_data_g2bifourier_packing.cc b/src/grib_accessor_class_data_g2bifourier_packing.cc index 04d76cb3a..7249e568d 100644 --- a/src/grib_accessor_class_data_g2bifourier_packing.cc +++ b/src/grib_accessor_class_data_g2bifourier_packing.cc @@ -151,12 +151,6 @@ static grib_accessor_class _grib_accessor_class_data_g2bifourier_packing = { grib_accessor_class* grib_accessor_class_data_g2bifourier_packing = &_grib_accessor_class_data_g2bifourier_packing; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ typedef unsigned long (*encode_float_proc)(double); diff --git a/src/grib_accessor_class_data_g2complex_packing.cc b/src/grib_accessor_class_data_g2complex_packing.cc index d6a0b50e8..b0b77faca 100644 --- a/src/grib_accessor_class_data_g2complex_packing.cc +++ b/src/grib_accessor_class_data_g2complex_packing.cc @@ -128,12 +128,6 @@ static grib_accessor_class _grib_accessor_class_data_g2complex_packing = { grib_accessor_class* grib_accessor_class_data_g2complex_packing = &_grib_accessor_class_data_g2complex_packing; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long v, grib_arguments* args) diff --git a/src/grib_accessor_class_data_g2secondary_bitmap.cc b/src/grib_accessor_class_data_g2secondary_bitmap.cc index f53c571b5..608cdbfad 100644 --- a/src/grib_accessor_class_data_g2secondary_bitmap.cc +++ b/src/grib_accessor_class_data_g2secondary_bitmap.cc @@ -104,12 +104,6 @@ static grib_accessor_class _grib_accessor_class_data_g2secondary_bitmap = { grib_accessor_class* grib_accessor_class_data_g2secondary_bitmap = &_grib_accessor_class_data_g2secondary_bitmap; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long v, grib_arguments* args) diff --git a/src/grib_accessor_class_data_g2shsimple_packing.cc b/src/grib_accessor_class_data_g2shsimple_packing.cc index 9cae61828..1f1a8b323 100644 --- a/src/grib_accessor_class_data_g2shsimple_packing.cc +++ b/src/grib_accessor_class_data_g2shsimple_packing.cc @@ -107,12 +107,6 @@ static grib_accessor_class _grib_accessor_class_data_g2shsimple_packing = { grib_accessor_class* grib_accessor_class_data_g2shsimple_packing = &_grib_accessor_class_data_g2shsimple_packing; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long v, grib_arguments* args) diff --git a/src/grib_accessor_class_data_g2simple_packing.cc b/src/grib_accessor_class_data_g2simple_packing.cc index d3323bbdf..f3bdd2577 100644 --- a/src/grib_accessor_class_data_g2simple_packing.cc +++ b/src/grib_accessor_class_data_g2simple_packing.cc @@ -118,12 +118,6 @@ static grib_accessor_class _grib_accessor_class_data_g2simple_packing = { grib_accessor_class* grib_accessor_class_data_g2simple_packing = &_grib_accessor_class_data_g2simple_packing; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long v, grib_arguments* args) diff --git a/src/grib_accessor_class_data_g2simple_packing_with_preprocessing.cc b/src/grib_accessor_class_data_g2simple_packing_with_preprocessing.cc index 3cbbd1d64..de6cb7907 100644 --- a/src/grib_accessor_class_data_g2simple_packing_with_preprocessing.cc +++ b/src/grib_accessor_class_data_g2simple_packing_with_preprocessing.cc @@ -124,12 +124,6 @@ static grib_accessor_class _grib_accessor_class_data_g2simple_packing_with_prepr grib_accessor_class* grib_accessor_class_data_g2simple_packing_with_preprocessing = &_grib_accessor_class_data_g2simple_packing_with_preprocessing; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long v, grib_arguments* args) diff --git a/src/grib_accessor_class_data_jpeg2000_packing.cc b/src/grib_accessor_class_data_jpeg2000_packing.cc index a9d8c4410..09a807b8b 100644 --- a/src/grib_accessor_class_data_jpeg2000_packing.cc +++ b/src/grib_accessor_class_data_jpeg2000_packing.cc @@ -140,12 +140,6 @@ static grib_accessor_class _grib_accessor_class_data_jpeg2000_packing = { grib_accessor_class* grib_accessor_class_data_jpeg2000_packing = &_grib_accessor_class_data_jpeg2000_packing; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static int first = 1; diff --git a/src/grib_accessor_class_data_png_packing.cc b/src/grib_accessor_class_data_png_packing.cc index f8890c237..10265b2a9 100644 --- a/src/grib_accessor_class_data_png_packing.cc +++ b/src/grib_accessor_class_data_png_packing.cc @@ -132,12 +132,6 @@ static grib_accessor_class _grib_accessor_class_data_png_packing = { grib_accessor_class* grib_accessor_class_data_png_packing = &_grib_accessor_class_data_png_packing; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long v, grib_arguments* args) diff --git a/src/grib_accessor_class_data_raw_packing.cc b/src/grib_accessor_class_data_raw_packing.cc index 2d36ef58a..21485a6c7 100644 --- a/src/grib_accessor_class_data_raw_packing.cc +++ b/src/grib_accessor_class_data_raw_packing.cc @@ -118,12 +118,6 @@ static grib_accessor_class _grib_accessor_class_data_raw_packing = { grib_accessor_class* grib_accessor_class_data_raw_packing = &_grib_accessor_class_data_raw_packing; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long v, grib_arguments* args) diff --git a/src/grib_accessor_class_data_run_length_packing.cc b/src/grib_accessor_class_data_run_length_packing.cc index 422675438..3624418f3 100644 --- a/src/grib_accessor_class_data_run_length_packing.cc +++ b/src/grib_accessor_class_data_run_length_packing.cc @@ -119,12 +119,6 @@ static grib_accessor_class _grib_accessor_class_data_run_length_packing = { grib_accessor_class* grib_accessor_class_data_run_length_packing = &_grib_accessor_class_data_run_length_packing; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long v, grib_arguments* args) diff --git a/src/grib_accessor_class_data_secondary_bitmap.cc b/src/grib_accessor_class_data_secondary_bitmap.cc index 0bbc08886..0824bb0c1 100644 --- a/src/grib_accessor_class_data_secondary_bitmap.cc +++ b/src/grib_accessor_class_data_secondary_bitmap.cc @@ -106,12 +106,6 @@ static grib_accessor_class _grib_accessor_class_data_secondary_bitmap = { grib_accessor_class* grib_accessor_class_data_secondary_bitmap = &_grib_accessor_class_data_secondary_bitmap; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long v, grib_arguments* args) diff --git a/src/grib_accessor_class_data_sh_packed.cc b/src/grib_accessor_class_data_sh_packed.cc index b1c24e6cd..abb9538d7 100644 --- a/src/grib_accessor_class_data_sh_packed.cc +++ b/src/grib_accessor_class_data_sh_packed.cc @@ -137,12 +137,6 @@ static grib_accessor_class _grib_accessor_class_data_sh_packed = { grib_accessor_class* grib_accessor_class_data_sh_packed = &_grib_accessor_class_data_sh_packed; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ typedef unsigned long (*encode_float_proc)(double); diff --git a/src/grib_accessor_class_data_sh_unpacked.cc b/src/grib_accessor_class_data_sh_unpacked.cc index 0b7499118..c68a1c38c 100644 --- a/src/grib_accessor_class_data_sh_unpacked.cc +++ b/src/grib_accessor_class_data_sh_unpacked.cc @@ -137,12 +137,6 @@ static grib_accessor_class _grib_accessor_class_data_sh_unpacked = { grib_accessor_class* grib_accessor_class_data_sh_unpacked = &_grib_accessor_class_data_sh_unpacked; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ typedef unsigned long (*encode_float_proc)(double); diff --git a/src/grib_accessor_class_data_shsimple_packing.cc b/src/grib_accessor_class_data_shsimple_packing.cc index 6e7c2c095..1019ef2f6 100644 --- a/src/grib_accessor_class_data_shsimple_packing.cc +++ b/src/grib_accessor_class_data_shsimple_packing.cc @@ -104,12 +104,6 @@ static grib_accessor_class _grib_accessor_class_data_shsimple_packing = { grib_accessor_class* grib_accessor_class_data_shsimple_packing = &_grib_accessor_class_data_shsimple_packing; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long v, grib_arguments* args) diff --git a/src/grib_accessor_class_data_simple_packing.cc b/src/grib_accessor_class_data_simple_packing.cc index c24c53cd0..e6475cadd 100644 --- a/src/grib_accessor_class_data_simple_packing.cc +++ b/src/grib_accessor_class_data_simple_packing.cc @@ -136,12 +136,6 @@ static grib_accessor_class _grib_accessor_class_data_simple_packing = { grib_accessor_class* grib_accessor_class_data_simple_packing = &_grib_accessor_class_data_simple_packing; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long v, grib_arguments* args) diff --git a/src/grib_accessor_class_decimal_precision.cc b/src/grib_accessor_class_decimal_precision.cc index 1b91dc142..90de5cbc0 100644 --- a/src/grib_accessor_class_decimal_precision.cc +++ b/src/grib_accessor_class_decimal_precision.cc @@ -108,12 +108,6 @@ static grib_accessor_class _grib_accessor_class_decimal_precision = { grib_accessor_class* grib_accessor_class_decimal_precision = &_grib_accessor_class_decimal_precision; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long l, grib_arguments* args) diff --git a/src/grib_accessor_class_dictionary.cc b/src/grib_accessor_class_dictionary.cc index fbc739f3c..73f8b7eaa 100644 --- a/src/grib_accessor_class_dictionary.cc +++ b/src/grib_accessor_class_dictionary.cc @@ -111,12 +111,6 @@ static grib_accessor_class _grib_accessor_class_dictionary = { grib_accessor_class* grib_accessor_class_dictionary = &_grib_accessor_class_dictionary; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long len, grib_arguments* params) diff --git a/src/grib_accessor_class_dirty.cc b/src/grib_accessor_class_dirty.cc index c3c95e913..8f90784a9 100644 --- a/src/grib_accessor_class_dirty.cc +++ b/src/grib_accessor_class_dirty.cc @@ -103,12 +103,6 @@ static grib_accessor_class _grib_accessor_class_dirty = { grib_accessor_class* grib_accessor_class_dirty = &_grib_accessor_class_dirty; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long l, grib_arguments* c) diff --git a/src/grib_accessor_class_divdouble.cc b/src/grib_accessor_class_divdouble.cc index 769965405..c0c97ba99 100644 --- a/src/grib_accessor_class_divdouble.cc +++ b/src/grib_accessor_class_divdouble.cc @@ -104,12 +104,6 @@ static grib_accessor_class _grib_accessor_class_divdouble = { grib_accessor_class* grib_accessor_class_divdouble = &_grib_accessor_class_divdouble; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long l, grib_arguments* c) diff --git a/src/grib_accessor_class_double.cc b/src/grib_accessor_class_double.cc index be2c62df1..cd4631094 100644 --- a/src/grib_accessor_class_double.cc +++ b/src/grib_accessor_class_double.cc @@ -104,12 +104,6 @@ static grib_accessor_class _grib_accessor_class_double = { grib_accessor_class* grib_accessor_class_double = &_grib_accessor_class_double; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static int get_native_type(grib_accessor* a) diff --git a/src/grib_accessor_class_element.cc b/src/grib_accessor_class_element.cc index e72b8fedc..fe5f65c4d 100644 --- a/src/grib_accessor_class_element.cc +++ b/src/grib_accessor_class_element.cc @@ -106,12 +106,6 @@ static grib_accessor_class _grib_accessor_class_element = { grib_accessor_class* grib_accessor_class_element = &_grib_accessor_class_element; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long l, grib_arguments* c) diff --git a/src/grib_accessor_class_evaluate.cc b/src/grib_accessor_class_evaluate.cc index dbeed30aa..0f45b17f3 100644 --- a/src/grib_accessor_class_evaluate.cc +++ b/src/grib_accessor_class_evaluate.cc @@ -99,12 +99,6 @@ static grib_accessor_class _grib_accessor_class_evaluate = { grib_accessor_class* grib_accessor_class_evaluate = &_grib_accessor_class_evaluate; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long l, grib_arguments* c) diff --git a/src/grib_accessor_class_expanded_descriptors.cc b/src/grib_accessor_class_expanded_descriptors.cc index c019a40f6..c46458776 100644 --- a/src/grib_accessor_class_expanded_descriptors.cc +++ b/src/grib_accessor_class_expanded_descriptors.cc @@ -131,12 +131,6 @@ static grib_accessor_class _grib_accessor_class_expanded_descriptors = { grib_accessor_class* grib_accessor_class_expanded_descriptors = &_grib_accessor_class_expanded_descriptors; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ #define MYDEBUG 0 diff --git a/src/grib_accessor_class_from_scale_factor_scaled_value.cc b/src/grib_accessor_class_from_scale_factor_scaled_value.cc index 21a41a1e3..4292c1385 100644 --- a/src/grib_accessor_class_from_scale_factor_scaled_value.cc +++ b/src/grib_accessor_class_from_scale_factor_scaled_value.cc @@ -109,12 +109,6 @@ static grib_accessor_class _grib_accessor_class_from_scale_factor_scaled_value = grib_accessor_class* grib_accessor_class_from_scale_factor_scaled_value = &_grib_accessor_class_from_scale_factor_scaled_value; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long l, grib_arguments* c) diff --git a/src/grib_accessor_class_g1_half_byte_codeflag.cc b/src/grib_accessor_class_g1_half_byte_codeflag.cc index cb2d6d489..dd758006b 100644 --- a/src/grib_accessor_class_g1_half_byte_codeflag.cc +++ b/src/grib_accessor_class_g1_half_byte_codeflag.cc @@ -102,12 +102,6 @@ static grib_accessor_class _grib_accessor_class_g1_half_byte_codeflag = { grib_accessor_class* grib_accessor_class_g1_half_byte_codeflag = &_grib_accessor_class_g1_half_byte_codeflag; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long len, grib_arguments* arg) diff --git a/src/grib_accessor_class_g1_message_length.cc b/src/grib_accessor_class_g1_message_length.cc index 5ee61dd0d..fc8c9dfc1 100644 --- a/src/grib_accessor_class_g1_message_length.cc +++ b/src/grib_accessor_class_g1_message_length.cc @@ -102,12 +102,6 @@ static grib_accessor_class _grib_accessor_class_g1_message_length = { grib_accessor_class* grib_accessor_class_g1_message_length = &_grib_accessor_class_g1_message_length; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long len, grib_arguments* args) diff --git a/src/grib_accessor_class_g1_section4_length.cc b/src/grib_accessor_class_g1_section4_length.cc index 3b22c010b..2f80815b9 100644 --- a/src/grib_accessor_class_g1_section4_length.cc +++ b/src/grib_accessor_class_g1_section4_length.cc @@ -102,12 +102,6 @@ static grib_accessor_class _grib_accessor_class_g1_section4_length = { grib_accessor_class* grib_accessor_class_g1_section4_length = &_grib_accessor_class_g1_section4_length; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long len, grib_arguments* args) diff --git a/src/grib_accessor_class_g1area.cc b/src/grib_accessor_class_g1area.cc index 842e23954..4f2e29154 100644 --- a/src/grib_accessor_class_g1area.cc +++ b/src/grib_accessor_class_g1area.cc @@ -110,12 +110,6 @@ static grib_accessor_class _grib_accessor_class_g1area = { grib_accessor_class* grib_accessor_class_g1area = &_grib_accessor_class_g1area; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long l, grib_arguments* c) diff --git a/src/grib_accessor_class_g1bitmap.cc b/src/grib_accessor_class_g1bitmap.cc index 6040f5e55..33eb0d935 100644 --- a/src/grib_accessor_class_g1bitmap.cc +++ b/src/grib_accessor_class_g1bitmap.cc @@ -106,12 +106,6 @@ static grib_accessor_class _grib_accessor_class_g1bitmap = { grib_accessor_class* grib_accessor_class_g1bitmap = &_grib_accessor_class_g1bitmap; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_g1date.cc b/src/grib_accessor_class_g1date.cc index f5345f1b5..5157b5731 100644 --- a/src/grib_accessor_class_g1date.cc +++ b/src/grib_accessor_class_g1date.cc @@ -113,12 +113,6 @@ static grib_accessor_class _grib_accessor_class_g1date = { grib_accessor_class* grib_accessor_class_g1date = &_grib_accessor_class_g1date; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long l, grib_arguments* c) diff --git a/src/grib_accessor_class_g1day_of_the_year_date.cc b/src/grib_accessor_class_g1day_of_the_year_date.cc index ebb5b7109..f5bbd9b0a 100644 --- a/src/grib_accessor_class_g1day_of_the_year_date.cc +++ b/src/grib_accessor_class_g1day_of_the_year_date.cc @@ -104,12 +104,6 @@ static grib_accessor_class _grib_accessor_class_g1day_of_the_year_date = { grib_accessor_class* grib_accessor_class_g1day_of_the_year_date = &_grib_accessor_class_g1day_of_the_year_date; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_g1end_of_interval_monthly.cc b/src/grib_accessor_class_g1end_of_interval_monthly.cc index 400ce91b6..12a184a88 100644 --- a/src/grib_accessor_class_g1end_of_interval_monthly.cc +++ b/src/grib_accessor_class_g1end_of_interval_monthly.cc @@ -105,12 +105,6 @@ static grib_accessor_class _grib_accessor_class_g1end_of_interval_monthly = { grib_accessor_class* grib_accessor_class_g1end_of_interval_monthly = &_grib_accessor_class_g1end_of_interval_monthly; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long l, grib_arguments* c) diff --git a/src/grib_accessor_class_g1fcperiod.cc b/src/grib_accessor_class_g1fcperiod.cc index 33451dc78..38f5d6359 100644 --- a/src/grib_accessor_class_g1fcperiod.cc +++ b/src/grib_accessor_class_g1fcperiod.cc @@ -106,12 +106,6 @@ static grib_accessor_class _grib_accessor_class_g1fcperiod = { grib_accessor_class* grib_accessor_class_g1fcperiod = &_grib_accessor_class_g1fcperiod; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static int unpack_string(grib_accessor* a, char* val, size_t* len) diff --git a/src/grib_accessor_class_g1forecastmonth.cc b/src/grib_accessor_class_g1forecastmonth.cc index df9b6ff1f..70514cfb9 100644 --- a/src/grib_accessor_class_g1forecastmonth.cc +++ b/src/grib_accessor_class_g1forecastmonth.cc @@ -111,12 +111,6 @@ static grib_accessor_class _grib_accessor_class_g1forecastmonth = { grib_accessor_class* grib_accessor_class_g1forecastmonth = &_grib_accessor_class_g1forecastmonth; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long l, grib_arguments* c) diff --git a/src/grib_accessor_class_g1monthlydate.cc b/src/grib_accessor_class_g1monthlydate.cc index 350815e65..45699f52d 100644 --- a/src/grib_accessor_class_g1monthlydate.cc +++ b/src/grib_accessor_class_g1monthlydate.cc @@ -105,12 +105,6 @@ static grib_accessor_class _grib_accessor_class_g1monthlydate = { grib_accessor_class* grib_accessor_class_g1monthlydate = &_grib_accessor_class_g1monthlydate; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long l, grib_arguments* c) diff --git a/src/grib_accessor_class_g1number_of_coded_values_sh_complex.cc b/src/grib_accessor_class_g1number_of_coded_values_sh_complex.cc index 6308d5e75..3cf159f70 100644 --- a/src/grib_accessor_class_g1number_of_coded_values_sh_complex.cc +++ b/src/grib_accessor_class_g1number_of_coded_values_sh_complex.cc @@ -115,12 +115,6 @@ static grib_accessor_class _grib_accessor_class_g1number_of_coded_values_sh_comp grib_accessor_class* grib_accessor_class_g1number_of_coded_values_sh_complex = &_grib_accessor_class_g1number_of_coded_values_sh_complex; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long l, grib_arguments* c) diff --git a/src/grib_accessor_class_g1number_of_coded_values_sh_simple.cc b/src/grib_accessor_class_g1number_of_coded_values_sh_simple.cc index 1a98e26ce..cbe3dfba0 100644 --- a/src/grib_accessor_class_g1number_of_coded_values_sh_simple.cc +++ b/src/grib_accessor_class_g1number_of_coded_values_sh_simple.cc @@ -109,12 +109,6 @@ static grib_accessor_class _grib_accessor_class_g1number_of_coded_values_sh_simp grib_accessor_class* grib_accessor_class_g1number_of_coded_values_sh_simple = &_grib_accessor_class_g1number_of_coded_values_sh_simple; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long l, grib_arguments* c) diff --git a/src/grib_accessor_class_g1step_range.cc b/src/grib_accessor_class_g1step_range.cc index 50b8abc49..f074ff687 100644 --- a/src/grib_accessor_class_g1step_range.cc +++ b/src/grib_accessor_class_g1step_range.cc @@ -129,12 +129,6 @@ static grib_accessor_class _grib_accessor_class_g1step_range = { grib_accessor_class* grib_accessor_class_g1step_range = &_grib_accessor_class_g1step_range; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long l, grib_arguments* c) diff --git a/src/grib_accessor_class_g1verificationdate.cc b/src/grib_accessor_class_g1verificationdate.cc index 76e74c789..ae38cf7ff 100644 --- a/src/grib_accessor_class_g1verificationdate.cc +++ b/src/grib_accessor_class_g1verificationdate.cc @@ -104,12 +104,6 @@ static grib_accessor_class _grib_accessor_class_g1verificationdate = { grib_accessor_class* grib_accessor_class_g1verificationdate = &_grib_accessor_class_g1verificationdate; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long l, grib_arguments* c) diff --git a/src/grib_accessor_class_g2_aerosol.cc b/src/grib_accessor_class_g2_aerosol.cc index 0e331ae17..3aca66af0 100644 --- a/src/grib_accessor_class_g2_aerosol.cc +++ b/src/grib_accessor_class_g2_aerosol.cc @@ -107,12 +107,6 @@ static grib_accessor_class _grib_accessor_class_g2_aerosol = { grib_accessor_class* grib_accessor_class_g2_aerosol = &_grib_accessor_class_g2_aerosol; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long l, grib_arguments* c) diff --git a/src/grib_accessor_class_g2_chemical.cc b/src/grib_accessor_class_g2_chemical.cc index 48e97d659..0bd18b777 100644 --- a/src/grib_accessor_class_g2_chemical.cc +++ b/src/grib_accessor_class_g2_chemical.cc @@ -107,12 +107,6 @@ static grib_accessor_class _grib_accessor_class_g2_chemical = { grib_accessor_class* grib_accessor_class_g2_chemical = &_grib_accessor_class_g2_chemical; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long l, grib_arguments* c) diff --git a/src/grib_accessor_class_g2_eps.cc b/src/grib_accessor_class_g2_eps.cc index 2b2293b33..6c7ca4486 100644 --- a/src/grib_accessor_class_g2_eps.cc +++ b/src/grib_accessor_class_g2_eps.cc @@ -112,12 +112,6 @@ static grib_accessor_class _grib_accessor_class_g2_eps = { grib_accessor_class* grib_accessor_class_g2_eps = &_grib_accessor_class_g2_eps; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long l, grib_arguments* c) diff --git a/src/grib_accessor_class_g2_mars_labeling.cc b/src/grib_accessor_class_g2_mars_labeling.cc index bcf37f640..ea38afc93 100644 --- a/src/grib_accessor_class_g2_mars_labeling.cc +++ b/src/grib_accessor_class_g2_mars_labeling.cc @@ -127,12 +127,6 @@ static grib_accessor_class _grib_accessor_class_g2_mars_labeling = { grib_accessor_class* grib_accessor_class_g2_mars_labeling = &_grib_accessor_class_g2_mars_labeling; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long l, grib_arguments* c) diff --git a/src/grib_accessor_class_g2bitmap.cc b/src/grib_accessor_class_g2bitmap.cc index 5ccbef31e..164ebd4ee 100644 --- a/src/grib_accessor_class_g2bitmap.cc +++ b/src/grib_accessor_class_g2bitmap.cc @@ -105,12 +105,6 @@ static grib_accessor_class _grib_accessor_class_g2bitmap = { grib_accessor_class* grib_accessor_class_g2bitmap = &_grib_accessor_class_g2bitmap; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_g2bitmap_present.cc b/src/grib_accessor_class_g2bitmap_present.cc index 7e7fcc13a..3d704342c 100644 --- a/src/grib_accessor_class_g2bitmap_present.cc +++ b/src/grib_accessor_class_g2bitmap_present.cc @@ -103,12 +103,6 @@ static grib_accessor_class _grib_accessor_class_g2bitmap_present = { grib_accessor_class* grib_accessor_class_g2bitmap_present = &_grib_accessor_class_g2bitmap_present; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long l, grib_arguments* c) diff --git a/src/grib_accessor_class_g2date.cc b/src/grib_accessor_class_g2date.cc index 155716698..54367bdf2 100644 --- a/src/grib_accessor_class_g2date.cc +++ b/src/grib_accessor_class_g2date.cc @@ -106,12 +106,6 @@ static grib_accessor_class _grib_accessor_class_g2date = { grib_accessor_class* grib_accessor_class_g2date = &_grib_accessor_class_g2date; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long l, grib_arguments* c) { diff --git a/src/grib_accessor_class_g2end_step.cc b/src/grib_accessor_class_g2end_step.cc index 2c009d162..1248386f5 100644 --- a/src/grib_accessor_class_g2end_step.cc +++ b/src/grib_accessor_class_g2end_step.cc @@ -138,12 +138,6 @@ static grib_accessor_class _grib_accessor_class_g2end_step = { grib_accessor_class* grib_accessor_class_g2end_step = &_grib_accessor_class_g2end_step; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long l, grib_arguments* c) diff --git a/src/grib_accessor_class_g2grid.cc b/src/grib_accessor_class_g2grid.cc index 242c9565a..d11d5b8d3 100644 --- a/src/grib_accessor_class_g2grid.cc +++ b/src/grib_accessor_class_g2grid.cc @@ -115,12 +115,6 @@ static grib_accessor_class _grib_accessor_class_g2grid = { grib_accessor_class* grib_accessor_class_g2grid = &_grib_accessor_class_g2grid; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long l, grib_arguments* c) diff --git a/src/grib_accessor_class_g2latlon.cc b/src/grib_accessor_class_g2latlon.cc index 8ba8bd4c6..509a08df2 100644 --- a/src/grib_accessor_class_g2latlon.cc +++ b/src/grib_accessor_class_g2latlon.cc @@ -110,12 +110,6 @@ static grib_accessor_class _grib_accessor_class_g2latlon = { grib_accessor_class* grib_accessor_class_g2latlon = &_grib_accessor_class_g2latlon; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long l, grib_arguments* c) diff --git a/src/grib_accessor_class_g2level.cc b/src/grib_accessor_class_g2level.cc index 68cb1ff36..93d073d12 100644 --- a/src/grib_accessor_class_g2level.cc +++ b/src/grib_accessor_class_g2level.cc @@ -110,12 +110,6 @@ static grib_accessor_class _grib_accessor_class_g2level = { grib_accessor_class* grib_accessor_class_g2level = &_grib_accessor_class_g2level; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long l, grib_arguments* c) diff --git a/src/grib_accessor_class_g2lon.cc b/src/grib_accessor_class_g2lon.cc index db02085e6..5587ac053 100644 --- a/src/grib_accessor_class_g2lon.cc +++ b/src/grib_accessor_class_g2lon.cc @@ -103,12 +103,6 @@ static grib_accessor_class _grib_accessor_class_g2lon = { grib_accessor_class* grib_accessor_class_g2lon = &_grib_accessor_class_g2lon; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long l, grib_arguments* c) diff --git a/src/grib_accessor_class_g2step_range.cc b/src/grib_accessor_class_g2step_range.cc index dbd7489ec..04d67f28b 100644 --- a/src/grib_accessor_class_g2step_range.cc +++ b/src/grib_accessor_class_g2step_range.cc @@ -112,12 +112,6 @@ static grib_accessor_class _grib_accessor_class_g2step_range = { grib_accessor_class* grib_accessor_class_g2step_range = &_grib_accessor_class_g2step_range; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long l, grib_arguments* c) diff --git a/src/grib_accessor_class_gaussian_grid_name.cc b/src/grib_accessor_class_gaussian_grid_name.cc index 0207170ce..fd8f10b08 100644 --- a/src/grib_accessor_class_gaussian_grid_name.cc +++ b/src/grib_accessor_class_gaussian_grid_name.cc @@ -103,12 +103,6 @@ static grib_accessor_class _grib_accessor_class_gaussian_grid_name = { grib_accessor_class* grib_accessor_class_gaussian_grid_name = &_grib_accessor_class_gaussian_grid_name; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long len, grib_arguments* arg) diff --git a/src/grib_accessor_class_gds_is_present.cc b/src/grib_accessor_class_gds_is_present.cc index 3addb0a43..884d92380 100644 --- a/src/grib_accessor_class_gds_is_present.cc +++ b/src/grib_accessor_class_gds_is_present.cc @@ -109,12 +109,6 @@ static grib_accessor_class _grib_accessor_class_gds_is_present = { grib_accessor_class* grib_accessor_class_gds_is_present = &_grib_accessor_class_gds_is_present; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long l, grib_arguments* c) diff --git a/src/grib_accessor_class_gds_not_present_bitmap.cc b/src/grib_accessor_class_gds_not_present_bitmap.cc index dfee779ab..bd0d96ae1 100644 --- a/src/grib_accessor_class_gds_not_present_bitmap.cc +++ b/src/grib_accessor_class_gds_not_present_bitmap.cc @@ -114,12 +114,6 @@ static grib_accessor_class _grib_accessor_class_gds_not_present_bitmap = { grib_accessor_class* grib_accessor_class_gds_not_present_bitmap = &_grib_accessor_class_gds_not_present_bitmap; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long v, grib_arguments* args) diff --git a/src/grib_accessor_class_gen.cc b/src/grib_accessor_class_gen.cc index 2980eb3c9..bf59cdea0 100644 --- a/src/grib_accessor_class_gen.cc +++ b/src/grib_accessor_class_gen.cc @@ -143,12 +143,6 @@ static grib_accessor_class _grib_accessor_class_gen = { grib_accessor_class* grib_accessor_class_gen = &_grib_accessor_class_gen; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long len, grib_arguments* param) diff --git a/src/grib_accessor_class_getenv.cc b/src/grib_accessor_class_getenv.cc index f236be739..ca542edd2 100644 --- a/src/grib_accessor_class_getenv.cc +++ b/src/grib_accessor_class_getenv.cc @@ -105,12 +105,6 @@ static grib_accessor_class _grib_accessor_class_getenv = { grib_accessor_class* grib_accessor_class_getenv = &_grib_accessor_class_getenv; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long l, grib_arguments* args) diff --git a/src/grib_accessor_class_global_gaussian.cc b/src/grib_accessor_class_global_gaussian.cc index 361b0002e..b765d7066 100644 --- a/src/grib_accessor_class_global_gaussian.cc +++ b/src/grib_accessor_class_global_gaussian.cc @@ -120,12 +120,6 @@ static grib_accessor_class _grib_accessor_class_global_gaussian = { grib_accessor_class* grib_accessor_class_global_gaussian = &_grib_accessor_class_global_gaussian; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long l, grib_arguments* c) diff --git a/src/grib_accessor_class_group.cc b/src/grib_accessor_class_group.cc index aeda32ec4..ae8fd6ce1 100644 --- a/src/grib_accessor_class_group.cc +++ b/src/grib_accessor_class_group.cc @@ -118,12 +118,6 @@ static grib_accessor_class _grib_accessor_class_group = { grib_accessor_class* grib_accessor_class_group = &_grib_accessor_class_group; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long len, grib_arguments* arg) diff --git a/src/grib_accessor_class_gts_header.cc b/src/grib_accessor_class_gts_header.cc index 8d55109a0..2b7f65732 100644 --- a/src/grib_accessor_class_gts_header.cc +++ b/src/grib_accessor_class_gts_header.cc @@ -103,12 +103,6 @@ static grib_accessor_class _grib_accessor_class_gts_header = { grib_accessor_class* grib_accessor_class_gts_header = &_grib_accessor_class_gts_header; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long l, grib_arguments* c) diff --git a/src/grib_accessor_class_hash_array.cc b/src/grib_accessor_class_hash_array.cc index 2d11202de..d4d4facb6 100644 --- a/src/grib_accessor_class_hash_array.cc +++ b/src/grib_accessor_class_hash_array.cc @@ -119,12 +119,6 @@ static grib_accessor_class _grib_accessor_class_hash_array = { grib_accessor_class* grib_accessor_class_hash_array = &_grib_accessor_class_hash_array; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ #define MAX_HASH_ARRAY_STRING_LENGTH 255 diff --git a/src/grib_accessor_class_headers_only.cc b/src/grib_accessor_class_headers_only.cc index 152ee2407..8e916886b 100644 --- a/src/grib_accessor_class_headers_only.cc +++ b/src/grib_accessor_class_headers_only.cc @@ -95,12 +95,6 @@ static grib_accessor_class _grib_accessor_class_headers_only = { grib_accessor_class* grib_accessor_class_headers_only = &_grib_accessor_class_headers_only; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long l, grib_arguments* c) diff --git a/src/grib_accessor_class_ibmfloat.cc b/src/grib_accessor_class_ibmfloat.cc index 762149fd1..cae1a8baf 100644 --- a/src/grib_accessor_class_ibmfloat.cc +++ b/src/grib_accessor_class_ibmfloat.cc @@ -115,12 +115,6 @@ static grib_accessor_class _grib_accessor_class_ibmfloat = { grib_accessor_class* grib_accessor_class_ibmfloat = &_grib_accessor_class_ibmfloat; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long len, grib_arguments* arg) diff --git a/src/grib_accessor_class_ieeefloat.cc b/src/grib_accessor_class_ieeefloat.cc index 8857484ba..8a0520ab6 100644 --- a/src/grib_accessor_class_ieeefloat.cc +++ b/src/grib_accessor_class_ieeefloat.cc @@ -108,12 +108,6 @@ static grib_accessor_class _grib_accessor_class_ieeefloat = { grib_accessor_class* grib_accessor_class_ieeefloat = &_grib_accessor_class_ieeefloat; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long len, grib_arguments* arg) diff --git a/src/grib_accessor_class_ifs_param.cc b/src/grib_accessor_class_ifs_param.cc index 5fc275f63..9cb52aa39 100644 --- a/src/grib_accessor_class_ifs_param.cc +++ b/src/grib_accessor_class_ifs_param.cc @@ -106,12 +106,6 @@ static grib_accessor_class _grib_accessor_class_ifs_param = { grib_accessor_class* grib_accessor_class_ifs_param = &_grib_accessor_class_ifs_param; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long l, grib_arguments* c) diff --git a/src/grib_accessor_class_int16.cc b/src/grib_accessor_class_int16.cc index 5906a65b7..2e1ec6553 100644 --- a/src/grib_accessor_class_int16.cc +++ b/src/grib_accessor_class_int16.cc @@ -96,12 +96,6 @@ static grib_accessor_class _grib_accessor_class_int16 = { grib_accessor_class* grib_accessor_class_int16 = &_grib_accessor_class_int16; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static int unpack_long(grib_accessor* a, long* val, size_t* len) diff --git a/src/grib_accessor_class_int16_little_endian.cc b/src/grib_accessor_class_int16_little_endian.cc index 8230e8042..f813177e0 100644 --- a/src/grib_accessor_class_int16_little_endian.cc +++ b/src/grib_accessor_class_int16_little_endian.cc @@ -96,12 +96,6 @@ static grib_accessor_class _grib_accessor_class_int16_little_endian = { grib_accessor_class* grib_accessor_class_int16_little_endian = &_grib_accessor_class_int16_little_endian; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static int unpack_long(grib_accessor* a, long* val, size_t* len) diff --git a/src/grib_accessor_class_int32.cc b/src/grib_accessor_class_int32.cc index e3b9834e0..6a388d32d 100644 --- a/src/grib_accessor_class_int32.cc +++ b/src/grib_accessor_class_int32.cc @@ -96,12 +96,6 @@ static grib_accessor_class _grib_accessor_class_int32 = { grib_accessor_class* grib_accessor_class_int32 = &_grib_accessor_class_int32; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static int unpack_long(grib_accessor* a, long* val, size_t* len) diff --git a/src/grib_accessor_class_int32_little_endian.cc b/src/grib_accessor_class_int32_little_endian.cc index 4813d9b01..93e7debcb 100644 --- a/src/grib_accessor_class_int32_little_endian.cc +++ b/src/grib_accessor_class_int32_little_endian.cc @@ -96,12 +96,6 @@ static grib_accessor_class _grib_accessor_class_int32_little_endian = { grib_accessor_class* grib_accessor_class_int32_little_endian = &_grib_accessor_class_int32_little_endian; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static int unpack_long(grib_accessor* a, long* val, size_t* len) diff --git a/src/grib_accessor_class_int64.cc b/src/grib_accessor_class_int64.cc index 2f32552b4..651711e29 100644 --- a/src/grib_accessor_class_int64.cc +++ b/src/grib_accessor_class_int64.cc @@ -96,12 +96,6 @@ static grib_accessor_class _grib_accessor_class_int64 = { grib_accessor_class* grib_accessor_class_int64 = &_grib_accessor_class_int64; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static int unpack_long(grib_accessor* a, long* val, size_t* len) diff --git a/src/grib_accessor_class_int64_little_endian.cc b/src/grib_accessor_class_int64_little_endian.cc index 4212db3c0..23e7ec02f 100644 --- a/src/grib_accessor_class_int64_little_endian.cc +++ b/src/grib_accessor_class_int64_little_endian.cc @@ -96,12 +96,6 @@ static grib_accessor_class _grib_accessor_class_int64_little_endian = { grib_accessor_class* grib_accessor_class_int64_little_endian = &_grib_accessor_class_int64_little_endian; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static int unpack_long(grib_accessor* a, long* val, size_t* len) diff --git a/src/grib_accessor_class_int8.cc b/src/grib_accessor_class_int8.cc index b45b912f6..6c8636ab1 100644 --- a/src/grib_accessor_class_int8.cc +++ b/src/grib_accessor_class_int8.cc @@ -96,12 +96,6 @@ static grib_accessor_class _grib_accessor_class_int8 = { grib_accessor_class* grib_accessor_class_int8 = &_grib_accessor_class_int8; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static int unpack_long(grib_accessor* a, long* val, size_t* len) diff --git a/src/grib_accessor_class_iterator.cc b/src/grib_accessor_class_iterator.cc index ec0ff29d1..29585f4c6 100644 --- a/src/grib_accessor_class_iterator.cc +++ b/src/grib_accessor_class_iterator.cc @@ -100,12 +100,6 @@ static grib_accessor_class _grib_accessor_class_iterator = { grib_accessor_class* grib_accessor_class_iterator = &_grib_accessor_class_iterator; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long l, grib_arguments* args) diff --git a/src/grib_accessor_class_julian_date.cc b/src/grib_accessor_class_julian_date.cc index e53b81455..e2c85494a 100644 --- a/src/grib_accessor_class_julian_date.cc +++ b/src/grib_accessor_class_julian_date.cc @@ -126,12 +126,6 @@ static grib_accessor_class _grib_accessor_class_julian_date = { grib_accessor_class* grib_accessor_class_julian_date = &_grib_accessor_class_julian_date; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_julian_day.cc b/src/grib_accessor_class_julian_day.cc index 74367f5e9..8824128b1 100644 --- a/src/grib_accessor_class_julian_day.cc +++ b/src/grib_accessor_class_julian_day.cc @@ -111,12 +111,6 @@ static grib_accessor_class _grib_accessor_class_julian_day = { grib_accessor_class* grib_accessor_class_julian_day = &_grib_accessor_class_julian_day; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long l, grib_arguments* c) diff --git a/src/grib_accessor_class_ksec1expver.cc b/src/grib_accessor_class_ksec1expver.cc index dcee3553c..2c19e5210 100644 --- a/src/grib_accessor_class_ksec1expver.cc +++ b/src/grib_accessor_class_ksec1expver.cc @@ -100,12 +100,6 @@ static grib_accessor_class _grib_accessor_class_ksec1expver = { grib_accessor_class* grib_accessor_class_ksec1expver = &_grib_accessor_class_ksec1expver; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long len, grib_arguments* arg) diff --git a/src/grib_accessor_class_label.cc b/src/grib_accessor_class_label.cc index a38848761..d66ecd4d5 100644 --- a/src/grib_accessor_class_label.cc +++ b/src/grib_accessor_class_label.cc @@ -98,12 +98,6 @@ static grib_accessor_class _grib_accessor_class_label = { grib_accessor_class* grib_accessor_class_label = &_grib_accessor_class_label; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long len, grib_arguments* arg) diff --git a/src/grib_accessor_class_laplacian.cc b/src/grib_accessor_class_laplacian.cc index 49d82db4a..55a4ef527 100644 --- a/src/grib_accessor_class_laplacian.cc +++ b/src/grib_accessor_class_laplacian.cc @@ -110,12 +110,6 @@ static grib_accessor_class _grib_accessor_class_laplacian = { grib_accessor_class* grib_accessor_class_laplacian = &_grib_accessor_class_laplacian; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long l, grib_arguments* c) diff --git a/src/grib_accessor_class_latitudes.cc b/src/grib_accessor_class_latitudes.cc index b4a99110c..a1b6095b7 100644 --- a/src/grib_accessor_class_latitudes.cc +++ b/src/grib_accessor_class_latitudes.cc @@ -108,12 +108,6 @@ static grib_accessor_class _grib_accessor_class_latitudes = { grib_accessor_class* grib_accessor_class_latitudes = &_grib_accessor_class_latitudes; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_latlon_increment.cc b/src/grib_accessor_class_latlon_increment.cc index 672a7df3c..5a45288bc 100644 --- a/src/grib_accessor_class_latlon_increment.cc +++ b/src/grib_accessor_class_latlon_increment.cc @@ -116,12 +116,6 @@ static grib_accessor_class _grib_accessor_class_latlon_increment = { grib_accessor_class* grib_accessor_class_latlon_increment = &_grib_accessor_class_latlon_increment; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long l, grib_arguments* c) diff --git a/src/grib_accessor_class_latlonvalues.cc b/src/grib_accessor_class_latlonvalues.cc index 140f52266..82f26288d 100644 --- a/src/grib_accessor_class_latlonvalues.cc +++ b/src/grib_accessor_class_latlonvalues.cc @@ -100,12 +100,6 @@ static grib_accessor_class _grib_accessor_class_latlonvalues = { grib_accessor_class* grib_accessor_class_latlonvalues = &_grib_accessor_class_latlonvalues; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long l, grib_arguments* c) diff --git a/src/grib_accessor_class_library_version.cc b/src/grib_accessor_class_library_version.cc index ef6170715..f205c9f31 100644 --- a/src/grib_accessor_class_library_version.cc +++ b/src/grib_accessor_class_library_version.cc @@ -96,12 +96,6 @@ static grib_accessor_class _grib_accessor_class_library_version = { grib_accessor_class* grib_accessor_class_library_version = &_grib_accessor_class_library_version; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static int unpack_string(grib_accessor* a, char* val, size_t* len) diff --git a/src/grib_accessor_class_local_definition.cc b/src/grib_accessor_class_local_definition.cc index 635abe14e..81476efed 100644 --- a/src/grib_accessor_class_local_definition.cc +++ b/src/grib_accessor_class_local_definition.cc @@ -123,12 +123,6 @@ static grib_accessor_class _grib_accessor_class_local_definition = { grib_accessor_class* grib_accessor_class_local_definition = &_grib_accessor_class_local_definition; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long l, grib_arguments* c) diff --git a/src/grib_accessor_class_long.cc b/src/grib_accessor_class_long.cc index 5b650776b..de06da13c 100644 --- a/src/grib_accessor_class_long.cc +++ b/src/grib_accessor_class_long.cc @@ -103,12 +103,6 @@ static grib_accessor_class _grib_accessor_class_long = { grib_accessor_class* grib_accessor_class_long = &_grib_accessor_class_long; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static int get_native_type(grib_accessor* a) diff --git a/src/grib_accessor_class_long_vector.cc b/src/grib_accessor_class_long_vector.cc index 7a6d54322..b397e00e4 100644 --- a/src/grib_accessor_class_long_vector.cc +++ b/src/grib_accessor_class_long_vector.cc @@ -112,12 +112,6 @@ static grib_accessor_class _grib_accessor_class_long_vector = { grib_accessor_class* grib_accessor_class_long_vector = &_grib_accessor_class_long_vector; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ typedef struct grib_accessor_abstract_long_vector diff --git a/src/grib_accessor_class_longitudes.cc b/src/grib_accessor_class_longitudes.cc index 6b929cf05..14bcaaf8a 100644 --- a/src/grib_accessor_class_longitudes.cc +++ b/src/grib_accessor_class_longitudes.cc @@ -108,12 +108,6 @@ static grib_accessor_class _grib_accessor_class_longitudes = { grib_accessor_class* grib_accessor_class_longitudes = &_grib_accessor_class_longitudes; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_lookup.cc b/src/grib_accessor_class_lookup.cc index 53f7a9039..92ea09787 100644 --- a/src/grib_accessor_class_lookup.cc +++ b/src/grib_accessor_class_lookup.cc @@ -113,12 +113,6 @@ static grib_accessor_class _grib_accessor_class_lookup = { grib_accessor_class* grib_accessor_class_lookup = &_grib_accessor_class_lookup; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long len, grib_arguments* arg) diff --git a/src/grib_accessor_class_mars_param.cc b/src/grib_accessor_class_mars_param.cc index ae4e5b1a1..07b15ce63 100644 --- a/src/grib_accessor_class_mars_param.cc +++ b/src/grib_accessor_class_mars_param.cc @@ -104,12 +104,6 @@ static grib_accessor_class _grib_accessor_class_mars_param = { grib_accessor_class* grib_accessor_class_mars_param = &_grib_accessor_class_mars_param; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long l, grib_arguments* c) diff --git a/src/grib_accessor_class_mars_step.cc b/src/grib_accessor_class_mars_step.cc index e9d030383..e1f8c0786 100644 --- a/src/grib_accessor_class_mars_step.cc +++ b/src/grib_accessor_class_mars_step.cc @@ -108,12 +108,6 @@ static grib_accessor_class _grib_accessor_class_mars_step = { grib_accessor_class* grib_accessor_class_mars_step = &_grib_accessor_class_mars_step; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long l, grib_arguments* c) diff --git a/src/grib_accessor_class_md5.cc b/src/grib_accessor_class_md5.cc index 05f5ec9f6..58477a5d7 100644 --- a/src/grib_accessor_class_md5.cc +++ b/src/grib_accessor_class_md5.cc @@ -106,12 +106,6 @@ static grib_accessor_class _grib_accessor_class_md5 = { grib_accessor_class* grib_accessor_class_md5 = &_grib_accessor_class_md5; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long len, grib_arguments* arg) diff --git a/src/grib_accessor_class_message.cc b/src/grib_accessor_class_message.cc index 0b02df2f5..467ffbe6c 100644 --- a/src/grib_accessor_class_message.cc +++ b/src/grib_accessor_class_message.cc @@ -106,12 +106,6 @@ static grib_accessor_class _grib_accessor_class_message = { grib_accessor_class* grib_accessor_class_message = &_grib_accessor_class_message; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_message_copy.cc b/src/grib_accessor_class_message_copy.cc index 127e8092f..e4fce362a 100644 --- a/src/grib_accessor_class_message_copy.cc +++ b/src/grib_accessor_class_message_copy.cc @@ -101,12 +101,6 @@ static grib_accessor_class _grib_accessor_class_message_copy = { grib_accessor_class* grib_accessor_class_message_copy = &_grib_accessor_class_message_copy; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long length, grib_arguments* args) diff --git a/src/grib_accessor_class_missing.cc b/src/grib_accessor_class_missing.cc index a0e0bdbbd..5d4ca2d91 100644 --- a/src/grib_accessor_class_missing.cc +++ b/src/grib_accessor_class_missing.cc @@ -122,12 +122,6 @@ static grib_accessor_class _grib_accessor_class_missing = { grib_accessor_class* grib_accessor_class_missing = &_grib_accessor_class_missing; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long len, grib_arguments* param) diff --git a/src/grib_accessor_class_nearest.cc b/src/grib_accessor_class_nearest.cc index f04fb901c..bfbfaa8d1 100644 --- a/src/grib_accessor_class_nearest.cc +++ b/src/grib_accessor_class_nearest.cc @@ -96,12 +96,6 @@ static grib_accessor_class _grib_accessor_class_nearest = { grib_accessor_class* grib_accessor_class_nearest = &_grib_accessor_class_nearest; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long l, grib_arguments* args) diff --git a/src/grib_accessor_class_non_alpha.cc b/src/grib_accessor_class_non_alpha.cc index bfdcc02d3..042f65851 100644 --- a/src/grib_accessor_class_non_alpha.cc +++ b/src/grib_accessor_class_non_alpha.cc @@ -115,12 +115,6 @@ static grib_accessor_class _grib_accessor_class_non_alpha = { grib_accessor_class* grib_accessor_class_non_alpha = &_grib_accessor_class_non_alpha; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long len, grib_arguments* arg) diff --git a/src/grib_accessor_class_number_of_coded_values.cc b/src/grib_accessor_class_number_of_coded_values.cc index 04dfcf347..af1925fbe 100644 --- a/src/grib_accessor_class_number_of_coded_values.cc +++ b/src/grib_accessor_class_number_of_coded_values.cc @@ -109,12 +109,6 @@ static grib_accessor_class _grib_accessor_class_number_of_coded_values = { grib_accessor_class* grib_accessor_class_number_of_coded_values = &_grib_accessor_class_number_of_coded_values; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long l, grib_arguments* c) diff --git a/src/grib_accessor_class_number_of_points.cc b/src/grib_accessor_class_number_of_points.cc index 938970ad7..26365b340 100644 --- a/src/grib_accessor_class_number_of_points.cc +++ b/src/grib_accessor_class_number_of_points.cc @@ -107,12 +107,6 @@ static grib_accessor_class _grib_accessor_class_number_of_points = { grib_accessor_class* grib_accessor_class_number_of_points = &_grib_accessor_class_number_of_points; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long l, grib_arguments* c) diff --git a/src/grib_accessor_class_number_of_points_gaussian.cc b/src/grib_accessor_class_number_of_points_gaussian.cc index 42dba0515..5f9540284 100644 --- a/src/grib_accessor_class_number_of_points_gaussian.cc +++ b/src/grib_accessor_class_number_of_points_gaussian.cc @@ -121,12 +121,6 @@ static grib_accessor_class _grib_accessor_class_number_of_points_gaussian = { grib_accessor_class* grib_accessor_class_number_of_points_gaussian = &_grib_accessor_class_number_of_points_gaussian; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ #define EFDEBUG 0 diff --git a/src/grib_accessor_class_number_of_values.cc b/src/grib_accessor_class_number_of_values.cc index d853a9cb9..bdc2b2b42 100644 --- a/src/grib_accessor_class_number_of_values.cc +++ b/src/grib_accessor_class_number_of_values.cc @@ -111,12 +111,6 @@ static grib_accessor_class _grib_accessor_class_number_of_values = { grib_accessor_class* grib_accessor_class_number_of_values = &_grib_accessor_class_number_of_values; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long l, grib_arguments* c) diff --git a/src/grib_accessor_class_number_of_values_data_raw_packing.cc b/src/grib_accessor_class_number_of_values_data_raw_packing.cc index 5d038d7ff..fae4a3258 100644 --- a/src/grib_accessor_class_number_of_values_data_raw_packing.cc +++ b/src/grib_accessor_class_number_of_values_data_raw_packing.cc @@ -113,12 +113,6 @@ static grib_accessor_class _grib_accessor_class_number_of_values_data_raw_packin grib_accessor_class* grib_accessor_class_number_of_values_data_raw_packing = &_grib_accessor_class_number_of_values_data_raw_packing; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long v, grib_arguments* args) diff --git a/src/grib_accessor_class_octahedral_gaussian.cc b/src/grib_accessor_class_octahedral_gaussian.cc index 355879545..482bf7af0 100644 --- a/src/grib_accessor_class_octahedral_gaussian.cc +++ b/src/grib_accessor_class_octahedral_gaussian.cc @@ -107,12 +107,6 @@ static grib_accessor_class _grib_accessor_class_octahedral_gaussian = { grib_accessor_class* grib_accessor_class_octahedral_gaussian = &_grib_accessor_class_octahedral_gaussian; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long l, grib_arguments* c) diff --git a/src/grib_accessor_class_octet_number.cc b/src/grib_accessor_class_octet_number.cc index 917da92d3..4b8bdeb8a 100644 --- a/src/grib_accessor_class_octet_number.cc +++ b/src/grib_accessor_class_octet_number.cc @@ -105,12 +105,6 @@ static grib_accessor_class _grib_accessor_class_octet_number = { grib_accessor_class* grib_accessor_class_octet_number = &_grib_accessor_class_octet_number; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long l, grib_arguments* c) diff --git a/src/grib_accessor_class_offset_file.cc b/src/grib_accessor_class_offset_file.cc index 3fb90643c..d672a3dc3 100644 --- a/src/grib_accessor_class_offset_file.cc +++ b/src/grib_accessor_class_offset_file.cc @@ -101,12 +101,6 @@ static grib_accessor_class _grib_accessor_class_offset_file = { grib_accessor_class* grib_accessor_class_offset_file = &_grib_accessor_class_offset_file; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long l, grib_arguments* c) diff --git a/src/grib_accessor_class_offset_values.cc b/src/grib_accessor_class_offset_values.cc index 0a65f0c4c..681a5c00a 100644 --- a/src/grib_accessor_class_offset_values.cc +++ b/src/grib_accessor_class_offset_values.cc @@ -104,12 +104,6 @@ static grib_accessor_class _grib_accessor_class_offset_values = { grib_accessor_class* grib_accessor_class_offset_values = &_grib_accessor_class_offset_values; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long l, grib_arguments* args) diff --git a/src/grib_accessor_class_pack_bufr_values.cc b/src/grib_accessor_class_pack_bufr_values.cc index 1d8d52d5a..af7b43ec9 100644 --- a/src/grib_accessor_class_pack_bufr_values.cc +++ b/src/grib_accessor_class_pack_bufr_values.cc @@ -110,12 +110,6 @@ static grib_accessor_class _grib_accessor_class_pack_bufr_values = { grib_accessor_class* grib_accessor_class_pack_bufr_values = &_grib_accessor_class_pack_bufr_values; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long len, grib_arguments* params) diff --git a/src/grib_accessor_class_pad.cc b/src/grib_accessor_class_pad.cc index 07d33bb42..fe969c4c3 100644 --- a/src/grib_accessor_class_pad.cc +++ b/src/grib_accessor_class_pad.cc @@ -103,12 +103,6 @@ static grib_accessor_class _grib_accessor_class_pad = { grib_accessor_class* grib_accessor_class_pad = &_grib_accessor_class_pad; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_padding.cc b/src/grib_accessor_class_padding.cc index e8d299df3..06a56b6b6 100644 --- a/src/grib_accessor_class_padding.cc +++ b/src/grib_accessor_class_padding.cc @@ -105,12 +105,6 @@ static grib_accessor_class _grib_accessor_class_padding = { grib_accessor_class* grib_accessor_class_padding = &_grib_accessor_class_padding; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long len, grib_arguments* arg) diff --git a/src/grib_accessor_class_padto.cc b/src/grib_accessor_class_padto.cc index 27cc1a609..221f63cfc 100644 --- a/src/grib_accessor_class_padto.cc +++ b/src/grib_accessor_class_padto.cc @@ -103,12 +103,6 @@ static grib_accessor_class _grib_accessor_class_padto = { grib_accessor_class* grib_accessor_class_padto = &_grib_accessor_class_padto; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_padtoeven.cc b/src/grib_accessor_class_padtoeven.cc index 5defb7f96..67cd553f5 100644 --- a/src/grib_accessor_class_padtoeven.cc +++ b/src/grib_accessor_class_padtoeven.cc @@ -104,12 +104,6 @@ static grib_accessor_class _grib_accessor_class_padtoeven = { grib_accessor_class* grib_accessor_class_padtoeven = &_grib_accessor_class_padtoeven; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static size_t preferred_size(grib_accessor* a, int from_handle) diff --git a/src/grib_accessor_class_padtomultiple.cc b/src/grib_accessor_class_padtomultiple.cc index e6974c11d..89100808c 100644 --- a/src/grib_accessor_class_padtomultiple.cc +++ b/src/grib_accessor_class_padtomultiple.cc @@ -105,12 +105,6 @@ static grib_accessor_class _grib_accessor_class_padtomultiple = { grib_accessor_class* grib_accessor_class_padtomultiple = &_grib_accessor_class_padtomultiple; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static size_t preferred_size(grib_accessor* a, int from_handle) diff --git a/src/grib_accessor_class_position.cc b/src/grib_accessor_class_position.cc index 061dd9c7a..a14385523 100644 --- a/src/grib_accessor_class_position.cc +++ b/src/grib_accessor_class_position.cc @@ -105,12 +105,6 @@ static grib_accessor_class _grib_accessor_class_position = { grib_accessor_class* grib_accessor_class_position = &_grib_accessor_class_position; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long len, grib_arguments* arg) diff --git a/src/grib_accessor_class_proj_string.cc b/src/grib_accessor_class_proj_string.cc index 49d5fee37..bbeae4ae3 100644 --- a/src/grib_accessor_class_proj_string.cc +++ b/src/grib_accessor_class_proj_string.cc @@ -100,12 +100,6 @@ static grib_accessor_class _grib_accessor_class_proj_string = { grib_accessor_class* grib_accessor_class_proj_string = &_grib_accessor_class_proj_string; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long len, grib_arguments* arg) diff --git a/src/grib_accessor_class_raw.cc b/src/grib_accessor_class_raw.cc index d078ac57d..d3a1203ff 100644 --- a/src/grib_accessor_class_raw.cc +++ b/src/grib_accessor_class_raw.cc @@ -107,12 +107,6 @@ static grib_accessor_class _grib_accessor_class_raw = { grib_accessor_class* grib_accessor_class_raw = &_grib_accessor_class_raw; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long len, grib_arguments* arg) diff --git a/src/grib_accessor_class_rdbtime_guess_date.cc b/src/grib_accessor_class_rdbtime_guess_date.cc index 130ede124..eb94db18f 100644 --- a/src/grib_accessor_class_rdbtime_guess_date.cc +++ b/src/grib_accessor_class_rdbtime_guess_date.cc @@ -109,12 +109,6 @@ static grib_accessor_class _grib_accessor_class_rdbtime_guess_date = { grib_accessor_class* grib_accessor_class_rdbtime_guess_date = &_grib_accessor_class_rdbtime_guess_date; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long l, grib_arguments* c) diff --git a/src/grib_accessor_class_reference_value_error.cc b/src/grib_accessor_class_reference_value_error.cc index 3dc73b09c..fe4ee60d5 100644 --- a/src/grib_accessor_class_reference_value_error.cc +++ b/src/grib_accessor_class_reference_value_error.cc @@ -105,12 +105,6 @@ static grib_accessor_class _grib_accessor_class_reference_value_error = { grib_accessor_class* grib_accessor_class_reference_value_error = &_grib_accessor_class_reference_value_error; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long l, grib_arguments* c) diff --git a/src/grib_accessor_class_round.cc b/src/grib_accessor_class_round.cc index 629dcd359..c6ffc6f62 100644 --- a/src/grib_accessor_class_round.cc +++ b/src/grib_accessor_class_round.cc @@ -98,12 +98,6 @@ static grib_accessor_class _grib_accessor_class_round = { grib_accessor_class* grib_accessor_class_round = &_grib_accessor_class_round; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static int unpack_double(grib_accessor* a, double* val, size_t* len) diff --git a/src/grib_accessor_class_scale.cc b/src/grib_accessor_class_scale.cc index 2396680df..56a8ade01 100644 --- a/src/grib_accessor_class_scale.cc +++ b/src/grib_accessor_class_scale.cc @@ -113,12 +113,6 @@ static grib_accessor_class _grib_accessor_class_scale = { grib_accessor_class* grib_accessor_class_scale = &_grib_accessor_class_scale; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long l, grib_arguments* c) diff --git a/src/grib_accessor_class_scale_values.cc b/src/grib_accessor_class_scale_values.cc index 96efcab0f..659dcafae 100644 --- a/src/grib_accessor_class_scale_values.cc +++ b/src/grib_accessor_class_scale_values.cc @@ -104,12 +104,6 @@ static grib_accessor_class _grib_accessor_class_scale_values = { grib_accessor_class* grib_accessor_class_scale_values = &_grib_accessor_class_scale_values; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long l, grib_arguments* args) diff --git a/src/grib_accessor_class_second_order_bits_per_value.cc b/src/grib_accessor_class_second_order_bits_per_value.cc index d4f22423d..45ab8862d 100644 --- a/src/grib_accessor_class_second_order_bits_per_value.cc +++ b/src/grib_accessor_class_second_order_bits_per_value.cc @@ -110,12 +110,6 @@ static grib_accessor_class _grib_accessor_class_second_order_bits_per_value = { grib_accessor_class* grib_accessor_class_second_order_bits_per_value = &_grib_accessor_class_second_order_bits_per_value; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static const size_t nbits[64] = { diff --git a/src/grib_accessor_class_section.cc b/src/grib_accessor_class_section.cc index 551a7d95e..32bf63f08 100644 --- a/src/grib_accessor_class_section.cc +++ b/src/grib_accessor_class_section.cc @@ -106,12 +106,6 @@ static grib_accessor_class _grib_accessor_class_section = { grib_accessor_class* grib_accessor_class_section = &_grib_accessor_class_section; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long len, grib_arguments* arg) diff --git a/src/grib_accessor_class_section_length.cc b/src/grib_accessor_class_section_length.cc index 5cbc8eb04..30dfc21d2 100644 --- a/src/grib_accessor_class_section_length.cc +++ b/src/grib_accessor_class_section_length.cc @@ -100,12 +100,6 @@ static grib_accessor_class _grib_accessor_class_section_length = { grib_accessor_class* grib_accessor_class_section_length = &_grib_accessor_class_section_length; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long len, grib_arguments* arg) diff --git a/src/grib_accessor_class_section_padding.cc b/src/grib_accessor_class_section_padding.cc index 553899a1b..952d4487c 100644 --- a/src/grib_accessor_class_section_padding.cc +++ b/src/grib_accessor_class_section_padding.cc @@ -98,12 +98,6 @@ static grib_accessor_class _grib_accessor_class_section_padding = { grib_accessor_class* grib_accessor_class_section_padding = &_grib_accessor_class_section_padding; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static size_t preferred_size(grib_accessor* a, int from_handle) diff --git a/src/grib_accessor_class_section_pointer.cc b/src/grib_accessor_class_section_pointer.cc index c967f001e..c4186db6e 100644 --- a/src/grib_accessor_class_section_pointer.cc +++ b/src/grib_accessor_class_section_pointer.cc @@ -104,12 +104,6 @@ static grib_accessor_class _grib_accessor_class_section_pointer = { grib_accessor_class* grib_accessor_class_section_pointer = &_grib_accessor_class_section_pointer; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long len, grib_arguments* arg) diff --git a/src/grib_accessor_class_select_step_template.cc b/src/grib_accessor_class_select_step_template.cc index 6ec5a1777..4184514e6 100644 --- a/src/grib_accessor_class_select_step_template.cc +++ b/src/grib_accessor_class_select_step_template.cc @@ -106,12 +106,6 @@ static grib_accessor_class _grib_accessor_class_select_step_template = { grib_accessor_class* grib_accessor_class_select_step_template = &_grib_accessor_class_select_step_template; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long l, grib_arguments* c) diff --git a/src/grib_accessor_class_sexagesimal2decimal.cc b/src/grib_accessor_class_sexagesimal2decimal.cc index d13583433..028e92335 100644 --- a/src/grib_accessor_class_sexagesimal2decimal.cc +++ b/src/grib_accessor_class_sexagesimal2decimal.cc @@ -106,12 +106,6 @@ static grib_accessor_class _grib_accessor_class_sexagesimal2decimal = { grib_accessor_class* grib_accessor_class_sexagesimal2decimal = &_grib_accessor_class_sexagesimal2decimal; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long len, grib_arguments* arg) diff --git a/src/grib_accessor_class_signed.cc b/src/grib_accessor_class_signed.cc index ac00c14e7..04c9e4ae5 100644 --- a/src/grib_accessor_class_signed.cc +++ b/src/grib_accessor_class_signed.cc @@ -114,12 +114,6 @@ static grib_accessor_class _grib_accessor_class_signed = { grib_accessor_class* grib_accessor_class_signed = &_grib_accessor_class_signed; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long len, grib_arguments* arg) diff --git a/src/grib_accessor_class_signed_bits.cc b/src/grib_accessor_class_signed_bits.cc index ebd0cafc6..ce258b524 100644 --- a/src/grib_accessor_class_signed_bits.cc +++ b/src/grib_accessor_class_signed_bits.cc @@ -113,12 +113,6 @@ static grib_accessor_class _grib_accessor_class_signed_bits = { grib_accessor_class* grib_accessor_class_signed_bits = &_grib_accessor_class_signed_bits; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static long byte_count(grib_accessor* a) diff --git a/src/grib_accessor_class_simple_packing_error.cc b/src/grib_accessor_class_simple_packing_error.cc index 9118b4e59..835b2e7e5 100644 --- a/src/grib_accessor_class_simple_packing_error.cc +++ b/src/grib_accessor_class_simple_packing_error.cc @@ -112,12 +112,6 @@ static grib_accessor_class _grib_accessor_class_simple_packing_error = { grib_accessor_class* grib_accessor_class_simple_packing_error = &_grib_accessor_class_simple_packing_error; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long l, grib_arguments* c) diff --git a/src/grib_accessor_class_size.cc b/src/grib_accessor_class_size.cc index 7bea5b7d3..f2cf0c297 100644 --- a/src/grib_accessor_class_size.cc +++ b/src/grib_accessor_class_size.cc @@ -97,12 +97,6 @@ static grib_accessor_class _grib_accessor_class_size = { grib_accessor_class* grib_accessor_class_size = &_grib_accessor_class_size; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long l, grib_arguments* c) diff --git a/src/grib_accessor_class_smart_table.cc b/src/grib_accessor_class_smart_table.cc index 2cde26cf3..0dca60615 100644 --- a/src/grib_accessor_class_smart_table.cc +++ b/src/grib_accessor_class_smart_table.cc @@ -132,12 +132,6 @@ static grib_accessor_class _grib_accessor_class_smart_table = { grib_accessor_class* grib_accessor_class_smart_table = &_grib_accessor_class_smart_table; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ #if GRIB_PTHREADS diff --git a/src/grib_accessor_class_smart_table_column.cc b/src/grib_accessor_class_smart_table_column.cc index d1dd0009c..097e34661 100644 --- a/src/grib_accessor_class_smart_table_column.cc +++ b/src/grib_accessor_class_smart_table_column.cc @@ -105,12 +105,6 @@ static grib_accessor_class _grib_accessor_class_smart_table_column = { grib_accessor_class* grib_accessor_class_smart_table_column = &_grib_accessor_class_smart_table_column; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ typedef struct grib_accessor_smart_table diff --git a/src/grib_accessor_class_spd.cc b/src/grib_accessor_class_spd.cc index e5a59e6d2..13f75f130 100644 --- a/src/grib_accessor_class_spd.cc +++ b/src/grib_accessor_class_spd.cc @@ -113,12 +113,6 @@ static grib_accessor_class _grib_accessor_class_spd = { grib_accessor_class* grib_accessor_class_spd = &_grib_accessor_class_spd; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static long byte_count(grib_accessor* a) diff --git a/src/grib_accessor_class_spectral_truncation.cc b/src/grib_accessor_class_spectral_truncation.cc index 730e5fe4e..72f4c6c64 100644 --- a/src/grib_accessor_class_spectral_truncation.cc +++ b/src/grib_accessor_class_spectral_truncation.cc @@ -109,12 +109,6 @@ static grib_accessor_class _grib_accessor_class_spectral_truncation = { grib_accessor_class* grib_accessor_class_spectral_truncation = &_grib_accessor_class_spectral_truncation; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long l, grib_arguments* c) diff --git a/src/grib_accessor_class_sprintf.cc b/src/grib_accessor_class_sprintf.cc index e735e758a..d7ad9b9f7 100644 --- a/src/grib_accessor_class_sprintf.cc +++ b/src/grib_accessor_class_sprintf.cc @@ -101,12 +101,6 @@ static grib_accessor_class _grib_accessor_class_sprintf = { grib_accessor_class* grib_accessor_class_sprintf = &_grib_accessor_class_sprintf; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long l, grib_arguments* c) diff --git a/src/grib_accessor_class_statistics.cc b/src/grib_accessor_class_statistics.cc index cb90519fe..7a0c1c72d 100644 --- a/src/grib_accessor_class_statistics.cc +++ b/src/grib_accessor_class_statistics.cc @@ -114,12 +114,6 @@ static grib_accessor_class _grib_accessor_class_statistics = { grib_accessor_class* grib_accessor_class_statistics = &_grib_accessor_class_statistics; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long l, grib_arguments* c) diff --git a/src/grib_accessor_class_statistics_spectral.cc b/src/grib_accessor_class_statistics_spectral.cc index 205a9bc8c..8643d7703 100644 --- a/src/grib_accessor_class_statistics_spectral.cc +++ b/src/grib_accessor_class_statistics_spectral.cc @@ -118,12 +118,6 @@ static grib_accessor_class _grib_accessor_class_statistics_spectral = { grib_accessor_class* grib_accessor_class_statistics_spectral = &_grib_accessor_class_statistics_spectral; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long l, grib_arguments* c) diff --git a/src/grib_accessor_class_step_human_readable.cc b/src/grib_accessor_class_step_human_readable.cc index e1da574c1..a11bb7fb7 100644 --- a/src/grib_accessor_class_step_human_readable.cc +++ b/src/grib_accessor_class_step_human_readable.cc @@ -100,12 +100,6 @@ static grib_accessor_class _grib_accessor_class_step_human_readable = { grib_accessor_class* grib_accessor_class_step_human_readable = &_grib_accessor_class_step_human_readable; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long len, grib_arguments* params) diff --git a/src/grib_accessor_class_step_in_units.cc b/src/grib_accessor_class_step_in_units.cc index 38fcd03e3..36f98dc91 100644 --- a/src/grib_accessor_class_step_in_units.cc +++ b/src/grib_accessor_class_step_in_units.cc @@ -109,12 +109,6 @@ static grib_accessor_class _grib_accessor_class_step_in_units = { grib_accessor_class* grib_accessor_class_step_in_units = &_grib_accessor_class_step_in_units; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long l, grib_arguments* c) diff --git a/src/grib_accessor_class_sum.cc b/src/grib_accessor_class_sum.cc index a3a330f27..a1016b5b0 100644 --- a/src/grib_accessor_class_sum.cc +++ b/src/grib_accessor_class_sum.cc @@ -107,12 +107,6 @@ static grib_accessor_class _grib_accessor_class_sum = { grib_accessor_class* grib_accessor_class_sum = &_grib_accessor_class_sum; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long l, grib_arguments* c) diff --git a/src/grib_accessor_class_suppressed.cc b/src/grib_accessor_class_suppressed.cc index fc868673c..392441377 100644 --- a/src/grib_accessor_class_suppressed.cc +++ b/src/grib_accessor_class_suppressed.cc @@ -108,12 +108,6 @@ static grib_accessor_class _grib_accessor_class_suppressed = { grib_accessor_class* grib_accessor_class_suppressed = &_grib_accessor_class_suppressed; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long l, grib_arguments* c) diff --git a/src/grib_accessor_class_time.cc b/src/grib_accessor_class_time.cc index bdf574cff..344498bff 100644 --- a/src/grib_accessor_class_time.cc +++ b/src/grib_accessor_class_time.cc @@ -107,12 +107,6 @@ static grib_accessor_class _grib_accessor_class_time = { grib_accessor_class* grib_accessor_class_time = &_grib_accessor_class_time; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long l, grib_arguments* c) diff --git a/src/grib_accessor_class_times.cc b/src/grib_accessor_class_times.cc index 6e8085971..5801c0088 100644 --- a/src/grib_accessor_class_times.cc +++ b/src/grib_accessor_class_times.cc @@ -107,12 +107,6 @@ static grib_accessor_class _grib_accessor_class_times = { grib_accessor_class* grib_accessor_class_times = &_grib_accessor_class_times; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long l, grib_arguments* c) diff --git a/src/grib_accessor_class_to_double.cc b/src/grib_accessor_class_to_double.cc index a561f6aab..30f57ef9f 100644 --- a/src/grib_accessor_class_to_double.cc +++ b/src/grib_accessor_class_to_double.cc @@ -123,12 +123,6 @@ static grib_accessor_class _grib_accessor_class_to_double = { grib_accessor_class* grib_accessor_class_to_double = &_grib_accessor_class_to_double; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long len, grib_arguments* arg) diff --git a/src/grib_accessor_class_to_integer.cc b/src/grib_accessor_class_to_integer.cc index 84251081f..5f6726230 100644 --- a/src/grib_accessor_class_to_integer.cc +++ b/src/grib_accessor_class_to_integer.cc @@ -122,12 +122,6 @@ static grib_accessor_class _grib_accessor_class_to_integer = { grib_accessor_class* grib_accessor_class_to_integer = &_grib_accessor_class_to_integer; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long len, grib_arguments* arg) diff --git a/src/grib_accessor_class_to_string.cc b/src/grib_accessor_class_to_string.cc index e0ff98b53..77ba4330d 100644 --- a/src/grib_accessor_class_to_string.cc +++ b/src/grib_accessor_class_to_string.cc @@ -122,12 +122,6 @@ static grib_accessor_class _grib_accessor_class_to_string = { grib_accessor_class* grib_accessor_class_to_string = &_grib_accessor_class_to_string; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long len, grib_arguments* arg) diff --git a/src/grib_accessor_class_transient.cc b/src/grib_accessor_class_transient.cc index c84f83ffd..bc30b049a 100644 --- a/src/grib_accessor_class_transient.cc +++ b/src/grib_accessor_class_transient.cc @@ -97,10 +97,4 @@ static grib_accessor_class _grib_accessor_class_transient = { grib_accessor_class* grib_accessor_class_transient = &_grib_accessor_class_transient; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_transient_darray.cc b/src/grib_accessor_class_transient_darray.cc index b26a97406..feb0e89d9 100644 --- a/src/grib_accessor_class_transient_darray.cc +++ b/src/grib_accessor_class_transient_darray.cc @@ -110,12 +110,6 @@ static grib_accessor_class _grib_accessor_class_transient_darray = { grib_accessor_class* grib_accessor_class_transient_darray = &_grib_accessor_class_transient_darray; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long length, grib_arguments* args) diff --git a/src/grib_accessor_class_trim.cc b/src/grib_accessor_class_trim.cc index e41b44219..3bb37003d 100644 --- a/src/grib_accessor_class_trim.cc +++ b/src/grib_accessor_class_trim.cc @@ -104,12 +104,6 @@ static grib_accessor_class _grib_accessor_class_trim = { grib_accessor_class* grib_accessor_class_trim = &_grib_accessor_class_trim; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long l, grib_arguments* arg) diff --git a/src/grib_accessor_class_uint16.cc b/src/grib_accessor_class_uint16.cc index 6f309c636..cb982e730 100644 --- a/src/grib_accessor_class_uint16.cc +++ b/src/grib_accessor_class_uint16.cc @@ -96,12 +96,6 @@ static grib_accessor_class _grib_accessor_class_uint16 = { grib_accessor_class* grib_accessor_class_uint16 = &_grib_accessor_class_uint16; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static int unpack_long(grib_accessor* a, long* val, size_t* len) diff --git a/src/grib_accessor_class_uint16_little_endian.cc b/src/grib_accessor_class_uint16_little_endian.cc index cc933dd3d..0cb1401e1 100644 --- a/src/grib_accessor_class_uint16_little_endian.cc +++ b/src/grib_accessor_class_uint16_little_endian.cc @@ -96,12 +96,6 @@ static grib_accessor_class _grib_accessor_class_uint16_little_endian = { grib_accessor_class* grib_accessor_class_uint16_little_endian = &_grib_accessor_class_uint16_little_endian; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static int unpack_long(grib_accessor* a, long* val, size_t* len) diff --git a/src/grib_accessor_class_uint32.cc b/src/grib_accessor_class_uint32.cc index 74877feee..72952db63 100644 --- a/src/grib_accessor_class_uint32.cc +++ b/src/grib_accessor_class_uint32.cc @@ -98,12 +98,6 @@ static grib_accessor_class _grib_accessor_class_uint32 = { grib_accessor_class* grib_accessor_class_uint32 = &_grib_accessor_class_uint32; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static int unpack_long(grib_accessor* a, long* val, size_t* len) diff --git a/src/grib_accessor_class_uint32_little_endian.cc b/src/grib_accessor_class_uint32_little_endian.cc index 059542e2c..c91c43344 100644 --- a/src/grib_accessor_class_uint32_little_endian.cc +++ b/src/grib_accessor_class_uint32_little_endian.cc @@ -98,12 +98,6 @@ static grib_accessor_class _grib_accessor_class_uint32_little_endian = { grib_accessor_class* grib_accessor_class_uint32_little_endian = &_grib_accessor_class_uint32_little_endian; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static int unpack_long(grib_accessor* a, long* val, size_t* len) diff --git a/src/grib_accessor_class_uint64.cc b/src/grib_accessor_class_uint64.cc index 3e6e5aff0..a2b7c2267 100644 --- a/src/grib_accessor_class_uint64.cc +++ b/src/grib_accessor_class_uint64.cc @@ -98,12 +98,6 @@ static grib_accessor_class _grib_accessor_class_uint64 = { grib_accessor_class* grib_accessor_class_uint64 = &_grib_accessor_class_uint64; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static int unpack_long(grib_accessor* a, long* val, size_t* len) diff --git a/src/grib_accessor_class_uint64_little_endian.cc b/src/grib_accessor_class_uint64_little_endian.cc index 3949a1940..42145b505 100644 --- a/src/grib_accessor_class_uint64_little_endian.cc +++ b/src/grib_accessor_class_uint64_little_endian.cc @@ -98,12 +98,6 @@ static grib_accessor_class _grib_accessor_class_uint64_little_endian = { grib_accessor_class* grib_accessor_class_uint64_little_endian = &_grib_accessor_class_uint64_little_endian; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static int unpack_long(grib_accessor* a, long* val, size_t* len) diff --git a/src/grib_accessor_class_uint8.cc b/src/grib_accessor_class_uint8.cc index 446ee3335..7ee71cc32 100644 --- a/src/grib_accessor_class_uint8.cc +++ b/src/grib_accessor_class_uint8.cc @@ -98,12 +98,6 @@ static grib_accessor_class _grib_accessor_class_uint8 = { grib_accessor_class* grib_accessor_class_uint8 = &_grib_accessor_class_uint8; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static int unpack_long(grib_accessor* a, long* val, size_t* len) diff --git a/src/grib_accessor_class_unexpanded_descriptors.cc b/src/grib_accessor_class_unexpanded_descriptors.cc index e7a2ce856..0f8e107df 100644 --- a/src/grib_accessor_class_unexpanded_descriptors.cc +++ b/src/grib_accessor_class_unexpanded_descriptors.cc @@ -111,12 +111,6 @@ static grib_accessor_class _grib_accessor_class_unexpanded_descriptors = { grib_accessor_class* grib_accessor_class_unexpanded_descriptors = &_grib_accessor_class_unexpanded_descriptors; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long len, grib_arguments* args) diff --git a/src/grib_accessor_class_unpack_bufr_values.cc b/src/grib_accessor_class_unpack_bufr_values.cc index 15e949ab8..1d7f468f8 100644 --- a/src/grib_accessor_class_unpack_bufr_values.cc +++ b/src/grib_accessor_class_unpack_bufr_values.cc @@ -110,12 +110,6 @@ static grib_accessor_class _grib_accessor_class_unpack_bufr_values = { grib_accessor_class* grib_accessor_class_unpack_bufr_values = &_grib_accessor_class_unpack_bufr_values; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long len, grib_arguments* params) diff --git a/src/grib_accessor_class_unsigned.cc b/src/grib_accessor_class_unsigned.cc index f620fc590..1d3114156 100644 --- a/src/grib_accessor_class_unsigned.cc +++ b/src/grib_accessor_class_unsigned.cc @@ -114,12 +114,6 @@ static grib_accessor_class _grib_accessor_class_unsigned = { grib_accessor_class* grib_accessor_class_unsigned = &_grib_accessor_class_unsigned; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long len, grib_arguments* arg) diff --git a/src/grib_accessor_class_unsigned_bits.cc b/src/grib_accessor_class_unsigned_bits.cc index 9425058c0..2833153df 100644 --- a/src/grib_accessor_class_unsigned_bits.cc +++ b/src/grib_accessor_class_unsigned_bits.cc @@ -113,12 +113,6 @@ static grib_accessor_class _grib_accessor_class_unsigned_bits = { grib_accessor_class* grib_accessor_class_unsigned_bits = &_grib_accessor_class_unsigned_bits; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ diff --git a/src/grib_accessor_class_validity_date.cc b/src/grib_accessor_class_validity_date.cc index 881478c0e..203f61b2d 100644 --- a/src/grib_accessor_class_validity_date.cc +++ b/src/grib_accessor_class_validity_date.cc @@ -112,12 +112,6 @@ static grib_accessor_class _grib_accessor_class_validity_date = { grib_accessor_class* grib_accessor_class_validity_date = &_grib_accessor_class_validity_date; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ /* Table of multipliers to convert step units to minutes */ diff --git a/src/grib_accessor_class_validity_time.cc b/src/grib_accessor_class_validity_time.cc index 051518e69..33aed48d2 100644 --- a/src/grib_accessor_class_validity_time.cc +++ b/src/grib_accessor_class_validity_time.cc @@ -110,12 +110,6 @@ static grib_accessor_class _grib_accessor_class_validity_time = { grib_accessor_class* grib_accessor_class_validity_time = &_grib_accessor_class_validity_time; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ /* Table of multipliers to convert step units to minutes */ diff --git a/src/grib_accessor_class_values.cc b/src/grib_accessor_class_values.cc index 9d4a03c10..1715ef288 100644 --- a/src/grib_accessor_class_values.cc +++ b/src/grib_accessor_class_values.cc @@ -120,12 +120,6 @@ static grib_accessor_class _grib_accessor_class_values = { grib_accessor_class* grib_accessor_class_values = &_grib_accessor_class_values; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static long init_length(grib_accessor* a) { diff --git a/src/grib_accessor_class_variable.cc b/src/grib_accessor_class_variable.cc index 3d5aa6766..2aac02941 100644 --- a/src/grib_accessor_class_variable.cc +++ b/src/grib_accessor_class_variable.cc @@ -120,12 +120,6 @@ static grib_accessor_class _grib_accessor_class_variable = { grib_accessor_class* grib_accessor_class_variable = &_grib_accessor_class_variable; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ #define MAX_VARIABLE_STRING_LENGTH 255 diff --git a/src/grib_accessor_class_vector.cc b/src/grib_accessor_class_vector.cc index e4c885268..feae78ea9 100644 --- a/src/grib_accessor_class_vector.cc +++ b/src/grib_accessor_class_vector.cc @@ -108,12 +108,6 @@ static grib_accessor_class _grib_accessor_class_vector = { grib_accessor_class* grib_accessor_class_vector = &_grib_accessor_class_vector; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ typedef struct grib_accessor_abstract_vector diff --git a/src/grib_accessor_class_when.cc b/src/grib_accessor_class_when.cc index f13833310..e46881759 100644 --- a/src/grib_accessor_class_when.cc +++ b/src/grib_accessor_class_when.cc @@ -101,12 +101,6 @@ static grib_accessor_class _grib_accessor_class_when = { grib_accessor_class* grib_accessor_class_when = &_grib_accessor_class_when; - -//static void init_class(grib_accessor_class* c) -//{ -// INIT -//} - /* END_CLASS_IMP */ static void init(grib_accessor* a, const long len, grib_arguments* arg) diff --git a/src/grib_expression_class_accessor.cc b/src/grib_expression_class_accessor.cc index f6ea5f1a4..e806a3e1a 100644 --- a/src/grib_expression_class_accessor.cc +++ b/src/grib_expression_class_accessor.cc @@ -68,20 +68,18 @@ typedef struct grib_expression_accessor{ static grib_expression_class _grib_expression_class_accessor = { 0, /* super */ "accessor", /* name */ - sizeof(grib_expression_accessor),/* size of instance */ + sizeof(grib_expression_accessor),/* size of instance */ 0, /* inited */ &init_class, /* init_class */ 0, /* constructor */ &destroy, /* destructor */ &print, &add_dependency, - - &native_type, - &get_name, - - &evaluate_long, - &evaluate_double, - &evaluate_string, + &native_type, + &get_name, + &evaluate_long, + &evaluate_double, + &evaluate_string, }; grib_expression_class* grib_expression_class_accessor = &_grib_expression_class_accessor; diff --git a/src/grib_expression_class_binop.cc b/src/grib_expression_class_binop.cc index 8d4770f46..e95bebbd3 100644 --- a/src/grib_expression_class_binop.cc +++ b/src/grib_expression_class_binop.cc @@ -68,20 +68,18 @@ typedef struct grib_expression_binop{ static grib_expression_class _grib_expression_class_binop = { 0, /* super */ "binop", /* name */ - sizeof(grib_expression_binop),/* size of instance */ + sizeof(grib_expression_binop),/* size of instance */ 0, /* inited */ &init_class, /* init_class */ 0, /* constructor */ &destroy, /* destructor */ &print, &add_dependency, - - &native_type, - 0, - - &evaluate_long, - &evaluate_double, - 0, + &native_type, + 0, + &evaluate_long, + &evaluate_double, + 0, }; grib_expression_class* grib_expression_class_binop = &_grib_expression_class_binop; diff --git a/src/grib_expression_class_column.cc b/src/grib_expression_class_column.cc index 6f92b8b25..b683b93a5 100644 --- a/src/grib_expression_class_column.cc +++ b/src/grib_expression_class_column.cc @@ -65,20 +65,18 @@ typedef struct grib_expression_column{ static grib_expression_class _grib_expression_class_column = { 0, /* super */ "column", /* name */ - sizeof(grib_expression_column),/* size of instance */ + sizeof(grib_expression_column),/* size of instance */ 0, /* inited */ &init_class, /* init_class */ 0, /* constructor */ &destroy, /* destructor */ 0, 0, - - &native_type, - &get_name, - - &evaluate_long, - &evaluate_double, - &evaluate_string, + &native_type, + &get_name, + &evaluate_long, + &evaluate_double, + &evaluate_string, }; grib_expression_class* grib_expression_class_column = &_grib_expression_class_column; diff --git a/src/grib_expression_class_constant.cc b/src/grib_expression_class_constant.cc index 24fa871a4..7bd817678 100644 --- a/src/grib_expression_class_constant.cc +++ b/src/grib_expression_class_constant.cc @@ -61,20 +61,18 @@ typedef struct grib_expression_constant{ static grib_expression_class _grib_expression_class_constant = { 0, /* super */ "constant", /* name */ - sizeof(grib_expression_constant),/* size of instance */ + sizeof(grib_expression_constant),/* size of instance */ 0, /* inited */ &init_class, /* init_class */ 0, /* constructor */ &destroy, /* destructor */ &print, &add_dependency, - - &native_type, - 0, - - 0, - 0, - 0, + &native_type, + 0, + 0, + 0, + 0, }; grib_expression_class* grib_expression_class_constant = &_grib_expression_class_constant; diff --git a/src/grib_expression_class_double.cc b/src/grib_expression_class_double.cc index b123dc1c3..f904c887e 100644 --- a/src/grib_expression_class_double.cc +++ b/src/grib_expression_class_double.cc @@ -60,20 +60,18 @@ typedef struct grib_expression_double{ static grib_expression_class _grib_expression_class_double = { 0, /* super */ "double", /* name */ - sizeof(grib_expression_double),/* size of instance */ + sizeof(grib_expression_double),/* size of instance */ 0, /* inited */ &init_class, /* init_class */ 0, /* constructor */ &destroy, /* destructor */ &print, &add_dependency, - - &native_type, - 0, - - &evaluate_long, - &evaluate_double, - 0, + &native_type, + 0, + &evaluate_long, + &evaluate_double, + 0, }; grib_expression_class* grib_expression_class_double = &_grib_expression_class_double; diff --git a/src/grib_expression_class_functor.cc b/src/grib_expression_class_functor.cc index 5c9d9c3ca..99ab0ad36 100644 --- a/src/grib_expression_class_functor.cc +++ b/src/grib_expression_class_functor.cc @@ -60,20 +60,18 @@ typedef struct grib_expression_functor{ static grib_expression_class _grib_expression_class_functor = { 0, /* super */ "functor", /* name */ - sizeof(grib_expression_functor),/* size of instance */ + sizeof(grib_expression_functor),/* size of instance */ 0, /* inited */ &init_class, /* init_class */ 0, /* constructor */ &destroy, /* destructor */ &print, &add_dependency, - - &native_type, - 0, - - &evaluate_long, - 0, - 0, + &native_type, + 0, + &evaluate_long, + 0, + 0, }; grib_expression_class* grib_expression_class_functor = &_grib_expression_class_functor; diff --git a/src/grib_expression_class_is_in_dict.cc b/src/grib_expression_class_is_in_dict.cc index d28759d95..6cb43acb3 100644 --- a/src/grib_expression_class_is_in_dict.cc +++ b/src/grib_expression_class_is_in_dict.cc @@ -64,20 +64,18 @@ typedef struct grib_expression_is_in_dict{ static grib_expression_class _grib_expression_class_is_in_dict = { 0, /* super */ "is_in_dict", /* name */ - sizeof(grib_expression_is_in_dict),/* size of instance */ + sizeof(grib_expression_is_in_dict),/* size of instance */ 0, /* inited */ &init_class, /* init_class */ 0, /* constructor */ 0, /* destructor */ &print, &add_dependency, - - &native_type, - &get_name, - - &evaluate_long, - &evaluate_double, - &evaluate_string, + &native_type, + &get_name, + &evaluate_long, + &evaluate_double, + &evaluate_string, }; grib_expression_class* grib_expression_class_is_in_dict = &_grib_expression_class_is_in_dict; diff --git a/src/grib_expression_class_is_in_list.cc b/src/grib_expression_class_is_in_list.cc index 24ebb57f8..4a6c3dc3b 100644 --- a/src/grib_expression_class_is_in_list.cc +++ b/src/grib_expression_class_is_in_list.cc @@ -66,20 +66,18 @@ typedef struct grib_expression_is_in_list{ static grib_expression_class _grib_expression_class_is_in_list = { 0, /* super */ "is_in_list", /* name */ - sizeof(grib_expression_is_in_list),/* size of instance */ + sizeof(grib_expression_is_in_list),/* size of instance */ 0, /* inited */ &init_class, /* init_class */ 0, /* constructor */ &destroy, /* destructor */ &print, &add_dependency, - - &native_type, - &get_name, - - &evaluate_long, - &evaluate_double, - &evaluate_string, + &native_type, + &get_name, + &evaluate_long, + &evaluate_double, + &evaluate_string, }; grib_expression_class* grib_expression_class_is_in_list = &_grib_expression_class_is_in_list; diff --git a/src/grib_expression_class_is_integer.cc b/src/grib_expression_class_is_integer.cc index f170f6d44..c42ae9f86 100644 --- a/src/grib_expression_class_is_integer.cc +++ b/src/grib_expression_class_is_integer.cc @@ -68,20 +68,18 @@ typedef struct grib_expression_is_integer{ static grib_expression_class _grib_expression_class_is_integer = { 0, /* super */ "is_integer", /* name */ - sizeof(grib_expression_is_integer),/* size of instance */ + sizeof(grib_expression_is_integer),/* size of instance */ 0, /* inited */ &init_class, /* init_class */ 0, /* constructor */ &destroy, /* destructor */ &print, &add_dependency, - - &native_type, - &get_name, - - &evaluate_long, - &evaluate_double, - &evaluate_string, + &native_type, + &get_name, + &evaluate_long, + &evaluate_double, + &evaluate_string, }; grib_expression_class* grib_expression_class_is_integer = &_grib_expression_class_is_integer; diff --git a/src/grib_expression_class_length.cc b/src/grib_expression_class_length.cc index e64d3c0eb..c685f2186 100644 --- a/src/grib_expression_class_length.cc +++ b/src/grib_expression_class_length.cc @@ -68,20 +68,18 @@ typedef struct grib_expression_length{ static grib_expression_class _grib_expression_class_length = { 0, /* super */ "length", /* name */ - sizeof(grib_expression_length),/* size of instance */ + sizeof(grib_expression_length),/* size of instance */ 0, /* inited */ &init_class, /* init_class */ 0, /* constructor */ &destroy, /* destructor */ &print, &add_dependency, - - &native_type, - &get_name, - - &evaluate_long, - &evaluate_double, - &evaluate_string, + &native_type, + &get_name, + &evaluate_long, + &evaluate_double, + &evaluate_string, }; grib_expression_class* grib_expression_class_length = &_grib_expression_class_length; diff --git a/src/grib_expression_class_logical_and.cc b/src/grib_expression_class_logical_and.cc index ee03656d2..5cf98db69 100644 --- a/src/grib_expression_class_logical_and.cc +++ b/src/grib_expression_class_logical_and.cc @@ -63,20 +63,18 @@ typedef struct grib_expression_logical_and{ static grib_expression_class _grib_expression_class_logical_and = { 0, /* super */ "logical_and", /* name */ - sizeof(grib_expression_logical_and),/* size of instance */ + sizeof(grib_expression_logical_and),/* size of instance */ 0, /* inited */ &init_class, /* init_class */ 0, /* constructor */ &destroy, /* destructor */ &print, &add_dependency, - - &native_type, - 0, - - &evaluate_long, - &evaluate_double, - 0, + &native_type, + 0, + &evaluate_long, + &evaluate_double, + 0, }; grib_expression_class* grib_expression_class_logical_and = &_grib_expression_class_logical_and; diff --git a/src/grib_expression_class_logical_or.cc b/src/grib_expression_class_logical_or.cc index e83100d3b..75c2a6520 100644 --- a/src/grib_expression_class_logical_or.cc +++ b/src/grib_expression_class_logical_or.cc @@ -63,20 +63,18 @@ typedef struct grib_expression_logical_or{ static grib_expression_class _grib_expression_class_logical_or = { 0, /* super */ "logical_or", /* name */ - sizeof(grib_expression_logical_or),/* size of instance */ + sizeof(grib_expression_logical_or),/* size of instance */ 0, /* inited */ &init_class, /* init_class */ 0, /* constructor */ &destroy, /* destructor */ &print, &add_dependency, - - &native_type, - 0, - - &evaluate_long, - &evaluate_double, - 0, + &native_type, + 0, + &evaluate_long, + &evaluate_double, + 0, }; grib_expression_class* grib_expression_class_logical_or = &_grib_expression_class_logical_or; diff --git a/src/grib_expression_class_long.cc b/src/grib_expression_class_long.cc index 9e5fd585a..481e143c8 100644 --- a/src/grib_expression_class_long.cc +++ b/src/grib_expression_class_long.cc @@ -60,20 +60,18 @@ typedef struct grib_expression_long{ static grib_expression_class _grib_expression_class_long = { 0, /* super */ "long", /* name */ - sizeof(grib_expression_long),/* size of instance */ + sizeof(grib_expression_long),/* size of instance */ 0, /* inited */ &init_class, /* init_class */ 0, /* constructor */ &destroy, /* destructor */ &print, &add_dependency, - - &native_type, - 0, - - &evaluate_long, - &evaluate_double, - 0, + &native_type, + 0, + &evaluate_long, + &evaluate_double, + 0, }; grib_expression_class* grib_expression_class_long = &_grib_expression_class_long; diff --git a/src/grib_expression_class_string.cc b/src/grib_expression_class_string.cc index f36d23dbe..1d6734c4c 100644 --- a/src/grib_expression_class_string.cc +++ b/src/grib_expression_class_string.cc @@ -58,20 +58,18 @@ typedef struct grib_expression_string{ static grib_expression_class _grib_expression_class_string = { 0, /* super */ "string", /* name */ - sizeof(grib_expression_string),/* size of instance */ + sizeof(grib_expression_string),/* size of instance */ 0, /* inited */ &init_class, /* init_class */ 0, /* constructor */ &destroy, /* destructor */ &print, &add_dependency, - - &native_type, - 0, - - 0, - 0, - &evaluate_string, + &native_type, + 0, + 0, + 0, + &evaluate_string, }; grib_expression_class* grib_expression_class_string = &_grib_expression_class_string; diff --git a/src/grib_expression_class_string_compare.cc b/src/grib_expression_class_string_compare.cc index 1686ca0ba..8ee196c2e 100644 --- a/src/grib_expression_class_string_compare.cc +++ b/src/grib_expression_class_string_compare.cc @@ -62,20 +62,18 @@ typedef struct grib_expression_string_compare{ static grib_expression_class _grib_expression_class_string_compare = { 0, /* super */ "string_compare", /* name */ - sizeof(grib_expression_string_compare),/* size of instance */ + sizeof(grib_expression_string_compare),/* size of instance */ 0, /* inited */ &init_class, /* init_class */ 0, /* constructor */ &destroy, /* destructor */ &print, &add_dependency, - - &native_type, - 0, - - &evaluate_long, - &evaluate_double, - 0, + &native_type, + 0, + &evaluate_long, + &evaluate_double, + 0, }; grib_expression_class* grib_expression_class_string_compare = &_grib_expression_class_string_compare; diff --git a/src/grib_expression_class_sub_string.cc b/src/grib_expression_class_sub_string.cc index 3d7fa5507..0a53638bc 100644 --- a/src/grib_expression_class_sub_string.cc +++ b/src/grib_expression_class_sub_string.cc @@ -58,20 +58,18 @@ typedef struct grib_expression_sub_string{ static grib_expression_class _grib_expression_class_sub_string = { 0, /* super */ "sub_string", /* name */ - sizeof(grib_expression_sub_string),/* size of instance */ + sizeof(grib_expression_sub_string),/* size of instance */ 0, /* inited */ &init_class, /* init_class */ 0, /* constructor */ &destroy, /* destructor */ &print, &add_dependency, - - &native_type, - 0, - - 0, - 0, - &evaluate_string, + &native_type, + 0, + 0, + 0, + &evaluate_string, }; grib_expression_class* grib_expression_class_sub_string = &_grib_expression_class_sub_string; diff --git a/src/grib_expression_class_true.cc b/src/grib_expression_class_true.cc index ec702322a..a57ce9c60 100644 --- a/src/grib_expression_class_true.cc +++ b/src/grib_expression_class_true.cc @@ -58,20 +58,18 @@ typedef struct grib_expression_true{ static grib_expression_class _grib_expression_class_true = { 0, /* super */ "true", /* name */ - sizeof(grib_expression_true),/* size of instance */ + sizeof(grib_expression_true),/* size of instance */ 0, /* inited */ &init_class, /* init_class */ 0, /* constructor */ &destroy, /* destructor */ &print, &add_dependency, - - &native_type, - 0, - - &evaluate_long, - &evaluate_double, - 0, + &native_type, + 0, + &evaluate_long, + &evaluate_double, + 0, }; grib_expression_class* grib_expression_class_true = &_grib_expression_class_true; diff --git a/src/grib_expression_class_unop.cc b/src/grib_expression_class_unop.cc index 619cb3564..2abd4dbc9 100644 --- a/src/grib_expression_class_unop.cc +++ b/src/grib_expression_class_unop.cc @@ -64,20 +64,18 @@ typedef struct grib_expression_unop{ static grib_expression_class _grib_expression_class_unop = { 0, /* super */ "unop", /* name */ - sizeof(grib_expression_unop),/* size of instance */ + sizeof(grib_expression_unop),/* size of instance */ 0, /* inited */ &init_class, /* init_class */ 0, /* constructor */ &destroy, /* destructor */ &print, &add_dependency, - - &native_type, - 0, - - &evaluate_long, - &evaluate_double, - 0, + &native_type, + 0, + &evaluate_long, + &evaluate_double, + 0, }; grib_expression_class* grib_expression_class_unop = &_grib_expression_class_unop; From 078d429cdd9c41a992efee211f84c0b9c1464880 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 28 Jun 2023 17:30:32 +0100 Subject: [PATCH 353/378] Testing: grib_handle_new_from_partial_message --- tests/CMakeLists.txt | 2 ++ tests/grib_partial_message.cc | 54 +++++++++++++++++++++++++++++++++++ tests/grib_partial_message.sh | 17 +++++++++++ 3 files changed, 73 insertions(+) create mode 100644 tests/grib_partial_message.cc create mode 100755 tests/grib_partial_message.sh diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index d3ebf38ba..bb45a15a4 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -31,6 +31,7 @@ list(APPEND test_c_bins grib_optimize_scaling grib_optimize_scaling_sh grib_set_force + grib_partial_message grib_ecc-386 grib_ecc-1467 grib_ecc-1431 @@ -146,6 +147,7 @@ if( HAVE_BUILD_TOOLS ) grib_double_cmp grib_change_packing grib_grid_space_view + grib_partial_message grib_count bufr_templates bufr_dump_data diff --git a/tests/grib_partial_message.cc b/tests/grib_partial_message.cc new file mode 100644 index 000000000..e2030b478 --- /dev/null +++ b/tests/grib_partial_message.cc @@ -0,0 +1,54 @@ +/* + * (C) Copyright 2005- ECMWF. + * + * This software is licensed under the terms of the Apache Licence Version 2.0 + * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. + * + * In applying this licence, ECMWF does not waive the privileges and immunities granted to it by + * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. + */ + +#include "grib_api_internal.h" + +int main(int argc, char** argv) +{ + FILE* in = NULL; + int err = 0; + grib_handle* h_full = NULL; + grib_keys_iterator* iter = NULL; + const char* name = NULL; + const void* msg1 = NULL; + const char* infilename = NULL; + size_t size1 = 0; + grib_handle* h_partial = 0; + + Assert(argc == 2); + infilename = argv[1]; + + printf("Processing file %s\n", infilename); + in = fopen(infilename, "rb"); + Assert(in); + + h_full = grib_handle_new_from_file(0, in, &err); + Assert(h_full); + Assert(!err); + + GRIB_CHECK(grib_get_message_headers(h_full, &msg1, &size1), 0); + + h_partial = grib_handle_new_from_partial_message(h_full->context, msg1, size1); + Assert(h_partial); + + iter = grib_keys_iterator_new(h_partial, GRIB_KEYS_ITERATOR_SKIP_COMPUTED, NULL); + Assert(iter); + + while (grib_keys_iterator_next(iter)) { + name = grib_keys_iterator_get_name(iter); + printf("Header key=%s\n", name); + } + + grib_keys_iterator_delete(iter); + grib_handle_delete(h_partial); + grib_handle_delete(h_full); + fclose(in); + return 0; +} diff --git a/tests/grib_partial_message.sh b/tests/grib_partial_message.sh new file mode 100755 index 000000000..b63fa2488 --- /dev/null +++ b/tests/grib_partial_message.sh @@ -0,0 +1,17 @@ +#!/bin/sh +# (C) Copyright 2005- ECMWF. +# +# This software is licensed under the terms of the Apache Licence Version 2.0 +# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. +# +# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by +# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. +# + +. ./include.ctest.sh + +input=${data_dir}/test_file.grib2 +$EXEC ${test_dir}/grib_partial_message $input + +input=${data_dir}/spectral_compex.grib1 +$EXEC ${test_dir}/grib_partial_message $input From 6b828bef13bb351bebe4145945cf297324299cab Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 28 Jun 2023 17:44:43 +0100 Subject: [PATCH 354/378] Fix broken test --- tests/grib_partial_message.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/grib_partial_message.sh b/tests/grib_partial_message.sh index b63fa2488..61bbb35c8 100755 --- a/tests/grib_partial_message.sh +++ b/tests/grib_partial_message.sh @@ -13,5 +13,5 @@ input=${data_dir}/test_file.grib2 $EXEC ${test_dir}/grib_partial_message $input -input=${data_dir}/spectral_compex.grib1 +input=${data_dir}/regular_latlon_surface.grib1 $EXEC ${test_dir}/grib_partial_message $input From 4a0f5d6ef3a1d04672655eb7ec6bca43abcd3afa Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 29 Jun 2023 12:39:08 +0100 Subject: [PATCH 355/378] Testing: GRIB decoding with headers_only enabled --- tests/CMakeLists.txt | 1 + tests/grib_headers_only.sh | 69 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 70 insertions(+) create mode 100755 tests/grib_headers_only.sh diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index bb45a15a4..8ba6ee8da 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -81,6 +81,7 @@ if( HAVE_BUILD_TOOLS ) definitions grib2_version grib_calendar + grib_headers_only grib_md5 grib_cfNames grib_packing_order diff --git a/tests/grib_headers_only.sh b/tests/grib_headers_only.sh new file mode 100755 index 000000000..d6206059a --- /dev/null +++ b/tests/grib_headers_only.sh @@ -0,0 +1,69 @@ +#!/bin/sh +# (C) Copyright 2005- ECMWF. +# +# This software is licensed under the terms of the Apache Licence Version 2.0 +# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. +# +# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by +# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. +# + +. ./include.ctest.sh + +label="grib_headers_only_test" +tempLog=temp.$label.log +tempText=temp.$label.txt +rm -f $tempText $tempLog + +sample_g1="$ECCODES_SAMPLES_PATH/GRIB1.tmpl" +sample_g2="$ECCODES_SAMPLES_PATH/GRIB2.tmpl" + +files="$sample_g1 $sample_g2" +for file in $files; do + # Since we're not including the data section, the packingType key must not appear + $EXEC ${tools_dir}/grib_ls -j -M -x $sample_g1 > $tempLog + set +e + grep -q "packingType" $tempLog + status=$? + set -e + [ $status -ne 0 ] +done + +$EXEC ${tools_dir}/grib_dump -M -x -O $sample_g1 > $tempLog +$EXEC ${tools_dir}/grib_dump -M -x -O $sample_g2 > $tempLog + + +files="reduced_gaussian_lsm.grib1 +reduced_gaussian_model_level.grib1 +reduced_gaussian_model_level.grib2 +reduced_gaussian_pressure_level.grib1 +reduced_gaussian_pressure_level.grib2 +reduced_gaussian_pressure_level_constant.grib1 +reduced_gaussian_pressure_level_constant.grib2 +reduced_gaussian_sub_area.grib1 +reduced_gaussian_sub_area.grib2 +reduced_gaussian_surface.grib1 +reduced_gaussian_surface.grib2 +reduced_latlon_surface.grib1 +reduced_latlon_surface.grib2 +regular_gaussian_model_level.grib1 +regular_gaussian_model_level.grib2 +regular_gaussian_pressure_level.grib1 +regular_gaussian_pressure_level.grib2 +regular_gaussian_pressure_level_constant.grib1 +regular_gaussian_pressure_level_constant.grib2 +regular_gaussian_surface.grib1 +regular_gaussian_surface.grib2 +regular_latlon_surface.grib1 +regular_latlon_surface.grib2 +" + +for f in $files; do + file=$data_dir/$f + echo $file + ${tools_dir}/grib_ls -M -x $file > $tempLog + ${tools_dir}/grib_dump -O -M -x $file > $tempLog +done + +# Clean up +rm -f $tempText $tempLog From cf5b4c7756b1f6a3470abaca83b7627933e6db1e Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 29 Jun 2023 12:41:13 +0100 Subject: [PATCH 356/378] Testing: GRIB decoding with headers_only enabled --- tests/grib_headers_only.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/grib_headers_only.sh b/tests/grib_headers_only.sh index d6206059a..81216940a 100755 --- a/tests/grib_headers_only.sh +++ b/tests/grib_headers_only.sh @@ -29,8 +29,8 @@ for file in $files; do [ $status -ne 0 ] done -$EXEC ${tools_dir}/grib_dump -M -x -O $sample_g1 > $tempLog -$EXEC ${tools_dir}/grib_dump -M -x -O $sample_g2 > $tempLog +${tools_dir}/grib_dump -M -x -O $sample_g1 > $tempLog +${tools_dir}/grib_dump -M -x -O $sample_g2 > $tempLog files="reduced_gaussian_lsm.grib1 From eaa03277f1ef64af36ed40d9dde76edb77a69985 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 29 Jun 2023 12:45:41 +0100 Subject: [PATCH 357/378] Testing: Fix run with valgrind --- tests/grib_headers_only.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/grib_headers_only.sh b/tests/grib_headers_only.sh index 81216940a..99ee010bb 100755 --- a/tests/grib_headers_only.sh +++ b/tests/grib_headers_only.sh @@ -21,7 +21,7 @@ sample_g2="$ECCODES_SAMPLES_PATH/GRIB2.tmpl" files="$sample_g1 $sample_g2" for file in $files; do # Since we're not including the data section, the packingType key must not appear - $EXEC ${tools_dir}/grib_ls -j -M -x $sample_g1 > $tempLog + ${tools_dir}/grib_ls -j -M -x $sample_g1 > $tempLog set +e grep -q "packingType" $tempLog status=$? From f8206167141b9a3d066a0c48e58e4fc58e335f7e Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 29 Jun 2023 12:55:33 +0100 Subject: [PATCH 358/378] Testing: Fix broken test --- tests/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 8ba6ee8da..a1dc38fae 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -81,7 +81,6 @@ if( HAVE_BUILD_TOOLS ) definitions grib2_version grib_calendar - grib_headers_only grib_md5 grib_cfNames grib_packing_order @@ -149,6 +148,7 @@ if( HAVE_BUILD_TOOLS ) grib_change_packing grib_grid_space_view grib_partial_message + grib_headers_only grib_count bufr_templates bufr_dump_data From c418dd29d0d24e19e611c2264d5e40f9543daafa Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 29 Jun 2023 12:58:04 +0100 Subject: [PATCH 359/378] Testing: Fix broken test (data download required) --- tests/grib_headers_only.sh | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/tests/grib_headers_only.sh b/tests/grib_headers_only.sh index 99ee010bb..1c98adf9b 100755 --- a/tests/grib_headers_only.sh +++ b/tests/grib_headers_only.sh @@ -18,10 +18,11 @@ rm -f $tempText $tempLog sample_g1="$ECCODES_SAMPLES_PATH/GRIB1.tmpl" sample_g2="$ECCODES_SAMPLES_PATH/GRIB2.tmpl" -files="$sample_g1 $sample_g2" +# files="$sample_g1 $sample_g2" #TODO: include GRIB2 as well +files="$sample_g1" #TODO: include GRIB2 as well for file in $files; do # Since we're not including the data section, the packingType key must not appear - ${tools_dir}/grib_ls -j -M -x $sample_g1 > $tempLog + ${tools_dir}/grib_ls -j -M -x $file > $tempLog set +e grep -q "packingType" $tempLog status=$? @@ -38,20 +39,12 @@ reduced_gaussian_model_level.grib1 reduced_gaussian_model_level.grib2 reduced_gaussian_pressure_level.grib1 reduced_gaussian_pressure_level.grib2 -reduced_gaussian_pressure_level_constant.grib1 -reduced_gaussian_pressure_level_constant.grib2 -reduced_gaussian_sub_area.grib1 -reduced_gaussian_sub_area.grib2 reduced_gaussian_surface.grib1 reduced_gaussian_surface.grib2 reduced_latlon_surface.grib1 reduced_latlon_surface.grib2 -regular_gaussian_model_level.grib1 -regular_gaussian_model_level.grib2 regular_gaussian_pressure_level.grib1 regular_gaussian_pressure_level.grib2 -regular_gaussian_pressure_level_constant.grib1 -regular_gaussian_pressure_level_constant.grib2 regular_gaussian_surface.grib1 regular_gaussian_surface.grib2 regular_latlon_surface.grib1 From 1434f39c42422b376c1a4bb617d1761020a51588 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 29 Jun 2023 16:17:34 +0100 Subject: [PATCH 360/378] Definitions: Comments --- definitions/grib2/template.7.0.def | 2 -- definitions/grib2/template.7.1.def | 3 --- definitions/grib2/template.7.40.def | 6 +----- definitions/grib2/template.7.41.def | 7 +++---- definitions/grib2/template.7.50.def | 2 -- definitions/grib2/template.7.50000.def | 3 ++- definitions/grib2/template.7.50001.def | 3 ++- definitions/grib2/template.7.50002.def | 2 ++ definitions/grib2/template.7.51.def | 3 --- definitions/grib2/template.7.6.def | 1 - 10 files changed, 10 insertions(+), 22 deletions(-) diff --git a/definitions/grib2/template.7.0.def b/definitions/grib2/template.7.0.def index 02b4ea60c..1a8de3684 100644 --- a/definitions/grib2/template.7.0.def +++ b/definitions/grib2/template.7.0.def @@ -1,8 +1,6 @@ # (C) Copyright 2005- ECMWF. # TEMPLATE 7.0, Grid point data - simple packing -# Octets 6-nn : Binary data values - binary string, with each -# (scaled) meta codedValues data_g2simple_packing( section7Length, diff --git a/definitions/grib2/template.7.1.def b/definitions/grib2/template.7.1.def index 1f1f6ab57..b5376139a 100644 --- a/definitions/grib2/template.7.1.def +++ b/definitions/grib2/template.7.1.def @@ -1,9 +1,6 @@ # (C) Copyright 2005- ECMWF. # TEMPLATE 7.1, Matrix values at grid point -simple packing -# Octets 6-nn : Binary data values - binary string, with each -# (scaled) -# ???? data_values__binary_string_with_each meta codedValues data_g2simple_packing( section7Length, diff --git a/definitions/grib2/template.7.40.def b/definitions/grib2/template.7.40.def index 731d7979e..3fa1d3299 100644 --- a/definitions/grib2/template.7.40.def +++ b/definitions/grib2/template.7.40.def @@ -1,9 +1,6 @@ # (C) Copyright 2005- ECMWF. -# TEMPLATE 7.40, Grid point data - jpeg2000 -# Octets 6-xx : NG group reference values -# (XI in the decoding formula) -# ???? ng_group_reference_values +# TEMPLATE 7.40, Grid point data - JPEG2000 meta codedValues data_jpeg2000_packing( @@ -28,7 +25,6 @@ meta codedValues data_jpeg2000_packing( #bitsPerValue, # For encoding - typeOfCompressionUsed, targetCompressionRatio, Nx, diff --git a/definitions/grib2/template.7.41.def b/definitions/grib2/template.7.41.def index 31e90a54e..f4b79671c 100644 --- a/definitions/grib2/template.7.41.def +++ b/definitions/grib2/template.7.41.def @@ -1,6 +1,7 @@ # (C) Copyright 2005- ECMWF. -# TEMPLATE 7.41, Grid point data - png +# TEMPLATE 7.41, Grid point data - PNG + meta codedValues data_png_packing( section7Length, offsetBeforeData, @@ -10,11 +11,9 @@ meta codedValues data_png_packing( binaryScaleFactor, decimalScaleFactor, bitsPerValue, - - # For encoding + # For encoding Nx, Ny, - interpretationOfNumberOfPoints, numberOfDataPoints, scanningMode diff --git a/definitions/grib2/template.7.50.def b/definitions/grib2/template.7.50.def index 60dcddd12..8ff1483f4 100644 --- a/definitions/grib2/template.7.50.def +++ b/definitions/grib2/template.7.50.def @@ -1,8 +1,6 @@ # (C) Copyright 2005- ECMWF. # TEMPLATE 7.50, Spectral data - simple packing -# Octets 6-nn : Binary data values - binary string, with each -# (scaled) transient numberOfValues = ( J + 1 ) * ( J + 2 ) : no_copy ; transient numberOfPackedValues = numberOfValues - 1 : no_copy; diff --git a/definitions/grib2/template.7.50000.def b/definitions/grib2/template.7.50000.def index 0a45b8cd7..1aef1204e 100644 --- a/definitions/grib2/template.7.50000.def +++ b/definitions/grib2/template.7.50000.def @@ -1,5 +1,6 @@ # (C) Copyright 2005- ECMWF. -# spectral_ieee + +# TEMPLATE 7.50000, spectral_ieee constant GRIBEXShBugPresent = 0; constant sphericalHarmonics = 1; diff --git a/definitions/grib2/template.7.50001.def b/definitions/grib2/template.7.50001.def index 35e5fe602..1eb465a32 100644 --- a/definitions/grib2/template.7.50001.def +++ b/definitions/grib2/template.7.50001.def @@ -1,5 +1,6 @@ # (C) Copyright 2005- ECMWF. -# Second order + +# TEMPLATE 7.50001, Second order if (bitsPerValue) { meta groupWidths unsigned_bits(widthOfWidths,numberOfGroups) : read_only; diff --git a/definitions/grib2/template.7.50002.def b/definitions/grib2/template.7.50002.def index e274aaa19..b68c95816 100644 --- a/definitions/grib2/template.7.50002.def +++ b/definitions/grib2/template.7.50002.def @@ -1,5 +1,7 @@ # (C) Copyright 2005- ECMWF. +# TEMPLATE 7.50002, grid_second_order, grid_second_order_boustrophedonic + meta groupWidths unsigned_bits(widthOfWidths,numberOfGroups) : read_only; meta groupLengths unsigned_bits(widthOfLengths,numberOfGroups) : read_only; meta firstOrderValues unsigned_bits(widthOfFirstOrderValues,numberOfGroups) : read_only; diff --git a/definitions/grib2/template.7.51.def b/definitions/grib2/template.7.51.def index 04522eb68..c17de4aca 100644 --- a/definitions/grib2/template.7.51.def +++ b/definitions/grib2/template.7.51.def @@ -1,9 +1,6 @@ # (C) Copyright 2005- ECMWF. # TEMPLATE 7.51, Spherical harmonics - complex packing -# Octets 6-(5+I*TS) : Data values from the unpacked subset -# (IEEE floating-point values on I octets) -# ???? data_values_from_the_unpacked_subset constant GRIBEXShBugPresent = 0; constant sphericalHarmonics = 1; diff --git a/definitions/grib2/template.7.6.def b/definitions/grib2/template.7.6.def index 5fd1c1afe..f4308d128 100644 --- a/definitions/grib2/template.7.6.def +++ b/definitions/grib2/template.7.6.def @@ -1,7 +1,6 @@ # (C) Copyright 2005- ECMWF. # TEMPLATE 7.6, Grid point data - simple packing with preprocessing -# Octets 6-nn : Binary data values - binary string, with each (scaled) meta codedValues data_g2simple_packing_with_preprocessing( section7Length, From 798b8d6a52ed7db985bc1f10630677a55e43f1b5 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 29 Jun 2023 16:18:08 +0100 Subject: [PATCH 361/378] CCSDS: Pass in key optimizeScaleFactor --- definitions/grib2/template.7.42.def | 5 ++- src/grib_accessor_class_data_ccsds_packing.cc | 32 +++++++++++-------- 2 files changed, 21 insertions(+), 16 deletions(-) diff --git a/definitions/grib2/template.7.42.def b/definitions/grib2/template.7.42.def index 6f456485f..09f1a9833 100644 --- a/definitions/grib2/template.7.42.def +++ b/definitions/grib2/template.7.42.def @@ -1,6 +1,7 @@ # (C) Copyright 2005- ECMWF. # TEMPLATE 7.42, Grid point data - CCSDS + meta codedValues data_ccsds_packing( section7Length, offsetBeforeData, @@ -9,14 +10,12 @@ meta codedValues data_ccsds_packing( referenceValue, binaryScaleFactor, decimalScaleFactor, + optimizeScaleFactor, bitsPerValue, - numberOfDataPoints, - ccsdsFlags, ccsdsBlockSize, ccsdsRsi - ): read_only; meta values data_apply_bitmap(codedValues, diff --git a/src/grib_accessor_class_data_ccsds_packing.cc b/src/grib_accessor_class_data_ccsds_packing.cc index 7f0b511d3..5762781aa 100644 --- a/src/grib_accessor_class_data_ccsds_packing.cc +++ b/src/grib_accessor_class_data_ccsds_packing.cc @@ -29,10 +29,9 @@ MEMBERS=const char* reference_value MEMBERS=const char* binary_scale_factor MEMBERS=const char* decimal_scale_factor + MEMBERS=const char* optimize_scaling_factor MEMBERS=const char* bits_per_value - MEMBERS=const char* number_of_data_points - MEMBERS=const char* ccsds_flags MEMBERS=const char* ccsds_block_size MEMBERS=const char* ccsds_rsi @@ -75,6 +74,7 @@ typedef struct grib_accessor_data_ccsds_packing const char* reference_value; const char* binary_scale_factor; const char* decimal_scale_factor; + const char* optimize_scaling_factor; const char* bits_per_value; const char* number_of_data_points; const char* ccsds_flags; @@ -140,17 +140,18 @@ grib_accessor_class* grib_accessor_class_data_ccsds_packing = &_grib_accessor_cl static void init(grib_accessor* a, const long v, grib_arguments* args) { grib_accessor_data_ccsds_packing* self = (grib_accessor_data_ccsds_packing*)a; - grib_handle* h = grib_handle_of_accessor(a); - - self->number_of_values = grib_arguments_get_name(h, args, self->carg++); - self->reference_value = grib_arguments_get_name(h, args, self->carg++); - self->binary_scale_factor = grib_arguments_get_name(h, args, self->carg++); - self->decimal_scale_factor = grib_arguments_get_name(h, args, self->carg++); - self->bits_per_value = grib_arguments_get_name(h, args, self->carg++); - self->number_of_data_points = grib_arguments_get_name(h, args, self->carg++); - self->ccsds_flags = grib_arguments_get_name(h, args, self->carg++); - self->ccsds_block_size = grib_arguments_get_name(h, args, self->carg++); - self->ccsds_rsi = grib_arguments_get_name(h, args, self->carg++); + grib_handle* h = grib_handle_of_accessor(a); + + self->number_of_values = grib_arguments_get_name(h, args, self->carg++); + self->reference_value = grib_arguments_get_name(h, args, self->carg++); + self->binary_scale_factor = grib_arguments_get_name(h, args, self->carg++); + self->decimal_scale_factor = grib_arguments_get_name(h, args, self->carg++); + self->optimize_scaling_factor = grib_arguments_get_name(h, args, self->carg++); + self->bits_per_value = grib_arguments_get_name(h, args, self->carg++); + self->number_of_data_points = grib_arguments_get_name(h, args, self->carg++); + self->ccsds_flags = grib_arguments_get_name(h, args, self->carg++); + self->ccsds_block_size = grib_arguments_get_name(h, args, self->carg++); + self->ccsds_rsi = grib_arguments_get_name(h, args, self->carg++); a->flags |= GRIB_ACCESSOR_FLAG_DATA; } @@ -223,6 +224,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) long binary_scale_factor = 0; long decimal_scale_factor = 0; + //long optimize_scaling_factor = 0; double reference_value = 0; long bits_per_value = 0; double max, min, d, divisor; @@ -247,6 +249,10 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len) return err; if ((err = grib_get_long_internal(hand, self->decimal_scale_factor, &decimal_scale_factor)) != GRIB_SUCCESS) return err; + + //if ((err = grib_get_long_internal(gh, self->optimize_scaling_factor, &optimize_scaling_factor)) != GRIB_SUCCESS) + // return err; + if ((err = grib_get_long_internal(hand, self->ccsds_flags, &ccsds_flags)) != GRIB_SUCCESS) return err; if ((err = grib_get_long_internal(hand, self->ccsds_block_size, &ccsds_block_size)) != GRIB_SUCCESS) From 7b240da8d5cbbb25255aa5ff7c608c56ff3019d3 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 30 Jun 2023 14:57:44 +0000 Subject: [PATCH 362/378] Dead code removal: init_class --- src/accessor.class | 1 - src/grib_accessor_class_abstract_long_vector.cc | 1 - src/grib_accessor_class_abstract_vector.cc | 1 - src/grib_accessor_class_array.cc | 1 - src/grib_accessor_class_ascii.cc | 1 - src/grib_accessor_class_assert.cc | 1 - src/grib_accessor_class_bit.cc | 1 - src/grib_accessor_class_bitmap.cc | 1 - src/grib_accessor_class_bits.cc | 1 - src/grib_accessor_class_bits_per_value.cc | 1 - src/grib_accessor_class_blob.cc | 1 - src/grib_accessor_class_budgdate.cc | 1 - src/grib_accessor_class_bufr_data_array.cc | 1 - src/grib_accessor_class_bufr_data_element.cc | 1 - src/grib_accessor_class_bufr_elements_table.cc | 1 - src/grib_accessor_class_bufr_extract_area_subsets.cc | 1 - src/grib_accessor_class_bufr_extract_datetime_subsets.cc | 1 - src/grib_accessor_class_bufr_extract_subsets.cc | 1 - src/grib_accessor_class_bufr_group.cc | 1 - src/grib_accessor_class_bufr_simple_thinning.cc | 1 - src/grib_accessor_class_bufr_string_values.cc | 1 - src/grib_accessor_class_bufrdc_expanded_descriptors.cc | 1 - src/grib_accessor_class_bytes.cc | 1 - src/grib_accessor_class_change_alternative_row_scanning.cc | 1 - src/grib_accessor_class_change_scanning_direction.cc | 1 - src/grib_accessor_class_check_internal_version.cc | 1 - src/grib_accessor_class_closest_date.cc | 1 - src/grib_accessor_class_codeflag.cc | 1 - src/grib_accessor_class_codetable.cc | 1 - src/grib_accessor_class_codetable_title.cc | 1 - src/grib_accessor_class_codetable_units.cc | 1 - src/grib_accessor_class_concept.cc | 1 - src/grib_accessor_class_constant.cc | 1 - src/grib_accessor_class_count_file.cc | 1 - src/grib_accessor_class_count_missing.cc | 1 - src/grib_accessor_class_count_total.cc | 1 - src/grib_accessor_class_data_2order_packing.cc | 1 - src/grib_accessor_class_data_apply_bitmap.cc | 1 - src/grib_accessor_class_data_apply_boustrophedonic.cc | 1 - src/grib_accessor_class_data_apply_boustrophedonic_bitmap.cc | 1 - src/grib_accessor_class_data_apply_gdsnotpresent.cc | 1 - src/grib_accessor_class_data_ccsds_packing.cc | 1 - src/grib_accessor_class_data_complex_packing.cc | 1 - src/grib_accessor_class_data_dummy_field.cc | 1 - src/grib_accessor_class_data_g1complex_packing.cc | 1 - ..._accessor_class_data_g1second_order_constant_width_packing.cc | 1 - ...ccessor_class_data_g1second_order_general_extended_packing.cc | 1 - src/grib_accessor_class_data_g1second_order_general_packing.cc | 1 - ...grib_accessor_class_data_g1second_order_row_by_row_packing.cc | 1 - src/grib_accessor_class_data_g1secondary_bitmap.cc | 1 - src/grib_accessor_class_data_g1shsimple_packing.cc | 1 - src/grib_accessor_class_data_g1simple_packing.cc | 1 - src/grib_accessor_class_data_g22order_packing.cc | 1 - src/grib_accessor_class_data_g2bifourier_packing.cc | 1 - src/grib_accessor_class_data_g2complex_packing.cc | 1 - src/grib_accessor_class_data_g2secondary_bitmap.cc | 1 - src/grib_accessor_class_data_g2shsimple_packing.cc | 1 - src/grib_accessor_class_data_g2simple_packing.cc | 1 - ...ib_accessor_class_data_g2simple_packing_with_preprocessing.cc | 1 - src/grib_accessor_class_data_jpeg2000_packing.cc | 1 - src/grib_accessor_class_data_png_packing.cc | 1 - src/grib_accessor_class_data_raw_packing.cc | 1 - src/grib_accessor_class_data_run_length_packing.cc | 1 - src/grib_accessor_class_data_secondary_bitmap.cc | 1 - src/grib_accessor_class_data_sh_packed.cc | 1 - src/grib_accessor_class_data_sh_unpacked.cc | 1 - src/grib_accessor_class_data_shsimple_packing.cc | 1 - src/grib_accessor_class_data_simple_packing.cc | 1 - src/grib_accessor_class_decimal_precision.cc | 1 - src/grib_accessor_class_dictionary.cc | 1 - src/grib_accessor_class_dirty.cc | 1 - src/grib_accessor_class_divdouble.cc | 1 - src/grib_accessor_class_double.cc | 1 - src/grib_accessor_class_element.cc | 1 - src/grib_accessor_class_evaluate.cc | 1 - src/grib_accessor_class_expanded_descriptors.cc | 1 - src/grib_accessor_class_from_scale_factor_scaled_value.cc | 1 - src/grib_accessor_class_g1_half_byte_codeflag.cc | 1 - src/grib_accessor_class_g1_message_length.cc | 1 - src/grib_accessor_class_g1_section4_length.cc | 1 - src/grib_accessor_class_g1area.cc | 1 - src/grib_accessor_class_g1bitmap.cc | 1 - src/grib_accessor_class_g1date.cc | 1 - src/grib_accessor_class_g1day_of_the_year_date.cc | 1 - src/grib_accessor_class_g1end_of_interval_monthly.cc | 1 - src/grib_accessor_class_g1fcperiod.cc | 1 - src/grib_accessor_class_g1forecastmonth.cc | 1 - src/grib_accessor_class_g1monthlydate.cc | 1 - src/grib_accessor_class_g1number_of_coded_values_sh_complex.cc | 1 - src/grib_accessor_class_g1number_of_coded_values_sh_simple.cc | 1 - src/grib_accessor_class_g1step_range.cc | 1 - src/grib_accessor_class_g1verificationdate.cc | 1 - src/grib_accessor_class_g2_aerosol.cc | 1 - src/grib_accessor_class_g2_chemical.cc | 1 - src/grib_accessor_class_g2_eps.cc | 1 - src/grib_accessor_class_g2_mars_labeling.cc | 1 - src/grib_accessor_class_g2bitmap.cc | 1 - src/grib_accessor_class_g2bitmap_present.cc | 1 - src/grib_accessor_class_g2date.cc | 1 - src/grib_accessor_class_g2end_step.cc | 1 - src/grib_accessor_class_g2grid.cc | 1 - src/grib_accessor_class_g2latlon.cc | 1 - src/grib_accessor_class_g2level.cc | 1 - src/grib_accessor_class_g2lon.cc | 1 - src/grib_accessor_class_g2step_range.cc | 1 - src/grib_accessor_class_gaussian_grid_name.cc | 1 - src/grib_accessor_class_gds_is_present.cc | 1 - src/grib_accessor_class_gds_not_present_bitmap.cc | 1 - src/grib_accessor_class_gen.cc | 1 - src/grib_accessor_class_getenv.cc | 1 - src/grib_accessor_class_global_gaussian.cc | 1 - src/grib_accessor_class_group.cc | 1 - src/grib_accessor_class_gts_header.cc | 1 - src/grib_accessor_class_hash_array.cc | 1 - src/grib_accessor_class_headers_only.cc | 1 - src/grib_accessor_class_ibmfloat.cc | 1 - src/grib_accessor_class_ieeefloat.cc | 1 - src/grib_accessor_class_ifs_param.cc | 1 - src/grib_accessor_class_int16.cc | 1 - src/grib_accessor_class_int16_little_endian.cc | 1 - src/grib_accessor_class_int32.cc | 1 - src/grib_accessor_class_int32_little_endian.cc | 1 - src/grib_accessor_class_int64.cc | 1 - src/grib_accessor_class_int64_little_endian.cc | 1 - src/grib_accessor_class_int8.cc | 1 - src/grib_accessor_class_iterator.cc | 1 - src/grib_accessor_class_julian_date.cc | 1 - src/grib_accessor_class_julian_day.cc | 1 - src/grib_accessor_class_ksec1expver.cc | 1 - src/grib_accessor_class_label.cc | 1 - src/grib_accessor_class_laplacian.cc | 1 - src/grib_accessor_class_latitudes.cc | 1 - src/grib_accessor_class_latlon_increment.cc | 1 - src/grib_accessor_class_latlonvalues.cc | 1 - src/grib_accessor_class_library_version.cc | 1 - src/grib_accessor_class_local_definition.cc | 1 - src/grib_accessor_class_long.cc | 1 - src/grib_accessor_class_long_vector.cc | 1 - src/grib_accessor_class_longitudes.cc | 1 - src/grib_accessor_class_lookup.cc | 1 - src/grib_accessor_class_mars_param.cc | 1 - src/grib_accessor_class_mars_step.cc | 1 - src/grib_accessor_class_md5.cc | 1 - src/grib_accessor_class_message.cc | 1 - src/grib_accessor_class_message_copy.cc | 1 - src/grib_accessor_class_missing.cc | 1 - src/grib_accessor_class_nearest.cc | 1 - src/grib_accessor_class_non_alpha.cc | 1 - src/grib_accessor_class_number_of_coded_values.cc | 1 - src/grib_accessor_class_number_of_points.cc | 1 - src/grib_accessor_class_number_of_points_gaussian.cc | 1 - src/grib_accessor_class_number_of_values.cc | 1 - src/grib_accessor_class_number_of_values_data_raw_packing.cc | 1 - src/grib_accessor_class_octahedral_gaussian.cc | 1 - src/grib_accessor_class_octet_number.cc | 1 - src/grib_accessor_class_offset_file.cc | 1 - src/grib_accessor_class_offset_values.cc | 1 - src/grib_accessor_class_pack_bufr_values.cc | 1 - src/grib_accessor_class_pad.cc | 1 - src/grib_accessor_class_padding.cc | 1 - src/grib_accessor_class_padto.cc | 1 - src/grib_accessor_class_padtoeven.cc | 1 - src/grib_accessor_class_padtomultiple.cc | 1 - src/grib_accessor_class_position.cc | 1 - src/grib_accessor_class_proj_string.cc | 1 - src/grib_accessor_class_raw.cc | 1 - src/grib_accessor_class_rdbtime_guess_date.cc | 1 - src/grib_accessor_class_reference_value_error.cc | 1 - src/grib_accessor_class_round.cc | 1 - src/grib_accessor_class_scale.cc | 1 - src/grib_accessor_class_scale_values.cc | 1 - src/grib_accessor_class_second_order_bits_per_value.cc | 1 - src/grib_accessor_class_section.cc | 1 - src/grib_accessor_class_section_length.cc | 1 - src/grib_accessor_class_section_padding.cc | 1 - src/grib_accessor_class_section_pointer.cc | 1 - src/grib_accessor_class_select_step_template.cc | 1 - src/grib_accessor_class_sexagesimal2decimal.cc | 1 - src/grib_accessor_class_signed.cc | 1 - src/grib_accessor_class_signed_bits.cc | 1 - src/grib_accessor_class_simple_packing_error.cc | 1 - src/grib_accessor_class_size.cc | 1 - src/grib_accessor_class_smart_table.cc | 1 - src/grib_accessor_class_smart_table_column.cc | 1 - src/grib_accessor_class_spd.cc | 1 - src/grib_accessor_class_spectral_truncation.cc | 1 - src/grib_accessor_class_sprintf.cc | 1 - src/grib_accessor_class_statistics.cc | 1 - src/grib_accessor_class_statistics_spectral.cc | 1 - src/grib_accessor_class_step_human_readable.cc | 1 - src/grib_accessor_class_step_in_units.cc | 1 - src/grib_accessor_class_sum.cc | 1 - src/grib_accessor_class_suppressed.cc | 1 - src/grib_accessor_class_time.cc | 1 - src/grib_accessor_class_times.cc | 1 - src/grib_accessor_class_to_double.cc | 1 - src/grib_accessor_class_to_integer.cc | 1 - src/grib_accessor_class_to_string.cc | 1 - src/grib_accessor_class_transient.cc | 1 - src/grib_accessor_class_transient_darray.cc | 1 - src/grib_accessor_class_trim.cc | 1 - src/grib_accessor_class_uint16.cc | 1 - src/grib_accessor_class_uint16_little_endian.cc | 1 - src/grib_accessor_class_uint32.cc | 1 - src/grib_accessor_class_uint32_little_endian.cc | 1 - src/grib_accessor_class_uint64.cc | 1 - src/grib_accessor_class_uint64_little_endian.cc | 1 - src/grib_accessor_class_uint8.cc | 1 - src/grib_accessor_class_unexpanded_descriptors.cc | 1 - src/grib_accessor_class_unpack_bufr_values.cc | 1 - src/grib_accessor_class_unsigned.cc | 1 - src/grib_accessor_class_unsigned_bits.cc | 1 - src/grib_accessor_class_validity_date.cc | 1 - src/grib_accessor_class_validity_time.cc | 1 - src/grib_accessor_class_values.cc | 1 - src/grib_accessor_class_variable.cc | 1 - src/grib_accessor_class_vector.cc | 1 - src/grib_accessor_class_when.cc | 1 - 218 files changed, 218 deletions(-) diff --git a/src/accessor.class b/src/accessor.class index dd3853061..c7d61efc4 100644 --- a/src/accessor.class +++ b/src/accessor.class @@ -24,7 +24,6 @@ static void destroy(grib_context*, grib_accessor*); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); static void post_init(grib_accessor*); -//static void init_class(grib_accessor_class*); static int notify_change(grib_accessor*, grib_accessor*); static void update_size(grib_accessor*, size_t); static size_t preferred_size(grib_accessor*, int); diff --git a/src/grib_accessor_class_abstract_long_vector.cc b/src/grib_accessor_class_abstract_long_vector.cc index e62eb9bfc..523e0a740 100644 --- a/src/grib_accessor_class_abstract_long_vector.cc +++ b/src/grib_accessor_class_abstract_long_vector.cc @@ -36,7 +36,6 @@ or edit "accessor.class" and rerun ./make_class.pl */ -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_abstract_long_vector { diff --git a/src/grib_accessor_class_abstract_vector.cc b/src/grib_accessor_class_abstract_vector.cc index afdd17da8..1353aeffc 100644 --- a/src/grib_accessor_class_abstract_vector.cc +++ b/src/grib_accessor_class_abstract_vector.cc @@ -31,7 +31,6 @@ or edit "accessor.class" and rerun ./make_class.pl */ -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_abstract_vector { diff --git a/src/grib_accessor_class_array.cc b/src/grib_accessor_class_array.cc index 9898133d7..a132c8218 100644 --- a/src/grib_accessor_class_array.cc +++ b/src/grib_accessor_class_array.cc @@ -37,7 +37,6 @@ or edit "accessor.class" and rerun ./make_class.pl static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_array { diff --git a/src/grib_accessor_class_ascii.cc b/src/grib_accessor_class_ascii.cc index e6d85d600..e2901d2d7 100644 --- a/src/grib_accessor_class_ascii.cc +++ b/src/grib_accessor_class_ascii.cc @@ -50,7 +50,6 @@ static size_t string_length(grib_accessor*); static int value_count(grib_accessor*, long*); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); static int compare(grib_accessor*, grib_accessor*); typedef struct grib_accessor_ascii diff --git a/src/grib_accessor_class_assert.cc b/src/grib_accessor_class_assert.cc index 69e25a002..eb7bf9a87 100644 --- a/src/grib_accessor_class_assert.cc +++ b/src/grib_accessor_class_assert.cc @@ -38,7 +38,6 @@ or edit "accessor.class" and rerun ./make_class.pl static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); static int notify_change(grib_accessor*, grib_accessor*); typedef struct grib_accessor_assert diff --git a/src/grib_accessor_class_bit.cc b/src/grib_accessor_class_bit.cc index 0f159f0ca..f48d8c3ad 100644 --- a/src/grib_accessor_class_bit.cc +++ b/src/grib_accessor_class_bit.cc @@ -38,7 +38,6 @@ static int pack_long(grib_accessor*, const long* val, size_t* len); static int unpack_long(grib_accessor*, long* val, size_t* len); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_bit { diff --git a/src/grib_accessor_class_bitmap.cc b/src/grib_accessor_class_bitmap.cc index 881656109..e5a43668c 100644 --- a/src/grib_accessor_class_bitmap.cc +++ b/src/grib_accessor_class_bitmap.cc @@ -49,7 +49,6 @@ static int unpack_string(grib_accessor*, char*, size_t* len); static long next_offset(grib_accessor*); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); static void update_size(grib_accessor*, size_t); static int unpack_double_element(grib_accessor*, size_t i, double* val); static int unpack_double_element_set(grib_accessor*, const size_t* index_array, size_t len, double* val_array); diff --git a/src/grib_accessor_class_bits.cc b/src/grib_accessor_class_bits.cc index 7b0979bb6..5e86e2fef 100644 --- a/src/grib_accessor_class_bits.cc +++ b/src/grib_accessor_class_bits.cc @@ -57,7 +57,6 @@ static int unpack_long(grib_accessor*, long* val, size_t* len); static int unpack_string(grib_accessor*, char*, size_t* len); static long byte_count(grib_accessor*); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_bits { diff --git a/src/grib_accessor_class_bits_per_value.cc b/src/grib_accessor_class_bits_per_value.cc index 66b323c53..5648a9a69 100644 --- a/src/grib_accessor_class_bits_per_value.cc +++ b/src/grib_accessor_class_bits_per_value.cc @@ -39,7 +39,6 @@ or edit "accessor.class" and rerun ./make_class.pl static int pack_long(grib_accessor*, const long* val, size_t* len); static int unpack_long(grib_accessor*, long* val, size_t* len); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_bits_per_value { diff --git a/src/grib_accessor_class_blob.cc b/src/grib_accessor_class_blob.cc index e889173b6..7e1c1de62 100644 --- a/src/grib_accessor_class_blob.cc +++ b/src/grib_accessor_class_blob.cc @@ -35,7 +35,6 @@ static int get_native_type(grib_accessor*); static int unpack_bytes(grib_accessor*, unsigned char*, size_t* len); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_blob { diff --git a/src/grib_accessor_class_budgdate.cc b/src/grib_accessor_class_budgdate.cc index 45bb10b97..15fc9b4bd 100644 --- a/src/grib_accessor_class_budgdate.cc +++ b/src/grib_accessor_class_budgdate.cc @@ -38,7 +38,6 @@ or edit "accessor.class" and rerun ./make_class.pl static int pack_long(grib_accessor*, const long* val, size_t* len); static int unpack_long(grib_accessor*, long* val, size_t* len); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_budgdate { diff --git a/src/grib_accessor_class_bufr_data_array.cc b/src/grib_accessor_class_bufr_data_array.cc index e4ac05852..6433ffcaf 100644 --- a/src/grib_accessor_class_bufr_data_array.cc +++ b/src/grib_accessor_class_bufr_data_array.cc @@ -98,7 +98,6 @@ static int value_count(grib_accessor*, long*); static void destroy(grib_context*, grib_accessor*); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); static int compare(grib_accessor*, grib_accessor*); typedef struct grib_accessor_bufr_data_array diff --git a/src/grib_accessor_class_bufr_data_element.cc b/src/grib_accessor_class_bufr_data_element.cc index 45dd15f7d..7ae0e2fd9 100644 --- a/src/grib_accessor_class_bufr_data_element.cc +++ b/src/grib_accessor_class_bufr_data_element.cc @@ -65,7 +65,6 @@ static int value_count(grib_accessor*, long*); static void destroy(grib_context*, grib_accessor*); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); static int unpack_double_element(grib_accessor*, size_t i, double* val); static grib_accessor* make_clone(grib_accessor*, grib_section*, int*); diff --git a/src/grib_accessor_class_bufr_elements_table.cc b/src/grib_accessor_class_bufr_elements_table.cc index 0565a8489..603e1ce25 100644 --- a/src/grib_accessor_class_bufr_elements_table.cc +++ b/src/grib_accessor_class_bufr_elements_table.cc @@ -74,7 +74,6 @@ static int unpack_long(grib_accessor*, long* val, size_t* len); static int unpack_string(grib_accessor*, char*, size_t* len); static int value_count(grib_accessor*, long*); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_bufr_elements_table { diff --git a/src/grib_accessor_class_bufr_extract_area_subsets.cc b/src/grib_accessor_class_bufr_extract_area_subsets.cc index 7fd1d70be..5659ace91 100644 --- a/src/grib_accessor_class_bufr_extract_area_subsets.cc +++ b/src/grib_accessor_class_bufr_extract_area_subsets.cc @@ -44,7 +44,6 @@ or edit "accessor.class" and rerun ./make_class.pl static int get_native_type(grib_accessor*); static int pack_long(grib_accessor*, const long* val, size_t* len); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_bufr_extract_area_subsets { diff --git a/src/grib_accessor_class_bufr_extract_datetime_subsets.cc b/src/grib_accessor_class_bufr_extract_datetime_subsets.cc index 46792a76a..d5ec98bf6 100644 --- a/src/grib_accessor_class_bufr_extract_datetime_subsets.cc +++ b/src/grib_accessor_class_bufr_extract_datetime_subsets.cc @@ -37,7 +37,6 @@ or edit "accessor.class" and rerun ./make_class.pl static int get_native_type(grib_accessor*); static int pack_long(grib_accessor*, const long* val, size_t* len); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_bufr_extract_datetime_subsets { diff --git a/src/grib_accessor_class_bufr_extract_subsets.cc b/src/grib_accessor_class_bufr_extract_subsets.cc index 969a8b59f..599d1d7b4 100644 --- a/src/grib_accessor_class_bufr_extract_subsets.cc +++ b/src/grib_accessor_class_bufr_extract_subsets.cc @@ -38,7 +38,6 @@ or edit "accessor.class" and rerun ./make_class.pl static int get_native_type(grib_accessor*); static int pack_long(grib_accessor*, const long* val, size_t* len); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_bufr_extract_subsets { diff --git a/src/grib_accessor_class_bufr_group.cc b/src/grib_accessor_class_bufr_group.cc index 216cf308c..3f7aa745c 100644 --- a/src/grib_accessor_class_bufr_group.cc +++ b/src/grib_accessor_class_bufr_group.cc @@ -32,7 +32,6 @@ or edit "accessor.class" and rerun ./make_class.pl */ static void dump(grib_accessor*, grib_dumper*); -//static void init_class(grib_accessor_class*); static grib_accessor* next(grib_accessor*, int); typedef struct grib_accessor_bufr_group diff --git a/src/grib_accessor_class_bufr_simple_thinning.cc b/src/grib_accessor_class_bufr_simple_thinning.cc index 96f9d5f0d..e4d110262 100644 --- a/src/grib_accessor_class_bufr_simple_thinning.cc +++ b/src/grib_accessor_class_bufr_simple_thinning.cc @@ -40,7 +40,6 @@ or edit "accessor.class" and rerun ./make_class.pl static int get_native_type(grib_accessor*); static int pack_long(grib_accessor*, const long* val, size_t* len); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_bufr_simple_thinning { diff --git a/src/grib_accessor_class_bufr_string_values.cc b/src/grib_accessor_class_bufr_string_values.cc index 541279332..94e0f2216 100644 --- a/src/grib_accessor_class_bufr_string_values.cc +++ b/src/grib_accessor_class_bufr_string_values.cc @@ -51,7 +51,6 @@ static int value_count(grib_accessor*, long*); static void destroy(grib_context*, grib_accessor*); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_bufr_string_values { diff --git a/src/grib_accessor_class_bufrdc_expanded_descriptors.cc b/src/grib_accessor_class_bufrdc_expanded_descriptors.cc index 590c41860..496666651 100644 --- a/src/grib_accessor_class_bufrdc_expanded_descriptors.cc +++ b/src/grib_accessor_class_bufrdc_expanded_descriptors.cc @@ -49,7 +49,6 @@ static int value_count(grib_accessor*, long*); static void destroy(grib_context*, grib_accessor*); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_bufrdc_expanded_descriptors { diff --git a/src/grib_accessor_class_bytes.cc b/src/grib_accessor_class_bytes.cc index 8e8440815..158714998 100644 --- a/src/grib_accessor_class_bytes.cc +++ b/src/grib_accessor_class_bytes.cc @@ -35,7 +35,6 @@ static int get_native_type(grib_accessor*); static int pack_string(grib_accessor*, const char*, size_t* len); static int unpack_string(grib_accessor*, char*, size_t* len); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); static int compare(grib_accessor*, grib_accessor*); typedef struct grib_accessor_bytes diff --git a/src/grib_accessor_class_change_alternative_row_scanning.cc b/src/grib_accessor_class_change_alternative_row_scanning.cc index 548264158..394bb8409 100644 --- a/src/grib_accessor_class_change_alternative_row_scanning.cc +++ b/src/grib_accessor_class_change_alternative_row_scanning.cc @@ -40,7 +40,6 @@ static int get_native_type(grib_accessor*); static int pack_long(grib_accessor*, const long* val, size_t* len); static int unpack_long(grib_accessor*, long* val, size_t* len); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_change_alternative_row_scanning { diff --git a/src/grib_accessor_class_change_scanning_direction.cc b/src/grib_accessor_class_change_scanning_direction.cc index 85a518718..91e597135 100644 --- a/src/grib_accessor_class_change_scanning_direction.cc +++ b/src/grib_accessor_class_change_scanning_direction.cc @@ -44,7 +44,6 @@ static int get_native_type(grib_accessor*); static int pack_long(grib_accessor*, const long* val, size_t* len); static int unpack_long(grib_accessor*, long* val, size_t* len); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_change_scanning_direction { diff --git a/src/grib_accessor_class_check_internal_version.cc b/src/grib_accessor_class_check_internal_version.cc index 04f281cbb..d59f353de 100644 --- a/src/grib_accessor_class_check_internal_version.cc +++ b/src/grib_accessor_class_check_internal_version.cc @@ -34,7 +34,6 @@ or edit "accessor.class" and rerun ./make_class.pl static size_t string_length(grib_accessor*); static int value_count(grib_accessor*, long*); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_check_internal_version { diff --git a/src/grib_accessor_class_closest_date.cc b/src/grib_accessor_class_closest_date.cc index d898fa604..b4729822f 100644 --- a/src/grib_accessor_class_closest_date.cc +++ b/src/grib_accessor_class_closest_date.cc @@ -48,7 +48,6 @@ static int unpack_double(grib_accessor*, double* val, size_t* len); static int unpack_long(grib_accessor*, long* val, size_t* len); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_closest_date { diff --git a/src/grib_accessor_class_codeflag.cc b/src/grib_accessor_class_codeflag.cc index 75570cc28..77789389d 100644 --- a/src/grib_accessor_class_codeflag.cc +++ b/src/grib_accessor_class_codeflag.cc @@ -39,7 +39,6 @@ or edit "accessor.class" and rerun ./make_class.pl static int value_count(grib_accessor*, long*); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_codeflag { diff --git a/src/grib_accessor_class_codetable.cc b/src/grib_accessor_class_codetable.cc index 60e7b7cbf..0f594456c 100644 --- a/src/grib_accessor_class_codetable.cc +++ b/src/grib_accessor_class_codetable.cc @@ -79,7 +79,6 @@ static int value_count(grib_accessor*, long*); static void destroy(grib_context*, grib_accessor*); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_codetable { diff --git a/src/grib_accessor_class_codetable_title.cc b/src/grib_accessor_class_codetable_title.cc index 0a80a0f31..88d2a0e91 100644 --- a/src/grib_accessor_class_codetable_title.cc +++ b/src/grib_accessor_class_codetable_title.cc @@ -35,7 +35,6 @@ or edit "accessor.class" and rerun ./make_class.pl static int get_native_type(grib_accessor*); static int unpack_string(grib_accessor*, char*, size_t* len); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_codetable_title { diff --git a/src/grib_accessor_class_codetable_units.cc b/src/grib_accessor_class_codetable_units.cc index aaaf9cffd..55faaa0bb 100644 --- a/src/grib_accessor_class_codetable_units.cc +++ b/src/grib_accessor_class_codetable_units.cc @@ -35,7 +35,6 @@ or edit "accessor.class" and rerun ./make_class.pl static int get_native_type(grib_accessor*); static int unpack_string(grib_accessor*, char*, size_t* len); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_codetable_units { diff --git a/src/grib_accessor_class_concept.cc b/src/grib_accessor_class_concept.cc index d69b8d1c1..a0204b1ad 100644 --- a/src/grib_accessor_class_concept.cc +++ b/src/grib_accessor_class_concept.cc @@ -52,7 +52,6 @@ static int value_count(grib_accessor*, long*); static void destroy(grib_context*, grib_accessor*); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); static int compare(grib_accessor*, grib_accessor*); typedef struct grib_accessor_concept diff --git a/src/grib_accessor_class_constant.cc b/src/grib_accessor_class_constant.cc index 4e5524336..0c98a2d4d 100644 --- a/src/grib_accessor_class_constant.cc +++ b/src/grib_accessor_class_constant.cc @@ -40,7 +40,6 @@ static int pack_double(grib_accessor*, const double* val, size_t* len); static int pack_long(grib_accessor*, const long* val, size_t* len); static int pack_string(grib_accessor*, const char*, size_t* len); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_constant { diff --git a/src/grib_accessor_class_count_file.cc b/src/grib_accessor_class_count_file.cc index 56aae6dbf..196a48038 100644 --- a/src/grib_accessor_class_count_file.cc +++ b/src/grib_accessor_class_count_file.cc @@ -36,7 +36,6 @@ or edit "accessor.class" and rerun ./make_class.pl static int unpack_long(grib_accessor*, long* val, size_t* len); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_count_file { diff --git a/src/grib_accessor_class_count_missing.cc b/src/grib_accessor_class_count_missing.cc index acc68e404..32f7f16c8 100644 --- a/src/grib_accessor_class_count_missing.cc +++ b/src/grib_accessor_class_count_missing.cc @@ -39,7 +39,6 @@ or edit "accessor.class" and rerun ./make_class.pl static int unpack_long(grib_accessor*, long* val, size_t* len); static int value_count(grib_accessor*, long*); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_count_missing { diff --git a/src/grib_accessor_class_count_total.cc b/src/grib_accessor_class_count_total.cc index df49818f3..022cc4998 100644 --- a/src/grib_accessor_class_count_total.cc +++ b/src/grib_accessor_class_count_total.cc @@ -38,7 +38,6 @@ or edit "accessor.class" and rerun ./make_class.pl static int unpack_long(grib_accessor*, long* val, size_t* len); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_count_total { diff --git a/src/grib_accessor_class_data_2order_packing.cc b/src/grib_accessor_class_data_2order_packing.cc index 2f641eb64..59f50d2ea 100644 --- a/src/grib_accessor_class_data_2order_packing.cc +++ b/src/grib_accessor_class_data_2order_packing.cc @@ -63,7 +63,6 @@ static int pack_double(grib_accessor*, const double* val, size_t* len); static int unpack_double(grib_accessor*, double* val, size_t* len); static int value_count(grib_accessor*, long*); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_data_2order_packing { diff --git a/src/grib_accessor_class_data_apply_bitmap.cc b/src/grib_accessor_class_data_apply_bitmap.cc index da64ece90..b8e77e9d0 100644 --- a/src/grib_accessor_class_data_apply_bitmap.cc +++ b/src/grib_accessor_class_data_apply_bitmap.cc @@ -48,7 +48,6 @@ static int unpack_float(grib_accessor*, float* val, size_t* len); static int value_count(grib_accessor*, long*); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); static int unpack_double_element(grib_accessor*, size_t i, double* val); static int unpack_double_element_set(grib_accessor*, const size_t* index_array, size_t len, double* val_array); diff --git a/src/grib_accessor_class_data_apply_boustrophedonic.cc b/src/grib_accessor_class_data_apply_boustrophedonic.cc index 747e47653..1f10885e0 100644 --- a/src/grib_accessor_class_data_apply_boustrophedonic.cc +++ b/src/grib_accessor_class_data_apply_boustrophedonic.cc @@ -47,7 +47,6 @@ static int unpack_float(grib_accessor*, float* val, size_t* len); static int value_count(grib_accessor*, long*); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); static int unpack_double_element(grib_accessor*, size_t i, double* val); static int unpack_double_element_set(grib_accessor*, const size_t* index_array, size_t len, double* val_array); diff --git a/src/grib_accessor_class_data_apply_boustrophedonic_bitmap.cc b/src/grib_accessor_class_data_apply_boustrophedonic_bitmap.cc index f3c6fdb35..b68e362db 100644 --- a/src/grib_accessor_class_data_apply_boustrophedonic_bitmap.cc +++ b/src/grib_accessor_class_data_apply_boustrophedonic_bitmap.cc @@ -48,7 +48,6 @@ static int unpack_double(grib_accessor*, double* val, size_t* len); static int value_count(grib_accessor*, long*); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); static int unpack_double_element(grib_accessor*, size_t i, double* val); static int unpack_double_element_set(grib_accessor*, const size_t* index_array, size_t len, double* val_array); diff --git a/src/grib_accessor_class_data_apply_gdsnotpresent.cc b/src/grib_accessor_class_data_apply_gdsnotpresent.cc index 89b42f160..417e39067 100644 --- a/src/grib_accessor_class_data_apply_gdsnotpresent.cc +++ b/src/grib_accessor_class_data_apply_gdsnotpresent.cc @@ -53,7 +53,6 @@ static int unpack_double(grib_accessor*, double* val, size_t* len); static int value_count(grib_accessor*, long*); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_data_apply_gdsnotpresent { diff --git a/src/grib_accessor_class_data_ccsds_packing.cc b/src/grib_accessor_class_data_ccsds_packing.cc index 5762781aa..3b5cee87d 100644 --- a/src/grib_accessor_class_data_ccsds_packing.cc +++ b/src/grib_accessor_class_data_ccsds_packing.cc @@ -55,7 +55,6 @@ static int unpack_double(grib_accessor*, double* val, size_t* len); static int unpack_float(grib_accessor*, float* val, size_t* len); static int value_count(grib_accessor*, long*); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); static int unpack_double_element(grib_accessor*, size_t i, double* val); static int unpack_double_element_set(grib_accessor*, const size_t* index_array, size_t len, double* val_array); diff --git a/src/grib_accessor_class_data_complex_packing.cc b/src/grib_accessor_class_data_complex_packing.cc index 85cafae38..f10640b6e 100644 --- a/src/grib_accessor_class_data_complex_packing.cc +++ b/src/grib_accessor_class_data_complex_packing.cc @@ -53,7 +53,6 @@ static int unpack_double(grib_accessor*, double* val, size_t* len); static int unpack_float(grib_accessor*, float* val, size_t* len); static int value_count(grib_accessor*, long*); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_data_complex_packing { diff --git a/src/grib_accessor_class_data_dummy_field.cc b/src/grib_accessor_class_data_dummy_field.cc index 69a14bbbd..a599bc3e7 100644 --- a/src/grib_accessor_class_data_dummy_field.cc +++ b/src/grib_accessor_class_data_dummy_field.cc @@ -41,7 +41,6 @@ static int pack_double(grib_accessor*, const double* val, size_t* len); static int unpack_double(grib_accessor*, double* val, size_t* len); static int value_count(grib_accessor*, long*); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_data_dummy_field { diff --git a/src/grib_accessor_class_data_g1complex_packing.cc b/src/grib_accessor_class_data_g1complex_packing.cc index 2f2e7dfcc..549a0e1f1 100644 --- a/src/grib_accessor_class_data_g1complex_packing.cc +++ b/src/grib_accessor_class_data_g1complex_packing.cc @@ -40,7 +40,6 @@ or edit "accessor.class" and rerun ./make_class.pl static int pack_double(grib_accessor*, const double* val, size_t* len); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_data_g1complex_packing { diff --git a/src/grib_accessor_class_data_g1second_order_constant_width_packing.cc b/src/grib_accessor_class_data_g1second_order_constant_width_packing.cc index 33b28f508..a18ef2d2d 100644 --- a/src/grib_accessor_class_data_g1second_order_constant_width_packing.cc +++ b/src/grib_accessor_class_data_g1second_order_constant_width_packing.cc @@ -58,7 +58,6 @@ static int unpack_double(grib_accessor*, double* val, size_t* len); static int unpack_float(grib_accessor*, float* val, size_t* len); static int value_count(grib_accessor*, long*); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); static int unpack_double_element(grib_accessor*, size_t i, double* val); static int unpack_double_element_set(grib_accessor*, const size_t* index_array, size_t len, double* val_array); diff --git a/src/grib_accessor_class_data_g1second_order_general_extended_packing.cc b/src/grib_accessor_class_data_g1second_order_general_extended_packing.cc index 74515b430..2f1946b7b 100644 --- a/src/grib_accessor_class_data_g1second_order_general_extended_packing.cc +++ b/src/grib_accessor_class_data_g1second_order_general_extended_packing.cc @@ -72,7 +72,6 @@ static int unpack_float(grib_accessor*, float* val, size_t* len); static int value_count(grib_accessor*, long*); static void destroy(grib_context*, grib_accessor*); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); static int unpack_double_element(grib_accessor*, size_t i, double* val); static int unpack_double_element_set(grib_accessor*, const size_t* index_array, size_t len, double* val_array); diff --git a/src/grib_accessor_class_data_g1second_order_general_packing.cc b/src/grib_accessor_class_data_g1second_order_general_packing.cc index d9388619b..3e41fd3e0 100644 --- a/src/grib_accessor_class_data_g1second_order_general_packing.cc +++ b/src/grib_accessor_class_data_g1second_order_general_packing.cc @@ -59,7 +59,6 @@ static int unpack_double(grib_accessor*, double* val, size_t* len); static int unpack_float(grib_accessor*, float* val, size_t* len); static int value_count(grib_accessor*, long*); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_data_g1second_order_general_packing { diff --git a/src/grib_accessor_class_data_g1second_order_row_by_row_packing.cc b/src/grib_accessor_class_data_g1second_order_row_by_row_packing.cc index cc4c9ea9c..b801b3b1c 100644 --- a/src/grib_accessor_class_data_g1second_order_row_by_row_packing.cc +++ b/src/grib_accessor_class_data_g1second_order_row_by_row_packing.cc @@ -57,7 +57,6 @@ static int unpack_double(grib_accessor*, double* val, size_t* len); static int unpack_float(grib_accessor*, float* val, size_t* len); static int value_count(grib_accessor*, long*); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_data_g1second_order_row_by_row_packing { diff --git a/src/grib_accessor_class_data_g1secondary_bitmap.cc b/src/grib_accessor_class_data_g1secondary_bitmap.cc index 2e82646dc..4ae89c576 100644 --- a/src/grib_accessor_class_data_g1secondary_bitmap.cc +++ b/src/grib_accessor_class_data_g1secondary_bitmap.cc @@ -36,7 +36,6 @@ or edit "accessor.class" and rerun ./make_class.pl static int pack_double(grib_accessor*, const double* val, size_t* len); static int value_count(grib_accessor*, long*); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_data_g1secondary_bitmap { diff --git a/src/grib_accessor_class_data_g1shsimple_packing.cc b/src/grib_accessor_class_data_g1shsimple_packing.cc index d50c32830..332b0af0c 100644 --- a/src/grib_accessor_class_data_g1shsimple_packing.cc +++ b/src/grib_accessor_class_data_g1shsimple_packing.cc @@ -33,7 +33,6 @@ or edit "accessor.class" and rerun ./make_class.pl static int unpack_double(grib_accessor*, double* val, size_t* len); static int value_count(grib_accessor*, long*); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_data_g1shsimple_packing { diff --git a/src/grib_accessor_class_data_g1simple_packing.cc b/src/grib_accessor_class_data_g1simple_packing.cc index 1b4d08e82..cd3e6ab38 100644 --- a/src/grib_accessor_class_data_g1simple_packing.cc +++ b/src/grib_accessor_class_data_g1simple_packing.cc @@ -41,7 +41,6 @@ or edit "accessor.class" and rerun ./make_class.pl static int pack_double(grib_accessor*, const double* val, size_t* len); static int value_count(grib_accessor*, long*); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_data_g1simple_packing { diff --git a/src/grib_accessor_class_data_g22order_packing.cc b/src/grib_accessor_class_data_g22order_packing.cc index 262e96896..84f32b3e3 100644 --- a/src/grib_accessor_class_data_g22order_packing.cc +++ b/src/grib_accessor_class_data_g22order_packing.cc @@ -65,7 +65,6 @@ static int unpack_double(grib_accessor*, double* val, size_t* len); static int unpack_float(grib_accessor*, float* val, size_t* len); static int value_count(grib_accessor*, long*); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); static int unpack_double_element(grib_accessor*, size_t i, double* val); static int unpack_double_element_set(grib_accessor*, const size_t* index_array, size_t len, double* val_array); diff --git a/src/grib_accessor_class_data_g2bifourier_packing.cc b/src/grib_accessor_class_data_g2bifourier_packing.cc index 7249e568d..bf5f56f61 100644 --- a/src/grib_accessor_class_data_g2bifourier_packing.cc +++ b/src/grib_accessor_class_data_g2bifourier_packing.cc @@ -59,7 +59,6 @@ static int pack_double(grib_accessor*, const double* val, size_t* len); static int unpack_double(grib_accessor*, double* val, size_t* len); static int value_count(grib_accessor*, long*); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_data_g2bifourier_packing { diff --git a/src/grib_accessor_class_data_g2complex_packing.cc b/src/grib_accessor_class_data_g2complex_packing.cc index b0b77faca..98bcaf5cc 100644 --- a/src/grib_accessor_class_data_g2complex_packing.cc +++ b/src/grib_accessor_class_data_g2complex_packing.cc @@ -37,7 +37,6 @@ or edit "accessor.class" and rerun ./make_class.pl static int pack_double(grib_accessor*, const double* val, size_t* len); static int value_count(grib_accessor*, long*); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_data_g2complex_packing { diff --git a/src/grib_accessor_class_data_g2secondary_bitmap.cc b/src/grib_accessor_class_data_g2secondary_bitmap.cc index 608cdbfad..ee9f8f0be 100644 --- a/src/grib_accessor_class_data_g2secondary_bitmap.cc +++ b/src/grib_accessor_class_data_g2secondary_bitmap.cc @@ -36,7 +36,6 @@ or edit "accessor.class" and rerun ./make_class.pl static int pack_double(grib_accessor*, const double* val, size_t* len); static int value_count(grib_accessor*, long*); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_data_g2secondary_bitmap { diff --git a/src/grib_accessor_class_data_g2shsimple_packing.cc b/src/grib_accessor_class_data_g2shsimple_packing.cc index 1f1a8b323..bdb1157cf 100644 --- a/src/grib_accessor_class_data_g2shsimple_packing.cc +++ b/src/grib_accessor_class_data_g2shsimple_packing.cc @@ -39,7 +39,6 @@ static int pack_double(grib_accessor*, const double* val, size_t* len); static int unpack_double(grib_accessor*, double* val, size_t* len); static int value_count(grib_accessor*, long*); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_data_g2shsimple_packing { diff --git a/src/grib_accessor_class_data_g2simple_packing.cc b/src/grib_accessor_class_data_g2simple_packing.cc index f3bdd2577..69e1bdbc9 100644 --- a/src/grib_accessor_class_data_g2simple_packing.cc +++ b/src/grib_accessor_class_data_g2simple_packing.cc @@ -39,7 +39,6 @@ static int pack_bytes(grib_accessor*, const unsigned char*, size_t* len); static int pack_double(grib_accessor*, const double* val, size_t* len); static int value_count(grib_accessor*, long*); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_data_g2simple_packing { diff --git a/src/grib_accessor_class_data_g2simple_packing_with_preprocessing.cc b/src/grib_accessor_class_data_g2simple_packing_with_preprocessing.cc index de6cb7907..88a4de2cb 100644 --- a/src/grib_accessor_class_data_g2simple_packing_with_preprocessing.cc +++ b/src/grib_accessor_class_data_g2simple_packing_with_preprocessing.cc @@ -42,7 +42,6 @@ static int pack_double(grib_accessor*, const double* val, size_t* len); static int unpack_double(grib_accessor*, double* val, size_t* len); static int value_count(grib_accessor*, long*); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_data_g2simple_packing_with_preprocessing { diff --git a/src/grib_accessor_class_data_jpeg2000_packing.cc b/src/grib_accessor_class_data_jpeg2000_packing.cc index 09a807b8b..7349def3e 100644 --- a/src/grib_accessor_class_data_jpeg2000_packing.cc +++ b/src/grib_accessor_class_data_jpeg2000_packing.cc @@ -50,7 +50,6 @@ static int unpack_double(grib_accessor*, double* val, size_t* len); static int unpack_float(grib_accessor*, float* val, size_t* len); static int value_count(grib_accessor*, long*); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); static int unpack_double_element(grib_accessor*, size_t i, double* val); static int unpack_double_element_set(grib_accessor*, const size_t* index_array, size_t len, double* val_array); diff --git a/src/grib_accessor_class_data_png_packing.cc b/src/grib_accessor_class_data_png_packing.cc index 10265b2a9..44e9b41f6 100644 --- a/src/grib_accessor_class_data_png_packing.cc +++ b/src/grib_accessor_class_data_png_packing.cc @@ -52,7 +52,6 @@ static int pack_double(grib_accessor*, const double* val, size_t* len); static int unpack_double(grib_accessor*, double* val, size_t* len); static int value_count(grib_accessor*, long*); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); static int unpack_double_element(grib_accessor*, size_t i, double* val); static int unpack_double_element_set(grib_accessor*, const size_t* index_array, size_t len, double* val_array); diff --git a/src/grib_accessor_class_data_raw_packing.cc b/src/grib_accessor_class_data_raw_packing.cc index 21485a6c7..336c73684 100644 --- a/src/grib_accessor_class_data_raw_packing.cc +++ b/src/grib_accessor_class_data_raw_packing.cc @@ -46,7 +46,6 @@ static int pack_double(grib_accessor*, const double* val, size_t* len); static int unpack_double(grib_accessor*, double* val, size_t* len); static int value_count(grib_accessor*, long*); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); static int unpack_double_element(grib_accessor*, size_t i, double* val); static int unpack_double_element_set(grib_accessor*, const size_t* index_array, size_t len, double* val_array); diff --git a/src/grib_accessor_class_data_run_length_packing.cc b/src/grib_accessor_class_data_run_length_packing.cc index 3624418f3..cfe5370e0 100644 --- a/src/grib_accessor_class_data_run_length_packing.cc +++ b/src/grib_accessor_class_data_run_length_packing.cc @@ -45,7 +45,6 @@ static int pack_double(grib_accessor*, const double* val, size_t* len); static int unpack_double(grib_accessor*, double* val, size_t* len); static int value_count(grib_accessor*, long*); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_data_run_length_packing { diff --git a/src/grib_accessor_class_data_secondary_bitmap.cc b/src/grib_accessor_class_data_secondary_bitmap.cc index 0824bb0c1..06329aa92 100644 --- a/src/grib_accessor_class_data_secondary_bitmap.cc +++ b/src/grib_accessor_class_data_secondary_bitmap.cc @@ -40,7 +40,6 @@ static int get_native_type(grib_accessor*); static int unpack_double(grib_accessor*, double* val, size_t* len); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_data_secondary_bitmap { diff --git a/src/grib_accessor_class_data_sh_packed.cc b/src/grib_accessor_class_data_sh_packed.cc index abb9538d7..6944c7a0a 100644 --- a/src/grib_accessor_class_data_sh_packed.cc +++ b/src/grib_accessor_class_data_sh_packed.cc @@ -48,7 +48,6 @@ or edit "accessor.class" and rerun ./make_class.pl static int unpack_double(grib_accessor*, double* val, size_t* len); static int value_count(grib_accessor*, long*); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_data_sh_packed { diff --git a/src/grib_accessor_class_data_sh_unpacked.cc b/src/grib_accessor_class_data_sh_unpacked.cc index c68a1c38c..394793612 100644 --- a/src/grib_accessor_class_data_sh_unpacked.cc +++ b/src/grib_accessor_class_data_sh_unpacked.cc @@ -48,7 +48,6 @@ or edit "accessor.class" and rerun ./make_class.pl static int unpack_double(grib_accessor*, double* val, size_t* len); static int value_count(grib_accessor*, long*); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_data_sh_unpacked { diff --git a/src/grib_accessor_class_data_shsimple_packing.cc b/src/grib_accessor_class_data_shsimple_packing.cc index 1019ef2f6..d06743f8d 100644 --- a/src/grib_accessor_class_data_shsimple_packing.cc +++ b/src/grib_accessor_class_data_shsimple_packing.cc @@ -39,7 +39,6 @@ static int get_native_type(grib_accessor*); static int pack_double(grib_accessor*, const double* val, size_t* len); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_data_shsimple_packing { diff --git a/src/grib_accessor_class_data_simple_packing.cc b/src/grib_accessor_class_data_simple_packing.cc index e6475cadd..f8eed0d3c 100644 --- a/src/grib_accessor_class_data_simple_packing.cc +++ b/src/grib_accessor_class_data_simple_packing.cc @@ -55,7 +55,6 @@ static int unpack_double(grib_accessor*, double* val, size_t* len); static int unpack_float(grib_accessor*, float* val, size_t* len); static int value_count(grib_accessor*, long*); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); static int unpack_double_element(grib_accessor*, size_t i, double* val); static int unpack_double_element_set(grib_accessor*, const size_t* index_array, size_t len, double* val_array); static int unpack_double_subarray(grib_accessor*, double* val, size_t start, size_t len); diff --git a/src/grib_accessor_class_decimal_precision.cc b/src/grib_accessor_class_decimal_precision.cc index 90de5cbc0..e498931b7 100644 --- a/src/grib_accessor_class_decimal_precision.cc +++ b/src/grib_accessor_class_decimal_precision.cc @@ -41,7 +41,6 @@ or edit "accessor.class" and rerun ./make_class.pl static int pack_long(grib_accessor*, const long* val, size_t* len); static int unpack_long(grib_accessor*, long* val, size_t* len); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_decimal_precision { diff --git a/src/grib_accessor_class_dictionary.cc b/src/grib_accessor_class_dictionary.cc index 73f8b7eaa..0f46c43eb 100644 --- a/src/grib_accessor_class_dictionary.cc +++ b/src/grib_accessor_class_dictionary.cc @@ -44,7 +44,6 @@ static int unpack_string(grib_accessor*, char*, size_t* len); static int value_count(grib_accessor*, long*); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_dictionary { diff --git a/src/grib_accessor_class_dirty.cc b/src/grib_accessor_class_dirty.cc index 8f90784a9..ec29923e3 100644 --- a/src/grib_accessor_class_dirty.cc +++ b/src/grib_accessor_class_dirty.cc @@ -39,7 +39,6 @@ or edit "accessor.class" and rerun ./make_class.pl static int pack_long(grib_accessor*, const long* val, size_t* len); static int unpack_long(grib_accessor*, long* val, size_t* len); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_dirty { diff --git a/src/grib_accessor_class_divdouble.cc b/src/grib_accessor_class_divdouble.cc index c0c97ba99..e4e5442ef 100644 --- a/src/grib_accessor_class_divdouble.cc +++ b/src/grib_accessor_class_divdouble.cc @@ -39,7 +39,6 @@ or edit "accessor.class" and rerun ./make_class.pl static int unpack_double(grib_accessor*, double* val, size_t* len); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_divdouble { diff --git a/src/grib_accessor_class_double.cc b/src/grib_accessor_class_double.cc index cd4631094..e1888ed0c 100644 --- a/src/grib_accessor_class_double.cc +++ b/src/grib_accessor_class_double.cc @@ -41,7 +41,6 @@ static int get_native_type(grib_accessor*); static int pack_missing(grib_accessor*); static int unpack_string(grib_accessor*, char*, size_t* len); static void dump(grib_accessor*, grib_dumper*); -//static void init_class(grib_accessor_class*); static int compare(grib_accessor*, grib_accessor*); typedef struct grib_accessor_double diff --git a/src/grib_accessor_class_element.cc b/src/grib_accessor_class_element.cc index fe5f65c4d..5de471be4 100644 --- a/src/grib_accessor_class_element.cc +++ b/src/grib_accessor_class_element.cc @@ -41,7 +41,6 @@ or edit "accessor.class" and rerun ./make_class.pl static int pack_long(grib_accessor*, const long* val, size_t* len); static int unpack_long(grib_accessor*, long* val, size_t* len); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_element { diff --git a/src/grib_accessor_class_evaluate.cc b/src/grib_accessor_class_evaluate.cc index 0f45b17f3..2c9fdf1e3 100644 --- a/src/grib_accessor_class_evaluate.cc +++ b/src/grib_accessor_class_evaluate.cc @@ -35,7 +35,6 @@ or edit "accessor.class" and rerun ./make_class.pl static int pack_long(grib_accessor*, const long* val, size_t* len); static int unpack_long(grib_accessor*, long* val, size_t* len); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_evaluate { diff --git a/src/grib_accessor_class_expanded_descriptors.cc b/src/grib_accessor_class_expanded_descriptors.cc index c46458776..a339882d0 100644 --- a/src/grib_accessor_class_expanded_descriptors.cc +++ b/src/grib_accessor_class_expanded_descriptors.cc @@ -59,7 +59,6 @@ static int value_count(grib_accessor*, long*); static void destroy(grib_context*, grib_accessor*); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_expanded_descriptors { diff --git a/src/grib_accessor_class_from_scale_factor_scaled_value.cc b/src/grib_accessor_class_from_scale_factor_scaled_value.cc index 4292c1385..53784e172 100644 --- a/src/grib_accessor_class_from_scale_factor_scaled_value.cc +++ b/src/grib_accessor_class_from_scale_factor_scaled_value.cc @@ -44,7 +44,6 @@ static int pack_double(grib_accessor*, const double* val, size_t* len); static int unpack_double(grib_accessor*, double* val, size_t* len); static int value_count(grib_accessor*, long*); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_from_scale_factor_scaled_value { diff --git a/src/grib_accessor_class_g1_half_byte_codeflag.cc b/src/grib_accessor_class_g1_half_byte_codeflag.cc index dd758006b..522eb9ee1 100644 --- a/src/grib_accessor_class_g1_half_byte_codeflag.cc +++ b/src/grib_accessor_class_g1_half_byte_codeflag.cc @@ -39,7 +39,6 @@ static int pack_long(grib_accessor*, const long* val, size_t* len); static int unpack_long(grib_accessor*, long* val, size_t* len); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); static int compare(grib_accessor*, grib_accessor*); typedef struct grib_accessor_g1_half_byte_codeflag diff --git a/src/grib_accessor_class_g1_message_length.cc b/src/grib_accessor_class_g1_message_length.cc index fc8c9dfc1..adff03efe 100644 --- a/src/grib_accessor_class_g1_message_length.cc +++ b/src/grib_accessor_class_g1_message_length.cc @@ -34,7 +34,6 @@ or edit "accessor.class" and rerun ./make_class.pl static int pack_long(grib_accessor*, const long* val, size_t* len); static int unpack_long(grib_accessor*, long* val, size_t* len); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_g1_message_length { diff --git a/src/grib_accessor_class_g1_section4_length.cc b/src/grib_accessor_class_g1_section4_length.cc index 2f80815b9..8e6c2b3f1 100644 --- a/src/grib_accessor_class_g1_section4_length.cc +++ b/src/grib_accessor_class_g1_section4_length.cc @@ -34,7 +34,6 @@ or edit "accessor.class" and rerun ./make_class.pl static int pack_long(grib_accessor*, const long* val, size_t* len); static int unpack_long(grib_accessor*, long* val, size_t* len); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_g1_section4_length { diff --git a/src/grib_accessor_class_g1area.cc b/src/grib_accessor_class_g1area.cc index 4f2e29154..85119c75b 100644 --- a/src/grib_accessor_class_g1area.cc +++ b/src/grib_accessor_class_g1area.cc @@ -42,7 +42,6 @@ static int unpack_double(grib_accessor*, double* val, size_t* len); static int unpack_string(grib_accessor*, char*, size_t* len); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_g1area { diff --git a/src/grib_accessor_class_g1bitmap.cc b/src/grib_accessor_class_g1bitmap.cc index 33eb0d935..bfa835f01 100644 --- a/src/grib_accessor_class_g1bitmap.cc +++ b/src/grib_accessor_class_g1bitmap.cc @@ -37,7 +37,6 @@ static int pack_double(grib_accessor*, const double* val, size_t* len); static int unpack_bytes(grib_accessor*, unsigned char*, size_t* len); static int value_count(grib_accessor*, long*); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_g1bitmap { diff --git a/src/grib_accessor_class_g1date.cc b/src/grib_accessor_class_g1date.cc index 5157b5731..c1efdfc03 100644 --- a/src/grib_accessor_class_g1date.cc +++ b/src/grib_accessor_class_g1date.cc @@ -46,7 +46,6 @@ static int unpack_string(grib_accessor*, char*, size_t* len); static int value_count(grib_accessor*, long*); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_g1date { diff --git a/src/grib_accessor_class_g1day_of_the_year_date.cc b/src/grib_accessor_class_g1day_of_the_year_date.cc index f5bbd9b0a..6745bbf56 100644 --- a/src/grib_accessor_class_g1day_of_the_year_date.cc +++ b/src/grib_accessor_class_g1day_of_the_year_date.cc @@ -36,7 +36,6 @@ or edit "accessor.class" and rerun ./make_class.pl static int unpack_string(grib_accessor*, char*, size_t* len); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_g1day_of_the_year_date { diff --git a/src/grib_accessor_class_g1end_of_interval_monthly.cc b/src/grib_accessor_class_g1end_of_interval_monthly.cc index 12a184a88..5e39e6882 100644 --- a/src/grib_accessor_class_g1end_of_interval_monthly.cc +++ b/src/grib_accessor_class_g1end_of_interval_monthly.cc @@ -37,7 +37,6 @@ static int unpack_double(grib_accessor*, double* val, size_t* len); static int value_count(grib_accessor*, long*); static void destroy(grib_context*, grib_accessor*); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); static int compare(grib_accessor*, grib_accessor*); typedef struct grib_accessor_g1end_of_interval_monthly diff --git a/src/grib_accessor_class_g1fcperiod.cc b/src/grib_accessor_class_g1fcperiod.cc index 38f5d6359..03aa6e3f4 100644 --- a/src/grib_accessor_class_g1fcperiod.cc +++ b/src/grib_accessor_class_g1fcperiod.cc @@ -31,7 +31,6 @@ or edit "accessor.class" and rerun ./make_class.pl */ static int unpack_string(grib_accessor*, char*, size_t* len); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_g1fcperiod { diff --git a/src/grib_accessor_class_g1forecastmonth.cc b/src/grib_accessor_class_g1forecastmonth.cc index 70514cfb9..e25db6930 100644 --- a/src/grib_accessor_class_g1forecastmonth.cc +++ b/src/grib_accessor_class_g1forecastmonth.cc @@ -42,7 +42,6 @@ static int pack_long(grib_accessor*, const long* val, size_t* len); static int unpack_long(grib_accessor*, long* val, size_t* len); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_g1forecastmonth { diff --git a/src/grib_accessor_class_g1monthlydate.cc b/src/grib_accessor_class_g1monthlydate.cc index 45699f52d..503d0daa4 100644 --- a/src/grib_accessor_class_g1monthlydate.cc +++ b/src/grib_accessor_class_g1monthlydate.cc @@ -41,7 +41,6 @@ or edit "accessor.class" and rerun ./make_class.pl static int unpack_long(grib_accessor*, long* val, size_t* len); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_g1monthlydate { diff --git a/src/grib_accessor_class_g1number_of_coded_values_sh_complex.cc b/src/grib_accessor_class_g1number_of_coded_values_sh_complex.cc index 3cf159f70..45b983502 100644 --- a/src/grib_accessor_class_g1number_of_coded_values_sh_complex.cc +++ b/src/grib_accessor_class_g1number_of_coded_values_sh_complex.cc @@ -44,7 +44,6 @@ or edit "accessor.class" and rerun ./make_class.pl static int unpack_long(grib_accessor*, long* val, size_t* len); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_g1number_of_coded_values_sh_complex { diff --git a/src/grib_accessor_class_g1number_of_coded_values_sh_simple.cc b/src/grib_accessor_class_g1number_of_coded_values_sh_simple.cc index cbe3dfba0..532a4c5dd 100644 --- a/src/grib_accessor_class_g1number_of_coded_values_sh_simple.cc +++ b/src/grib_accessor_class_g1number_of_coded_values_sh_simple.cc @@ -41,7 +41,6 @@ or edit "accessor.class" and rerun ./make_class.pl static int unpack_long(grib_accessor*, long* val, size_t* len); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_g1number_of_coded_values_sh_simple { diff --git a/src/grib_accessor_class_g1step_range.cc b/src/grib_accessor_class_g1step_range.cc index f074ff687..46c7a3cc8 100644 --- a/src/grib_accessor_class_g1step_range.cc +++ b/src/grib_accessor_class_g1step_range.cc @@ -55,7 +55,6 @@ static int value_count(grib_accessor*, long*); static void destroy(grib_context*, grib_accessor*); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_g1step_range { diff --git a/src/grib_accessor_class_g1verificationdate.cc b/src/grib_accessor_class_g1verificationdate.cc index ae38cf7ff..a3272acc2 100644 --- a/src/grib_accessor_class_g1verificationdate.cc +++ b/src/grib_accessor_class_g1verificationdate.cc @@ -38,7 +38,6 @@ or edit "accessor.class" and rerun ./make_class.pl static int unpack_long(grib_accessor*, long* val, size_t* len); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_g1verificationdate { diff --git a/src/grib_accessor_class_g2_aerosol.cc b/src/grib_accessor_class_g2_aerosol.cc index 3aca66af0..7cd8659df 100644 --- a/src/grib_accessor_class_g2_aerosol.cc +++ b/src/grib_accessor_class_g2_aerosol.cc @@ -38,7 +38,6 @@ static int pack_long(grib_accessor*, const long* val, size_t* len); static int unpack_long(grib_accessor*, long* val, size_t* len); static int value_count(grib_accessor*, long*); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_g2_aerosol { diff --git a/src/grib_accessor_class_g2_chemical.cc b/src/grib_accessor_class_g2_chemical.cc index 0bd18b777..16d8e6f33 100644 --- a/src/grib_accessor_class_g2_chemical.cc +++ b/src/grib_accessor_class_g2_chemical.cc @@ -38,7 +38,6 @@ static int pack_long(grib_accessor*, const long* val, size_t* len); static int unpack_long(grib_accessor*, long* val, size_t* len); static int value_count(grib_accessor*, long*); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_g2_chemical { diff --git a/src/grib_accessor_class_g2_eps.cc b/src/grib_accessor_class_g2_eps.cc index 6c7ca4486..fc202a572 100644 --- a/src/grib_accessor_class_g2_eps.cc +++ b/src/grib_accessor_class_g2_eps.cc @@ -41,7 +41,6 @@ static int pack_long(grib_accessor*, const long* val, size_t* len); static int unpack_long(grib_accessor*, long* val, size_t* len); static int value_count(grib_accessor*, long*); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_g2_eps { diff --git a/src/grib_accessor_class_g2_mars_labeling.cc b/src/grib_accessor_class_g2_mars_labeling.cc index ea38afc93..f6437c279 100644 --- a/src/grib_accessor_class_g2_mars_labeling.cc +++ b/src/grib_accessor_class_g2_mars_labeling.cc @@ -55,7 +55,6 @@ static int unpack_long(grib_accessor*, long* val, size_t* len); static int unpack_string(grib_accessor*, char*, size_t* len); static int value_count(grib_accessor*, long*); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_g2_mars_labeling { diff --git a/src/grib_accessor_class_g2bitmap.cc b/src/grib_accessor_class_g2bitmap.cc index 164ebd4ee..3d928e804 100644 --- a/src/grib_accessor_class_g2bitmap.cc +++ b/src/grib_accessor_class_g2bitmap.cc @@ -36,7 +36,6 @@ or edit "accessor.class" and rerun ./make_class.pl static int pack_double(grib_accessor*, const double* val, size_t* len); static int value_count(grib_accessor*, long*); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_g2bitmap { diff --git a/src/grib_accessor_class_g2bitmap_present.cc b/src/grib_accessor_class_g2bitmap_present.cc index 3d704342c..52378d4eb 100644 --- a/src/grib_accessor_class_g2bitmap_present.cc +++ b/src/grib_accessor_class_g2bitmap_present.cc @@ -39,7 +39,6 @@ or edit "accessor.class" and rerun ./make_class.pl static int pack_long(grib_accessor*, const long* val, size_t* len); static int unpack_long(grib_accessor*, long* val, size_t* len); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_g2bitmap_present { diff --git a/src/grib_accessor_class_g2date.cc b/src/grib_accessor_class_g2date.cc index 54367bdf2..4ed01d99e 100644 --- a/src/grib_accessor_class_g2date.cc +++ b/src/grib_accessor_class_g2date.cc @@ -39,7 +39,6 @@ static int pack_long(grib_accessor*, const long* val, size_t* len); static int unpack_long(grib_accessor*, long* val, size_t* len); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_g2date { diff --git a/src/grib_accessor_class_g2end_step.cc b/src/grib_accessor_class_g2end_step.cc index 1248386f5..285a30085 100644 --- a/src/grib_accessor_class_g2end_step.cc +++ b/src/grib_accessor_class_g2end_step.cc @@ -57,7 +57,6 @@ static int pack_long(grib_accessor*, const long* val, size_t* len); static int unpack_long(grib_accessor*, long* val, size_t* len); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_g2end_step { diff --git a/src/grib_accessor_class_g2grid.cc b/src/grib_accessor_class_g2grid.cc index d11d5b8d3..94ddb31e4 100644 --- a/src/grib_accessor_class_g2grid.cc +++ b/src/grib_accessor_class_g2grid.cc @@ -44,7 +44,6 @@ static int pack_double(grib_accessor*, const double* val, size_t* len); static int unpack_double(grib_accessor*, double* val, size_t* len); static int value_count(grib_accessor*, long*); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_g2grid { diff --git a/src/grib_accessor_class_g2latlon.cc b/src/grib_accessor_class_g2latlon.cc index 509a08df2..5549b79a3 100644 --- a/src/grib_accessor_class_g2latlon.cc +++ b/src/grib_accessor_class_g2latlon.cc @@ -44,7 +44,6 @@ static int is_missing(grib_accessor*); static int pack_double(grib_accessor*, const double* val, size_t* len); static int unpack_double(grib_accessor*, double* val, size_t* len); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_g2latlon { diff --git a/src/grib_accessor_class_g2level.cc b/src/grib_accessor_class_g2level.cc index 93d073d12..8474f924d 100644 --- a/src/grib_accessor_class_g2level.cc +++ b/src/grib_accessor_class_g2level.cc @@ -43,7 +43,6 @@ static int unpack_double(grib_accessor*, double* val, size_t* len); static int unpack_long(grib_accessor*, long* val, size_t* len); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_g2level { diff --git a/src/grib_accessor_class_g2lon.cc b/src/grib_accessor_class_g2lon.cc index 5587ac053..c84776915 100644 --- a/src/grib_accessor_class_g2lon.cc +++ b/src/grib_accessor_class_g2lon.cc @@ -39,7 +39,6 @@ or edit "accessor.class" and rerun ./make_class.pl static int pack_double(grib_accessor*, const double* val, size_t* len); static int unpack_double(grib_accessor*, double* val, size_t* len); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_g2lon { diff --git a/src/grib_accessor_class_g2step_range.cc b/src/grib_accessor_class_g2step_range.cc index 04d67f28b..8d3440230 100644 --- a/src/grib_accessor_class_g2step_range.cc +++ b/src/grib_accessor_class_g2step_range.cc @@ -48,7 +48,6 @@ static size_t string_length(grib_accessor*); static int value_count(grib_accessor*, long*); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_g2step_range { diff --git a/src/grib_accessor_class_gaussian_grid_name.cc b/src/grib_accessor_class_gaussian_grid_name.cc index fd8f10b08..59a268f95 100644 --- a/src/grib_accessor_class_gaussian_grid_name.cc +++ b/src/grib_accessor_class_gaussian_grid_name.cc @@ -38,7 +38,6 @@ static int get_native_type(grib_accessor*); static int unpack_string(grib_accessor*, char*, size_t* len); static size_t string_length(grib_accessor*); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_gaussian_grid_name { diff --git a/src/grib_accessor_class_gds_is_present.cc b/src/grib_accessor_class_gds_is_present.cc index 884d92380..6066231ac 100644 --- a/src/grib_accessor_class_gds_is_present.cc +++ b/src/grib_accessor_class_gds_is_present.cc @@ -42,7 +42,6 @@ or edit "accessor.class" and rerun ./make_class.pl static int pack_long(grib_accessor*, const long* val, size_t* len); static int unpack_long(grib_accessor*, long* val, size_t* len); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_gds_is_present { diff --git a/src/grib_accessor_class_gds_not_present_bitmap.cc b/src/grib_accessor_class_gds_not_present_bitmap.cc index bd0d96ae1..93431c9db 100644 --- a/src/grib_accessor_class_gds_not_present_bitmap.cc +++ b/src/grib_accessor_class_gds_not_present_bitmap.cc @@ -47,7 +47,6 @@ static int pack_double(grib_accessor*, const double* val, size_t* len); static int unpack_double(grib_accessor*, double* val, size_t* len); static int value_count(grib_accessor*, long*); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_gds_not_present_bitmap { diff --git a/src/grib_accessor_class_gen.cc b/src/grib_accessor_class_gen.cc index bf59cdea0..4846fc5d7 100644 --- a/src/grib_accessor_class_gen.cc +++ b/src/grib_accessor_class_gen.cc @@ -73,7 +73,6 @@ static int value_count(grib_accessor*, long*); static void destroy(grib_context*, grib_accessor*); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); static int notify_change(grib_accessor*, grib_accessor*); static void update_size(grib_accessor*, size_t); static size_t preferred_size(grib_accessor*, int); diff --git a/src/grib_accessor_class_getenv.cc b/src/grib_accessor_class_getenv.cc index ca542edd2..6760dff6d 100644 --- a/src/grib_accessor_class_getenv.cc +++ b/src/grib_accessor_class_getenv.cc @@ -39,7 +39,6 @@ static int unpack_string(grib_accessor*, char*, size_t* len); static size_t string_length(grib_accessor*); static int value_count(grib_accessor*, long*); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_getenv { diff --git a/src/grib_accessor_class_global_gaussian.cc b/src/grib_accessor_class_global_gaussian.cc index b765d7066..b39677da2 100644 --- a/src/grib_accessor_class_global_gaussian.cc +++ b/src/grib_accessor_class_global_gaussian.cc @@ -46,7 +46,6 @@ or edit "accessor.class" and rerun ./make_class.pl static int pack_long(grib_accessor*, const long* val, size_t* len); static int unpack_long(grib_accessor*, long* val, size_t* len); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_global_gaussian { diff --git a/src/grib_accessor_class_group.cc b/src/grib_accessor_class_group.cc index ae8fd6ce1..7997f3989 100644 --- a/src/grib_accessor_class_group.cc +++ b/src/grib_accessor_class_group.cc @@ -54,7 +54,6 @@ static int value_count(grib_accessor*, long*); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); static void post_init(grib_accessor*); -//static void init_class(grib_accessor_class*); static int compare(grib_accessor*, grib_accessor*); typedef struct grib_accessor_group diff --git a/src/grib_accessor_class_gts_header.cc b/src/grib_accessor_class_gts_header.cc index 2b7f65732..44aa9852d 100644 --- a/src/grib_accessor_class_gts_header.cc +++ b/src/grib_accessor_class_gts_header.cc @@ -38,7 +38,6 @@ static int unpack_string(grib_accessor*, char*, size_t* len); static size_t string_length(grib_accessor*); static int value_count(grib_accessor*, long*); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_gts_header { diff --git a/src/grib_accessor_class_hash_array.cc b/src/grib_accessor_class_hash_array.cc index d4d4facb6..987e68481 100644 --- a/src/grib_accessor_class_hash_array.cc +++ b/src/grib_accessor_class_hash_array.cc @@ -54,7 +54,6 @@ static int value_count(grib_accessor*, long*); static void destroy(grib_context*, grib_accessor*); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); static int compare(grib_accessor*, grib_accessor*); typedef struct grib_accessor_hash_array diff --git a/src/grib_accessor_class_headers_only.cc b/src/grib_accessor_class_headers_only.cc index 8e916886b..d3a98efb0 100644 --- a/src/grib_accessor_class_headers_only.cc +++ b/src/grib_accessor_class_headers_only.cc @@ -33,7 +33,6 @@ or edit "accessor.class" and rerun ./make_class.pl static int get_native_type(grib_accessor*); static int unpack_long(grib_accessor*, long* val, size_t* len); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_headers_only { diff --git a/src/grib_accessor_class_ibmfloat.cc b/src/grib_accessor_class_ibmfloat.cc index cae1a8baf..27e6da1c5 100644 --- a/src/grib_accessor_class_ibmfloat.cc +++ b/src/grib_accessor_class_ibmfloat.cc @@ -49,7 +49,6 @@ static long byte_offset(grib_accessor*); static long next_offset(grib_accessor*); static int value_count(grib_accessor*, long*); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); static void update_size(grib_accessor*, size_t); static int nearest_smaller_value (grib_accessor*, double, double*); diff --git a/src/grib_accessor_class_ieeefloat.cc b/src/grib_accessor_class_ieeefloat.cc index 8a0520ab6..d6fa411bb 100644 --- a/src/grib_accessor_class_ieeefloat.cc +++ b/src/grib_accessor_class_ieeefloat.cc @@ -42,7 +42,6 @@ static int unpack_double(grib_accessor*, double* val, size_t* len); static int unpack_float(grib_accessor*, float* val, size_t* len); static int value_count(grib_accessor*, long*); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); static void update_size(grib_accessor*, size_t); static int nearest_smaller_value (grib_accessor*, double, double*); diff --git a/src/grib_accessor_class_ifs_param.cc b/src/grib_accessor_class_ifs_param.cc index 9cb52aa39..ba7e522c1 100644 --- a/src/grib_accessor_class_ifs_param.cc +++ b/src/grib_accessor_class_ifs_param.cc @@ -42,7 +42,6 @@ static int get_native_type(grib_accessor*); static int pack_long(grib_accessor*, const long* val, size_t* len); static int unpack_long(grib_accessor*, long* val, size_t* len); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_ifs_param { diff --git a/src/grib_accessor_class_int16.cc b/src/grib_accessor_class_int16.cc index 2e1ec6553..e1c4cfd58 100644 --- a/src/grib_accessor_class_int16.cc +++ b/src/grib_accessor_class_int16.cc @@ -34,7 +34,6 @@ or edit "accessor.class" and rerun ./make_class.pl static int pack_long(grib_accessor*, const long* val, size_t* len); static int unpack_long(grib_accessor*, long* val, size_t* len); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_int16 { diff --git a/src/grib_accessor_class_int16_little_endian.cc b/src/grib_accessor_class_int16_little_endian.cc index f813177e0..34b8966c2 100644 --- a/src/grib_accessor_class_int16_little_endian.cc +++ b/src/grib_accessor_class_int16_little_endian.cc @@ -34,7 +34,6 @@ or edit "accessor.class" and rerun ./make_class.pl static int pack_long(grib_accessor*, const long* val, size_t* len); static int unpack_long(grib_accessor*, long* val, size_t* len); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_int16_little_endian { diff --git a/src/grib_accessor_class_int32.cc b/src/grib_accessor_class_int32.cc index 6a388d32d..b1d9143d8 100644 --- a/src/grib_accessor_class_int32.cc +++ b/src/grib_accessor_class_int32.cc @@ -34,7 +34,6 @@ or edit "accessor.class" and rerun ./make_class.pl static int pack_long(grib_accessor*, const long* val, size_t* len); static int unpack_long(grib_accessor*, long* val, size_t* len); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_int32 { diff --git a/src/grib_accessor_class_int32_little_endian.cc b/src/grib_accessor_class_int32_little_endian.cc index 93e7debcb..1e47dfe33 100644 --- a/src/grib_accessor_class_int32_little_endian.cc +++ b/src/grib_accessor_class_int32_little_endian.cc @@ -34,7 +34,6 @@ or edit "accessor.class" and rerun ./make_class.pl static int pack_long(grib_accessor*, const long* val, size_t* len); static int unpack_long(grib_accessor*, long* val, size_t* len); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_int32_little_endian { diff --git a/src/grib_accessor_class_int64.cc b/src/grib_accessor_class_int64.cc index 651711e29..8899e7cc0 100644 --- a/src/grib_accessor_class_int64.cc +++ b/src/grib_accessor_class_int64.cc @@ -34,7 +34,6 @@ or edit "accessor.class" and rerun ./make_class.pl static int pack_long(grib_accessor*, const long* val, size_t* len); static int unpack_long(grib_accessor*, long* val, size_t* len); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_int64 { diff --git a/src/grib_accessor_class_int64_little_endian.cc b/src/grib_accessor_class_int64_little_endian.cc index 23e7ec02f..2fe5db824 100644 --- a/src/grib_accessor_class_int64_little_endian.cc +++ b/src/grib_accessor_class_int64_little_endian.cc @@ -34,7 +34,6 @@ or edit "accessor.class" and rerun ./make_class.pl static int pack_long(grib_accessor*, const long* val, size_t* len); static int unpack_long(grib_accessor*, long* val, size_t* len); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_int64_little_endian { diff --git a/src/grib_accessor_class_int8.cc b/src/grib_accessor_class_int8.cc index 6c8636ab1..a69ed3dd9 100644 --- a/src/grib_accessor_class_int8.cc +++ b/src/grib_accessor_class_int8.cc @@ -34,7 +34,6 @@ or edit "accessor.class" and rerun ./make_class.pl static int pack_long(grib_accessor*, const long* val, size_t* len); static int unpack_long(grib_accessor*, long* val, size_t* len); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_int8 { diff --git a/src/grib_accessor_class_iterator.cc b/src/grib_accessor_class_iterator.cc index 29585f4c6..2a5fc815b 100644 --- a/src/grib_accessor_class_iterator.cc +++ b/src/grib_accessor_class_iterator.cc @@ -37,7 +37,6 @@ or edit "accessor.class" and rerun ./make_class.pl static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_iterator { diff --git a/src/grib_accessor_class_julian_date.cc b/src/grib_accessor_class_julian_date.cc index e2c85494a..fd94ee789 100644 --- a/src/grib_accessor_class_julian_date.cc +++ b/src/grib_accessor_class_julian_date.cc @@ -54,7 +54,6 @@ static int unpack_long(grib_accessor*, long* val, size_t* len); static int unpack_string(grib_accessor*, char*, size_t* len); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_julian_date { diff --git a/src/grib_accessor_class_julian_day.cc b/src/grib_accessor_class_julian_day.cc index 8824128b1..7a8e28cfc 100644 --- a/src/grib_accessor_class_julian_day.cc +++ b/src/grib_accessor_class_julian_day.cc @@ -44,7 +44,6 @@ static int unpack_double(grib_accessor*, double* val, size_t* len); static int unpack_long(grib_accessor*, long* val, size_t* len); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_julian_day { diff --git a/src/grib_accessor_class_ksec1expver.cc b/src/grib_accessor_class_ksec1expver.cc index 2c19e5210..762bf66e2 100644 --- a/src/grib_accessor_class_ksec1expver.cc +++ b/src/grib_accessor_class_ksec1expver.cc @@ -37,7 +37,6 @@ static int pack_long(grib_accessor*, const long* val, size_t* len); static int pack_string(grib_accessor*, const char*, size_t* len); static int unpack_long(grib_accessor*, long* val, size_t* len); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_ksec1expver { diff --git a/src/grib_accessor_class_label.cc b/src/grib_accessor_class_label.cc index d66ecd4d5..c5958dd98 100644 --- a/src/grib_accessor_class_label.cc +++ b/src/grib_accessor_class_label.cc @@ -35,7 +35,6 @@ static int get_native_type(grib_accessor*); static int unpack_string(grib_accessor*, char*, size_t* len); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); static int compare(grib_accessor*, grib_accessor*); typedef struct grib_accessor_label diff --git a/src/grib_accessor_class_laplacian.cc b/src/grib_accessor_class_laplacian.cc index 55a4ef527..81359c233 100644 --- a/src/grib_accessor_class_laplacian.cc +++ b/src/grib_accessor_class_laplacian.cc @@ -42,7 +42,6 @@ static int pack_double(grib_accessor*, const double* val, size_t* len); static int pack_long(grib_accessor*, const long* val, size_t* len); static int unpack_double(grib_accessor*, double* val, size_t* len); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_laplacian { diff --git a/src/grib_accessor_class_latitudes.cc b/src/grib_accessor_class_latitudes.cc index a1b6095b7..4131ff066 100644 --- a/src/grib_accessor_class_latitudes.cc +++ b/src/grib_accessor_class_latitudes.cc @@ -40,7 +40,6 @@ or edit "accessor.class" and rerun ./make_class.pl static int unpack_double(grib_accessor*, double* val, size_t* len); static int value_count(grib_accessor*, long*); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_latitudes { diff --git a/src/grib_accessor_class_latlon_increment.cc b/src/grib_accessor_class_latlon_increment.cc index 5a45288bc..de43e60c9 100644 --- a/src/grib_accessor_class_latlon_increment.cc +++ b/src/grib_accessor_class_latlon_increment.cc @@ -44,7 +44,6 @@ static int is_missing(grib_accessor*); static int pack_double(grib_accessor*, const double* val, size_t* len); static int unpack_double(grib_accessor*, double* val, size_t* len); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_latlon_increment { diff --git a/src/grib_accessor_class_latlonvalues.cc b/src/grib_accessor_class_latlonvalues.cc index 82f26288d..e559eaa3d 100644 --- a/src/grib_accessor_class_latlonvalues.cc +++ b/src/grib_accessor_class_latlonvalues.cc @@ -36,7 +36,6 @@ or edit "accessor.class" and rerun ./make_class.pl static int unpack_double(grib_accessor*, double* val, size_t* len); static int value_count(grib_accessor*, long*); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_latlonvalues { diff --git a/src/grib_accessor_class_library_version.cc b/src/grib_accessor_class_library_version.cc index f205c9f31..2088b68c4 100644 --- a/src/grib_accessor_class_library_version.cc +++ b/src/grib_accessor_class_library_version.cc @@ -33,7 +33,6 @@ or edit "accessor.class" and rerun ./make_class.pl static int unpack_string(grib_accessor*, char*, size_t* len); static size_t string_length(grib_accessor*); static int value_count(grib_accessor*, long*); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_library_version { diff --git a/src/grib_accessor_class_local_definition.cc b/src/grib_accessor_class_local_definition.cc index 81476efed..782ce5fde 100644 --- a/src/grib_accessor_class_local_definition.cc +++ b/src/grib_accessor_class_local_definition.cc @@ -48,7 +48,6 @@ static int pack_long(grib_accessor*, const long* val, size_t* len); static int unpack_long(grib_accessor*, long* val, size_t* len); static int value_count(grib_accessor*, long*); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_local_definition { diff --git a/src/grib_accessor_class_long.cc b/src/grib_accessor_class_long.cc index de06da13c..6caec017a 100644 --- a/src/grib_accessor_class_long.cc +++ b/src/grib_accessor_class_long.cc @@ -40,7 +40,6 @@ static int pack_string(grib_accessor*, const char*, size_t* len); static int unpack_double(grib_accessor*, double* val, size_t* len); static int unpack_string(grib_accessor*, char*, size_t* len); static void dump(grib_accessor*, grib_dumper*); -//static void init_class(grib_accessor_class*); static int compare(grib_accessor*, grib_accessor*); typedef struct grib_accessor_long diff --git a/src/grib_accessor_class_long_vector.cc b/src/grib_accessor_class_long_vector.cc index b397e00e4..612163a3e 100644 --- a/src/grib_accessor_class_long_vector.cc +++ b/src/grib_accessor_class_long_vector.cc @@ -44,7 +44,6 @@ static int pack_long(grib_accessor*, const long* val, size_t* len); static int unpack_double(grib_accessor*, double* val, size_t* len); static int unpack_long(grib_accessor*, long* val, size_t* len); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_long_vector { diff --git a/src/grib_accessor_class_longitudes.cc b/src/grib_accessor_class_longitudes.cc index 14bcaaf8a..083d40138 100644 --- a/src/grib_accessor_class_longitudes.cc +++ b/src/grib_accessor_class_longitudes.cc @@ -40,7 +40,6 @@ or edit "accessor.class" and rerun ./make_class.pl static int unpack_double(grib_accessor*, double* val, size_t* len); static int value_count(grib_accessor*, long*); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_longitudes { diff --git a/src/grib_accessor_class_lookup.cc b/src/grib_accessor_class_lookup.cc index 92ea09787..b7c9ce059 100644 --- a/src/grib_accessor_class_lookup.cc +++ b/src/grib_accessor_class_lookup.cc @@ -46,7 +46,6 @@ static long byte_offset(grib_accessor*); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); static void post_init(grib_accessor*); -//static void init_class(grib_accessor_class*); static int notify_change(grib_accessor*, grib_accessor*); typedef struct grib_accessor_lookup diff --git a/src/grib_accessor_class_mars_param.cc b/src/grib_accessor_class_mars_param.cc index 07b15ce63..fc120dd89 100644 --- a/src/grib_accessor_class_mars_param.cc +++ b/src/grib_accessor_class_mars_param.cc @@ -38,7 +38,6 @@ static int pack_string(grib_accessor*, const char*, size_t* len); static int unpack_string(grib_accessor*, char*, size_t* len); static size_t string_length(grib_accessor*); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_mars_param { diff --git a/src/grib_accessor_class_mars_step.cc b/src/grib_accessor_class_mars_step.cc index e1f8c0786..81b7d7750 100644 --- a/src/grib_accessor_class_mars_step.cc +++ b/src/grib_accessor_class_mars_step.cc @@ -43,7 +43,6 @@ static int unpack_string(grib_accessor*, char*, size_t* len); static size_t string_length(grib_accessor*); static int value_count(grib_accessor*, long*); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_mars_step { diff --git a/src/grib_accessor_class_md5.cc b/src/grib_accessor_class_md5.cc index 58477a5d7..142270098 100644 --- a/src/grib_accessor_class_md5.cc +++ b/src/grib_accessor_class_md5.cc @@ -40,7 +40,6 @@ static int unpack_string(grib_accessor*, char*, size_t* len); static int value_count(grib_accessor*, long*); static void destroy(grib_context*, grib_accessor*); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); static int compare(grib_accessor*, grib_accessor*); typedef struct grib_accessor_md5 diff --git a/src/grib_accessor_class_message.cc b/src/grib_accessor_class_message.cc index 467ffbe6c..3a9ecc910 100644 --- a/src/grib_accessor_class_message.cc +++ b/src/grib_accessor_class_message.cc @@ -40,7 +40,6 @@ static int unpack_string(grib_accessor*, char*, size_t* len); static size_t string_length(grib_accessor*); static int value_count(grib_accessor*, long*); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); static void update_size(grib_accessor*, size_t); static void resize(grib_accessor*,size_t); static int compare(grib_accessor*, grib_accessor*); diff --git a/src/grib_accessor_class_message_copy.cc b/src/grib_accessor_class_message_copy.cc index e4fce362a..4b3df8857 100644 --- a/src/grib_accessor_class_message_copy.cc +++ b/src/grib_accessor_class_message_copy.cc @@ -39,7 +39,6 @@ static size_t string_length(grib_accessor*); static long byte_count(grib_accessor*); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_message_copy { diff --git a/src/grib_accessor_class_missing.cc b/src/grib_accessor_class_missing.cc index 5d4ca2d91..0847ce699 100644 --- a/src/grib_accessor_class_missing.cc +++ b/src/grib_accessor_class_missing.cc @@ -60,7 +60,6 @@ static int value_count(grib_accessor*, long*); static void destroy(grib_context*, grib_accessor*); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); static int notify_change(grib_accessor*, grib_accessor*); static void update_size(grib_accessor*, size_t); diff --git a/src/grib_accessor_class_nearest.cc b/src/grib_accessor_class_nearest.cc index bfbfaa8d1..0620b5395 100644 --- a/src/grib_accessor_class_nearest.cc +++ b/src/grib_accessor_class_nearest.cc @@ -33,7 +33,6 @@ or edit "accessor.class" and rerun ./make_class.pl static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_nearest { diff --git a/src/grib_accessor_class_non_alpha.cc b/src/grib_accessor_class_non_alpha.cc index 042f65851..3b5badd23 100644 --- a/src/grib_accessor_class_non_alpha.cc +++ b/src/grib_accessor_class_non_alpha.cc @@ -52,7 +52,6 @@ static long next_offset(grib_accessor*); static int value_count(grib_accessor*, long*); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); static int compare(grib_accessor*, grib_accessor*); typedef struct grib_accessor_non_alpha diff --git a/src/grib_accessor_class_number_of_coded_values.cc b/src/grib_accessor_class_number_of_coded_values.cc index af1925fbe..14ef832d7 100644 --- a/src/grib_accessor_class_number_of_coded_values.cc +++ b/src/grib_accessor_class_number_of_coded_values.cc @@ -41,7 +41,6 @@ or edit "accessor.class" and rerun ./make_class.pl static int unpack_long(grib_accessor*, long* val, size_t* len); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_number_of_coded_values { diff --git a/src/grib_accessor_class_number_of_points.cc b/src/grib_accessor_class_number_of_points.cc index 26365b340..6a270bb69 100644 --- a/src/grib_accessor_class_number_of_points.cc +++ b/src/grib_accessor_class_number_of_points.cc @@ -40,7 +40,6 @@ or edit "accessor.class" and rerun ./make_class.pl static int unpack_long(grib_accessor*, long* val, size_t* len); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_number_of_points { diff --git a/src/grib_accessor_class_number_of_points_gaussian.cc b/src/grib_accessor_class_number_of_points_gaussian.cc index 5f9540284..41d8971cb 100644 --- a/src/grib_accessor_class_number_of_points_gaussian.cc +++ b/src/grib_accessor_class_number_of_points_gaussian.cc @@ -48,7 +48,6 @@ or edit "accessor.class" and rerun ./make_class.pl static int unpack_long(grib_accessor*, long* val, size_t* len); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_number_of_points_gaussian { diff --git a/src/grib_accessor_class_number_of_values.cc b/src/grib_accessor_class_number_of_values.cc index bdc2b2b42..fb1aff779 100644 --- a/src/grib_accessor_class_number_of_values.cc +++ b/src/grib_accessor_class_number_of_values.cc @@ -42,7 +42,6 @@ or edit "accessor.class" and rerun ./make_class.pl static int unpack_long(grib_accessor*, long* val, size_t* len); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_number_of_values { diff --git a/src/grib_accessor_class_number_of_values_data_raw_packing.cc b/src/grib_accessor_class_number_of_values_data_raw_packing.cc index fae4a3258..5bde2a163 100644 --- a/src/grib_accessor_class_number_of_values_data_raw_packing.cc +++ b/src/grib_accessor_class_number_of_values_data_raw_packing.cc @@ -49,7 +49,6 @@ or edit "accessor.class" and rerun ./make_class.pl static int get_native_type(grib_accessor*); static int unpack_long(grib_accessor*, long* val, size_t* len); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_number_of_values_data_raw_packing { diff --git a/src/grib_accessor_class_octahedral_gaussian.cc b/src/grib_accessor_class_octahedral_gaussian.cc index 482bf7af0..8035c9ab0 100644 --- a/src/grib_accessor_class_octahedral_gaussian.cc +++ b/src/grib_accessor_class_octahedral_gaussian.cc @@ -40,7 +40,6 @@ or edit "accessor.class" and rerun ./make_class.pl static int pack_long(grib_accessor*, const long* val, size_t* len); static int unpack_long(grib_accessor*, long* val, size_t* len); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_octahedral_gaussian { diff --git a/src/grib_accessor_class_octet_number.cc b/src/grib_accessor_class_octet_number.cc index 4b8bdeb8a..0f2a0d5be 100644 --- a/src/grib_accessor_class_octet_number.cc +++ b/src/grib_accessor_class_octet_number.cc @@ -40,7 +40,6 @@ or edit "accessor.class" and rerun ./make_class.pl static int pack_long(grib_accessor*, const long* val, size_t* len); static int unpack_long(grib_accessor*, long* val, size_t* len); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_octet_number { diff --git a/src/grib_accessor_class_offset_file.cc b/src/grib_accessor_class_offset_file.cc index d672a3dc3..d056af268 100644 --- a/src/grib_accessor_class_offset_file.cc +++ b/src/grib_accessor_class_offset_file.cc @@ -38,7 +38,6 @@ or edit "accessor.class" and rerun ./make_class.pl static int unpack_double(grib_accessor*, double* val, size_t* len); static int unpack_string(grib_accessor*, char*, size_t* len); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_offset_file { diff --git a/src/grib_accessor_class_offset_values.cc b/src/grib_accessor_class_offset_values.cc index 681a5c00a..012698f79 100644 --- a/src/grib_accessor_class_offset_values.cc +++ b/src/grib_accessor_class_offset_values.cc @@ -39,7 +39,6 @@ or edit "accessor.class" and rerun ./make_class.pl static int pack_double(grib_accessor*, const double* val, size_t* len); static int unpack_double(grib_accessor*, double* val, size_t* len); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_offset_values { diff --git a/src/grib_accessor_class_pack_bufr_values.cc b/src/grib_accessor_class_pack_bufr_values.cc index af7b43ec9..a076e12ac 100644 --- a/src/grib_accessor_class_pack_bufr_values.cc +++ b/src/grib_accessor_class_pack_bufr_values.cc @@ -47,7 +47,6 @@ static int value_count(grib_accessor*, long*); static void destroy(grib_context*, grib_accessor*); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_pack_bufr_values { diff --git a/src/grib_accessor_class_pad.cc b/src/grib_accessor_class_pad.cc index fe969c4c3..473a507e1 100644 --- a/src/grib_accessor_class_pad.cc +++ b/src/grib_accessor_class_pad.cc @@ -37,7 +37,6 @@ or edit "accessor.class" and rerun ./make_class.pl */ static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); static size_t preferred_size(grib_accessor*, int); typedef struct grib_accessor_pad diff --git a/src/grib_accessor_class_padding.cc b/src/grib_accessor_class_padding.cc index 06a56b6b6..44e1083b2 100644 --- a/src/grib_accessor_class_padding.cc +++ b/src/grib_accessor_class_padding.cc @@ -39,7 +39,6 @@ static size_t string_length(grib_accessor*); static long byte_count(grib_accessor*); static int value_count(grib_accessor*, long*); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); static void update_size(grib_accessor*, size_t); static void resize(grib_accessor*,size_t); static int compare(grib_accessor*, grib_accessor*); diff --git a/src/grib_accessor_class_padto.cc b/src/grib_accessor_class_padto.cc index 221f63cfc..f6f9417b4 100644 --- a/src/grib_accessor_class_padto.cc +++ b/src/grib_accessor_class_padto.cc @@ -37,7 +37,6 @@ or edit "accessor.class" and rerun ./make_class.pl static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); static size_t preferred_size(grib_accessor*, int); typedef struct grib_accessor_padto diff --git a/src/grib_accessor_class_padtoeven.cc b/src/grib_accessor_class_padtoeven.cc index 67cd553f5..c75e0e254 100644 --- a/src/grib_accessor_class_padtoeven.cc +++ b/src/grib_accessor_class_padtoeven.cc @@ -37,7 +37,6 @@ or edit "accessor.class" and rerun ./make_class.pl */ static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); static size_t preferred_size(grib_accessor*, int); typedef struct grib_accessor_padtoeven diff --git a/src/grib_accessor_class_padtomultiple.cc b/src/grib_accessor_class_padtomultiple.cc index 89100808c..3104cdf2f 100644 --- a/src/grib_accessor_class_padtomultiple.cc +++ b/src/grib_accessor_class_padtomultiple.cc @@ -38,7 +38,6 @@ or edit "accessor.class" and rerun ./make_class.pl */ static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); static size_t preferred_size(grib_accessor*, int); typedef struct grib_accessor_padtomultiple diff --git a/src/grib_accessor_class_position.cc b/src/grib_accessor_class_position.cc index a14385523..1aef0a94f 100644 --- a/src/grib_accessor_class_position.cc +++ b/src/grib_accessor_class_position.cc @@ -42,7 +42,6 @@ static int get_native_type(grib_accessor*); static int unpack_long(grib_accessor*, long* val, size_t* len); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); static int compare(grib_accessor*, grib_accessor*); typedef struct grib_accessor_position diff --git a/src/grib_accessor_class_proj_string.cc b/src/grib_accessor_class_proj_string.cc index bbeae4ae3..ffd5ed831 100644 --- a/src/grib_accessor_class_proj_string.cc +++ b/src/grib_accessor_class_proj_string.cc @@ -36,7 +36,6 @@ or edit "accessor.class" and rerun ./make_class.pl static int get_native_type(grib_accessor*); static int unpack_string(grib_accessor*, char*, size_t* len); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_proj_string { diff --git a/src/grib_accessor_class_raw.cc b/src/grib_accessor_class_raw.cc index d3a1203ff..f38153b43 100644 --- a/src/grib_accessor_class_raw.cc +++ b/src/grib_accessor_class_raw.cc @@ -40,7 +40,6 @@ static int unpack_bytes(grib_accessor*, unsigned char*, size_t* len); static long byte_count(grib_accessor*); static int value_count(grib_accessor*, long*); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); static void update_size(grib_accessor*, size_t); static int compare(grib_accessor*, grib_accessor*); diff --git a/src/grib_accessor_class_rdbtime_guess_date.cc b/src/grib_accessor_class_rdbtime_guess_date.cc index eb94db18f..7bd8a3c4a 100644 --- a/src/grib_accessor_class_rdbtime_guess_date.cc +++ b/src/grib_accessor_class_rdbtime_guess_date.cc @@ -41,7 +41,6 @@ static int pack_long(grib_accessor*, const long* val, size_t* len); static int unpack_long(grib_accessor*, long* val, size_t* len); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_rdbtime_guess_date { diff --git a/src/grib_accessor_class_reference_value_error.cc b/src/grib_accessor_class_reference_value_error.cc index fe4ee60d5..3cc4af20d 100644 --- a/src/grib_accessor_class_reference_value_error.cc +++ b/src/grib_accessor_class_reference_value_error.cc @@ -40,7 +40,6 @@ or edit "accessor.class" and rerun ./make_class.pl static int unpack_double(grib_accessor*, double* val, size_t* len); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_reference_value_error { diff --git a/src/grib_accessor_class_round.cc b/src/grib_accessor_class_round.cc index c6ffc6f62..98fe2fda5 100644 --- a/src/grib_accessor_class_round.cc +++ b/src/grib_accessor_class_round.cc @@ -33,7 +33,6 @@ or edit "accessor.class" and rerun ./make_class.pl static int unpack_double(grib_accessor*, double* val, size_t* len); static int unpack_string(grib_accessor*, char*, size_t* len); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_round { diff --git a/src/grib_accessor_class_scale.cc b/src/grib_accessor_class_scale.cc index 56a8ade01..6fec75e94 100644 --- a/src/grib_accessor_class_scale.cc +++ b/src/grib_accessor_class_scale.cc @@ -46,7 +46,6 @@ static int pack_double(grib_accessor*, const double* val, size_t* len); static int pack_long(grib_accessor*, const long* val, size_t* len); static int unpack_double(grib_accessor*, double* val, size_t* len); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_scale { diff --git a/src/grib_accessor_class_scale_values.cc b/src/grib_accessor_class_scale_values.cc index 659dcafae..bae505f23 100644 --- a/src/grib_accessor_class_scale_values.cc +++ b/src/grib_accessor_class_scale_values.cc @@ -39,7 +39,6 @@ or edit "accessor.class" and rerun ./make_class.pl static int pack_double(grib_accessor*, const double* val, size_t* len); static int unpack_double(grib_accessor*, double* val, size_t* len); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_scale_values { diff --git a/src/grib_accessor_class_second_order_bits_per_value.cc b/src/grib_accessor_class_second_order_bits_per_value.cc index 45ab8862d..74c4b4c05 100644 --- a/src/grib_accessor_class_second_order_bits_per_value.cc +++ b/src/grib_accessor_class_second_order_bits_per_value.cc @@ -43,7 +43,6 @@ or edit "accessor.class" and rerun ./make_class.pl static int pack_long(grib_accessor*, const long* val, size_t* len); static int unpack_long(grib_accessor*, long* val, size_t* len); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_second_order_bits_per_value { diff --git a/src/grib_accessor_class_section.cc b/src/grib_accessor_class_section.cc index 32bf63f08..4b29c93bd 100644 --- a/src/grib_accessor_class_section.cc +++ b/src/grib_accessor_class_section.cc @@ -42,7 +42,6 @@ static long next_offset(grib_accessor*); static void destroy(grib_context*, grib_accessor*); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); static void update_size(grib_accessor*, size_t); static grib_accessor* next(grib_accessor*, int); diff --git a/src/grib_accessor_class_section_length.cc b/src/grib_accessor_class_section_length.cc index 30dfc21d2..4e5957e71 100644 --- a/src/grib_accessor_class_section_length.cc +++ b/src/grib_accessor_class_section_length.cc @@ -34,7 +34,6 @@ or edit "accessor.class" and rerun ./make_class.pl static int value_count(grib_accessor*, long*); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_section_length { diff --git a/src/grib_accessor_class_section_padding.cc b/src/grib_accessor_class_section_padding.cc index 952d4487c..682946df5 100644 --- a/src/grib_accessor_class_section_padding.cc +++ b/src/grib_accessor_class_section_padding.cc @@ -32,7 +32,6 @@ or edit "accessor.class" and rerun ./make_class.pl */ static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); static size_t preferred_size(grib_accessor*, int); typedef struct grib_accessor_section_padding diff --git a/src/grib_accessor_class_section_pointer.cc b/src/grib_accessor_class_section_pointer.cc index c4186db6e..e9b81614a 100644 --- a/src/grib_accessor_class_section_pointer.cc +++ b/src/grib_accessor_class_section_pointer.cc @@ -39,7 +39,6 @@ static int unpack_string(grib_accessor*, char*, size_t* len); static long byte_count(grib_accessor*); static long byte_offset(grib_accessor*); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_section_pointer { diff --git a/src/grib_accessor_class_select_step_template.cc b/src/grib_accessor_class_select_step_template.cc index 4184514e6..7a0e76c23 100644 --- a/src/grib_accessor_class_select_step_template.cc +++ b/src/grib_accessor_class_select_step_template.cc @@ -38,7 +38,6 @@ static int pack_long(grib_accessor*, const long* val, size_t* len); static int unpack_long(grib_accessor*, long* val, size_t* len); static int value_count(grib_accessor*, long*); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_select_step_template { diff --git a/src/grib_accessor_class_sexagesimal2decimal.cc b/src/grib_accessor_class_sexagesimal2decimal.cc index 028e92335..9e132d9c2 100644 --- a/src/grib_accessor_class_sexagesimal2decimal.cc +++ b/src/grib_accessor_class_sexagesimal2decimal.cc @@ -39,7 +39,6 @@ static int get_native_type(grib_accessor*); static int unpack_string(grib_accessor*, char*, size_t* len); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_sexagesimal2decimal { diff --git a/src/grib_accessor_class_signed.cc b/src/grib_accessor_class_signed.cc index 04c9e4ae5..3439934e1 100644 --- a/src/grib_accessor_class_signed.cc +++ b/src/grib_accessor_class_signed.cc @@ -48,7 +48,6 @@ static long next_offset(grib_accessor*); static int value_count(grib_accessor*, long*); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); static void update_size(grib_accessor*, size_t); typedef struct grib_accessor_signed diff --git a/src/grib_accessor_class_signed_bits.cc b/src/grib_accessor_class_signed_bits.cc index ce258b524..7082f827e 100644 --- a/src/grib_accessor_class_signed_bits.cc +++ b/src/grib_accessor_class_signed_bits.cc @@ -47,7 +47,6 @@ static long next_offset(grib_accessor*); static int value_count(grib_accessor*, long*); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); static void update_size(grib_accessor*, size_t); typedef struct grib_accessor_signed_bits diff --git a/src/grib_accessor_class_simple_packing_error.cc b/src/grib_accessor_class_simple_packing_error.cc index 835b2e7e5..3f5038a78 100644 --- a/src/grib_accessor_class_simple_packing_error.cc +++ b/src/grib_accessor_class_simple_packing_error.cc @@ -44,7 +44,6 @@ or edit "accessor.class" and rerun ./make_class.pl static int unpack_double(grib_accessor*, double* val, size_t* len); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_simple_packing_error { diff --git a/src/grib_accessor_class_size.cc b/src/grib_accessor_class_size.cc index f2cf0c297..410cec3c3 100644 --- a/src/grib_accessor_class_size.cc +++ b/src/grib_accessor_class_size.cc @@ -33,7 +33,6 @@ or edit "accessor.class" and rerun ./make_class.pl static int unpack_long(grib_accessor*, long* val, size_t* len); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_size { diff --git a/src/grib_accessor_class_smart_table.cc b/src/grib_accessor_class_smart_table.cc index 0dca60615..f9fda189d 100644 --- a/src/grib_accessor_class_smart_table.cc +++ b/src/grib_accessor_class_smart_table.cc @@ -55,7 +55,6 @@ static int value_count(grib_accessor*, long*); static void destroy(grib_context*, grib_accessor*); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_smart_table { diff --git a/src/grib_accessor_class_smart_table_column.cc b/src/grib_accessor_class_smart_table_column.cc index 097e34661..11ff964d3 100644 --- a/src/grib_accessor_class_smart_table_column.cc +++ b/src/grib_accessor_class_smart_table_column.cc @@ -41,7 +41,6 @@ static int value_count(grib_accessor*, long*); static void destroy(grib_context*, grib_accessor*); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_smart_table_column { diff --git a/src/grib_accessor_class_spd.cc b/src/grib_accessor_class_spd.cc index 13f75f130..22fa03dc5 100644 --- a/src/grib_accessor_class_spd.cc +++ b/src/grib_accessor_class_spd.cc @@ -47,7 +47,6 @@ static long next_offset(grib_accessor*); static int value_count(grib_accessor*, long*); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); static void update_size(grib_accessor*, size_t); typedef struct grib_accessor_spd diff --git a/src/grib_accessor_class_spectral_truncation.cc b/src/grib_accessor_class_spectral_truncation.cc index 72f4c6c64..6cc902fa7 100644 --- a/src/grib_accessor_class_spectral_truncation.cc +++ b/src/grib_accessor_class_spectral_truncation.cc @@ -42,7 +42,6 @@ or edit "accessor.class" and rerun ./make_class.pl static int unpack_long(grib_accessor*, long* val, size_t* len); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_spectral_truncation { diff --git a/src/grib_accessor_class_sprintf.cc b/src/grib_accessor_class_sprintf.cc index d7ad9b9f7..fe4a6ccd4 100644 --- a/src/grib_accessor_class_sprintf.cc +++ b/src/grib_accessor_class_sprintf.cc @@ -37,7 +37,6 @@ static int unpack_string(grib_accessor*, char*, size_t* len); static size_t string_length(grib_accessor*); static int value_count(grib_accessor*, long*); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_sprintf { diff --git a/src/grib_accessor_class_statistics.cc b/src/grib_accessor_class_statistics.cc index 7a0c1c72d..a041414ee 100644 --- a/src/grib_accessor_class_statistics.cc +++ b/src/grib_accessor_class_statistics.cc @@ -45,7 +45,6 @@ static int unpack_string(grib_accessor*, char*, size_t* len); static int value_count(grib_accessor*, long*); static void destroy(grib_context*, grib_accessor*); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); static int compare(grib_accessor*, grib_accessor*); typedef struct grib_accessor_statistics diff --git a/src/grib_accessor_class_statistics_spectral.cc b/src/grib_accessor_class_statistics_spectral.cc index 8643d7703..f545df07e 100644 --- a/src/grib_accessor_class_statistics_spectral.cc +++ b/src/grib_accessor_class_statistics_spectral.cc @@ -46,7 +46,6 @@ static int unpack_double(grib_accessor*, double* val, size_t* len); static int value_count(grib_accessor*, long*); static void destroy(grib_context*, grib_accessor*); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); static int compare(grib_accessor*, grib_accessor*); typedef struct grib_accessor_statistics_spectral diff --git a/src/grib_accessor_class_step_human_readable.cc b/src/grib_accessor_class_step_human_readable.cc index a11bb7fb7..1e62e044d 100644 --- a/src/grib_accessor_class_step_human_readable.cc +++ b/src/grib_accessor_class_step_human_readable.cc @@ -36,7 +36,6 @@ or edit "accessor.class" and rerun ./make_class.pl static int get_native_type(grib_accessor*); static int unpack_string(grib_accessor*, char*, size_t* len); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_step_human_readable { diff --git a/src/grib_accessor_class_step_in_units.cc b/src/grib_accessor_class_step_in_units.cc index 36f98dc91..acf570c19 100644 --- a/src/grib_accessor_class_step_in_units.cc +++ b/src/grib_accessor_class_step_in_units.cc @@ -41,7 +41,6 @@ static int pack_long(grib_accessor*, const long* val, size_t* len); static int unpack_long(grib_accessor*, long* val, size_t* len); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_step_in_units { diff --git a/src/grib_accessor_class_sum.cc b/src/grib_accessor_class_sum.cc index a1016b5b0..4d964fc0c 100644 --- a/src/grib_accessor_class_sum.cc +++ b/src/grib_accessor_class_sum.cc @@ -43,7 +43,6 @@ static int unpack_double(grib_accessor*, double* val, size_t* len); static int unpack_long(grib_accessor*, long* val, size_t* len); static int value_count(grib_accessor*, long*); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_sum { diff --git a/src/grib_accessor_class_suppressed.cc b/src/grib_accessor_class_suppressed.cc index 392441377..13a173f40 100644 --- a/src/grib_accessor_class_suppressed.cc +++ b/src/grib_accessor_class_suppressed.cc @@ -44,7 +44,6 @@ static int unpack_long(grib_accessor*, long* val, size_t* len); static int unpack_string(grib_accessor*, char*, size_t* len); static int value_count(grib_accessor*, long*); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_suppressed { diff --git a/src/grib_accessor_class_time.cc b/src/grib_accessor_class_time.cc index 344498bff..e993bc734 100644 --- a/src/grib_accessor_class_time.cc +++ b/src/grib_accessor_class_time.cc @@ -41,7 +41,6 @@ static int unpack_long(grib_accessor*, long* val, size_t* len); static int unpack_string(grib_accessor*, char*, size_t* len); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_time { diff --git a/src/grib_accessor_class_times.cc b/src/grib_accessor_class_times.cc index 5801c0088..8817de8c1 100644 --- a/src/grib_accessor_class_times.cc +++ b/src/grib_accessor_class_times.cc @@ -38,7 +38,6 @@ static int pack_long(grib_accessor*, const long* val, size_t* len); static int unpack_long(grib_accessor*, long* val, size_t* len); static int value_count(grib_accessor*, long*); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_times { diff --git a/src/grib_accessor_class_to_double.cc b/src/grib_accessor_class_to_double.cc index 30f57ef9f..3afbf5955 100644 --- a/src/grib_accessor_class_to_double.cc +++ b/src/grib_accessor_class_to_double.cc @@ -56,7 +56,6 @@ static long next_offset(grib_accessor*); static int value_count(grib_accessor*, long*); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); static int compare(grib_accessor*, grib_accessor*); typedef struct grib_accessor_to_double diff --git a/src/grib_accessor_class_to_integer.cc b/src/grib_accessor_class_to_integer.cc index 5f6726230..7e930bf82 100644 --- a/src/grib_accessor_class_to_integer.cc +++ b/src/grib_accessor_class_to_integer.cc @@ -56,7 +56,6 @@ static int value_count(grib_accessor*, long*); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); static void post_init(grib_accessor*); -//static void init_class(grib_accessor_class*); static int compare(grib_accessor*, grib_accessor*); typedef struct grib_accessor_to_integer diff --git a/src/grib_accessor_class_to_string.cc b/src/grib_accessor_class_to_string.cc index 77ba4330d..3daf8ca8f 100644 --- a/src/grib_accessor_class_to_string.cc +++ b/src/grib_accessor_class_to_string.cc @@ -56,7 +56,6 @@ static int value_count(grib_accessor*, long*); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); static void post_init(grib_accessor*); -//static void init_class(grib_accessor_class*); static int compare(grib_accessor*, grib_accessor*); typedef struct grib_accessor_to_string diff --git a/src/grib_accessor_class_transient.cc b/src/grib_accessor_class_transient.cc index bc30b049a..3e998adcb 100644 --- a/src/grib_accessor_class_transient.cc +++ b/src/grib_accessor_class_transient.cc @@ -30,7 +30,6 @@ or edit "accessor.class" and rerun ./make_class.pl */ -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_transient { diff --git a/src/grib_accessor_class_transient_darray.cc b/src/grib_accessor_class_transient_darray.cc index feb0e89d9..9a316459b 100644 --- a/src/grib_accessor_class_transient_darray.cc +++ b/src/grib_accessor_class_transient_darray.cc @@ -45,7 +45,6 @@ static int value_count(grib_accessor*, long*); static void destroy(grib_context*, grib_accessor*); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); static int compare(grib_accessor*, grib_accessor*); typedef struct grib_accessor_transient_darray diff --git a/src/grib_accessor_class_trim.cc b/src/grib_accessor_class_trim.cc index 3bb37003d..21948ab82 100644 --- a/src/grib_accessor_class_trim.cc +++ b/src/grib_accessor_class_trim.cc @@ -38,7 +38,6 @@ static int pack_string(grib_accessor*, const char*, size_t* len); static int unpack_string(grib_accessor*, char*, size_t* len); static size_t string_length(grib_accessor*); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_trim { diff --git a/src/grib_accessor_class_uint16.cc b/src/grib_accessor_class_uint16.cc index cb982e730..8977e92be 100644 --- a/src/grib_accessor_class_uint16.cc +++ b/src/grib_accessor_class_uint16.cc @@ -34,7 +34,6 @@ or edit "accessor.class" and rerun ./make_class.pl static int pack_long(grib_accessor*, const long* val, size_t* len); static int unpack_long(grib_accessor*, long* val, size_t* len); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_uint16 { diff --git a/src/grib_accessor_class_uint16_little_endian.cc b/src/grib_accessor_class_uint16_little_endian.cc index 0cb1401e1..e75a76c55 100644 --- a/src/grib_accessor_class_uint16_little_endian.cc +++ b/src/grib_accessor_class_uint16_little_endian.cc @@ -34,7 +34,6 @@ or edit "accessor.class" and rerun ./make_class.pl static int pack_long(grib_accessor*, const long* val, size_t* len); static int unpack_long(grib_accessor*, long* val, size_t* len); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_uint16_little_endian { diff --git a/src/grib_accessor_class_uint32.cc b/src/grib_accessor_class_uint32.cc index 72952db63..60e113ae0 100644 --- a/src/grib_accessor_class_uint32.cc +++ b/src/grib_accessor_class_uint32.cc @@ -36,7 +36,6 @@ or edit "accessor.class" and rerun ./make_class.pl static int get_native_type(grib_accessor*); static int pack_long(grib_accessor*, const long* val, size_t* len); static int unpack_long(grib_accessor*, long* val, size_t* len); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_uint32 { diff --git a/src/grib_accessor_class_uint32_little_endian.cc b/src/grib_accessor_class_uint32_little_endian.cc index c91c43344..79907c466 100644 --- a/src/grib_accessor_class_uint32_little_endian.cc +++ b/src/grib_accessor_class_uint32_little_endian.cc @@ -36,7 +36,6 @@ or edit "accessor.class" and rerun ./make_class.pl static int get_native_type(grib_accessor*); static int pack_long(grib_accessor*, const long* val, size_t* len); static int unpack_long(grib_accessor*, long* val, size_t* len); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_uint32_little_endian { diff --git a/src/grib_accessor_class_uint64.cc b/src/grib_accessor_class_uint64.cc index a2b7c2267..2ffe4fc14 100644 --- a/src/grib_accessor_class_uint64.cc +++ b/src/grib_accessor_class_uint64.cc @@ -36,7 +36,6 @@ or edit "accessor.class" and rerun ./make_class.pl static int get_native_type(grib_accessor*); static int pack_long(grib_accessor*, const long* val, size_t* len); static int unpack_long(grib_accessor*, long* val, size_t* len); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_uint64 { diff --git a/src/grib_accessor_class_uint64_little_endian.cc b/src/grib_accessor_class_uint64_little_endian.cc index 42145b505..cd579403e 100644 --- a/src/grib_accessor_class_uint64_little_endian.cc +++ b/src/grib_accessor_class_uint64_little_endian.cc @@ -36,7 +36,6 @@ or edit "accessor.class" and rerun ./make_class.pl static int get_native_type(grib_accessor*); static int pack_long(grib_accessor*, const long* val, size_t* len); static int unpack_long(grib_accessor*, long* val, size_t* len); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_uint64_little_endian { diff --git a/src/grib_accessor_class_uint8.cc b/src/grib_accessor_class_uint8.cc index 7ee71cc32..1c0ac0a2e 100644 --- a/src/grib_accessor_class_uint8.cc +++ b/src/grib_accessor_class_uint8.cc @@ -36,7 +36,6 @@ or edit "accessor.class" and rerun ./make_class.pl static int get_native_type(grib_accessor*); static int pack_long(grib_accessor*, const long* val, size_t* len); static int unpack_long(grib_accessor*, long* val, size_t* len); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_uint8 { diff --git a/src/grib_accessor_class_unexpanded_descriptors.cc b/src/grib_accessor_class_unexpanded_descriptors.cc index 0f8e107df..b583ce5cd 100644 --- a/src/grib_accessor_class_unexpanded_descriptors.cc +++ b/src/grib_accessor_class_unexpanded_descriptors.cc @@ -45,7 +45,6 @@ static long next_offset(grib_accessor*); static int value_count(grib_accessor*, long*); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); static void update_size(grib_accessor*, size_t); typedef struct grib_accessor_unexpanded_descriptors diff --git a/src/grib_accessor_class_unpack_bufr_values.cc b/src/grib_accessor_class_unpack_bufr_values.cc index 1d7f468f8..8dfc5e4f7 100644 --- a/src/grib_accessor_class_unpack_bufr_values.cc +++ b/src/grib_accessor_class_unpack_bufr_values.cc @@ -47,7 +47,6 @@ static int value_count(grib_accessor*, long*); static void destroy(grib_context*, grib_accessor*); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_unpack_bufr_values { diff --git a/src/grib_accessor_class_unsigned.cc b/src/grib_accessor_class_unsigned.cc index 1d3114156..f1202b0d0 100644 --- a/src/grib_accessor_class_unsigned.cc +++ b/src/grib_accessor_class_unsigned.cc @@ -48,7 +48,6 @@ static int value_count(grib_accessor*, long*); static void destroy(grib_context*, grib_accessor*); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); static void update_size(grib_accessor*, size_t); typedef struct grib_accessor_unsigned diff --git a/src/grib_accessor_class_unsigned_bits.cc b/src/grib_accessor_class_unsigned_bits.cc index 2833153df..026d4ff67 100644 --- a/src/grib_accessor_class_unsigned_bits.cc +++ b/src/grib_accessor_class_unsigned_bits.cc @@ -47,7 +47,6 @@ static long next_offset(grib_accessor*); static int value_count(grib_accessor*, long*); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); static void update_size(grib_accessor*, size_t); typedef struct grib_accessor_unsigned_bits diff --git a/src/grib_accessor_class_validity_date.cc b/src/grib_accessor_class_validity_date.cc index 203f61b2d..8182228ae 100644 --- a/src/grib_accessor_class_validity_date.cc +++ b/src/grib_accessor_class_validity_date.cc @@ -42,7 +42,6 @@ or edit "accessor.class" and rerun ./make_class.pl static int unpack_long(grib_accessor*, long* val, size_t* len); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_validity_date { diff --git a/src/grib_accessor_class_validity_time.cc b/src/grib_accessor_class_validity_time.cc index 33aed48d2..36af6cb98 100644 --- a/src/grib_accessor_class_validity_time.cc +++ b/src/grib_accessor_class_validity_time.cc @@ -41,7 +41,6 @@ or edit "accessor.class" and rerun ./make_class.pl static int unpack_long(grib_accessor*, long* val, size_t* len); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_validity_time { diff --git a/src/grib_accessor_class_values.cc b/src/grib_accessor_class_values.cc index 1715ef288..3e69cf56e 100644 --- a/src/grib_accessor_class_values.cc +++ b/src/grib_accessor_class_values.cc @@ -51,7 +51,6 @@ static long byte_offset(grib_accessor*); static long next_offset(grib_accessor*); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); static void update_size(grib_accessor*, size_t); static int compare(grib_accessor*, grib_accessor*); diff --git a/src/grib_accessor_class_variable.cc b/src/grib_accessor_class_variable.cc index 2aac02941..92d6fdd9c 100644 --- a/src/grib_accessor_class_variable.cc +++ b/src/grib_accessor_class_variable.cc @@ -52,7 +52,6 @@ static int value_count(grib_accessor*, long*); static void destroy(grib_context*, grib_accessor*); static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); static int compare(grib_accessor*, grib_accessor*); static grib_accessor* make_clone(grib_accessor*, grib_section*, int*); diff --git a/src/grib_accessor_class_vector.cc b/src/grib_accessor_class_vector.cc index feae78ea9..1cc69a4c7 100644 --- a/src/grib_accessor_class_vector.cc +++ b/src/grib_accessor_class_vector.cc @@ -40,7 +40,6 @@ or edit "accessor.class" and rerun ./make_class.pl static int unpack_double(grib_accessor*, double* val, size_t* len); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); typedef struct grib_accessor_vector { diff --git a/src/grib_accessor_class_when.cc b/src/grib_accessor_class_when.cc index e46881759..6717c2c4a 100644 --- a/src/grib_accessor_class_when.cc +++ b/src/grib_accessor_class_when.cc @@ -38,7 +38,6 @@ or edit "accessor.class" and rerun ./make_class.pl static void dump(grib_accessor*, grib_dumper*); static void init(grib_accessor*, const long, grib_arguments*); -//static void init_class(grib_accessor_class*); static int notify_change(grib_accessor*, grib_accessor*); typedef struct grib_accessor_when From 38bdecaf95230b121a89bdc02fa614930f7067dd Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 3 Jul 2023 19:27:57 +0000 Subject: [PATCH 363/378] ECC-1623: BUFR: Assigning a single-element array to a string key fails with FunctionNotImplementedError --- src/grib_accessor_class_bufr_data_element.cc | 14 ++++++- tests/CMakeLists.txt | 1 + tests/bufr_ecc-1623.sh | 43 ++++++++++++++++++++ 3 files changed, 57 insertions(+), 1 deletion(-) create mode 100755 tests/bufr_ecc-1623.sh diff --git a/src/grib_accessor_class_bufr_data_element.cc b/src/grib_accessor_class_bufr_data_element.cc index 7ae0e2fd9..65c4cecfb 100644 --- a/src/grib_accessor_class_bufr_data_element.cc +++ b/src/grib_accessor_class_bufr_data_element.cc @@ -322,7 +322,19 @@ static int pack_string_array(grib_accessor* a, const char** v, size_t* len) } } else { - ret = GRIB_NOT_IMPLEMENTED; + //ECC-1623 + if (*len != self->numberOfSubsets) { + grib_context_log(c, GRIB_LOG_ERROR, + "Number of values mismatch for '%s': %zu strings provided but expected %ld (=number of subsets)", + a->name, *len, self->numberOfSubsets); + return GRIB_WRONG_ARRAY_SIZE; + } + for (i = 0; i < *len; i++) { + //idx = (int)self->numericValues->v[self->subsetNumber]->v[self->index] / 1000 - 1; + idx = (int)self->numericValues->v[i]->v[self->index] / 1000 - 1; + self->stringValues->v[idx]->v[0] = strdup(v[i]); + } + *len=1; } return ret; diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index a1dc38fae..385b12160 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -122,6 +122,7 @@ if( HAVE_BUILD_TOOLS ) bufr_ecc-1304 bufr_ecc-1347 bufr_ecc-1395 + bufr_ecc-1623 bufr_json_samples bufr_ecc-359 bufr_ecc-517 diff --git a/tests/bufr_ecc-1623.sh b/tests/bufr_ecc-1623.sh new file mode 100755 index 000000000..5d104ede8 --- /dev/null +++ b/tests/bufr_ecc-1623.sh @@ -0,0 +1,43 @@ +#!/bin/sh +# (C) Copyright 2005- ECMWF. +# +# This software is licensed under the terms of the Apache Licence Version 2.0 +# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. +# +# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by +# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. +# + +. ./include.ctest.sh + +REDIRECT=/dev/null + +label="bufr_ecc-1623_test" +tempBufr=temp.$label.bufr +tempFilt=temp.$label.filt +tempText=temp.$label.txt +tempRef=temp.$label.ref + +sample_bufr4=$ECCODES_SAMPLES_PATH/BUFR4.tmpl + +cat > $tempFilt < $tempText + +cat > $tempRef< Date: Mon, 3 Jul 2023 21:23:03 +0100 Subject: [PATCH 364/378] ECC-1623: Test --- tests/bufr_ecc-1623.sh | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/tests/bufr_ecc-1623.sh b/tests/bufr_ecc-1623.sh index 5d104ede8..1ee8d0d93 100755 --- a/tests/bufr_ecc-1623.sh +++ b/tests/bufr_ecc-1623.sh @@ -40,4 +40,18 @@ EOF diff $tempRef $tempText +# ------------------------ +cat > $tempFilt < Date: Mon, 3 Jul 2023 21:28:34 +0100 Subject: [PATCH 365/378] ECC-1623: Test --- tests/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 385b12160..f8c25d935 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -122,7 +122,6 @@ if( HAVE_BUILD_TOOLS ) bufr_ecc-1304 bufr_ecc-1347 bufr_ecc-1395 - bufr_ecc-1623 bufr_json_samples bufr_ecc-359 bufr_ecc-517 @@ -201,6 +200,7 @@ if( HAVE_BUILD_TOOLS ) bufr_ecc-1187 bufr_ecc-1305 bufr_ecc-1476 + bufr_ecc-1623 grib_ecc-490 grib_ecc-756 grib_ecc-806 From 26b79512032773240a3843195eff006c41bbfc1c Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 4 Jul 2023 09:02:05 +0000 Subject: [PATCH 366/378] ECC-1623: BUFR: Assigning a single-element array to a string key fails with FunctionNotImplementedError --- src/grib_accessor_class_bufr_data_element.cc | 14 ++++- tests/CMakeLists.txt | 1 + tests/bufr_ecc-1623.sh | 57 ++++++++++++++++++++ 3 files changed, 71 insertions(+), 1 deletion(-) create mode 100755 tests/bufr_ecc-1623.sh diff --git a/src/grib_accessor_class_bufr_data_element.cc b/src/grib_accessor_class_bufr_data_element.cc index 7ae0e2fd9..65c4cecfb 100644 --- a/src/grib_accessor_class_bufr_data_element.cc +++ b/src/grib_accessor_class_bufr_data_element.cc @@ -322,7 +322,19 @@ static int pack_string_array(grib_accessor* a, const char** v, size_t* len) } } else { - ret = GRIB_NOT_IMPLEMENTED; + //ECC-1623 + if (*len != self->numberOfSubsets) { + grib_context_log(c, GRIB_LOG_ERROR, + "Number of values mismatch for '%s': %zu strings provided but expected %ld (=number of subsets)", + a->name, *len, self->numberOfSubsets); + return GRIB_WRONG_ARRAY_SIZE; + } + for (i = 0; i < *len; i++) { + //idx = (int)self->numericValues->v[self->subsetNumber]->v[self->index] / 1000 - 1; + idx = (int)self->numericValues->v[i]->v[self->index] / 1000 - 1; + self->stringValues->v[idx]->v[0] = strdup(v[i]); + } + *len=1; } return ret; diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index a1dc38fae..f8c25d935 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -200,6 +200,7 @@ if( HAVE_BUILD_TOOLS ) bufr_ecc-1187 bufr_ecc-1305 bufr_ecc-1476 + bufr_ecc-1623 grib_ecc-490 grib_ecc-756 grib_ecc-806 diff --git a/tests/bufr_ecc-1623.sh b/tests/bufr_ecc-1623.sh new file mode 100755 index 000000000..1ee8d0d93 --- /dev/null +++ b/tests/bufr_ecc-1623.sh @@ -0,0 +1,57 @@ +#!/bin/sh +# (C) Copyright 2005- ECMWF. +# +# This software is licensed under the terms of the Apache Licence Version 2.0 +# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. +# +# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by +# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. +# + +. ./include.ctest.sh + +REDIRECT=/dev/null + +label="bufr_ecc-1623_test" +tempBufr=temp.$label.bufr +tempFilt=temp.$label.filt +tempText=temp.$label.txt +tempRef=temp.$label.ref + +sample_bufr4=$ECCODES_SAMPLES_PATH/BUFR4.tmpl + +cat > $tempFilt < $tempText + +cat > $tempRef< $tempFilt < Date: Tue, 4 Jul 2023 10:26:34 +0100 Subject: [PATCH 367/378] ECC-1623: Further tests --- tests/bufr_ecc-1623.sh | 34 ++++++++++++++++++++++++++-------- 1 file changed, 26 insertions(+), 8 deletions(-) diff --git a/tests/bufr_ecc-1623.sh b/tests/bufr_ecc-1623.sh index 1ee8d0d93..9709a6cee 100755 --- a/tests/bufr_ecc-1623.sh +++ b/tests/bufr_ecc-1623.sh @@ -10,16 +10,17 @@ . ./include.ctest.sh -REDIRECT=/dev/null - label="bufr_ecc-1623_test" -tempBufr=temp.$label.bufr +tempBufrA=temp.$label.A.bufr +tempBufrB=temp.$label.B.bufr tempFilt=temp.$label.filt tempText=temp.$label.txt tempRef=temp.$label.ref sample_bufr4=$ECCODES_SAMPLES_PATH/BUFR4.tmpl +# Test 1 +# ------------------------ cat > $tempFilt < $tempFilt < $tempText + ${tools_dir}/codes_bufr_filter - $tempBufrA > $tempText cat > $tempRef< $tempFilt < $tempFilt < $tempFilt < Date: Tue, 4 Jul 2023 13:14:01 +0100 Subject: [PATCH 368/378] ECC-1627: GRIB2: Add new pseudo-centre for ERA6 --- definitions/grib2/section.4.def | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/definitions/grib2/section.4.def b/definitions/grib2/section.4.def index 7eab7cd26..b62a15329 100644 --- a/definitions/grib2/section.4.def +++ b/definitions/grib2/section.4.def @@ -28,8 +28,9 @@ concept datasetForLocal(unknown) { "tigge" = {productionStatusOfProcessedData=5;} "s2s" = {productionStatusOfProcessedData=6;} "s2s" = {productionStatusOfProcessedData=7;} + "era6" = {marsClass="e6";} # for ERA6 parameters with constituentType "hydro" = {marsClass="ce";} # EFAS/GLOFAS - "hydro" = {marsClass="ul";} #ULYSSES + "hydro" = {marsClass="ul";} # ULYSSES "fire" = {marsClass="gw";} # Global Wildfire awareness system "uerra" = {productionStatusOfProcessedData=8;} # UERRA "uerra" = {productionStatusOfProcessedData=9;} # UERRA From 7382e1b5eaf1020f166ff8f660045a75dd863eeb Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 4 Jul 2023 16:41:36 +0100 Subject: [PATCH 369/378] ECC-1627: GRIB2: Add new pseudo-centre for ERA6 --- definitions/grib2/section.4.def | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/definitions/grib2/section.4.def b/definitions/grib2/section.4.def index 7eab7cd26..b62a15329 100644 --- a/definitions/grib2/section.4.def +++ b/definitions/grib2/section.4.def @@ -28,8 +28,9 @@ concept datasetForLocal(unknown) { "tigge" = {productionStatusOfProcessedData=5;} "s2s" = {productionStatusOfProcessedData=6;} "s2s" = {productionStatusOfProcessedData=7;} + "era6" = {marsClass="e6";} # for ERA6 parameters with constituentType "hydro" = {marsClass="ce";} # EFAS/GLOFAS - "hydro" = {marsClass="ul";} #ULYSSES + "hydro" = {marsClass="ul";} # ULYSSES "fire" = {marsClass="gw";} # Global Wildfire awareness system "uerra" = {productionStatusOfProcessedData=8;} # UERRA "uerra" = {productionStatusOfProcessedData=9;} # UERRA From 0d85edb7613dd8fe92a992758877234a4379f834 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 4 Jul 2023 16:31:22 +0000 Subject: [PATCH 370/378] ECC-1626: GRIB2: mass and water budget parameters for ERA6 --- definitions/grib2/cfVarName.def | 208 ++++++++++++++++++ .../grib2/localConcepts/ecmf/cfVarName.def | 18 ++ definitions/grib2/localConcepts/ecmf/name.def | 18 ++ .../grib2/localConcepts/ecmf/paramId.def | 18 ++ .../grib2/localConcepts/ecmf/shortName.def | 18 ++ .../grib2/localConcepts/ecmf/units.def | 18 ++ definitions/grib2/name.def | 208 ++++++++++++++++++ definitions/grib2/paramId.def | 208 ++++++++++++++++++ definitions/grib2/shortName.def | 208 ++++++++++++++++++ definitions/grib2/units.def | 208 ++++++++++++++++++ 10 files changed, 1130 insertions(+) diff --git a/definitions/grib2/cfVarName.def b/definitions/grib2/cfVarName.def index 911d10d3d..15bd351e0 100644 --- a/definitions/grib2/cfVarName.def +++ b/definitions/grib2/cfVarName.def @@ -2911,6 +2911,168 @@ typeOfSecondFixedSurface = 8 ; typeOfStatisticalProcessing = 1 ; } +#Time integrated, vertically integrated divergence of mass flux +'tvimd' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 35 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time integrated, vertically integrated eastward mass flux +'tvime' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 36 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time integrated, vertically integrated northward mass flux +'tvimn' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 37 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time integrated, vertically integrated divergence of water vapour flux +'tviwvd' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 160 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time integrated, vertically integrated divergence of cloud liquid water flux +'tviclwd' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 161 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time integrated, vertically integrated divergence of cloud ice water flux +'tviciwd' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 162 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time integrated, vertically integrated divergence of rain flux +'tvird' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 163 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time integrated, vertically integrated divergence of snow flux +'tvisd' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 164 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time integrated, vertically integrated eastward water vapour flux +'tviwve' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 150 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time integrated, vertically integrated northward water vapour flux +'tviwvn' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 151 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time integrated, vertically integrated eastward cloud liquid water flux +'tviclwe' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 152 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time integrated, vertically integrated northward cloud liquid water flux +'tviclwn' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 153 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time integrated, vertically integrated eastward cloud ice water flux +'tviciwe' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 154 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time integrated, vertically integrated northward cloud ice water flux +'tviciwn' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 155 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time integrated, vertically integrated eastward rain flux +'tvire' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 156 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time integrated, vertically integrated northward rain flux +'tvirn' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 157 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time integrated, vertically integrated eastward snow flux +'tvise' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 158 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time integrated, vertically integrated northward snow flux +'tvisn' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 159 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } #Mean temperature tendency due to short-wave radiation 'mttswr' = { discipline = 0 ; @@ -6514,6 +6676,52 @@ parameterNumber = 61 ; typeOfStatisticalProcessing = 1 ; } +#Emission mass flux from bio fuel +'emi_mflx_biofuel' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 8 ; + } +#Emission mass flux from fossil fuel +'emi_mflx_fossilfuel' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 9 ; + } +#Emission mass flux from other +'emi_mflx_other' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 0 ; + } +#Emission mass flux from oceans +'emi_mflx_ocean' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 11 ; + } +#Accumulated wet deposition mass flux +'acc_wetdep_mflx' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 7 ; + typeOfStatisticalProcessing = 1 ; + } +#Accumulated dry deposition mass flux +'acc_drydep_mflx' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 6 ; + typeOfStatisticalProcessing = 1 ; + } #Aerosol number density 'aer_ndens' = { discipline = 0 ; diff --git a/definitions/grib2/localConcepts/ecmf/cfVarName.def b/definitions/grib2/localConcepts/ecmf/cfVarName.def index 9d153f351..c70d05558 100644 --- a/definitions/grib2/localConcepts/ecmf/cfVarName.def +++ b/definitions/grib2/localConcepts/ecmf/cfVarName.def @@ -13992,6 +13992,24 @@ is_chemical_srcsink = 1 ; sourceSinkChemicalPhysicalProcess = 194 ; } +#Emission mass flux from soil +'emi_mflx_soil' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 195 ; + } +#Emission mass flux from wild animals +'emi_mflx_wildanim' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 196 ; + } #Aerosol negative fixer mass flux 'aer_negfix_mflx' = { localTablesVersion = 1 ; diff --git a/definitions/grib2/localConcepts/ecmf/name.def b/definitions/grib2/localConcepts/ecmf/name.def index 954df8831..62d543151 100644 --- a/definitions/grib2/localConcepts/ecmf/name.def +++ b/definitions/grib2/localConcepts/ecmf/name.def @@ -13992,6 +13992,24 @@ is_chemical_srcsink = 1 ; sourceSinkChemicalPhysicalProcess = 194 ; } +#Emission mass flux from soil +'Emission mass flux from soil' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 195 ; + } +#Emission mass flux from wild animals +'Emission mass flux from wild animals' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 196 ; + } #Aerosol negative fixer mass flux 'Aerosol negative fixer mass flux' = { localTablesVersion = 1 ; diff --git a/definitions/grib2/localConcepts/ecmf/paramId.def b/definitions/grib2/localConcepts/ecmf/paramId.def index a92cba27a..85f8dd20e 100644 --- a/definitions/grib2/localConcepts/ecmf/paramId.def +++ b/definitions/grib2/localConcepts/ecmf/paramId.def @@ -13992,6 +13992,24 @@ is_chemical_srcsink = 1 ; sourceSinkChemicalPhysicalProcess = 194 ; } +#Emission mass flux from soil +'442000' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 195 ; + } +#Emission mass flux from wild animals +'443000' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 196 ; + } #Aerosol negative fixer mass flux '451000' = { localTablesVersion = 1 ; diff --git a/definitions/grib2/localConcepts/ecmf/shortName.def b/definitions/grib2/localConcepts/ecmf/shortName.def index 08a7b1c84..8b028660e 100644 --- a/definitions/grib2/localConcepts/ecmf/shortName.def +++ b/definitions/grib2/localConcepts/ecmf/shortName.def @@ -13992,6 +13992,24 @@ is_chemical_srcsink = 1 ; sourceSinkChemicalPhysicalProcess = 194 ; } +#Emission mass flux from soil +'emi_mflx_soil' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 195 ; + } +#Emission mass flux from wild animals +'emi_mflx_wildanim' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 196 ; + } #Aerosol negative fixer mass flux 'aer_negfix_mflx' = { localTablesVersion = 1 ; diff --git a/definitions/grib2/localConcepts/ecmf/units.def b/definitions/grib2/localConcepts/ecmf/units.def index 5b6b2a8d2..7d8e3cd55 100644 --- a/definitions/grib2/localConcepts/ecmf/units.def +++ b/definitions/grib2/localConcepts/ecmf/units.def @@ -13992,6 +13992,24 @@ is_chemical_srcsink = 1 ; sourceSinkChemicalPhysicalProcess = 194 ; } +#Emission mass flux from soil +'kg m**-2 s**-1' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 195 ; + } +#Emission mass flux from wild animals +'kg m**-2 s**-1' = { + localTablesVersion = 1 ; + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 196 ; + } #Aerosol negative fixer mass flux 'kg m**-2 s**-1' = { localTablesVersion = 1 ; diff --git a/definitions/grib2/name.def b/definitions/grib2/name.def index d805dcb1f..a4d8c07cb 100644 --- a/definitions/grib2/name.def +++ b/definitions/grib2/name.def @@ -2911,6 +2911,168 @@ typeOfSecondFixedSurface = 8 ; typeOfStatisticalProcessing = 1 ; } +#Time integrated, vertically integrated divergence of mass flux +'Time integrated, vertically integrated divergence of mass flux' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 35 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time integrated, vertically integrated eastward mass flux +'Time integrated, vertically integrated eastward mass flux' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 36 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time integrated, vertically integrated northward mass flux +'Time integrated, vertically integrated northward mass flux' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 37 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time integrated, vertically integrated divergence of water vapour flux +'Time integrated, vertically integrated divergence of water vapour flux' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 160 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time integrated, vertically integrated divergence of cloud liquid water flux +'Time integrated, vertically integrated divergence of cloud liquid water flux' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 161 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time integrated, vertically integrated divergence of cloud ice water flux +'Time integrated, vertically integrated divergence of cloud ice water flux' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 162 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time integrated, vertically integrated divergence of rain flux +'Time integrated, vertically integrated divergence of rain flux' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 163 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time integrated, vertically integrated divergence of snow flux +'Time integrated, vertically integrated divergence of snow flux' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 164 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time integrated, vertically integrated eastward water vapour flux +'Time integrated, vertically integrated eastward water vapour flux' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 150 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time integrated, vertically integrated northward water vapour flux +'Time integrated, vertically integrated northward water vapour flux' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 151 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time integrated, vertically integrated eastward cloud liquid water flux +'Time integrated, vertically integrated eastward cloud liquid water flux' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 152 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time integrated, vertically integrated northward cloud liquid water flux +'Time integrated, vertically integrated northward cloud liquid water flux' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 153 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time integrated, vertically integrated eastward cloud ice water flux +'Time integrated, vertically integrated eastward cloud ice water flux' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 154 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time integrated, vertically integrated northward cloud ice water flux +'Time integrated, vertically integrated northward cloud ice water flux' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 155 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time integrated, vertically integrated eastward rain flux +'Time integrated, vertically integrated eastward rain flux' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 156 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time integrated, vertically integrated northward rain flux +'Time integrated, vertically integrated northward rain flux' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 157 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time integrated, vertically integrated eastward snow flux +'Time integrated, vertically integrated eastward snow flux' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 158 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time integrated, vertically integrated northward snow flux +'Time integrated, vertically integrated northward snow flux' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 159 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } #Mean temperature tendency due to short-wave radiation 'Mean temperature tendency due to short-wave radiation' = { discipline = 0 ; @@ -6514,6 +6676,52 @@ parameterNumber = 61 ; typeOfStatisticalProcessing = 1 ; } +#Emission mass flux from bio fuel +'Emission mass flux from bio fuel' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 8 ; + } +#Emission mass flux from fossil fuel +'Emission mass flux from fossil fuel' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 9 ; + } +#Emission mass flux from other +'Emission mass flux from other' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 0 ; + } +#Emission mass flux from oceans +'Emission mass flux from oceans' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 11 ; + } +#Accumulated wet deposition mass flux +'Accumulated wet deposition mass flux' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 7 ; + typeOfStatisticalProcessing = 1 ; + } +#Accumulated dry deposition mass flux +'Accumulated dry deposition mass flux' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 6 ; + typeOfStatisticalProcessing = 1 ; + } #Aerosol number density 'Aerosol number density' = { discipline = 0 ; diff --git a/definitions/grib2/paramId.def b/definitions/grib2/paramId.def index 7eed486ab..989f0f4f9 100644 --- a/definitions/grib2/paramId.def +++ b/definitions/grib2/paramId.def @@ -2911,6 +2911,168 @@ typeOfSecondFixedSurface = 8 ; typeOfStatisticalProcessing = 1 ; } +#Time integrated, vertically integrated divergence of mass flux +'233014' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 35 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time integrated, vertically integrated eastward mass flux +'233015' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 36 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time integrated, vertically integrated northward mass flux +'233016' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 37 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time integrated, vertically integrated divergence of water vapour flux +'233017' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 160 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time integrated, vertically integrated divergence of cloud liquid water flux +'233018' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 161 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time integrated, vertically integrated divergence of cloud ice water flux +'233019' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 162 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time integrated, vertically integrated divergence of rain flux +'233020' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 163 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time integrated, vertically integrated divergence of snow flux +'233021' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 164 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time integrated, vertically integrated eastward water vapour flux +'233022' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 150 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time integrated, vertically integrated northward water vapour flux +'233023' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 151 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time integrated, vertically integrated eastward cloud liquid water flux +'233024' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 152 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time integrated, vertically integrated northward cloud liquid water flux +'233025' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 153 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time integrated, vertically integrated eastward cloud ice water flux +'233026' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 154 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time integrated, vertically integrated northward cloud ice water flux +'233027' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 155 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time integrated, vertically integrated eastward rain flux +'233028' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 156 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time integrated, vertically integrated northward rain flux +'233029' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 157 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time integrated, vertically integrated eastward snow flux +'233030' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 158 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time integrated, vertically integrated northward snow flux +'233031' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 159 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } #Mean temperature tendency due to short-wave radiation '235001' = { discipline = 0 ; @@ -6514,6 +6676,52 @@ parameterNumber = 61 ; typeOfStatisticalProcessing = 1 ; } +#Emission mass flux from bio fuel +'438000' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 8 ; + } +#Emission mass flux from fossil fuel +'439000' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 9 ; + } +#Emission mass flux from other +'440000' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 0 ; + } +#Emission mass flux from oceans +'441000' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 11 ; + } +#Accumulated wet deposition mass flux +'444000' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 7 ; + typeOfStatisticalProcessing = 1 ; + } +#Accumulated dry deposition mass flux +'445000' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 6 ; + typeOfStatisticalProcessing = 1 ; + } #Aerosol number density '450000' = { discipline = 0 ; diff --git a/definitions/grib2/shortName.def b/definitions/grib2/shortName.def index 301dc51a5..5a9ab8f7f 100644 --- a/definitions/grib2/shortName.def +++ b/definitions/grib2/shortName.def @@ -2911,6 +2911,168 @@ typeOfSecondFixedSurface = 8 ; typeOfStatisticalProcessing = 1 ; } +#Time integrated, vertically integrated divergence of mass flux +'tvimd' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 35 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time integrated, vertically integrated eastward mass flux +'tvime' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 36 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time integrated, vertically integrated northward mass flux +'tvimn' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 37 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time integrated, vertically integrated divergence of water vapour flux +'tviwvd' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 160 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time integrated, vertically integrated divergence of cloud liquid water flux +'tviclwd' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 161 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time integrated, vertically integrated divergence of cloud ice water flux +'tviciwd' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 162 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time integrated, vertically integrated divergence of rain flux +'tvird' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 163 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time integrated, vertically integrated divergence of snow flux +'tvisd' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 164 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time integrated, vertically integrated eastward water vapour flux +'tviwve' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 150 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time integrated, vertically integrated northward water vapour flux +'tviwvn' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 151 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time integrated, vertically integrated eastward cloud liquid water flux +'tviclwe' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 152 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time integrated, vertically integrated northward cloud liquid water flux +'tviclwn' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 153 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time integrated, vertically integrated eastward cloud ice water flux +'tviciwe' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 154 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time integrated, vertically integrated northward cloud ice water flux +'tviciwn' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 155 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time integrated, vertically integrated eastward rain flux +'tvire' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 156 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time integrated, vertically integrated northward rain flux +'tvirn' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 157 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time integrated, vertically integrated eastward snow flux +'tvise' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 158 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time integrated, vertically integrated northward snow flux +'tvisn' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 159 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } #Mean temperature tendency due to short-wave radiation 'mttswr' = { discipline = 0 ; @@ -6514,6 +6676,52 @@ parameterNumber = 61 ; typeOfStatisticalProcessing = 1 ; } +#Emission mass flux from bio fuel +'emi_mflx_biofuel' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 8 ; + } +#Emission mass flux from fossil fuel +'emi_mflx_fossilfuel' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 9 ; + } +#Emission mass flux from other +'emi_mflx_other' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 0 ; + } +#Emission mass flux from oceans +'emi_mflx_ocean' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 11 ; + } +#Accumulated wet deposition mass flux +'acc_wetdep_mflx' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 7 ; + typeOfStatisticalProcessing = 1 ; + } +#Accumulated dry deposition mass flux +'acc_drydep_mflx' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 6 ; + typeOfStatisticalProcessing = 1 ; + } #Aerosol number density 'aer_ndens' = { discipline = 0 ; diff --git a/definitions/grib2/units.def b/definitions/grib2/units.def index 040c67ac2..bdd230a8f 100644 --- a/definitions/grib2/units.def +++ b/definitions/grib2/units.def @@ -2911,6 +2911,168 @@ typeOfSecondFixedSurface = 8 ; typeOfStatisticalProcessing = 1 ; } +#Time integrated, vertically integrated divergence of mass flux +'kg m**-2' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 35 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time integrated, vertically integrated eastward mass flux +'kg m**-1' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 36 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time integrated, vertically integrated northward mass flux +'kg m**-1' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 37 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time integrated, vertically integrated divergence of water vapour flux +'kg m**-2' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 160 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time integrated, vertically integrated divergence of cloud liquid water flux +'kg m**-2' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 161 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time integrated, vertically integrated divergence of cloud ice water flux +'kg m**-2' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 162 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time integrated, vertically integrated divergence of rain flux +'kg m**-2' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 163 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time integrated, vertically integrated divergence of snow flux +'kg m**-2' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 164 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time integrated, vertically integrated eastward water vapour flux +'kg m**-1' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 150 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time integrated, vertically integrated northward water vapour flux +'kg m**-1' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 151 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time integrated, vertically integrated eastward cloud liquid water flux +'kg m**-1' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 152 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time integrated, vertically integrated northward cloud liquid water flux +'kg m**-1' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 153 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time integrated, vertically integrated eastward cloud ice water flux +'kg m**-1' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 154 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time integrated, vertically integrated northward cloud ice water flux +'kg m**-1' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 155 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time integrated, vertically integrated eastward rain flux +'kg m**-1' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 156 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time integrated, vertically integrated northward rain flux +'kg m**-1' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 157 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time integrated, vertically integrated eastward snow flux +'kg m**-1' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 158 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time integrated, vertically integrated northward snow flux +'kg m**-1' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 159 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } #Mean temperature tendency due to short-wave radiation 'K s**-1' = { discipline = 0 ; @@ -6514,6 +6676,52 @@ parameterNumber = 61 ; typeOfStatisticalProcessing = 1 ; } +#Emission mass flux from bio fuel +'kg m**-2 s**-1' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 8 ; + } +#Emission mass flux from fossil fuel +'kg m**-2 s**-1' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 9 ; + } +#Emission mass flux from other +'kg m**-2 s**-1' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 0 ; + } +#Emission mass flux from oceans +'kg m**-2 s**-1' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 77 ; + is_chemical_srcsink = 1 ; + sourceSinkChemicalPhysicalProcess = 11 ; + } +#Accumulated wet deposition mass flux +'kg m**-2' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 7 ; + typeOfStatisticalProcessing = 1 ; + } +#Accumulated dry deposition mass flux +'kg m**-2' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 6 ; + typeOfStatisticalProcessing = 1 ; + } #Aerosol number density 'm**-3' = { discipline = 0 ; From b6a2c9e48a377bf85aa0c89368c09e3b24cdaefe Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 4 Jul 2023 17:39:10 +0100 Subject: [PATCH 371/378] ECC-1629: Local table entries --- definitions/grib2/tables/local/ecmf/1/4.238.table | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/definitions/grib2/tables/local/ecmf/1/4.238.table b/definitions/grib2/tables/local/ecmf/1/4.238.table index 36b20e9a2..08b6e162c 100644 --- a/definitions/grib2/tables/local/ecmf/1/4.238.table +++ b/definitions/grib2/tables/local/ecmf/1/4.238.table @@ -2,4 +2,5 @@ 192 192 Vegetation 193 193 Biomass burning 194 194 Settlements - +195 Soil +196 Wild animals From 960f404acd8971e5da5a39626927d5d63a69ade9 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 4 Jul 2023 17:04:44 +0000 Subject: [PATCH 372/378] ECC-1629: Fix local table --- definitions/grib2/tables/local/ecmf/1/4.238.table | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/definitions/grib2/tables/local/ecmf/1/4.238.table b/definitions/grib2/tables/local/ecmf/1/4.238.table index 08b6e162c..23a3468d8 100644 --- a/definitions/grib2/tables/local/ecmf/1/4.238.table +++ b/definitions/grib2/tables/local/ecmf/1/4.238.table @@ -2,5 +2,5 @@ 192 192 Vegetation 193 193 Biomass burning 194 194 Settlements -195 Soil -196 Wild animals +195 195 Soil +196 195 Wild animals From 78df88f9c98ee7f50c7f049e787d8d18e99d574c Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 4 Jul 2023 22:12:43 +0100 Subject: [PATCH 373/378] Definitions: Cleanup --- definitions/grib2/tables/10/4.1.192.table | 1 - definitions/grib2/tables/11/4.1.192.table | 1 - definitions/grib2/tables/12/4.1.192.table | 2 -- definitions/grib2/tables/13/4.1.192.table | 2 -- definitions/grib2/tables/15/4.1.192.table | 2 -- definitions/grib2/tables/16/4.1.192.table | 1 - definitions/grib2/tables/17/4.1.192.table | 1 - definitions/grib2/tables/18/4.1.192.table | 1 - definitions/grib2/tables/19/4.1.192.table | 1 - definitions/grib2/tables/20/4.1.192.table | 2 -- definitions/grib2/tables/21/4.1.192.table | 1 - definitions/grib2/tables/22/4.1.192.table | 2 -- definitions/grib2/tables/23/4.1.192.table | 2 -- definitions/grib2/tables/24/4.1.192.table | 2 -- definitions/grib2/tables/25/4.1.192.table | 1 - definitions/grib2/tables/26/4.1.192.table | 1 - definitions/grib2/tables/27/4.1.192.table | 1 - definitions/grib2/tables/28/4.1.192.table | 1 - definitions/grib2/tables/29/4.1.192.table | 1 - definitions/grib2/tables/30/4.1.192.table | 2 -- definitions/grib2/tables/31/4.1.192.table | 2 -- definitions/grib2/tables/4/4.1.192.table | 2 -- definitions/grib2/tables/5/4.1.192.table | 2 -- definitions/grib2/tables/6/4.1.192.table | 1 - definitions/grib2/tables/7/4.1.192.table | 1 - definitions/grib2/tables/8/4.1.192.table | 1 - definitions/grib2/tables/9/4.1.192.table | 1 - 27 files changed, 38 deletions(-) diff --git a/definitions/grib2/tables/10/4.1.192.table b/definitions/grib2/tables/10/4.1.192.table index c428acab0..67b962652 100644 --- a/definitions/grib2/tables/10/4.1.192.table +++ b/definitions/grib2/tables/10/4.1.192.table @@ -1,4 +1,3 @@ #Discipline 192: ECMWF local parameters 255 255 Missing - diff --git a/definitions/grib2/tables/11/4.1.192.table b/definitions/grib2/tables/11/4.1.192.table index c428acab0..67b962652 100644 --- a/definitions/grib2/tables/11/4.1.192.table +++ b/definitions/grib2/tables/11/4.1.192.table @@ -1,4 +1,3 @@ #Discipline 192: ECMWF local parameters 255 255 Missing - diff --git a/definitions/grib2/tables/12/4.1.192.table b/definitions/grib2/tables/12/4.1.192.table index c428acab0..5ee0de0d5 100644 --- a/definitions/grib2/tables/12/4.1.192.table +++ b/definitions/grib2/tables/12/4.1.192.table @@ -1,4 +1,2 @@ #Discipline 192: ECMWF local parameters 255 255 Missing - - diff --git a/definitions/grib2/tables/13/4.1.192.table b/definitions/grib2/tables/13/4.1.192.table index c428acab0..5ee0de0d5 100644 --- a/definitions/grib2/tables/13/4.1.192.table +++ b/definitions/grib2/tables/13/4.1.192.table @@ -1,4 +1,2 @@ #Discipline 192: ECMWF local parameters 255 255 Missing - - diff --git a/definitions/grib2/tables/15/4.1.192.table b/definitions/grib2/tables/15/4.1.192.table index c428acab0..5ee0de0d5 100644 --- a/definitions/grib2/tables/15/4.1.192.table +++ b/definitions/grib2/tables/15/4.1.192.table @@ -1,4 +1,2 @@ #Discipline 192: ECMWF local parameters 255 255 Missing - - diff --git a/definitions/grib2/tables/16/4.1.192.table b/definitions/grib2/tables/16/4.1.192.table index c428acab0..67b962652 100644 --- a/definitions/grib2/tables/16/4.1.192.table +++ b/definitions/grib2/tables/16/4.1.192.table @@ -1,4 +1,3 @@ #Discipline 192: ECMWF local parameters 255 255 Missing - diff --git a/definitions/grib2/tables/17/4.1.192.table b/definitions/grib2/tables/17/4.1.192.table index c428acab0..67b962652 100644 --- a/definitions/grib2/tables/17/4.1.192.table +++ b/definitions/grib2/tables/17/4.1.192.table @@ -1,4 +1,3 @@ #Discipline 192: ECMWF local parameters 255 255 Missing - diff --git a/definitions/grib2/tables/18/4.1.192.table b/definitions/grib2/tables/18/4.1.192.table index c428acab0..67b962652 100644 --- a/definitions/grib2/tables/18/4.1.192.table +++ b/definitions/grib2/tables/18/4.1.192.table @@ -1,4 +1,3 @@ #Discipline 192: ECMWF local parameters 255 255 Missing - diff --git a/definitions/grib2/tables/19/4.1.192.table b/definitions/grib2/tables/19/4.1.192.table index c428acab0..67b962652 100644 --- a/definitions/grib2/tables/19/4.1.192.table +++ b/definitions/grib2/tables/19/4.1.192.table @@ -1,4 +1,3 @@ #Discipline 192: ECMWF local parameters 255 255 Missing - diff --git a/definitions/grib2/tables/20/4.1.192.table b/definitions/grib2/tables/20/4.1.192.table index c428acab0..5ee0de0d5 100644 --- a/definitions/grib2/tables/20/4.1.192.table +++ b/definitions/grib2/tables/20/4.1.192.table @@ -1,4 +1,2 @@ #Discipline 192: ECMWF local parameters 255 255 Missing - - diff --git a/definitions/grib2/tables/21/4.1.192.table b/definitions/grib2/tables/21/4.1.192.table index c428acab0..67b962652 100644 --- a/definitions/grib2/tables/21/4.1.192.table +++ b/definitions/grib2/tables/21/4.1.192.table @@ -1,4 +1,3 @@ #Discipline 192: ECMWF local parameters 255 255 Missing - diff --git a/definitions/grib2/tables/22/4.1.192.table b/definitions/grib2/tables/22/4.1.192.table index c428acab0..5ee0de0d5 100644 --- a/definitions/grib2/tables/22/4.1.192.table +++ b/definitions/grib2/tables/22/4.1.192.table @@ -1,4 +1,2 @@ #Discipline 192: ECMWF local parameters 255 255 Missing - - diff --git a/definitions/grib2/tables/23/4.1.192.table b/definitions/grib2/tables/23/4.1.192.table index c428acab0..5ee0de0d5 100644 --- a/definitions/grib2/tables/23/4.1.192.table +++ b/definitions/grib2/tables/23/4.1.192.table @@ -1,4 +1,2 @@ #Discipline 192: ECMWF local parameters 255 255 Missing - - diff --git a/definitions/grib2/tables/24/4.1.192.table b/definitions/grib2/tables/24/4.1.192.table index c428acab0..5ee0de0d5 100644 --- a/definitions/grib2/tables/24/4.1.192.table +++ b/definitions/grib2/tables/24/4.1.192.table @@ -1,4 +1,2 @@ #Discipline 192: ECMWF local parameters 255 255 Missing - - diff --git a/definitions/grib2/tables/25/4.1.192.table b/definitions/grib2/tables/25/4.1.192.table index c428acab0..67b962652 100644 --- a/definitions/grib2/tables/25/4.1.192.table +++ b/definitions/grib2/tables/25/4.1.192.table @@ -1,4 +1,3 @@ #Discipline 192: ECMWF local parameters 255 255 Missing - diff --git a/definitions/grib2/tables/26/4.1.192.table b/definitions/grib2/tables/26/4.1.192.table index c428acab0..67b962652 100644 --- a/definitions/grib2/tables/26/4.1.192.table +++ b/definitions/grib2/tables/26/4.1.192.table @@ -1,4 +1,3 @@ #Discipline 192: ECMWF local parameters 255 255 Missing - diff --git a/definitions/grib2/tables/27/4.1.192.table b/definitions/grib2/tables/27/4.1.192.table index c428acab0..67b962652 100644 --- a/definitions/grib2/tables/27/4.1.192.table +++ b/definitions/grib2/tables/27/4.1.192.table @@ -1,4 +1,3 @@ #Discipline 192: ECMWF local parameters 255 255 Missing - diff --git a/definitions/grib2/tables/28/4.1.192.table b/definitions/grib2/tables/28/4.1.192.table index c428acab0..67b962652 100644 --- a/definitions/grib2/tables/28/4.1.192.table +++ b/definitions/grib2/tables/28/4.1.192.table @@ -1,4 +1,3 @@ #Discipline 192: ECMWF local parameters 255 255 Missing - diff --git a/definitions/grib2/tables/29/4.1.192.table b/definitions/grib2/tables/29/4.1.192.table index c428acab0..67b962652 100644 --- a/definitions/grib2/tables/29/4.1.192.table +++ b/definitions/grib2/tables/29/4.1.192.table @@ -1,4 +1,3 @@ #Discipline 192: ECMWF local parameters 255 255 Missing - diff --git a/definitions/grib2/tables/30/4.1.192.table b/definitions/grib2/tables/30/4.1.192.table index c428acab0..5ee0de0d5 100644 --- a/definitions/grib2/tables/30/4.1.192.table +++ b/definitions/grib2/tables/30/4.1.192.table @@ -1,4 +1,2 @@ #Discipline 192: ECMWF local parameters 255 255 Missing - - diff --git a/definitions/grib2/tables/31/4.1.192.table b/definitions/grib2/tables/31/4.1.192.table index c428acab0..5ee0de0d5 100644 --- a/definitions/grib2/tables/31/4.1.192.table +++ b/definitions/grib2/tables/31/4.1.192.table @@ -1,4 +1,2 @@ #Discipline 192: ECMWF local parameters 255 255 Missing - - diff --git a/definitions/grib2/tables/4/4.1.192.table b/definitions/grib2/tables/4/4.1.192.table index c428acab0..5ee0de0d5 100644 --- a/definitions/grib2/tables/4/4.1.192.table +++ b/definitions/grib2/tables/4/4.1.192.table @@ -1,4 +1,2 @@ #Discipline 192: ECMWF local parameters 255 255 Missing - - diff --git a/definitions/grib2/tables/5/4.1.192.table b/definitions/grib2/tables/5/4.1.192.table index c428acab0..5ee0de0d5 100644 --- a/definitions/grib2/tables/5/4.1.192.table +++ b/definitions/grib2/tables/5/4.1.192.table @@ -1,4 +1,2 @@ #Discipline 192: ECMWF local parameters 255 255 Missing - - diff --git a/definitions/grib2/tables/6/4.1.192.table b/definitions/grib2/tables/6/4.1.192.table index c428acab0..67b962652 100644 --- a/definitions/grib2/tables/6/4.1.192.table +++ b/definitions/grib2/tables/6/4.1.192.table @@ -1,4 +1,3 @@ #Discipline 192: ECMWF local parameters 255 255 Missing - diff --git a/definitions/grib2/tables/7/4.1.192.table b/definitions/grib2/tables/7/4.1.192.table index c428acab0..67b962652 100644 --- a/definitions/grib2/tables/7/4.1.192.table +++ b/definitions/grib2/tables/7/4.1.192.table @@ -1,4 +1,3 @@ #Discipline 192: ECMWF local parameters 255 255 Missing - diff --git a/definitions/grib2/tables/8/4.1.192.table b/definitions/grib2/tables/8/4.1.192.table index c428acab0..67b962652 100644 --- a/definitions/grib2/tables/8/4.1.192.table +++ b/definitions/grib2/tables/8/4.1.192.table @@ -1,4 +1,3 @@ #Discipline 192: ECMWF local parameters 255 255 Missing - diff --git a/definitions/grib2/tables/9/4.1.192.table b/definitions/grib2/tables/9/4.1.192.table index c428acab0..67b962652 100644 --- a/definitions/grib2/tables/9/4.1.192.table +++ b/definitions/grib2/tables/9/4.1.192.table @@ -1,4 +1,3 @@ #Discipline 192: ECMWF local parameters 255 255 Missing - From c0e12e6ad8e827550e8d857797e4f482710f6c32 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 6 Jul 2023 11:55:57 +0000 Subject: [PATCH 374/378] ECC-1628: GRIB2: Energy budget parameters for ERA6 (Part 1) --- .../grib1/localConcepts/ecmf/cfVarName.def | 24 +++++++------- definitions/grib1/localConcepts/ecmf/name.def | 16 +++++----- .../grib1/localConcepts/ecmf/paramId.def | 8 ++--- .../grib1/localConcepts/ecmf/shortName.def | 8 ++--- .../grib1/localConcepts/ecmf/units.def | 8 ++--- definitions/grib2/cfVarName.def | 32 +++++++++++++++++++ .../grib2/localConcepts/ecmf/cfVarName.def | 24 -------------- .../localConcepts/ecmf/cfVarName.legacy.def | 24 ++++++++++++++ definitions/grib2/localConcepts/ecmf/name.def | 24 -------------- .../grib2/localConcepts/ecmf/name.legacy.def | 24 ++++++++++++++ .../grib2/localConcepts/ecmf/paramId.def | 24 -------------- .../localConcepts/ecmf/paramId.legacy.def | 24 ++++++++++++++ .../grib2/localConcepts/ecmf/shortName.def | 24 -------------- .../localConcepts/ecmf/shortName.legacy.def | 24 ++++++++++++++ .../grib2/localConcepts/ecmf/units.def | 24 -------------- .../grib2/localConcepts/ecmf/units.legacy.def | 24 ++++++++++++++ definitions/grib2/name.def | 32 +++++++++++++++++++ definitions/grib2/paramId.def | 32 +++++++++++++++++++ definitions/grib2/shortName.def | 32 +++++++++++++++++++ definitions/grib2/units.def | 32 +++++++++++++++++++ 20 files changed, 312 insertions(+), 152 deletions(-) diff --git a/definitions/grib1/localConcepts/ecmf/cfVarName.def b/definitions/grib1/localConcepts/ecmf/cfVarName.def index ab74dcf96..d3eb5a4f0 100644 --- a/definitions/grib1/localConcepts/ecmf/cfVarName.def +++ b/definitions/grib1/localConcepts/ecmf/cfVarName.def @@ -13699,43 +13699,43 @@ table2Version = 162 ; indicatorOfParameter = 58 ; } -#Vertical integral of kinetic energy -'p59.162' = { +#Total column vertically-integrated kinetic energy +'vike' = { table2Version = 162 ; indicatorOfParameter = 59 ; } -#Vertical integral of thermal energy -'p60.162' = { +#Total column vertically-integrated enthalpy +'vithe' = { table2Version = 162 ; indicatorOfParameter = 60 ; } -#Vertical integral of potential+internal energy -'p61.162' = { +#Total column vertically-integrated potential + internal energy +'vipie' = { table2Version = 162 ; indicatorOfParameter = 61 ; } #Vertical integral of potential+internal+latent energy -'p62.162' = { +'vipile' = { table2Version = 162 ; indicatorOfParameter = 62 ; } -#Vertical integral of total energy -'p63.162' = { +#Total column vertically-integrated total energy +'vitoe' = { table2Version = 162 ; indicatorOfParameter = 63 ; } #Vertical integral of energy conversion -'p64.162' = { +'viec' = { table2Version = 162 ; indicatorOfParameter = 64 ; } #Vertical integral of eastward mass flux -'p65.162' = { +'vimae' = { table2Version = 162 ; indicatorOfParameter = 65 ; } #Vertical integral of northward mass flux -'p66.162' = { +'viman' = { table2Version = 162 ; indicatorOfParameter = 66 ; } diff --git a/definitions/grib1/localConcepts/ecmf/name.def b/definitions/grib1/localConcepts/ecmf/name.def index 867cf8a4c..6cc48c520 100644 --- a/definitions/grib1/localConcepts/ecmf/name.def +++ b/definitions/grib1/localConcepts/ecmf/name.def @@ -13699,18 +13699,18 @@ table2Version = 162 ; indicatorOfParameter = 58 ; } -#Vertical integral of kinetic energy -'Vertical integral of kinetic energy' = { +#Total column vertically-integrated kinetic energy +'Total column vertically-integrated kinetic energy' = { table2Version = 162 ; indicatorOfParameter = 59 ; } -#Vertical integral of thermal energy -'Vertical integral of thermal energy' = { +#Total column vertically-integrated enthalpy +'Total column vertically-integrated enthalpy' = { table2Version = 162 ; indicatorOfParameter = 60 ; } -#Vertical integral of potential+internal energy -'Vertical integral of potential+internal energy' = { +#Total column vertically-integrated potential + internal energy +'Total column vertically-integrated potential + internal energy' = { table2Version = 162 ; indicatorOfParameter = 61 ; } @@ -13719,8 +13719,8 @@ table2Version = 162 ; indicatorOfParameter = 62 ; } -#Vertical integral of total energy -'Vertical integral of total energy' = { +#Total column vertically-integrated total energy +'Total column vertically-integrated total energy' = { table2Version = 162 ; indicatorOfParameter = 63 ; } diff --git a/definitions/grib1/localConcepts/ecmf/paramId.def b/definitions/grib1/localConcepts/ecmf/paramId.def index 79ab3c908..3fea9d27b 100644 --- a/definitions/grib1/localConcepts/ecmf/paramId.def +++ b/definitions/grib1/localConcepts/ecmf/paramId.def @@ -13699,17 +13699,17 @@ table2Version = 162 ; indicatorOfParameter = 58 ; } -#Vertical integral of kinetic energy +#Total column vertically-integrated kinetic energy '162059' = { table2Version = 162 ; indicatorOfParameter = 59 ; } -#Vertical integral of thermal energy +#Total column vertically-integrated enthalpy '162060' = { table2Version = 162 ; indicatorOfParameter = 60 ; } -#Vertical integral of potential+internal energy +#Total column vertically-integrated potential + internal energy '162061' = { table2Version = 162 ; indicatorOfParameter = 61 ; @@ -13719,7 +13719,7 @@ table2Version = 162 ; indicatorOfParameter = 62 ; } -#Vertical integral of total energy +#Total column vertically-integrated total energy '162063' = { table2Version = 162 ; indicatorOfParameter = 63 ; diff --git a/definitions/grib1/localConcepts/ecmf/shortName.def b/definitions/grib1/localConcepts/ecmf/shortName.def index 2b02b04cc..4c399f5a0 100644 --- a/definitions/grib1/localConcepts/ecmf/shortName.def +++ b/definitions/grib1/localConcepts/ecmf/shortName.def @@ -13699,17 +13699,17 @@ table2Version = 162 ; indicatorOfParameter = 58 ; } -#Vertical integral of kinetic energy +#Total column vertically-integrated kinetic energy 'vike' = { table2Version = 162 ; indicatorOfParameter = 59 ; } -#Vertical integral of thermal energy +#Total column vertically-integrated enthalpy 'vithe' = { table2Version = 162 ; indicatorOfParameter = 60 ; } -#Vertical integral of potential+internal energy +#Total column vertically-integrated potential + internal energy 'vipie' = { table2Version = 162 ; indicatorOfParameter = 61 ; @@ -13719,7 +13719,7 @@ table2Version = 162 ; indicatorOfParameter = 62 ; } -#Vertical integral of total energy +#Total column vertically-integrated total energy 'vitoe' = { table2Version = 162 ; indicatorOfParameter = 63 ; diff --git a/definitions/grib1/localConcepts/ecmf/units.def b/definitions/grib1/localConcepts/ecmf/units.def index 6df2da2e4..4bf0f3db0 100644 --- a/definitions/grib1/localConcepts/ecmf/units.def +++ b/definitions/grib1/localConcepts/ecmf/units.def @@ -13699,17 +13699,17 @@ table2Version = 162 ; indicatorOfParameter = 58 ; } -#Vertical integral of kinetic energy +#Total column vertically-integrated kinetic energy 'J m**-2' = { table2Version = 162 ; indicatorOfParameter = 59 ; } -#Vertical integral of thermal energy +#Total column vertically-integrated enthalpy 'J m**-2' = { table2Version = 162 ; indicatorOfParameter = 60 ; } -#Vertical integral of potential+internal energy +#Total column vertically-integrated potential + internal energy 'J m**-2' = { table2Version = 162 ; indicatorOfParameter = 61 ; @@ -13719,7 +13719,7 @@ table2Version = 162 ; indicatorOfParameter = 62 ; } -#Vertical integral of total energy +#Total column vertically-integrated total energy 'J m**-2' = { table2Version = 162 ; indicatorOfParameter = 63 ; diff --git a/definitions/grib2/cfVarName.def b/definitions/grib2/cfVarName.def index 15bd351e0..2a9f5a20e 100644 --- a/definitions/grib2/cfVarName.def +++ b/definitions/grib2/cfVarName.def @@ -6842,6 +6842,30 @@ typeOfFirstFixedSurface = 1 ; typeOfSecondFixedSurface = 8 ; } +#Total column vertically-integrated kinetic energy +'vike' = { + discipline = 0 ; + parameterCategory = 21 ; + parameterNumber = 1 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + } +#Total column vertically-integrated enthalpy +'vithe' = { + discipline = 0 ; + parameterCategory = 21 ; + parameterNumber = 3 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + } +#Total column vertically-integrated potential + internal energy +'vipie' = { + discipline = 0 ; + parameterCategory = 21 ; + parameterNumber = 0 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + } #Vertical integral of potential+internal+latent energy 'vipile' = { discipline = 0 ; @@ -6850,6 +6874,14 @@ typeOfFirstFixedSurface = 1 ; typeOfSecondFixedSurface = 8 ; } +#Total column vertically-integrated total energy +'vitoe' = { + discipline = 0 ; + parameterCategory = 21 ; + parameterNumber = 2 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + } #Vertical integral of eastward heat flux 'vithee' = { discipline = 0 ; diff --git a/definitions/grib2/localConcepts/ecmf/cfVarName.def b/definitions/grib2/localConcepts/ecmf/cfVarName.def index c70d05558..8c3514541 100644 --- a/definitions/grib2/localConcepts/ecmf/cfVarName.def +++ b/definitions/grib2/localConcepts/ecmf/cfVarName.def @@ -17611,30 +17611,6 @@ parameterCategory = 162 ; parameterNumber = 58 ; } -#Vertical integral of kinetic energy -'vike' = { - discipline = 192 ; - parameterCategory = 162 ; - parameterNumber = 59 ; - } -#Vertical integral of thermal energy -'vithe' = { - discipline = 192 ; - parameterCategory = 162 ; - parameterNumber = 60 ; - } -#Vertical integral of potential+internal energy -'vipie' = { - discipline = 192 ; - parameterCategory = 162 ; - parameterNumber = 61 ; - } -#Vertical integral of total energy -'vitoe' = { - discipline = 192 ; - parameterCategory = 162 ; - parameterNumber = 63 ; - } #Vertical integral of energy conversion 'viec' = { discipline = 192 ; diff --git a/definitions/grib2/localConcepts/ecmf/cfVarName.legacy.def b/definitions/grib2/localConcepts/ecmf/cfVarName.legacy.def index 677236c39..d39e3fecd 100644 --- a/definitions/grib2/localConcepts/ecmf/cfVarName.legacy.def +++ b/definitions/grib2/localConcepts/ecmf/cfVarName.legacy.def @@ -943,3 +943,27 @@ parameterCategory = 140 ; parameterNumber = 251 ; } +#Vertical integral of thermal energy +'vithe' = { + discipline = 192 ; + parameterCategory = 162 ; + parameterNumber = 60 ; +} +#Vertical integral of potential+internal energy +'vipie' = { + discipline = 192 ; + parameterCategory = 162 ; + parameterNumber = 61 ; +} +#Vertical integral of kinetic energy +'vike' = { + discipline = 192 ; + parameterCategory = 162 ; + parameterNumber = 59 ; +} +#Vertical integral of total energy +'vitoe' = { + discipline = 192 ; + parameterCategory = 162 ; + parameterNumber = 63 ; +} diff --git a/definitions/grib2/localConcepts/ecmf/name.def b/definitions/grib2/localConcepts/ecmf/name.def index 62d543151..5fe5902e5 100644 --- a/definitions/grib2/localConcepts/ecmf/name.def +++ b/definitions/grib2/localConcepts/ecmf/name.def @@ -17611,30 +17611,6 @@ parameterCategory = 162 ; parameterNumber = 58 ; } -#Vertical integral of kinetic energy -'Vertical integral of kinetic energy' = { - discipline = 192 ; - parameterCategory = 162 ; - parameterNumber = 59 ; - } -#Vertical integral of thermal energy -'Vertical integral of thermal energy' = { - discipline = 192 ; - parameterCategory = 162 ; - parameterNumber = 60 ; - } -#Vertical integral of potential+internal energy -'Vertical integral of potential+internal energy' = { - discipline = 192 ; - parameterCategory = 162 ; - parameterNumber = 61 ; - } -#Vertical integral of total energy -'Vertical integral of total energy' = { - discipline = 192 ; - parameterCategory = 162 ; - parameterNumber = 63 ; - } #Vertical integral of energy conversion 'Vertical integral of energy conversion' = { discipline = 192 ; diff --git a/definitions/grib2/localConcepts/ecmf/name.legacy.def b/definitions/grib2/localConcepts/ecmf/name.legacy.def index daf52a772..5b086af82 100644 --- a/definitions/grib2/localConcepts/ecmf/name.legacy.def +++ b/definitions/grib2/localConcepts/ecmf/name.legacy.def @@ -943,3 +943,27 @@ parameterCategory = 140 ; parameterNumber = 251 ; } +#Vertical integral of thermal energy +'Vertical integral of thermal energy' = { + discipline = 192 ; + parameterCategory = 162 ; + parameterNumber = 60 ; +} +#Vertical integral of potential+internal energy +'Vertical integral of potential+internal energy' = { + discipline = 192 ; + parameterCategory = 162 ; + parameterNumber = 61 ; +} +#Vertical integral of kinetic energy +'Vertical integral of kinetic energy' = { + discipline = 192 ; + parameterCategory = 162 ; + parameterNumber = 59 ; +} +#Vertical integral of total energy +'Vertical integral of total energy' = { + discipline = 192 ; + parameterCategory = 162 ; + parameterNumber = 63 ; +} diff --git a/definitions/grib2/localConcepts/ecmf/paramId.def b/definitions/grib2/localConcepts/ecmf/paramId.def index 85f8dd20e..56dba8702 100644 --- a/definitions/grib2/localConcepts/ecmf/paramId.def +++ b/definitions/grib2/localConcepts/ecmf/paramId.def @@ -17611,30 +17611,6 @@ parameterCategory = 162 ; parameterNumber = 58 ; } -#Vertical integral of kinetic energy -'162059' = { - discipline = 192 ; - parameterCategory = 162 ; - parameterNumber = 59 ; - } -#Vertical integral of thermal energy -'162060' = { - discipline = 192 ; - parameterCategory = 162 ; - parameterNumber = 60 ; - } -#Vertical integral of potential+internal energy -'162061' = { - discipline = 192 ; - parameterCategory = 162 ; - parameterNumber = 61 ; - } -#Vertical integral of total energy -'162063' = { - discipline = 192 ; - parameterCategory = 162 ; - parameterNumber = 63 ; - } #Vertical integral of energy conversion '162064' = { discipline = 192 ; diff --git a/definitions/grib2/localConcepts/ecmf/paramId.legacy.def b/definitions/grib2/localConcepts/ecmf/paramId.legacy.def index b57783ca3..5d59734a9 100644 --- a/definitions/grib2/localConcepts/ecmf/paramId.legacy.def +++ b/definitions/grib2/localConcepts/ecmf/paramId.legacy.def @@ -943,3 +943,27 @@ parameterCategory = 140 ; parameterNumber = 251 ; } +#Vertical integral of thermal energy +'162060' = { + discipline = 192 ; + parameterCategory = 162 ; + parameterNumber = 60 ; +} +#Vertical integral of potential+internal energy +'162061' = { + discipline = 192 ; + parameterCategory = 162 ; + parameterNumber = 61 ; +} +#Vertical integral of kinetic energy +'162059' = { + discipline = 192 ; + parameterCategory = 162 ; + parameterNumber = 59 ; +} +#Vertical integral of total energy +'162063' = { + discipline = 192 ; + parameterCategory = 162 ; + parameterNumber = 63 ; +} diff --git a/definitions/grib2/localConcepts/ecmf/shortName.def b/definitions/grib2/localConcepts/ecmf/shortName.def index 8b028660e..307bdc4cf 100644 --- a/definitions/grib2/localConcepts/ecmf/shortName.def +++ b/definitions/grib2/localConcepts/ecmf/shortName.def @@ -17611,30 +17611,6 @@ parameterCategory = 162 ; parameterNumber = 58 ; } -#Vertical integral of kinetic energy -'vike' = { - discipline = 192 ; - parameterCategory = 162 ; - parameterNumber = 59 ; - } -#Vertical integral of thermal energy -'vithe' = { - discipline = 192 ; - parameterCategory = 162 ; - parameterNumber = 60 ; - } -#Vertical integral of potential+internal energy -'vipie' = { - discipline = 192 ; - parameterCategory = 162 ; - parameterNumber = 61 ; - } -#Vertical integral of total energy -'vitoe' = { - discipline = 192 ; - parameterCategory = 162 ; - parameterNumber = 63 ; - } #Vertical integral of energy conversion 'viec' = { discipline = 192 ; diff --git a/definitions/grib2/localConcepts/ecmf/shortName.legacy.def b/definitions/grib2/localConcepts/ecmf/shortName.legacy.def index a61f8b23e..57dc9cc4c 100644 --- a/definitions/grib2/localConcepts/ecmf/shortName.legacy.def +++ b/definitions/grib2/localConcepts/ecmf/shortName.legacy.def @@ -943,3 +943,27 @@ parameterCategory = 140 ; parameterNumber = 251 ; } +#Vertical integral of thermal energy +'vithe' = { + discipline = 192 ; + parameterCategory = 162 ; + parameterNumber = 60 ; +} +#Vertical integral of potential+internal energy +'vipie' = { + discipline = 192 ; + parameterCategory = 162 ; + parameterNumber = 61 ; +} +#Vertical integral of kinetic energy +'vike' = { + discipline = 192 ; + parameterCategory = 162 ; + parameterNumber = 59 ; +} +#Vertical integral of total energy +'vitoe' = { + discipline = 192 ; + parameterCategory = 162 ; + parameterNumber = 63 ; +} diff --git a/definitions/grib2/localConcepts/ecmf/units.def b/definitions/grib2/localConcepts/ecmf/units.def index 7d8e3cd55..2ef819f22 100644 --- a/definitions/grib2/localConcepts/ecmf/units.def +++ b/definitions/grib2/localConcepts/ecmf/units.def @@ -17611,30 +17611,6 @@ parameterCategory = 162 ; parameterNumber = 58 ; } -#Vertical integral of kinetic energy -'J m**-2' = { - discipline = 192 ; - parameterCategory = 162 ; - parameterNumber = 59 ; - } -#Vertical integral of thermal energy -'J m**-2' = { - discipline = 192 ; - parameterCategory = 162 ; - parameterNumber = 60 ; - } -#Vertical integral of potential+internal energy -'J m**-2' = { - discipline = 192 ; - parameterCategory = 162 ; - parameterNumber = 61 ; - } -#Vertical integral of total energy -'J m**-2' = { - discipline = 192 ; - parameterCategory = 162 ; - parameterNumber = 63 ; - } #Vertical integral of energy conversion 'W m**-2' = { discipline = 192 ; diff --git a/definitions/grib2/localConcepts/ecmf/units.legacy.def b/definitions/grib2/localConcepts/ecmf/units.legacy.def index c10d16a51..205fa02fb 100644 --- a/definitions/grib2/localConcepts/ecmf/units.legacy.def +++ b/definitions/grib2/localConcepts/ecmf/units.legacy.def @@ -943,3 +943,27 @@ parameterCategory = 140 ; parameterNumber = 251 ; } +#Vertical integral of thermal energy +'J m**-2' = { + discipline = 192 ; + parameterCategory = 162 ; + parameterNumber = 60 ; +} +#Vertical integral of potential+internal energy +'J m**-2' = { + discipline = 192 ; + parameterCategory = 162 ; + parameterNumber = 61 ; +} +#Vertical integral of kinetic energy +'J m**-2' = { + discipline = 192 ; + parameterCategory = 162 ; + parameterNumber = 59 ; +} +#Vertical integral of total energy +'J m**-2' = { + discipline = 192 ; + parameterCategory = 162 ; + parameterNumber = 63 ; +} diff --git a/definitions/grib2/name.def b/definitions/grib2/name.def index a4d8c07cb..5e2b3020e 100644 --- a/definitions/grib2/name.def +++ b/definitions/grib2/name.def @@ -6842,6 +6842,30 @@ typeOfFirstFixedSurface = 1 ; typeOfSecondFixedSurface = 8 ; } +#Total column vertically-integrated kinetic energy +'Total column vertically-integrated kinetic energy' = { + discipline = 0 ; + parameterCategory = 21 ; + parameterNumber = 1 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + } +#Total column vertically-integrated enthalpy +'Total column vertically-integrated enthalpy' = { + discipline = 0 ; + parameterCategory = 21 ; + parameterNumber = 3 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + } +#Total column vertically-integrated potential + internal energy +'Total column vertically-integrated potential + internal energy' = { + discipline = 0 ; + parameterCategory = 21 ; + parameterNumber = 0 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + } #Vertical integral of potential+internal+latent energy 'Vertical integral of potential+internal+latent energy' = { discipline = 0 ; @@ -6850,6 +6874,14 @@ typeOfFirstFixedSurface = 1 ; typeOfSecondFixedSurface = 8 ; } +#Total column vertically-integrated total energy +'Total column vertically-integrated total energy' = { + discipline = 0 ; + parameterCategory = 21 ; + parameterNumber = 2 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + } #Vertical integral of eastward heat flux 'Vertical integral of eastward heat flux' = { discipline = 0 ; diff --git a/definitions/grib2/paramId.def b/definitions/grib2/paramId.def index 989f0f4f9..d4bb0ae06 100644 --- a/definitions/grib2/paramId.def +++ b/definitions/grib2/paramId.def @@ -6842,6 +6842,30 @@ typeOfFirstFixedSurface = 1 ; typeOfSecondFixedSurface = 8 ; } +#Total column vertically-integrated kinetic energy +'162059' = { + discipline = 0 ; + parameterCategory = 21 ; + parameterNumber = 1 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + } +#Total column vertically-integrated enthalpy +'162060' = { + discipline = 0 ; + parameterCategory = 21 ; + parameterNumber = 3 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + } +#Total column vertically-integrated potential + internal energy +'162061' = { + discipline = 0 ; + parameterCategory = 21 ; + parameterNumber = 0 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + } #Vertical integral of potential+internal+latent energy '162062' = { discipline = 0 ; @@ -6850,6 +6874,14 @@ typeOfFirstFixedSurface = 1 ; typeOfSecondFixedSurface = 8 ; } +#Total column vertically-integrated total energy +'162063' = { + discipline = 0 ; + parameterCategory = 21 ; + parameterNumber = 2 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + } #Vertical integral of eastward heat flux '162069' = { discipline = 0 ; diff --git a/definitions/grib2/shortName.def b/definitions/grib2/shortName.def index 5a9ab8f7f..565a29e0c 100644 --- a/definitions/grib2/shortName.def +++ b/definitions/grib2/shortName.def @@ -6842,6 +6842,30 @@ typeOfFirstFixedSurface = 1 ; typeOfSecondFixedSurface = 8 ; } +#Total column vertically-integrated kinetic energy +'vike' = { + discipline = 0 ; + parameterCategory = 21 ; + parameterNumber = 1 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + } +#Total column vertically-integrated enthalpy +'vithe' = { + discipline = 0 ; + parameterCategory = 21 ; + parameterNumber = 3 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + } +#Total column vertically-integrated potential + internal energy +'vipie' = { + discipline = 0 ; + parameterCategory = 21 ; + parameterNumber = 0 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + } #Vertical integral of potential+internal+latent energy 'vipile' = { discipline = 0 ; @@ -6850,6 +6874,14 @@ typeOfFirstFixedSurface = 1 ; typeOfSecondFixedSurface = 8 ; } +#Total column vertically-integrated total energy +'vitoe' = { + discipline = 0 ; + parameterCategory = 21 ; + parameterNumber = 2 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + } #Vertical integral of eastward heat flux 'vithee' = { discipline = 0 ; diff --git a/definitions/grib2/units.def b/definitions/grib2/units.def index bdd230a8f..8202c4b4c 100644 --- a/definitions/grib2/units.def +++ b/definitions/grib2/units.def @@ -6842,6 +6842,30 @@ typeOfFirstFixedSurface = 1 ; typeOfSecondFixedSurface = 8 ; } +#Total column vertically-integrated kinetic energy +'J m**-2' = { + discipline = 0 ; + parameterCategory = 21 ; + parameterNumber = 1 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + } +#Total column vertically-integrated enthalpy +'J m**-2' = { + discipline = 0 ; + parameterCategory = 21 ; + parameterNumber = 3 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + } +#Total column vertically-integrated potential + internal energy +'J m**-2' = { + discipline = 0 ; + parameterCategory = 21 ; + parameterNumber = 0 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + } #Vertical integral of potential+internal+latent energy 'J m**-2' = { discipline = 0 ; @@ -6850,6 +6874,14 @@ typeOfFirstFixedSurface = 1 ; typeOfSecondFixedSurface = 8 ; } +#Total column vertically-integrated total energy +'J m**-2' = { + discipline = 0 ; + parameterCategory = 21 ; + parameterNumber = 2 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + } #Vertical integral of eastward heat flux 'W m**-1' = { discipline = 0 ; From 55e15c39ba0ba627c9d40dae74c2374f1243fa85 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 6 Jul 2023 14:33:18 +0000 Subject: [PATCH 375/378] ECC-1628: GRIB2: Energy budget parameters for ERA6 (Part 2) --- definitions/grib2/cfVarName.def | 98 +++++++++++++++++++++++++++++++++ definitions/grib2/name.def | 98 +++++++++++++++++++++++++++++++++ definitions/grib2/paramId.def | 98 +++++++++++++++++++++++++++++++++ definitions/grib2/shortName.def | 98 +++++++++++++++++++++++++++++++++ definitions/grib2/units.def | 98 +++++++++++++++++++++++++++++++++ 5 files changed, 490 insertions(+) diff --git a/definitions/grib2/cfVarName.def b/definitions/grib2/cfVarName.def index 2a9f5a20e..718e2f939 100644 --- a/definitions/grib2/cfVarName.def +++ b/definitions/grib2/cfVarName.def @@ -742,6 +742,14 @@ scaledValueOfSecondFixedSurface = 300 ; scaleFactorOfSecondFixedSurface = 0 ; } +#Total column vertically-integrated water enthalpy +'viwe' = { + discipline = 0 ; + parameterCategory = 21 ; + parameterNumber = 4 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + } #2 metre specific humidity 'sh2' = { discipline = 0 ; @@ -2911,6 +2919,96 @@ typeOfSecondFixedSurface = 8 ; typeOfStatisticalProcessing = 1 ; } +#Time-integrated total column vertically-integrated eastward enthalpy flux +'tviee' = { + discipline = 0 ; + parameterCategory = 21 ; + parameterNumber = 5 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time-integrated total column vertically-integrated northward enthalpy flux +'tvien' = { + discipline = 0 ; + parameterCategory = 21 ; + parameterNumber = 6 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time-integrated total column vertically-integrated eastward kinetic energy flux +'tvikee' = { + discipline = 0 ; + parameterCategory = 21 ; + parameterNumber = 9 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time-integrated total column vertically-integrated northward kinetic energy flux +'tviken' = { + discipline = 0 ; + parameterCategory = 21 ; + parameterNumber = 10 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time-integrated total column vertically-integrated eastward total energy flux +'tvitee' = { + discipline = 0 ; + parameterCategory = 21 ; + parameterNumber = 11 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time-integrated total column vertically-integrated northward total energy flux +'tviten' = { + discipline = 0 ; + parameterCategory = 21 ; + parameterNumber = 12 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time-integrated total column vertically-integrated divergence of enthalpy flux +'tvied' = { + discipline = 0 ; + parameterCategory = 21 ; + parameterNumber = 13 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time-integrated total column vertically-integrated divergence of kinetic energy flux +'tviked' = { + discipline = 0 ; + parameterCategory = 21 ; + parameterNumber = 16 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time-integrated total column vertically-integrated divergence of total energy flux +'tvited' = { + discipline = 0 ; + parameterCategory = 21 ; + parameterNumber = 17 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time-integrated total column vertically-integrated divergence of water enthalpy flux +'tviwed' = { + discipline = 0 ; + parameterCategory = 21 ; + parameterNumber = 18 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } #Time integrated, vertically integrated divergence of mass flux 'tvimd' = { discipline = 0 ; diff --git a/definitions/grib2/name.def b/definitions/grib2/name.def index 5e2b3020e..563d05ebc 100644 --- a/definitions/grib2/name.def +++ b/definitions/grib2/name.def @@ -742,6 +742,14 @@ scaledValueOfSecondFixedSurface = 300 ; scaleFactorOfSecondFixedSurface = 0 ; } +#Total column vertically-integrated water enthalpy +'Total column vertically-integrated water enthalpy' = { + discipline = 0 ; + parameterCategory = 21 ; + parameterNumber = 4 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + } #2 metre specific humidity '2 metre specific humidity' = { discipline = 0 ; @@ -2911,6 +2919,96 @@ typeOfSecondFixedSurface = 8 ; typeOfStatisticalProcessing = 1 ; } +#Time-integrated total column vertically-integrated eastward enthalpy flux +'Time-integrated total column vertically-integrated eastward enthalpy flux' = { + discipline = 0 ; + parameterCategory = 21 ; + parameterNumber = 5 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time-integrated total column vertically-integrated northward enthalpy flux +'Time-integrated total column vertically-integrated northward enthalpy flux' = { + discipline = 0 ; + parameterCategory = 21 ; + parameterNumber = 6 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time-integrated total column vertically-integrated eastward kinetic energy flux +'Time-integrated total column vertically-integrated eastward kinetic energy flux' = { + discipline = 0 ; + parameterCategory = 21 ; + parameterNumber = 9 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time-integrated total column vertically-integrated northward kinetic energy flux +'Time-integrated total column vertically-integrated northward kinetic energy flux' = { + discipline = 0 ; + parameterCategory = 21 ; + parameterNumber = 10 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time-integrated total column vertically-integrated eastward total energy flux +'Time-integrated total column vertically-integrated eastward total energy flux' = { + discipline = 0 ; + parameterCategory = 21 ; + parameterNumber = 11 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time-integrated total column vertically-integrated northward total energy flux +'Time-integrated total column vertically-integrated northward total energy flux' = { + discipline = 0 ; + parameterCategory = 21 ; + parameterNumber = 12 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time-integrated total column vertically-integrated divergence of enthalpy flux +'Time-integrated total column vertically-integrated divergence of enthalpy flux' = { + discipline = 0 ; + parameterCategory = 21 ; + parameterNumber = 13 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time-integrated total column vertically-integrated divergence of kinetic energy flux +'Time-integrated total column vertically-integrated divergence of kinetic energy flux' = { + discipline = 0 ; + parameterCategory = 21 ; + parameterNumber = 16 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time-integrated total column vertically-integrated divergence of total energy flux +'Time-integrated total column vertically-integrated divergence of total energy flux' = { + discipline = 0 ; + parameterCategory = 21 ; + parameterNumber = 17 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time-integrated total column vertically-integrated divergence of water enthalpy flux +'Time-integrated total column vertically-integrated divergence of water enthalpy flux' = { + discipline = 0 ; + parameterCategory = 21 ; + parameterNumber = 18 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } #Time integrated, vertically integrated divergence of mass flux 'Time integrated, vertically integrated divergence of mass flux' = { discipline = 0 ; diff --git a/definitions/grib2/paramId.def b/definitions/grib2/paramId.def index d4bb0ae06..8a7b40e99 100644 --- a/definitions/grib2/paramId.def +++ b/definitions/grib2/paramId.def @@ -742,6 +742,14 @@ scaledValueOfSecondFixedSurface = 300 ; scaleFactorOfSecondFixedSurface = 0 ; } +#Total column vertically-integrated water enthalpy +'162093' = { + discipline = 0 ; + parameterCategory = 21 ; + parameterNumber = 4 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + } #2 metre specific humidity '174096' = { discipline = 0 ; @@ -2911,6 +2919,96 @@ typeOfSecondFixedSurface = 8 ; typeOfStatisticalProcessing = 1 ; } +#Time-integrated total column vertically-integrated eastward enthalpy flux +'233004' = { + discipline = 0 ; + parameterCategory = 21 ; + parameterNumber = 5 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time-integrated total column vertically-integrated northward enthalpy flux +'233005' = { + discipline = 0 ; + parameterCategory = 21 ; + parameterNumber = 6 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time-integrated total column vertically-integrated eastward kinetic energy flux +'233006' = { + discipline = 0 ; + parameterCategory = 21 ; + parameterNumber = 9 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time-integrated total column vertically-integrated northward kinetic energy flux +'233007' = { + discipline = 0 ; + parameterCategory = 21 ; + parameterNumber = 10 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time-integrated total column vertically-integrated eastward total energy flux +'233008' = { + discipline = 0 ; + parameterCategory = 21 ; + parameterNumber = 11 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time-integrated total column vertically-integrated northward total energy flux +'233009' = { + discipline = 0 ; + parameterCategory = 21 ; + parameterNumber = 12 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time-integrated total column vertically-integrated divergence of enthalpy flux +'233010' = { + discipline = 0 ; + parameterCategory = 21 ; + parameterNumber = 13 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time-integrated total column vertically-integrated divergence of kinetic energy flux +'233011' = { + discipline = 0 ; + parameterCategory = 21 ; + parameterNumber = 16 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time-integrated total column vertically-integrated divergence of total energy flux +'233012' = { + discipline = 0 ; + parameterCategory = 21 ; + parameterNumber = 17 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time-integrated total column vertically-integrated divergence of water enthalpy flux +'233013' = { + discipline = 0 ; + parameterCategory = 21 ; + parameterNumber = 18 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } #Time integrated, vertically integrated divergence of mass flux '233014' = { discipline = 0 ; diff --git a/definitions/grib2/shortName.def b/definitions/grib2/shortName.def index 565a29e0c..96060d34f 100644 --- a/definitions/grib2/shortName.def +++ b/definitions/grib2/shortName.def @@ -742,6 +742,14 @@ scaledValueOfSecondFixedSurface = 300 ; scaleFactorOfSecondFixedSurface = 0 ; } +#Total column vertically-integrated water enthalpy +'viwe' = { + discipline = 0 ; + parameterCategory = 21 ; + parameterNumber = 4 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + } #2 metre specific humidity '2sh' = { discipline = 0 ; @@ -2911,6 +2919,96 @@ typeOfSecondFixedSurface = 8 ; typeOfStatisticalProcessing = 1 ; } +#Time-integrated total column vertically-integrated eastward enthalpy flux +'tviee' = { + discipline = 0 ; + parameterCategory = 21 ; + parameterNumber = 5 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time-integrated total column vertically-integrated northward enthalpy flux +'tvien' = { + discipline = 0 ; + parameterCategory = 21 ; + parameterNumber = 6 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time-integrated total column vertically-integrated eastward kinetic energy flux +'tvikee' = { + discipline = 0 ; + parameterCategory = 21 ; + parameterNumber = 9 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time-integrated total column vertically-integrated northward kinetic energy flux +'tviken' = { + discipline = 0 ; + parameterCategory = 21 ; + parameterNumber = 10 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time-integrated total column vertically-integrated eastward total energy flux +'tvitee' = { + discipline = 0 ; + parameterCategory = 21 ; + parameterNumber = 11 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time-integrated total column vertically-integrated northward total energy flux +'tviten' = { + discipline = 0 ; + parameterCategory = 21 ; + parameterNumber = 12 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time-integrated total column vertically-integrated divergence of enthalpy flux +'tvied' = { + discipline = 0 ; + parameterCategory = 21 ; + parameterNumber = 13 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time-integrated total column vertically-integrated divergence of kinetic energy flux +'tviked' = { + discipline = 0 ; + parameterCategory = 21 ; + parameterNumber = 16 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time-integrated total column vertically-integrated divergence of total energy flux +'tvited' = { + discipline = 0 ; + parameterCategory = 21 ; + parameterNumber = 17 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time-integrated total column vertically-integrated divergence of water enthalpy flux +'tviwed' = { + discipline = 0 ; + parameterCategory = 21 ; + parameterNumber = 18 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } #Time integrated, vertically integrated divergence of mass flux 'tvimd' = { discipline = 0 ; diff --git a/definitions/grib2/units.def b/definitions/grib2/units.def index 8202c4b4c..4d0c360c3 100644 --- a/definitions/grib2/units.def +++ b/definitions/grib2/units.def @@ -742,6 +742,14 @@ scaledValueOfSecondFixedSurface = 300 ; scaleFactorOfSecondFixedSurface = 0 ; } +#Total column vertically-integrated water enthalpy +'J m**-2' = { + discipline = 0 ; + parameterCategory = 21 ; + parameterNumber = 4 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + } #2 metre specific humidity 'kg kg**-1' = { discipline = 0 ; @@ -2911,6 +2919,96 @@ typeOfSecondFixedSurface = 8 ; typeOfStatisticalProcessing = 1 ; } +#Time-integrated total column vertically-integrated eastward enthalpy flux +'J m**-1' = { + discipline = 0 ; + parameterCategory = 21 ; + parameterNumber = 5 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time-integrated total column vertically-integrated northward enthalpy flux +'J m**-1' = { + discipline = 0 ; + parameterCategory = 21 ; + parameterNumber = 6 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time-integrated total column vertically-integrated eastward kinetic energy flux +'J m**-1' = { + discipline = 0 ; + parameterCategory = 21 ; + parameterNumber = 9 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time-integrated total column vertically-integrated northward kinetic energy flux +'J m**-1' = { + discipline = 0 ; + parameterCategory = 21 ; + parameterNumber = 10 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time-integrated total column vertically-integrated eastward total energy flux +'J m**-1' = { + discipline = 0 ; + parameterCategory = 21 ; + parameterNumber = 11 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time-integrated total column vertically-integrated northward total energy flux +'J m**-1' = { + discipline = 0 ; + parameterCategory = 21 ; + parameterNumber = 12 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time-integrated total column vertically-integrated divergence of enthalpy flux +'J m**-2' = { + discipline = 0 ; + parameterCategory = 21 ; + parameterNumber = 13 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time-integrated total column vertically-integrated divergence of kinetic energy flux +'J m**-2' = { + discipline = 0 ; + parameterCategory = 21 ; + parameterNumber = 16 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time-integrated total column vertically-integrated divergence of total energy flux +'J m**-2' = { + discipline = 0 ; + parameterCategory = 21 ; + parameterNumber = 17 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } +#Time-integrated total column vertically-integrated divergence of water enthalpy flux +'J m**-2' = { + discipline = 0 ; + parameterCategory = 21 ; + parameterNumber = 18 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 1 ; + } #Time integrated, vertically integrated divergence of mass flux 'kg m**-2' = { discipline = 0 ; From 4d3ef2405b861c794a219f80f6b84644f0c25c13 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 6 Jul 2023 15:23:24 +0000 Subject: [PATCH 376/378] ECC-1625: GRIB2: ERA6 parameters with constituentType (Part 1) --- definitions/grib2/localConcepts/era6/name.def | 45 +++++++++++++++++++ .../grib2/localConcepts/era6/paramId.def | 45 +++++++++++++++++++ .../grib2/localConcepts/era6/shortName.def | 45 +++++++++++++++++++ .../grib2/localConcepts/era6/units.def | 45 +++++++++++++++++++ 4 files changed, 180 insertions(+) create mode 100644 definitions/grib2/localConcepts/era6/name.def create mode 100644 definitions/grib2/localConcepts/era6/paramId.def create mode 100644 definitions/grib2/localConcepts/era6/shortName.def create mode 100644 definitions/grib2/localConcepts/era6/units.def diff --git a/definitions/grib2/localConcepts/era6/name.def b/definitions/grib2/localConcepts/era6/name.def new file mode 100644 index 000000000..1d8e35fc6 --- /dev/null +++ b/definitions/grib2/localConcepts/era6/name.def @@ -0,0 +1,45 @@ +# Automatically generated by ./create_def.pl, do not edit +#Time integrated, vertically integrated eastward ozone flux +'Time integrated, vertically integrated eastward ozone flux' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 78 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + constituentType = 0 ; + typeOfStatisticalProcessing = 1 ; + is_chemical = 1 ; + } +#Time integrated, vertically integrated northward ozone flux +'Time integrated, vertically integrated northward ozone flux' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 79 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + constituentType = 0 ; + typeOfStatisticalProcessing = 1 ; + is_chemical = 1 ; + } +#Time integrated, vertically integrated divergence of ozone flux +'Time integrated, vertically integrated divergence of ozone flux' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 80 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + constituentType = 0 ; + typeOfStatisticalProcessing = 1 ; + is_chemical = 1 ; + } +#Time integrated, vertically integrated net source of ozone +'Time integrated, vertically integrated net source of ozone' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 81 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + constituentType = 0 ; + typeOfStatisticalProcessing = 1 ; + is_chemical = 1 ; +} diff --git a/definitions/grib2/localConcepts/era6/paramId.def b/definitions/grib2/localConcepts/era6/paramId.def new file mode 100644 index 000000000..1cb46c286 --- /dev/null +++ b/definitions/grib2/localConcepts/era6/paramId.def @@ -0,0 +1,45 @@ +# Automatically generated by ./create_def.pl, do not edit +#Time integrated, vertically integrated eastward ozone flux +'233032' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 78 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + constituentType = 0 ; + typeOfStatisticalProcessing = 1 ; + is_chemical = 1 ; + } +#Time integrated, vertically integrated northward ozone flux +'233033' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 79 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + constituentType = 0 ; + typeOfStatisticalProcessing = 1 ; + is_chemical = 1 ; + } +#Time integrated, vertically integrated divergence of ozone flux +'233034' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 80 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + constituentType = 0 ; + typeOfStatisticalProcessing = 1 ; + is_chemical = 1 ; + } +#Time integrated, vertically integrated net source of ozone +'233035' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 81 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + constituentType = 0 ; + typeOfStatisticalProcessing = 1 ; + is_chemical = 1 ; +} diff --git a/definitions/grib2/localConcepts/era6/shortName.def b/definitions/grib2/localConcepts/era6/shortName.def new file mode 100644 index 000000000..85eb811f1 --- /dev/null +++ b/definitions/grib2/localConcepts/era6/shortName.def @@ -0,0 +1,45 @@ +# Automatically generated by ./create_def.pl, do not edit +#Time integrated, vertically integrated eastward ozone flux +'tvioze' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 78 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + constituentType = 0 ; + typeOfStatisticalProcessing = 1 ; + is_chemical = 1 ; + } +#Time integrated, vertically integrated northward ozone flux +'tviozn' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 79 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + constituentType = 0 ; + typeOfStatisticalProcessing = 1 ; + is_chemical = 1 ; + } +#Time integrated, vertically integrated divergence of ozone flux +'tviozd' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 80 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + constituentType = 0 ; + typeOfStatisticalProcessing = 1 ; + is_chemical = 1 ; + } +#Time integrated, vertically integrated net source of ozone +'tvions' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 81 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + constituentType = 0 ; + typeOfStatisticalProcessing = 1 ; + is_chemical = 1 ; +} diff --git a/definitions/grib2/localConcepts/era6/units.def b/definitions/grib2/localConcepts/era6/units.def new file mode 100644 index 000000000..1110185c0 --- /dev/null +++ b/definitions/grib2/localConcepts/era6/units.def @@ -0,0 +1,45 @@ +# Automatically generated by ./create_def.pl, do not edit +#Time integrated, vertically integrated eastward ozone flux +'kg m**-1' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 78 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + constituentType = 0 ; + typeOfStatisticalProcessing = 1 ; + is_chemical = 1 ; + } +#Time integrated, vertically integrated northward ozone flux +'kg m**-1' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 79 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + constituentType = 0 ; + typeOfStatisticalProcessing = 1 ; + is_chemical = 1 ; + } +#Time integrated, vertically integrated divergence of ozone flux +'kg m**-2' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 80 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + constituentType = 0 ; + typeOfStatisticalProcessing = 1 ; + is_chemical = 1 ; + } +#Time integrated, vertically integrated net source of ozone +'kg m**-2' = { + discipline = 0 ; + parameterCategory = 20 ; + parameterNumber = 81 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + constituentType = 0 ; + typeOfStatisticalProcessing = 1 ; + is_chemical = 1 ; +} From 953d228fa7793f580045dd8bdb52efb06c07b03f Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 6 Jul 2023 15:23:51 +0000 Subject: [PATCH 377/378] ECC-1625: Test --- tests/grib_check_param_concepts.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tests/grib_check_param_concepts.sh b/tests/grib_check_param_concepts.sh index 72ae83e21..d16fe3135 100755 --- a/tests/grib_check_param_concepts.sh +++ b/tests/grib_check_param_concepts.sh @@ -23,6 +23,7 @@ $EXEC ${test_dir}/grib_check_param_concepts paramId $ECCODES_DEFINITION_PATH/gri $EXEC ${test_dir}/grib_check_param_concepts paramId $ECCODES_DEFINITION_PATH/grib2/localConcepts/hydro/paramId.def $EXEC ${test_dir}/grib_check_param_concepts paramId $ECCODES_DEFINITION_PATH/grib2/localConcepts/tigge/paramId.def $EXEC ${test_dir}/grib_check_param_concepts paramId $ECCODES_DEFINITION_PATH/grib2/localConcepts/s2s/paramId.def +$EXEC ${test_dir}/grib_check_param_concepts paramId $ECCODES_DEFINITION_PATH/grib2/localConcepts/era6/paramId.def $EXEC ${test_dir}/grib_check_param_concepts shortName $ECCODES_DEFINITION_PATH/grib2/shortName.def $EXEC ${test_dir}/grib_check_param_concepts shortName $ECCODES_DEFINITION_PATH/grib2/localConcepts/ecmf/shortName.def @@ -30,6 +31,7 @@ $EXEC ${test_dir}/grib_check_param_concepts shortName $ECCODES_DEFINITION_PATH/g $EXEC ${test_dir}/grib_check_param_concepts shortName $ECCODES_DEFINITION_PATH/grib2/localConcepts/hydro/shortName.def $EXEC ${test_dir}/grib_check_param_concepts shortName $ECCODES_DEFINITION_PATH/grib2/localConcepts/tigge/shortName.def $EXEC ${test_dir}/grib_check_param_concepts shortName $ECCODES_DEFINITION_PATH/grib2/localConcepts/s2s/shortName.def +$EXEC ${test_dir}/grib_check_param_concepts shortName $ECCODES_DEFINITION_PATH/grib2/localConcepts/era6/shortName.def # Check the group: name.def paramId.def shortName.def units.def cfVarName.def # ---------------------------------------------------------------------------- From 9838b3b21b6b3fc5261211fd3719273e1fdd6957 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 6 Jul 2023 15:55:44 +0000 Subject: [PATCH 378/378] ECC-1625: GRIB2: ERA6 parameters with constituentType (Part 2) --- definitions/grib2/localConcepts/era6/name.def | 78 +++++++++++++++++++ .../grib2/localConcepts/era6/paramId.def | 78 +++++++++++++++++++ .../grib2/localConcepts/era6/shortName.def | 78 +++++++++++++++++++ .../grib2/localConcepts/era6/units.def | 78 +++++++++++++++++++ 4 files changed, 312 insertions(+) diff --git a/definitions/grib2/localConcepts/era6/name.def b/definitions/grib2/localConcepts/era6/name.def index 1d8e35fc6..7a0ddd401 100644 --- a/definitions/grib2/localConcepts/era6/name.def +++ b/definitions/grib2/localConcepts/era6/name.def @@ -1,4 +1,55 @@ # Automatically generated by ./create_def.pl, do not edit +#Accumulated Carbon Dioxide Net Ecosystem Exchange +'Accumulated Carbon Dioxide Net Ecosystem Exchange' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 59 ; + constituentType = 3 ; + typeOfStatisticalProcessing = 1 ; + is_chemical = 1 ; + } +#Accumulated Carbon Dioxide Gross Primary Production +'Accumulated Carbon Dioxide Gross Primary Production' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 60 ; + constituentType = 3 ; + typeOfStatisticalProcessing = 1 ; + is_chemical = 1 ; + } +#Accumulated Carbon Dioxide Ecosystem Respiration +'Accumulated Carbon Dioxide Ecosystem Respiration' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 61 ; + constituentType = 3 ; + typeOfStatisticalProcessing = 1 ; + is_chemical = 1 ; + } +#Flux of Carbon Dioxide Net Ecosystem Exchange +'Flux of Carbon Dioxide Net Ecosystem Exchange' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 59 ; + constituentType = 3 ; + is_chemical = 1 ; + } +#Flux of Carbon Dioxide Gross Primary Production +'Flux of Carbon Dioxide Gross Primary Production' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 60 ; + constituentType = 3 ; + is_chemical = 1 ; + } +#Flux of Carbon Dioxide Ecosystem Respiration +'Flux of Carbon Dioxide Ecosystem Respiration' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 61 ; + constituentType = 3 ; + is_chemical = 1 ; + } #Time integrated, vertically integrated eastward ozone flux 'Time integrated, vertically integrated eastward ozone flux' = { discipline = 0 ; @@ -42,4 +93,31 @@ constituentType = 0 ; typeOfStatisticalProcessing = 1 ; is_chemical = 1 ; + } +#Mean carbon dioxide net ecosystem exchange flux +'Mean carbon dioxide net ecosystem exchange flux' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 59 ; + constituentType = 3 ; + typeOfStatisticalProcessing = 0 ; + is_chemical = 1 ; + } +#Mean carbon dioxide gross primary production flux +'Mean carbon dioxide gross primary production flux' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 60 ; + constituentType = 3 ; + typeOfStatisticalProcessing = 0 ; + is_chemical = 1 ; + } +#Mean carbon dioxide ecosystem respiration flux +'Mean carbon dioxide ecosystem respiration flux' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 61 ; + constituentType = 3 ; + typeOfStatisticalProcessing = 0 ; + is_chemical = 1 ; } diff --git a/definitions/grib2/localConcepts/era6/paramId.def b/definitions/grib2/localConcepts/era6/paramId.def index 1cb46c286..d8bafd40e 100644 --- a/definitions/grib2/localConcepts/era6/paramId.def +++ b/definitions/grib2/localConcepts/era6/paramId.def @@ -1,4 +1,55 @@ # Automatically generated by ./create_def.pl, do not edit +#Accumulated Carbon Dioxide Net Ecosystem Exchange +'228080' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 59 ; + constituentType = 3 ; + typeOfStatisticalProcessing = 1 ; + is_chemical = 1 ; + } +#Accumulated Carbon Dioxide Gross Primary Production +'228081' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 60 ; + constituentType = 3 ; + typeOfStatisticalProcessing = 1 ; + is_chemical = 1 ; + } +#Accumulated Carbon Dioxide Ecosystem Respiration +'228082' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 61 ; + constituentType = 3 ; + typeOfStatisticalProcessing = 1 ; + is_chemical = 1 ; + } +#Flux of Carbon Dioxide Net Ecosystem Exchange +'228083' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 59 ; + constituentType = 3 ; + is_chemical = 1 ; + } +#Flux of Carbon Dioxide Gross Primary Production +'228084' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 60 ; + constituentType = 3 ; + is_chemical = 1 ; + } +#Flux of Carbon Dioxide Ecosystem Respiration +'228085' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 61 ; + constituentType = 3 ; + is_chemical = 1 ; + } #Time integrated, vertically integrated eastward ozone flux '233032' = { discipline = 0 ; @@ -42,4 +93,31 @@ constituentType = 0 ; typeOfStatisticalProcessing = 1 ; is_chemical = 1 ; + } +#Mean carbon dioxide net ecosystem exchange flux +'235062' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 59 ; + constituentType = 3 ; + typeOfStatisticalProcessing = 0 ; + is_chemical = 1 ; + } +#Mean carbon dioxide gross primary production flux +'235063' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 60 ; + constituentType = 3 ; + typeOfStatisticalProcessing = 0 ; + is_chemical = 1 ; + } +#Mean carbon dioxide ecosystem respiration flux +'235064' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 61 ; + constituentType = 3 ; + typeOfStatisticalProcessing = 0 ; + is_chemical = 1 ; } diff --git a/definitions/grib2/localConcepts/era6/shortName.def b/definitions/grib2/localConcepts/era6/shortName.def index 85eb811f1..fb08d337b 100644 --- a/definitions/grib2/localConcepts/era6/shortName.def +++ b/definitions/grib2/localConcepts/era6/shortName.def @@ -1,4 +1,55 @@ # Automatically generated by ./create_def.pl, do not edit +#Accumulated Carbon Dioxide Net Ecosystem Exchange +'aco2nee' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 59 ; + constituentType = 3 ; + typeOfStatisticalProcessing = 1 ; + is_chemical = 1 ; + } +#Accumulated Carbon Dioxide Gross Primary Production +'aco2gpp' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 60 ; + constituentType = 3 ; + typeOfStatisticalProcessing = 1 ; + is_chemical = 1 ; + } +#Accumulated Carbon Dioxide Ecosystem Respiration +'aco2rec' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 61 ; + constituentType = 3 ; + typeOfStatisticalProcessing = 1 ; + is_chemical = 1 ; + } +#Flux of Carbon Dioxide Net Ecosystem Exchange +'fco2nee' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 59 ; + constituentType = 3 ; + is_chemical = 1 ; + } +#Flux of Carbon Dioxide Gross Primary Production +'fco2gpp' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 60 ; + constituentType = 3 ; + is_chemical = 1 ; + } +#Flux of Carbon Dioxide Ecosystem Respiration +'fco2rec' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 61 ; + constituentType = 3 ; + is_chemical = 1 ; + } #Time integrated, vertically integrated eastward ozone flux 'tvioze' = { discipline = 0 ; @@ -42,4 +93,31 @@ constituentType = 0 ; typeOfStatisticalProcessing = 1 ; is_chemical = 1 ; + } +#Mean carbon dioxide net ecosystem exchange flux +'mcdneef' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 59 ; + constituentType = 3 ; + typeOfStatisticalProcessing = 0 ; + is_chemical = 1 ; + } +#Mean carbon dioxide gross primary production flux +'mcdgppf' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 60 ; + constituentType = 3 ; + typeOfStatisticalProcessing = 0 ; + is_chemical = 1 ; + } +#Mean carbon dioxide ecosystem respiration flux +'mcderf' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 61 ; + constituentType = 3 ; + typeOfStatisticalProcessing = 0 ; + is_chemical = 1 ; } diff --git a/definitions/grib2/localConcepts/era6/units.def b/definitions/grib2/localConcepts/era6/units.def index 1110185c0..299d44782 100644 --- a/definitions/grib2/localConcepts/era6/units.def +++ b/definitions/grib2/localConcepts/era6/units.def @@ -1,4 +1,55 @@ # Automatically generated by ./create_def.pl, do not edit +#Accumulated Carbon Dioxide Net Ecosystem Exchange +'kg m**-2' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 59 ; + constituentType = 3 ; + typeOfStatisticalProcessing = 1 ; + is_chemical = 1 ; + } +#Accumulated Carbon Dioxide Gross Primary Production +'kg m**-2' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 60 ; + constituentType = 3 ; + typeOfStatisticalProcessing = 1 ; + is_chemical = 1 ; + } +#Accumulated Carbon Dioxide Ecosystem Respiration +'kg m**-2' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 61 ; + constituentType = 3 ; + typeOfStatisticalProcessing = 1 ; + is_chemical = 1 ; + } +#Flux of Carbon Dioxide Net Ecosystem Exchange +'kg m**-2 s**-1' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 59 ; + constituentType = 3 ; + is_chemical = 1 ; + } +#Flux of Carbon Dioxide Gross Primary Production +'kg m**-2 s**-1' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 60 ; + constituentType = 3 ; + is_chemical = 1 ; + } +#Flux of Carbon Dioxide Ecosystem Respiration +'kg m**-2 s**-1' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 61 ; + constituentType = 3 ; + is_chemical = 1 ; + } #Time integrated, vertically integrated eastward ozone flux 'kg m**-1' = { discipline = 0 ; @@ -42,4 +93,31 @@ constituentType = 0 ; typeOfStatisticalProcessing = 1 ; is_chemical = 1 ; + } +#Mean carbon dioxide net ecosystem exchange flux +'kg m**-2 s**-1' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 59 ; + constituentType = 3 ; + typeOfStatisticalProcessing = 0 ; + is_chemical = 1 ; + } +#Mean carbon dioxide gross primary production flux +'kg m**-2 s**-1' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 60 ; + constituentType = 3 ; + typeOfStatisticalProcessing = 0 ; + is_chemical = 1 ; + } +#Mean carbon dioxide ecosystem respiration flux +'kg m**-2 s**-1' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 61 ; + constituentType = 3 ; + typeOfStatisticalProcessing = 0 ; + is_chemical = 1 ; }